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);
}
我在我的真实账户上检查了这段代码,一切正常,我修改了所有市场订单,但我没有触及挂单。有什么问题呢?你怎么看?
在这个条件下
if(cmd==OP_BUY || cmd==OP_SELL)
并在条件
if(cmd==OP_BUY)
我不明白 :(
脚本的名称中还有一句话,说是只做市场订单...删除这些市场订单的条件,那么市场订单和挂单的条件将得到满足--仅此而已。不,这还不是全部 - 仔细阅读 - 要求和限制......并确保你将这些最低要求添加到你的待处理订单中,以便它们也能得到满足。
因此,我根本没有这样的线条,我根本不选择类型,我修改所有的线条,无论是待定还是市场。 。
我写信给你是为了仔细阅读:"FreezeLevel距离 限制。 如果StopLoss或TakeProfit值违反FreezeLevel参数要求,市场订单不会被关闭。
如果StopLoss或TakeProfit值违反StopLevel参数要求,则不能修改StopLoss或TakeProfit市场订单。如果订单的申报开盘价违反FreezeLevel参数要求,则不执行删除和修改挂单。
就是这样,错误就在那里。
所以我根本没有这样的线条,我根本不选择类型,我修改所有的类型,无论是待定还是市场。
也是在这个条件下
在要选择的订单下做类似的改变(将订单类型定义条件改为其中之一。