ネヴァリャシュカ・ブレイクダウンレベル:MT5用EAの解説

Mike 2017.08.10 21:51 32 0 0
添付ファイル

アイデアの作者Vladimir KhlystovMQL5コードの作者barabashkakvn

このトレーディング戦略は、指定した時間帯における高値・安値のブレイクアウトを利用します。損失を回復するために、EAは「ネヴァリャシュカ」戦略とマーチンゲール手法を用いてロットを増やします。

EAは指定した時間帯の高値と安値を次のように計算します:タイムスタートからタイムエンドまでの価格です。

ネヴァリャシュカ ブレイクダウンレベル

価格がこの期間の高値を上回ると、BUYポジションがオープンされます。逆に、価格が安値を下回ると、SELLポジションがオープンされます。ストップロスは、ポジションの逆側の境界に設定され、BUYポジションには安値、SELLポジションには高値が適用されます。テイクプロフィットは、コントロール期間の高さに基づいて設定されます。

使用時間クローズ」がtrueに設定されている場合、タイムクローズパラメータ(すべてのポジションをクローズする時間)が有効になります。

パラメータのタイムスタートタイムエンドタイムクローズには、時間と分のみが考慮されます。

ストップロスによるクローズはOnTradeTransactionで監視されます。

「DEAL_ENTRY_OUT」が見つかると、この取引のコメント欄をチェックします。コメントに「sl」が含まれている場合、その取引はストップロスでクローズされたことを意味します:

      if(deal_symbol==m_symbol.Name() && deal_magic==m_magic)
         if(deal_entry==DEAL_ENTRY_OUT)
           {
            MqlDateTime str1;
            TimeToStruct(TimeCurrent(),str1);
            //--- これはテイクプロフィットでクローズされた可能性があります
            if(StringFind(deal_comment,"tp",0)!=-1 || deal_profit>=0.0)
              {
               TradeDey=str1.day;
               return;
              }
            //--- これはストップロスでクローズされた可能性があります
            if(StringFind(deal_comment,"sl",0)!=-1)
              {
               if(TradeDey!=str1.day)
                 {
                  Print("ストップロスによるクローズが検出されました!");

                  double loss=MathAbs(deal_profit/m_symbol.TickValue()/deal_volume);

                  if(deal_type==DEAL_TYPE_SELL) // 買いポジションがクローズされた
                    {
                     double SL=m_symbol.Bid()+loss*m_symbol.Point();
                     double TP=m_symbol.Bid()-loss*m_symbol.Point();
                     double Lot=LotCheck(deal_volume*InpK_martin);
                     if(Lot==0.0)
                        return;
                     OpenSell(SL,TP,Lot,"ネヴァリャシュカ");

                    }
                  if(deal_type==DEAL_TYPE_BUY) // 売りポジションがクローズされた
                    {
                     double SL=m_symbol.Ask()-loss*m_symbol.Point();
                     double TP=m_symbol.Ask()+loss*m_symbol.Point();
                     double Lot=LotCheck(deal_volume*InpK_martin);
                     if(Lot==0.0)
                        return;
                     OpenBuy(SL,TP,Lot,"ネヴァリャシュカ");
                    }
                  return;
              }
          }

閉じたポジションとは逆のポジションをオープンします(取引タイプが「DEAL_TYPE_SELL」の場合はBUYポジションが閉じられ、「DEAL_TYPE_BUY」の場合はSELLポジションが閉じられたことを意味します)し、ロットはK.マーチンで倍増します。ポジションがプラスの利益でクローズされた場合、EAは次の期間の開始時間タイムエンドを待ち、上記の手順を繰り返します。

ノーロスパラメータはブレイクイーブンを意味し、ポジションの利益が半分に達すると、ストップロスはポジションのオープン価格に移動されます。

例として、EURUSD、M30でのテスト結果を示します:

ネヴァリャシュカ ブレイクダウンレベル テスト EURUSD M30

    リスト
    コメント 0