システムトレード 게시글

ブレイクイーブン後のトレード増加 - MetaTrader 4のための実践的なEA

첨부파일
35609.zip (12.47 KB, 다운로드 0회)

こんにちは、トレーダーの皆さん!今日は、MetaTrader 4用の小さなEA(エキスパートアドバイザー)の魅力についてお話しします。このEAの特徴は、オーダー数をカウントする機能です。

int OrdersCounter()
  {
   int counter=0;
//---
   for(int i=OrdersTotal()-1; i>=0; i--)
      if(OrderSelect(i,SELECT_BY_POS))
         if(OrderMagicNumber()==MagicNumber && OrderSymbol()==Symbol()) // このEAによって開かれたオーダーか確認
           {
//--- ブレイクイーブンが発生したか確認
   /* 買いの場合は、ストップロスがオープン価格以上であることが条件です。この実装はペンディングオーダーには適していません。*/
            double XBreakeven = OrderType()==OP_BUY ? OrderStopLoss() >= OrderOpenPrice() : OrderStopLoss() <= OrderOpenPrice();
            if(!XBreakeven) // ブレイクイーブンまたはトレーリングストップが発生していない場合
              {
               counter++; // ポジションをカウント
              }
           }
   return counter;
  }

この関数では、ストップロスがオープン価格以上(買いの場合)またはオープン価格未満(売りの場合)でないオーダーだけをカウントしています。言い換えれば、ブレイクイーブンやトレーリングストップで保護されていないオーダーをカウントしています。

 double XBreakeven = OrderType()==OP_BUY ? OrderStopLoss() >= OrderOpenPrice() : OrderStopLoss() <= OrderOpenPrice();
            if(!XBreakeven) // ブレイクイーブンやトレーリングストップが発生していない場合

このカウンターを使って、最大ポジション数を制限します。ここでは、同時に1つのオーダーしか持たないように設定しています。

   if(OrdersCounter()<MaximumOrders)

ブレイクイーブンが発生するたびに、この関数はそのカウントを無視します。したがって、例として1つのポジションしか持っていなければ、カウントはゼロになり、次のオーダーを開くことができます。

また、ブレイクイーブン機能を作成しなければ、これは不可能でした。

void BreakEvenFunction()
  {
//---
   for(int i=OrdersTotal()-1; i>=0; i--)
      if(OrderSelect(i,SELECT_BY_POS))
         if(OrderMagicNumber()==MagicNumber && OrderSymbol()==Symbol())
           {
// 買いの場合は、Bidがオープン価格+ブレイクイーブンpips以上、売りの場合はその逆
            double xHybrid = OrderType()==OP_BUY ? (Bid>OrderOpenPrice()+BreakevenPips*_Point && OrderStopLoss()<OrderOpenPrice()) : (Ask<OrderOpenPrice()-BreakevenPips*_Point && OrderStopLoss()>OrderOpenPrice());
            /* 買いの場合はストップロスがオープン価格以上、売りの場合はその逆が条件 */
            if(xHybrid)
              {
               bool modfy = OrderModify(OrderTicket(),OrderOpenPrice(),OrderOpenPrice(),OrderTakeProfit(),0,clrNONE);
              }
           }
  }

これを試してみますか?

연관 포스트

댓글 (0)