在一些经纪公司中删除了[tp]标签? - 页 4

 
cloudbreaker:
这是有可能的。你需要建立逻辑来完成以下工作: - 持久保存关于EA已经关闭的订单的信息 - 持续检查订单历史库中 "在范围内 "但你的EA没有关闭的订单 - 检查利润迹象以确定经纪人是否调用了SL或TP 对我有用。 CB

这种方法在大多数MT4经纪商平台上使用都没有问题,但我发现它在MBTF MT4经纪商演示平台上不起作用。MBTF MT4平台不记录客户(手动或EA)关闭订单的任何评论。在这种经纪商平台上,不可能判断一个订单是由服务器还是客户关闭的。

我仍然认为MetaQuotes应该增加API,如OrderCloseReason()来解决这个问题。

 
gordon:

Hmmm....也许我错过了什么,但是否有任何情况下,以下内容是不够的?


// 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");
   else
      Print("order closed at sl");

   // I assume here that an equality of sl_diff and tp_diff is impossible...?
但是,在这里你会得到一个如何做的解决方案
 
qjol:
但是,在这里你可以得到一个如何做的解决方案
阅读整个主题。这个方法没有考虑到一个订单被手动关闭或被专家关闭的情况(而不是由tp/sl),因此它是 有限的.做到这一点的方法是通过CB建议...这里没有捷径。
 
aihua5:

[...]我仍然认为MetaQuotes应该增加API,如OrderCloseReason()来解决这个问题。

现在MT5已经出来了,这不太可能发生。我们最多只能得到一些针对MT4的错误修复...我怀疑会有任何新功能...

 
gordon:
阅读整个主题。这个方法没有考虑到一个订单被手动关闭或被专家关闭(而不是被tp/sl)的情况,因此它是 有限的.做到这一点的方法是通过CB建议的方法...这里没有捷径。


你是对的,我没有读完整个主题,但是,如果它是由EA或手动关闭的,用户有办法知道这一点,唯一的问题是要找出它是由TP还是ST关闭。

这是你进来的地方。用你的代码。

 
qjol:


你是对的,没有读完整个主题,但是,如果它是由EA关闭的,或者用户有办法知道这一点,唯一的问题是要找出它是由TP还是ST关闭的。

这就是你的代码的用处。

也许用户不记得手动关闭。也许他没有意识到EA已经关闭了该订单。也许他不是开发该专家的人,所以他不知道这些事情......当然,如果我们假设只有TP/SL是可能的,那么解决方案很简单。但是这个主题的全部意义在于我们不知道(这意味着我们不假设)。