Jose Francisco Casado Fernandez: 你可以使用HistorySelectByPosition(),用你的POSITION_ID,然后你可以找到具有该POSITION_ID的第一个订单,并检查该订单的止损(HistoryOrderGetDouble(ticket, ORDER_SL))。这对我来说是有效的,但是 .问题是当你后来修改止损的时候。
Jose Francisco Casado Fernandez: 你可以使用HistorySelectByPosition(),使用你的POSITION_ID,然后你可以找到具有该POSITION_ID的第一个订单,并检查该订单的止损(HistoryOrderGetDouble(ticket,ORDER_SL))。这对我来说是有效的,但是 .问题是当你后来修改该止损时。
你能不能只回答你知道你在说什么?
这是一个关于MT5/mql5 的话题,我将删除 所有不相关的帖子。
在MT5上历史上没有止损价格。
mql5(对冲账户)的主要问题是知道止损价格,当一个仓位被关闭时,由于缺乏仓位历史。你可以使用HistorySelectByPosition() 找到你的初始止损(初始订单的止损),但如果你后来修改了止损,它会产生新的订单来做,没有相同的POSITION_ID,因此,它们不会被HistorySelectByPosition()函数选中,所以要知道你最后的止损变得非常困难。
我不知道这是否可以被认为是一个错误,但如果不是,它应该是。
请注意。
在mql5(对冲账户)中的主要问题是要知道止损价格,当一个仓位被关闭时,由于缺乏仓位历史。你可以使用HistorySelectByPosition() 来找到你的初始止损(初始订单的止损)...
不,你不能这样做,或者我误解了你的意思。
当前的止损在历史上没有任何位置。
不,你不能,或者我误解了你的意思。
止损在历史上是没有的。
.问题是当你后来修改止损的时候。
你可以使用HistorySelectByPosition(),用你的POSITION_ID,然后你可以找到具有该POSITION_ID的第一个订单,并检查该订单的止损(HistoryOrderGetDouble(ticket, ORDER_SL))。这对我来说是有效的,但是
.问题是当你后来修改止损的时候。
好的,现在明白了,你是对的。
你可以使用HistorySelectByPosition(),使用你的POSITION_ID,然后你可以找到具有该POSITION_ID的第一个订单,并检查该订单的止损(HistoryOrderGetDouble(ticket,ORDER_SL))。这对我来说是有效的,但是
.问题是当你后来修改该止损时。
,然后检查DEAL_ENTRY, 如果 OUT , 得到HystoryDealGetDouble(ticket,Deal_PRICE)。
如果 DEAL_PRICE 等于 HistoryOrderGetDouble(ticket,ORDER_SL), 那么 就意味着 该订单 由于 止损 而被 关闭。
这是我的意见。
好了,现在明白了,你是对的。
如果 DEAL_PRICE 等于 HistoryOrderGetDouble(ticket,ORDER_SL), 那么 就意味着 该订单 由于 止损 而被 关闭。
然后, 检查 ORDER_POSITION_ID 等于 DEAL_POSITION_ID,
,然后检查 DEAL_ENTRY, 如果 OUT , 得到 HystoryDealGetDouble(ticket,Deal_PRICE)。
如果 DEAL_PRICE 等于 HistoryOrderGetDouble(ticket,ORDER_SL), 那么 就意味着 该订单 由于 止损 而被 关闭。
这是我的意见。
如何处理滑点?
不需要 看滑点, 因为订单 已经 平仓 , 平仓价格 在 HystoryDealGetDouble(ticket, DEAL_PRICE)。
如果 订单没有 被 平仓, 而 你 做了一个 平仓 的 订单, 那么你应该考虑 有多少 滑点, 这样就不会有 错误 的重新报价。