MT4 一定期間内のポジション制御

一定期間内のポジション制御


EAで自動売買をしていると、一定期間内に複数のポジションを持ってしまうことがあります。建玉調整の都合、好ましくないので、ポジションどうしの間隔を空けたり、一定期間内に保持できるポジション数を制御する必要があります。本記事では、 一定期間内に保持できるポジション数を制御する サンプルソースを紹介します。

サンプルソース


   //---------------------------------------------------------
   // ポジション取得制御
   // 一定期間内の重複ポジション禁止
   //---------------------------------------------------------
  extern string ポジション取得制限 = "==========================================================";
  extern double postionTerm = 100; //ポジション間隔
  extern double postionTermCount = 10; //ポジション間隔内の許容ポジション数

   printf("ポジション取得制御");
   int inTermPosition = 0;
      for(int i = OrdersTotal() - 1; i >= 0; i--){
         if(OrderSelect(i, SELECT_BY_POS, MODE_TRADES) == false) break;
                     
         if(OrderType()==OP_BUY){
            if(MathAbs(OrderOpenPrice()-MarketInfo(SymbolPaire,MODE_ASK))<postionTerm* MarketInfo(SymbolPaire, MODE_POINT)){
               inTermPosition = inTermPosition +1;
            }
         }
                
         if(OrderType()==OP_SELL){
            if(MathAbs(OrderOpenPrice()-MarketInfo(SymbolPaire,MODE_BID))<postionTerm* MarketInfo(SymbolPaire, MODE_POINT)){
               inTermPosition = inTermPosition +1;
            }
         }
      }
      
      if(inTermPosition > postionTermCount){   
         printf("ポジション取得制御該当状態:" + "期間内のポジション数:" + DoubleToStr(inTermPosition,0));
         return;
      }

サンプルソースの解説

パラメータ値の設定


postionTerm で指定した間隔内に、postionTermCount で指定したポジション数を許容しています。エントリーのサインが出ても、 postionTermCount を超える場合は、新しいポジションを持たないようにしています。

  extern double postionTerm = 100; //ポジション間隔
  extern double postionTermCount = 10; //ポジション間隔内の許容ポジション数

許容数オーバー時の処理


許容数オーバーの判定を行い、オーダーしている場合は、returnにて処理を中断し、後続処理を行わないようにしています。

      if(inTermPosition > postionTermCount){   
         printf("ポジション取得制御該当状態:" + "期間内のポジション数:" + DoubleToStr(inTermPosition,0));
         return;
      }

関連記事


http://www.finance-lab.yokohama/%e3%83%af%e3%82%a4%e3%83%ab%e3%83%80%e3%83%bc%e3%81%ae%e5%ae%9a%e7%be%a9%e3%82%92%e5%bf%9c%e7%94%a8%e3%81%97%e3%81%9f%e3%83%ad%e3%83%bc%e3%82%bd%e3%82%af%e8%b6%b3%e5%88%a4%e5%ae%9aea/