// retrieving info from trade historyint i,accTotal=OrdersHistoryTotal();
for(i=0;i<accTotal;i++)
{
//---- check selection resultif(!OrderSelect(i,SELECT_BY_POS,MODE_HISTORY))
{
Print("Ошибка при доступе к исторической базе (",GetLastError(),")");
break;
}
// работа с ордером ...
}
私は、任意の注文が他の保留中の注文を すべて閉じるコードを書きましたが、問題は、私は4つの注文2、3、4、5を書いたということです。そのため、次の保留中の注文6、7、8などがオープンされた場合、それらはクローズされないようにする必要があります。赤色で表示されている注文の数は、すべての保留中の注文を終了する注文に変更する必要があります。
void start(){。
//----
double Take1 = Ask+20 *Point;
double Take2 = Ask+0 *Point;
double Take3 = Ask-20 *Point;
double Take4 = Ask-40 *Point;
double Take5 = Ask-60 *Point;
double Stop = Bid-StopLoss *Point;
if(OrdersTotal()==0){。
OrderSend(Symbol(),0,0.01,Ask,30,Stop,Take1,", 0,0,CLR_NONE) を実行。
OrderSend(Symbol(),2,0.02,Ask-20*Point,30,Stop,Take2,", 0,0,CLR_NONE);
OrderSend(Symbol(),2,0.04,Ask-40*Point,30,Stop,Take3,", 0,0,CLR_NONE);
OrderSend(Symbol(),2,0.08,Ask-60*Point,30,Stop,Take4,", 0,0,CLR_NONE);
OrderSend(Symbol(),2,0.16,Ask-80*Point,30,Stop,Take5,", 0,0,CLR_NONE);
}
if(OrdersTotal()==4)
{
OrderDelete(2)です。
}
if(OrdersTotal()==3)
{
OrderDelete(3)です。
}
if(OrdersTotal()==2)
{
OrderDelete(4)です。
}
if(OrdersTotal()==1)
{
OrderDelete(5)です。
return(0)です。
}
私は、任意の注文が他の保留中の注文を すべて閉じるコードを書きましたが、問題は、私は4つの注文2、3、4、5を書いたということです。そのため、次の保留中の注文6、7、8などがオープンされた場合、それらはクローズされないようにする必要があります。赤色で表示されている注文は、すべての注文が取り消される注文に変更する必要があります。
まず、ループの中で、そのポジションが最近クローズされたかどうかをチェックします。ここで、ポジションを閉じる時間をチェックします。OrderCloseTimeが 変数内の最後のものよりも大きい場合、開いているすべてのOrdersTotalを ループします。そして、それらを閉じる。
追伸:コードの挿入は、Alt+S または
![](https://c.mql5.com/3/228/editor_tip.gif)
例えばこのような
という条件ですが、ベイがゼロの場合の条件は どう書けばいいのでしょうか?
If (OP_BUY==0)
If (OP_BUY==0)