if (OrdersTotal()!=0)
{
bool modify;
int Done=0;
for (i = 1; i <= OrdersTotal(); i++)
{
if (OrderSelect(i-1,SELECT_BY_POS,MODE_TRADES) == true)
{
Stop = OrderStopLoss();
Take = OrderTakeProfit();
Print("Пробую модифицировать ",i," ордер (#",OrderTicket(),")");
modify = OrderModify(OrderTicket(),0,SL,TP,0,0); <<<--------------------- во втором параметре OrderModify нужно ставить не ноль а Orderopenprice()
if (modify==true) Done++;
if (modify==false)
{
int error = GetLastError();
Print(" Неудача... Ошибка ",error);
Sleep(5000);
}
}
}
Alert("Модифицировано ",Done," из ",OrdersTotal());
Sleep(10000);
}
私は私の実際の口座でこのコードをチェックし、すべてがOKです、私はすべての成行注文を修正しましたが、保留中の注文はそのままにしておきました。何が問題なのか?いかがでしょうか?
条件では
if(cmd==OP_BUY || cmd==OP_SELL)
で、その状態で
if(cmd==OP_BUY)
理解できない :(
スクリプトの名前に成行注文のみという文言もありますが......。成行注文の条件を解除すれば、成行注文と未決済注文の条件が揃う、ただそれだけです。いいえ、それだけではありません。よく読んでください。...そして、これらの最低条件を保留中の注文に追加して、同様に満たすようにしてください。
だから、そのような線は全くなく、タイプは全く選択せず、保留中であろうと市場であろうと全て修正しています。 。
FreezeLevel距離 制限」をよくお読みくださいと書いています。 StopLoss または TakeProfit の値が FreezeLevel パラメータ要件に違反する場合、成行注文はクローズされませ ん。
StopLoss または TakeProfit 値が StopLevel パラメータ要件に違反する場合、StopLoss または TakeProfit 成行注文は変更できません。注文の宣言された建値がFreezeLevelパラメータの要件に違反している場合、保留中の注文の削除と変更は実行されません。
それだ、エラーがあったんだ。
だから、そのような線は全くなく、タイプも全く選択せず、ペンディングであれマーケットであれ、全て修正しています。
また、この条件では
選択される注文の下で同様に変更する(注文タイプ定義条件をいずれかに変更する。