エキスパート: EURUSD ブレイクアウト

 

EURUSD ブレイクアウト:

このEA は、指定されたセッションの開始時間から始まる2つのトレーディングセッション中にトレードを行います。 ストップロス テイクプロフィット。

EURUSD ブレイクアウト

作者: Vladimir Karputov

 
<br/ translate="no">となります。

入力パラメータは取引条件のみで、どのようなストラテジーに基づいたアルゴリズムなのかがわからないのですが...?

 
Alex_Pushkin:

入力パラメーターは取引条件のみで、どのようなストラテジーを基にしたアルゴリズムなのかがわからないのですが...?


ストラテジー自体は以下のように書かれています:

//--- NFPの日、つまり月の最初の木曜日は避けたほうがいいかもしれない。 
   if((!session_found) && (str1.hour==Start_hour_US_session))
     {
      //--- 初回は、EUセッションの最高値と最安値を計算する。
      TopRange=iHighest(m_symbol.Name(),Period(),MODE_HIGH,24,1); // EU時間中は24本のM15バー
      LowRange=iLowest(m_symbol.Name(),Period(),MODE_LOW,24,1);  // EU時間中は24本のM15バー
      //---
      if(TopRange<=0.0 || LowRange<=0.0)
         return;
      //---
      if((TopRange-LowRange)<=ExtSmallEUSessionPips)
         small_session=true;
      else
         small_session=false;
      session_found=true;
      string text=(small_session)?"true":"false";
      Print("Identified new EU session + ["+
            DoubleToString(LowRange,m_symbol.Digits())+","+
            DoubleToString(TopRange,m_symbol.Digits())+"]"+
            " DayOfYear()="+IntegerToString(str1.day_of_year)+" small? "+text);
     }

入力パラメータ"Start_hour_US_session"があり、このパラメータと 現在時刻(時間だけを比較する )の対応を見つけるとすぐに24バーの期間の最大価格の 最高値と24バーの期間の最小価格の最低 値を探し始める。これらの価格の差が入力パラメータ"Small EU Session(in pips) "以下であれば、それは"Small Session(in pips) "が検出されたことを意味します。- この場合、"小セッション"(ボラティリティが小さい)、つまり"small_session"が検出されたことになります。



米国セッション」の中にいて、「小セッション」(ボラティリティが小さい)が検出された場合 - "small_session"

   if(session_found && small_session && 
      (str1.hour>=Start_hour_US_session) && (str1.hour<End_hour_US_session)) // 米国のセッション時間内?
     {
      //--- EUのセッション範囲を計算する
      //--- Print("USセッション中....small_session, bought, sold = " + small_session+bought+sold); 
      //--- Print("TopRange = " + TopRange + "LowRange = " + LowRange); 
      int h=str1.hour;
      int m=str1.min;
      if(h>Start_hour_EU_session+5 && h<Start_hour_EU_session+10)
        {//--- 少なくとも1つのUSセッションバーが完了していること
         //--- Print("買い/売りの可能性があります... "+h+": "+m); 
         double low=iLow(1);
         double high=iHigh(1);
         //---
         if(low==0.0 || high==0.0)
            return;
         //---
         if(!RefreshRates())
            return;
         if((!bought) && (low>(TopRange+Point()*3)))
           {
            if(OpenBuy(m_symbol.Bid()-ExtStopLoss,m_symbol.Ask()+ExtTakeProfit))
               bought=true;
           }
         if((!sold) && (high<(LowRange-Point()*3)))
           {
            if(OpenSell(m_symbol.Ask()+ExtStopLoss,m_symbol.Bid()-ExtTakeProfit))
               sold=true;
           }
        } // 米国時間2日の場合は終了。 
     }// スモールセッションの場合は終了

EUセッションに入るまで待ち最初のバーから安値と高値を取得する


買いポジションを建てる条件: この日に買いポジションを建てておらず、かつ1小節目の安値が「US_session」の24小節間の最高値より大きい場合:

         if((!bought) && (low>(TopRange+Point()*3)))
           {
            if(OpenBuy(m_symbol.Bid()-ExtStopLoss,m_symbol.Ask()+ExtTakeProfit))
               bought=true;
           }


売りポジションを建てる条件:この日に売りポジションがまだ建てられておらず、かつバー番号1の高値が "US_session "の24バーの最低価格より小さい場合:

         if((!sold) && (high<(LowRange-Point()*3)))
           {
            if(OpenSell(m_symbol.Ask()+ExtStopLoss,m_symbol.Bid()-ExtTakeProfit))
               sold=true;
           }

ds