MT5和速度在行动 - 页 31

 
fxsaber:

如果你在一个没有当前头寸或订单的账户上运行这个EA。

然后手动关闭EA所开的头寸,那么在对冲上就会有三个未结头寸(在净值三倍量头寸上)。


这是正确的行为吗?我可能没有正确理解 "终端"。那么请澄清一下。

首先,你应该阅读帮助。

https://www.mql5.com/ru/docs/event_handlers/ontrade

请注意。

Обработчик OnTrade() вызывается после соответствующих вызовов OnTradeTransaction(). В общем случае нет точного соотношения по количеству вызовов OnTrade() и OnTradeTransaction(). Один вызов OnTrade() соответствует одному или нескольким вызовам OnTradeTransaction.

简单地说,OnTrade()处理程序可以为每个单独的交易调用。平仓的后果可能是几个独立交易的到来。

这很容易检查--只要在你的例子的OnTrade()中加入Print()即可。

另外,我想提请你注意你之前的测试,你徒劳地期望通过OrderSendAsync()知道订单票。

Документация по MQL5: Обработка событий / OnTrade
Документация по MQL5: Обработка событий / OnTrade
  • www.mql5.com
//|                                               OnTrade_Sample.mq5 | //|                        Copyright 2018, MetaQuotes Software Corp. | //|                                             https://www.mql5.com | //| Expert initialization function                                   |...
 
Anton:

另外,我想提请你注意,根据你之前的测试,你期望通过OrderSendAsync()找到订单票是徒劳的。

似乎哪里都没有了。只有HistorySelect 在OnTrade中滞后。

 
fxsaber:

它似乎在任何地方都没有。只有OnTrade中的HistorySelect滞后才会显示。

if (PositionSelectByTicket(Result.order)) // Если позиция открыта - закрываем.
 
Anton:

首先要做的是阅读概况介绍。

https://www.mql5.com/ru/docs/event_handlers/ontrade

请注意。

Обработчик OnTrade() вызывается после соответствующих вызовов OnTradeTransaction(). В общем случае нет точного соотношения по количеству вызовов OnTrade() и OnTradeTransaction(). Один вызов OnTrade() соответствует одному или нескольким вызовам OnTradeTransaction.

简单地说,OnTrade()处理程序可以为每个单独的贸易交易调用。平仓的后果可能是几个独立交易的到来。

这很容易检查--只要在你的例子的OnTrade()中加入Print()即可。

当然,我已经做了打印。问题不是关于OnTrade电话的数量,而是关于未结头寸的数量。

在第一次OnTrade之后,就会有一个市场订单。在下一次OnTrade中,这个市场订单必须不允许按条件开出更多的订单。但在下一次OnTrade中,OrdersTotal()+PositionsTotal()的总和也是零。这是否正确?

 
Anton:

谢谢,我没有看到复制粘贴这一块。

 
fxsaber:

它似乎在任何地方都没有。只有OnTrade中的HistorySelect滞后才会显示。

今天仍在改进订单选择 的缓存,几小时后将成为测试版。

 
Renat Fatkhullin:

今天仍在改进订单选择 的缓存,几小时后将成为测试版。

你是说HistorySelect吗?仅仅是自动链接并不能导致OrderSelect。

 
Nelson Wanyama:

知道为什么mt5没有 "佣金 "选项卡吗?它们只在交易结束后弹出。

知道为什么mt5没有 "佣金 "选项卡吗?它们只在交易结束后弹出。


 
fxsaber:

当然,做了打印输出。问题不是OnTrade电话的数量,而是未结头寸的数量。

在第一次OnTrade之后,就会有一个市场订单。在下一次OnTrade中,这个市场订单必须不允许按条件开出更多的订单。但在下一次OnTrade中,OrdersTotal()+PositionsTotal()的总和也是零。这是否正确?

这一切都在帮助中:https://www.mql5.com/ru/docs/trading/ordersendasync

Успешное выполнение означает только факт отсылки, но не даёт никакой гарантии, что запрос дошел до торгового сервера и был принят для обработки.  Торговый сервер при обработке полученного запроса отправляет клиентскому терминалу ответное сообщение об изменении текущего состояния позиций, ордеров и сделок, которое приводит к генерации события Trade.
所以OrdersTotal()无疑可以是空的。PositionsTotal()也可以。这完全取决于交易、其类型和内容。
Документация по MQL5: Торговые функции / OrderSendAsync
Документация по MQL5: Торговые функции / OrderSendAsync
  • www.mql5.com
"и режим вывода сообщений в журнал "Эксперты". По умолчанию выводятся все детали.\r\n" //| Expert initialization function                                   | //| Expert deinitialization function                                 | //| TradeTransaction function                                        |...
 
Anton:

一切都在帮助中:https://www.mql5.com/ru/docs/trading/ordersendasync

Успешное выполнение означает только факт отсылки, но не даёт никакой гарантии, что запрос дошел до торгового сервера и был принят для обработки.
所以OrdersTotal()当然可以为空。PositionsTotal()也可以。

https://www.mql5.com/ru/docs/constants/tradingconstants/orderproperties#enum_order_state

每个订单都有一个状态,描述其状态。要获得信息,请使用OrderGetInteger()HistoryOrderGetInteger()函数,其修饰语为ORDER_STATE。有效值存储在ENUM_ORDER_STATE枚举中。

enum_order_state

识别器

描述

订单_状态_开始

订单已检查正确性,但尚未被经纪人接受



在成功的OrderSendAsync之后,难道没有发生 Started-state?