Python 版 MetaTrader 文档 显示用户只能使用 history_orders_get 和 history_deals_get 函数来访问历史交易数据,而不是简单的 history_positions_get 函数。
在 MT5 上,交易分为 5 个元素;
这对于执行交易等来说很好,但对于想要在 python 中创建自定义账户报告的用户来说,了解平仓时的最终止损值是很有价值的。
在 Python 库的 MetaTrader 上,似乎我们只能访问订单和交易,所以这里是我可以检索的位置 275 的所有历史数据:
TradeOrder(ticket=275, time_setup=1657825200, time_setup_msc=1657825200024, time_done=1657825200, time_done_msc=1657825200053, time_expiration=0, type=0, type_time=0, type_filling=0, state=4, magic=0, position_id=275, position_by_id=0, reason=3, volume_initial=12.5, volume_current=0.0, price_open=0.0, sl=138.876, tp=140.266, price_current=139.154, price_stoplimit=0.0, symbol='EURJPY', comment='Long Breakout PERIOD_H1', external_id='')
TradeDeal(ticket=285, order=275, time=1657825200, time_msc=1657825200053, type=0, entry=0, magic=0, position_id=275, reason=3, volume=12.5, price=139.154, commission=0.0, swap=0.0, profit=0.0, fee=0.0, symbol='EURJPY', comment='Long Breakout PERIOD_H1', external_id='')
TradeOrder(ticket=276, time_setup=1657868538, time_setup_msc=1657868538652, time_done=1657868538, time_done_msc=1657868538652, time_expiration=0, type=1, type_time=0, type_filling=1, state=4, magic=0, position_id=275, position_by_id=0, reason=4, volume_initial=12.5, volume_current=0.0, price_open=139.243, sl=0.0, tp=0.0, price_current=139.243, price_stoplimit=0.0, symbol='EURJPY', comment='[sl 139.243]', external_id='')
TradeDeal(ticket=286, order=276, time=1657868538, time_msc=1657868538652, type=1, entry=1, magic=0, position_id=275, reason=4, volume=12.5, price=139.243, commission=0.0, swap=-45.15, profit=800.41, fee=0.0, symbol='EURJPY', comment='[sl 139.243]', external_id='')
如您所见,只有订单数据提供有关 SL 位置的信息,并且仅针对订单。对于此交易,给出的唯一 SL 价格是 138.876,但是当从 MT5 报表查看 POSITION 时,我们可以看到该头寸以 139.243 的止损平仓:
从技术上讲,最终止损应该在“出局”交易中可用,但由于某种原因,您不能从交易中提取止损或止盈值,只能从订单中提取。
如果有可能的话,我将不胜感激关于如何获得最终止损价格的一些想法!
提前致谢。
使用
history_deals_get()
,似乎“价格”反映了退出的实际执行价格。我有下面的例子(在我的例子中,响应只是转换成一个字典),我能够在 MT5 终端中验证执行发生在24413.5
(止损水平实际设置为 24415.00)。
{
"ticket": 60015958,
"order": 62916005,
"time": 1676999856,
"time_msc": 1676999856976,
"type": 1,
"entry": 1,
"magic": 10,
"position_id": 62895194,
"reason": 4,
"volume": 1.0,
"price": 24413.5,
"commission": 0.0,
"swap": 0.0,
"profit": -269.75,
"fee": 0.0,
"symbol": "BTCUSD",
"comment": "[sl 24415.00]",
"external_id": "",
}
在您的情况下,它告诉
price=139.154
,这接近您指定的值。至于轻微(相对于 139.243)偏差的原因,我不知道:)