动态取消已发送的BUYLIMIT订单

时间:2017-12-09 09:08:03

标签: mt4

我正在使用OrderSend这样的

OrderSend(Symbol(),OP_BUYLIMIT,Lots,100, 50,200,"",Magic,0,Red);

在这种情况下,当价格达到100时,将执行买入。

但是当价格达到100时,我想再检查一层。

像这样。

// when price comes to 100.
if (MacD > 0){buy cancel;}

这可能吗?或OrderSend无法取消?

1 个答案:

答案 0 :(得分:1)

鉴于您的OrderSend()已创建 BUY-LIMIT 待处理订单:

您的经纪人已经在他们的账簿上创建了待处理的XTO指令,实际上,一旦市场价格(Ask)达到设定的XTO - OrderOpenPrice() == 100.0,这样的待定订单将以固定价格执行== 100.0,无需任何其他干预,自动进行。

这是一个常见的程序。

鉴于您希望做其他事情,一旦价格达到100.0集合:

阱,
在这种情况下,不应该使用待处理订单,因为当价格接近待处理订单集OrderOpenPrice()时,没有机会修改它。

有一个关于所谓的 StopLevel FreezeLevel 距离设定价格的详细规范,可以防止任何此类希望修改,取消一旦市场价格徘徊在这些邻近区域,甚至会发生重建。

所以,
或者
不要放置待处理订单(并使用普通市场订单{ OP_BUY | OP_SELL }保持所有XTO操作基于XTO-s)
修改您的待处理订单{ OP_BUYLIMIT | OP_BUYSTOP | OP_SELLLIMIT | OP_SELLSTOP }订单管理政策,以便在价格仍在MarketInfo() - 已检查的StopLevel-zone和FreezeLevel-zones区域之外的情况下做出决策。