MT5 y la velocidad en acción - página 31

 
fxsaber:

Si ejecuta este EA en una cuenta sin posiciones ni órdenes actuales.

y luego cerrar manualmente la posición abierta por el EA, entonces habrá tres posiciones abiertas en la cobertura (en la posición neta de triple volumen).


¿Es éste el comportamiento correcto? Probablemente no entiendo bien el Terminal. Entonces, por favor, aclárelo.

En primer lugar, deberías leer la ayuda.

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

Tenga en cuenta:

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

En pocas palabras, el manejador OnTrade() puede ser llamado para cada operación individual. La consecuencia de cerrar una posición puede ser la llegada de varias transacciones separadas.

Esto se puede comprobar fácilmente - sólo tiene que añadir Print() a OnTrade() de su ejemplo.

Además, quiero llamar tu atención sobre tu prueba anterior que en vano esperas conocer el ticket del pedido a través de OrderSendAsync().

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

Además quiero llamar tu atención, según tu prueba anterior, que esperas en vano averiguar el ticket del pedido a través de OrderSendAsync().

Parece que no está en ninguna parte. Sólo HistorySelect se retrasa en OnTrade.

 
fxsaber:

Parece que no está en ninguna parte. Sólo se muestran los rezagos de HistorySelect en OnTrade.

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

Lo primero que hay que hacer es leer la hoja informativa.

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

Tenga en cuenta:

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

En pocas palabras, el manejador OnTrade() puede ser llamado para cada transacción individual de comercio. La consecuencia de cerrar una posición puede ser la llegada de varias transacciones separadas.

Se puede comprobar fácilmente - sólo tiene que añadir Print() a OnTrade() de su ejemplo.

Por supuesto, he hecho la impresión. La pregunta no se refería al número de llamadas de OnTrade, sino al número de posiciones abiertas.

Después del primer OnTrade, se coloca una orden de mercado. En el siguiente OnTrade, esta orden de mercado no debe permitir la apertura de más órdenes por la condición. Pero en el siguiente OnTrade, la suma de OrdersTotal() + PositionsTotal() también es cero. ¿Es correcto?

 
Anton:

Gracias, no había visto el trozo de copia-pega.

 
fxsaber:

Parece que no está en ninguna parte. Sólo se muestran los retrasos de HistorySelect en OnTrade.

El almacenamiento en caché de las selecciones de pedidos sigue mejorando hoy, será beta en unas horas.

 
Renat Fatkhullin:

El almacenamiento en caché de las selecciones de pedidos sigue mejorando hoy, será beta en unas horas.

¿Se refiere a HistorySelect? Sólo el enlace automático no lleva a OrderSelect.

 
Nelson Wanyama:

¿Alguna idea de por qué mt5 no cuenta con la pestaña "Comisiones"? Sólo aparecen cuando se cierra una operación.

¿Alguna idea de por qué mt5 no cuenta con la pestaña "Comisiones"? Sólo aparecen cuando se cierra una operación.



 
fxsaber:

Hizo la impresión, por supuesto. La cuestión no era el número de llamadas de OnTrade, sino el número de posiciones abiertas.

Después del primer OnTrade, se coloca una orden de mercado. En el siguiente OnTrade, esta orden de mercado no debe permitir la apertura de más órdenes por la condición. Pero en el siguiente OnTrade, la suma de OrdersTotal() + PositionsTotal() también es cero. ¿Es correcto?

Todo está en la ayuda: https://www.mql5.com/ru/docs/trading/ordersendasync

Успешное выполнение означает только факт отсылки, но не даёт никакой гарантии, что запрос дошел до торгового сервера и был принят для обработки.  Торговый сервер при обработке полученного запроса отправляет клиентскому терминалу ответное сообщение об изменении текущего состояния позиций, ордеров и сделок, которое приводит к генерации события Trade.
Por lo tanto, OrdersTotal() puede ser indudablemente nulo. También puede hacerlo PositionsTotal(). Todo depende de las transacciones, su tipo y contenido.
Документация по MQL5: Торговые функции / OrderSendAsync
Документация по MQL5: Торговые функции / OrderSendAsync
  • www.mql5.com
"и режим вывода сообщений в журнал "Эксперты". По умолчанию выводятся все детали.\r\n" //| Expert initialization function                                   | //| Expert deinitialization function                                 | //| TradeTransaction function                                        |...
 
Anton:

Todo está en la ayuda: https://www.mql5.com/ru/docs/trading/ordersendasync

Успешное выполнение означает только факт отсылки, но не даёт никакой гарантии, что запрос дошел до торгового сервера и был принят для обработки.
Así que OrdersTotal() puede ser ciertamente nulo. También puede hacerlo PositionsTotal().

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

Cada orden tiene un estado que describe su situación. Para obtener información, utilice la funciónOrderGetInteger() oHistoryOrderGetInteger() con el modificador ORDER_STATE. Los valores válidos se almacenan en la enumeración ENUM_ORDER_STATE.

ENUM_ORDER_STATE

Identificador

Descripción

ESTADO_DE_PEDIDO_INICIADO

Orden verificada para su corrección, pero aún no aceptada por el corredor



¿No se produce el estado de inicio después de un OrderSendAsync exitoso?