2020.10.2222:16:20.1962020.10.2100:03:10 market buy 1 EURAUD sl: 1.67661 (1.67664 / 1.67761)
2020.10.2222:16:20.1962020.10.2100:03:10 deal #2 buy 1 EURAUD at 1.67761 done (based on order #2)
2020.10.2222:16:20.1962020.10.2100:03:10 deal performed [#2 buy 1 EURAUD at 1.67761]
2020.10.2222:16:20.1962020.10.2100:03:10 order performed buy 1 at 1.67761 [#2 buy 1 EURAUD at 1.67761]
2020.10.2222:16:20.1982020.10.2100:12:59 stop loss triggered #2 buy 1 EURAUD 1.67761 sl: 1.67661 [#3 sell 1 EURAUD at 1.67661]
2020.10.2222:16:20.1982020.10.2100:12:59 deal #3 sell 1 EURAUD at 1.67638 done (based on order #3)
2020.10.2222:16:20.1982020.10.2100:12:59 deal performed [#3 sell 1 EURAUD at 1.67638]
2020.10.2222:16:20.1982020.10.2100:12:59 order performed sell 1 at 1.67638 [#3 sell 1 EURAUD at 1.67661]
2020.10.2222:16:20.1982020.10.2100:12:59true2020.10.2222:16:20.1982020.10.2100:12:59#32020.10.2100:03:10.025 buy 1.00 EURAUD 1.677611.676610.000002020.10.2100:12:59.8741.676380.000.00 -123.00 sl 1.6766102020.10.2222:16:20.1982020.10.2100:12:592020.10.212020.10.2222:16:20.1982020.10.2100:12:59ExpertRemove() function called
MT4Orders 是 MT5 中的 MT4 风格。因此,OrderSend 的行为与 MT4 相同。
是的,这部分是有效的,挂单票据会转到头寸票据,一切都会被修改,但并不是一直有效。在平仓 时,会出现 SL 或 TP 订单交易,而在平仓市场订单时,订单票上的检查不起作用。
真让我头疼。通过 SL 平仓。在测试器中,如果订单票为 3,则与交易票一致,最后一个选择器正常。如果是 2,则选择错误为 4754。在实际/演示中总是不一致。
是的,这部分起作用了,挂单票据转到仓单票据,一切都被修改了,但并没有立即起作用。平仓 时,SL 或 TP 订单上会出现交易,而平仓市价订单票据上的时间检查不起作用。
打破了我的头。通过 SL 平仓。在测试器中,如果订单票为 3,则与交易票吻合,最后一个选择器正常。如果是 2,则选择错误为 4754。在实际/演示中总是不一致。
请提供您认为不起作用的 mq5 文件。你浪费了太多信息。这无助于理解您的意思。还是提供源代码吧。
把你认为失效的 mq5 文件给我。你浪费了太多信息。它无助于理解你的意思。最好是源文件。
代码很乱,我很抱歉。
代码很乱,我很抱歉。
下一次会更好的。
结果。
下次最好就事论事。
结果。
谢谢。
下次最好就事论事。
结果。
找到原因了,旧版本的 MT4Orders 2018。有了它,再加上您的示例,把错误改成了最新版本,一切都正常了,我的代码也是如此)
谢谢。
找到原因了,MT4Orders 2018 的版本太旧。
遗憾的是,还没想出如何让用户在使用非最新版本的库时少走弯路。
在 RannForex MT5 上使用此库并设置 "以比当前价格差 N 个点的价格向市场发送限价订单 "修改限价订单时,如果有人突袭,ALT 将在此处飞出。
这是因为 MT4Orders 看到已消失的订单已做标记,但经纪商立即将价格修正回来,而在请求订单参数时,价格已经不同了。因此,这似乎是一种功能。
如果有人突袭,在 RannForex MT5 上使用此库并设置为 "以比当前价格差 N 个点的价格向市场发送限价订单 "时,修改限价器后,Atter 将从以下位置飞出
这是因为 MT4Orders 看到已消失的订单已做标记,但经纪商会立即将价格修正回来,而在请求订单参数时,价格已经不同了。因此,这似乎是一项功能。
交易、自动交易系统和交易策略测试论坛。
库:MT4Orders
fxsaber, 2020.09.29 08:45 AM
用这样一行
可以禁用所有这些功能。如果MT5 交易历史记录变慢,这可能会有用,因为 MT4Orders 有时会通过访问历史记录来检查 MT5-OrderSend 的正确性(甚至纠正)。
我不建议这样做。
我有一个 MT4 EA,我正试图使用 MT4Orders 将其移植到 MT5,这样我就可以保持单一来源,但我遇到了一些问题......
1)当订单触及 SL 或 TP 时,如果 EA 在 OrderSend() 期间添加了注释,则通常的 [sl] 或 [tp] 文本不会附加到订单注释中。
这是 MT5 的正常行为吗?如果是,是否有可靠的方法来确定订单是否真的触及 SL/TP,还是被手动平仓?
(试图通过检查开盘价/收盘价/SL/TP 来决定是不可靠的,因为会出现滑点,尤其是当 SL 被移动到非常接近 TP 时)。
** 有趣的是,OrdersToString() 在注释中显示"[sl x.xxxxxx]",但订单历史选项卡不显示该信息(在策略测试器中,OrdersComment() 中也不包含该信息)。
2)当发生部分平仓时,开仓和平仓部分订单的注释不会显示 "to #xxxxxxxxxx "和 "from #xxxxxxxxxx "
,是否有可靠(希望简单)的方法来确定特定订单发生了什么?
3)未平仓交易的票据编号在平仓时会改变,因此我无法使用 OrderTicket() 来跟踪订单,但 OrderTicketID() 似乎可以像 MT4 中的 OrderTicket() 一样工作,并为平仓交易保留相同的 ID。
该值是恒定的,还是会在平台重启时发生变化?如果是恒定的,有什么好办法既能使用OrderTicketID(),又能保持与MT4的兼容性(因为OrderTicketID()不是MT4 函数)?
** OrderTicketID()似乎忽略了MT4_TICKET_TYPE指令,始终为 "长"。