// select the closed order first and then do this:double sl_diff = MathAbs(OrderClosePrice() - OrderTakeProfit()),
tp_diff = MathAbs(OrderClosePrice() - OrderStopLoss());
if ( sl_diff > tp_diff )
Print("order closed at tp");
elsePrint("order closed at sl");
// I assume here that an equality of sl_diff and tp_diff is impossible...?
这是有可能的。你需要建立逻辑来完成以下工作: - 持久保存关于EA已经关闭的订单的信息 - 持续检查订单历史库中 "在范围内 "但你的EA没有关闭的订单 - 检查利润迹象以确定经纪人是否调用了SL或TP 对我有用。 CB
这种方法在大多数MT4经纪商平台上使用都没有问题,但我发现它在MBTF MT4经纪商演示平台上不起作用。MBTF MT4平台不记录客户(手动或EA)关闭订单的任何评论。在这种经纪商平台上,不可能判断一个订单是由服务器还是客户关闭的。
我仍然认为MetaQuotes应该增加API,如OrderCloseReason()来解决这个问题。
Hmmm....也许我错过了什么,但是否有任何情况下,以下内容是不够的?
但是,在这里你可以得到一个如何做的解决方案
[...]我仍然认为MetaQuotes应该增加API,如OrderCloseReason()来解决这个问题。
现在MT5已经出来了,这不太可能发生。我们最多只能得到一些针对MT4的错误修复...我怀疑会有任何新功能...
阅读整个主题。这个方法没有考虑到一个订单被手动关闭或被专家关闭(而不是被tp/sl)的情况,因此它是 有限的.做到这一点的方法是通过CB建议的方法...这里没有捷径。
你是对的,我没有读完整个主题,但是,如果它是由EA或手动关闭的,用户有办法知道这一点,唯一的问题是要找出它是由TP还是ST关闭。
这是你进来的地方。用你的代码。
你是对的,没有读完整个主题,但是,如果它是由EA关闭的,或者用户有办法知道这一点,唯一的问题是要找出它是由TP还是ST关闭的。
这就是你的代码的用处。