初心者の方からの質問 MQL5 MT5 MetaTrader 5 - ページ 508

 
マーチンゲールを付けました。 昼間、この形でExpert Advisorを接続しました(すでに同じEAを数回取引していましたが、未完成の状態で)、 - EAは正常に動作し、マーチンゲールは働き、プラスで半日の損失を出しました。 翌日、私は朝プラットフォームをオンにして、夕方に仕事に行き、取引なし。 マーチンゲールは負けトレードのロットを増加します、それ以外は標準ロットです。
void OnTick()
  {
   datetime EaStartTime = StringToTime(StartTime);  // время начала работы советника
   datetime EaEndTime = StringToTime(EndTime);      // время окончания работы советника
   datetime CurrTime = TimeCurrent();               // это если нужно взять время терминала
   if(CurrTime<EaStartTime || CurrTime>=EaEndTime)
      return;                                       // если еще не время торговать - выход
     {
      MacdCurrent=iMACD(NULL,0,InpFastEMA,InpSlowEMA,InpSignalSMA,Macd_Applied_Price,MODE_MAIN,0);
      SignalCurrent=iMACD(NULL,0,InpFastEMA,InpSlowEMA,InpSignalSMA,Macd_Applied_Price,MODE_SIGNAL,0);
      SignalMAPrevious=iMA(NULL,0,InpMAPeriod,InpMAShift,InpMAMethod,MA_Applied_Price,1);
      SignalMAThis=iMA(NULL,0,InpMAPeriod,InpMAShift,InpMAMethod,MA_Applied_Price,0);
      SignalParabolic=iSAR(NULL,0,InpSARStep,InpSARMaximum,0);
      SignalStochastic_5=iStochastic(NULL,5,InpKPeriod,InpDPeriod,InpSlowing,MODE_SMA,0,1,0);
      MainStochastic_5=iStochastic(NULL,5,InpKPeriod,InpDPeriod,InpSlowing,MODE_SMA,0,0,0);
      SignalStochastic=iStochastic(NULL,0,InpKPeriod,InpDPeriod,InpSlowing,MODE_SMA,0,1,0);
      MainStochastic=iStochastic(NULL,0,InpKPeriod,InpDPeriod,InpSlowing,MODE_SMA,0,0,0);
      SignalCCIPrevious=iCCI(NULL,0,InpCCIPeriod,0,1);
      SignalCCIThis=iCCI(NULL,0,InpCCIPeriod,0,0);
      if(CountTrades()==0) CheckForOpen();
     }
  }
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
void CheckForOpen()
 {if(ModLots())
  {
      //-----Ставим ордер на покупку.
    if(SignalCurrent<MacdCurrent && SignalMAPrevious<SignalMAThis && 
      Ask>SignalParabolic && SignalStochastic_5<MainStochastic_5&&SignalStochastic<MainStochastic&&
      SignalCCIPrevious<SignalCCIThis)
      {
       ticket=OrderSend(NULL,OP_BUY,lot,Ask,slippage,0,0,exptime,magic,0,Blue);
       if(ticket>0)
          return;
      }
//-----Ставим ордер на продажу.
    if(SignalCurrent>MacdCurrent && SignalMAPrevious>SignalMAThis && 
      Bid<SignalParabolic && SignalStochastic_5>MainStochastic_5&&SignalStochastic>MainStochastic&&
      SignalCCIPrevious>SignalCCIThis)
      {
       ticket=OrderSend(NULL,OP_SELL,lot,Bid,slippage,0,0,exptime,magic,0,Red);
       if(ticket>0)
          return;
      }
  }
 }
//+------------------------------------------------------------------+
int CountTrades()
  {
   int count=0;
   for(int i=OrdersTotal()-1;i>=0;i--)
     {
      if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES))
        {
         if(OrderSymbol()==Symbol() && OrderMagicNumber()==magic)
            count++;
        }
     }
   return(count);
  }
//+------------------------------------------------------------------+
bool ModLots()
  {
    for(int i=OrdersHistoryTotal()-1;i>=0;i--)
      {
       if(!OrderSelect(i,SELECT_BY_POS,MODE_HISTORY)) continue;
       if((OrderMagicNumber()==magic) && (OrderSymbol()==Symbol()))
         {
          if(OrderProfit()<0)
            {lot=OrderLots()*LotMarti;  break;}
          else { lot=Lots; break;}
         }
      }
   return(true);
  }
//+------------------------------------------------------------------+
 
こんにちは。mql4のマニュアルによると、Strategy TesterではTimerとChartEventのイベント処理はサポートされていないとのことです。したがって、ボタン(OBJ_BUTTON)は動作しません(正確には、クリックしても何も起こりません)。しかし、この EAの試用版では、なぜかこのルールに対応していません。なぜこのような現象が起こるのか、またテスターのボタンを動作させるにはどうしたらよいのか教えてください。
 
Maks_Knyazev:
こんにちは。mql4のマニュアルによると、ストラテジーテスターではTimerとChartEventのイベント処理はサポートされていないとのことです。したがって、ボタン(OBJ_BUTTON)は動作しません(正確には、クリックしても何も起こりません)。しかし、この EAの試用版では、なぜかこのルールに対応していません。なぜこのような現象が起こるのか、またテスターのボタンを動作させるにはどうしたらよいのか教えてください。

そう、機能しないのです。テスターで以下のように手動でボタンをチェックする必要があります。

CButton *cbSell, *cbBuy;

//проверяем из OnTick в тестере 
void CheckButtons()
{
    if(cbSell.Pressed())
    {
        OpenOrderWithCheck2(Symbol(), OP_SELL, 0.1, Bid, 50, 0, 0, "", 1, 0, clrDeepSkyBlue);
        cbSell.Pressed(false);
    }    
    if(cbBuy.Pressed())
    {
        OpenOrderWithCheck2(Symbol(), OP_BUY, 0.1, Bid, 50, 0, 0, "", 1, 0, clrRed);
        cbBuy.Pressed(false);
    }
    ChartRedraw();
}

 
Alexey Volchanskiy:

そう、機能しないのです。テスターでは、次のように手動でボタンをチェックする必要があります。

ありがとうございました。このようなことを記した文献はあるのでしょうか?
 

flint17480, 2016.02.01 08:58

こんにちは。EURUSDの09-47分のローソク足で利益を確定しなかった。利益は1.08428で、ローソク足は1.08420まで行った。どうすればいいのか?ありがとうございました。
 
<br /> translate="no">。

flint17480, 2016.02.01 08:58

こんにちは。EURUSDでの私の利益は1.08428で、1.08420まで行きました。どうすればいいか教えてください。ありがとうございました。

もっと情報が欲しい。

  1. オープンポジションの種類:売りか買いか?
  2. 端末内の価格はBIDで描かれていることをご存じですか?

 
Karputov Vladimir:

flint17480, 2016.02.01 08:58

こんにちは。EURUSDの09-47分のローソク足で利益を確定しなかった。利益は1.08428で、ローソク足は1.08420まで行った。どうすればいいのか?よろしくお願いします。

ショートポジションはAscで決済され、ローソク足はBidで描画されるので、スプレッドに注意する必要があります。5桁で8pips以上のスプレッドは、ほとんどの通貨ペアで普通です。

 
Karputov Vladimir:

flint17480, 2016.02.01 08:58

こんにちは。EURUSDの09-47分のローソク足で利益を確定しなかった。利益は1.08428で、ローソク足は1.08420まで行った。どうすればいいのか?よろしくお願いします。
ダニの名言集を書くお見積もりをお送りしましょうか?コドバツにはたくさんありますが。見開きで正解でしたね。
 
すべての人に良い午後)モバイルストップロス 用のコードを共有する - 価格を駆動する )))))))))))))))))))))))))))))))))))。ありがとうございました。
 
Tema97:
すべての人に良い午後)モバイルストップロス 用のコードを共有する - 価格を駆動する )))))))))))))))))))))))))))))))))))。ありがとうございました。
トレーリングストップが嫌いな理由は何ですか?すでに端末に内蔵されている
理由: