Preguntas de los principiantes MQL5 MT5 MetaTrader 5 - página 814

 
¿Hay alguna manera de evitar que estas casillas-noticias-objetos inerradicables llenen mi lista de objetos una y otra vez?
 
User_mt5:
¿Hay alguna manera de evitar que estas casillas-noticias-objetos inerradicables llenen mi lista de objetos una y otra vez?

Aquí, en la configuración, elimina las noticias y vuelve a cargar el terminal


 
User_mt5:
¿Hay alguna manera de evitar que estas casillas-noticias-objetos inerradicables llenen mi lista de objetos una y otra vez?
No es necesario recargar nada. En el calendario, desmarca "Eliminar todos los eventos" y luego desmarca "Actualizaciones automáticas".
 
Kirill Belousov:

Aquí, en la configuración, elimine las noticias y reinicie el terminal


Kirill, muchas gracias. Por lo demás, mi experto repasa los objetos, los repasa una y otra vez.
Gracias.

 

Estoy intentando aprender a utilizar la función OnTradeTransaction.

Al utilizarlo en el probador, veo el siguiente problema. Se abre una orden y en consecuencia se llama a OnTradeTransaction. En este momento, obtengo el tamaño de la posición dentro de OnTradeTransaction utilizando la clase CPositionInfo. Todo está bien. Luego en la misma llamada llamo a otra función directamente desde OnTradeTransaction y allí CPositionInfo devuelve cero, es decir, no es lo que necesito. Unos minutos más tarde traté de obtener el tamaño de la posición en OnTimer, pero todo estaba bien allí, es decir, 1. Por supuesto, la posición no se ha cerrado y abierto de nuevo a lo largo de toda la historia.

Pregunta. Por qué CPositionInfo devuelve en OnTradeTransaction lo que necesita, pero en otra función llamada desde OnTradeTransaction devuelve 0 en lugar del volumen de posición.


Aquí están los registros. (Posición abierta a las 10:30:12 cerrada a las 10:48:53)

Esto desencadena una orden.

2017.09.22 10:30:12 orden [#3 límite de compra 1.00 SBRF-3.18 a 19352] activada

OnTradeTransaction se llama tres veces. CPositionInfo en cada llamada el volumen de la posición es igual a 1. En la última llamada de TRADE_TRANSACTION_HISTORY_ADD llamo a la función.

2017.09.22 10:30:50 Synmvo =SBRF-3.18 TRADE_TRANSACTION_DEAL_ADD order=3 order_type=ORDER_TYPE_BUY state=ORDER_STATE_STARTED Price=19352.0 deal=2 deal_type=DEAL_TYPE_BUY Position direction POSITION_TYPE_BUY Volume 1.0
2017.09.22 10:30:50 Synmvo =SBRF-3.18 TRADE_TRANSACTION_ORDER_DELETE order=3 order_type=ORDER_TYPE_BUY_LIMIT state=ORDER_STATE_FILLED Price=19352.0 deal=0 deal_type=DEAL_TYPE_BUY Position direction POSITION_TYPE_BUY Volume 1.0
2017.09.22 10:30:50 Synmvo =SBRF-3.18 TRADE_TRANSACTION_HISTORY_ADD order=3 order_type=ORDER_TYPE_BUY_LIMIT state=ORDER_STATE_FILLED Price=19352.0 deal=0 deal_type=DEAL_TYPE_BUY Position direction POSITION_TYPE_BUY Volume 1.0

En una función llamada desde OnTradeTransaction.

2017.09.22 10:32:50 Hay una posición 0.0 en el símbolo cotizado SBRF-3.18 hacia POSITION_TYPE_BUY

Después de un tiempo tratando de obtener el volumen de nuevo en OnTimer

2017.09.22 10:40:00 En OnTimer Symbol=SBRF-3.18 Volume=1.0

Cierra la posición

2017.09.22 10:48:53 orden [#5 vender límite 1,00 SBRF-3.18 a 19435] activada

 
pivomoe:

Estoy intentando aprender a utilizar la función OnTradeTransaction.

Al utilizarlo en el probador, veo el siguiente problema. Se abre una orden y en consecuencia se llama a OnTradeTransaction. En este momento, obtengo el tamaño de la posición dentro de OnTradeTransaction utilizando la clase CPositionInfo. Todo está bien. Luego en la misma llamada llamo a otra función directamente desde OnTradeTransaction y allí CPositionInfo devuelve cero, es decir, no es lo que necesito. Unos minutos más tarde traté de obtener el tamaño de la posición en OnTimer, pero todo estaba bien allí, es decir, 1. Por supuesto, la posición no se ha cerrado y abierto de nuevo a lo largo de toda la historia.

Esta es mi pregunta. Por qué CPositionInfo devuelve lo que necesito en OnTradeTransaction pero en otra función llamada desde OnTradeTransaction, devuelve 0 en lugar del volumen de la posición.


Aquí están los registros. (Posición abierta a las 10:30:12 cerrada a las 10:48:53)

Esto desencadena una orden.

2017.09.22 10:30:12 orden [#3 límite de compra 1.00 SBRF-3.18 a 19352] activada

OnTradeTransaction se llama tres veces. CPositionInfo en cada llamada el volumen de la posición es igual a 1. En la última llamada de TRADE_TRANSACTION_HISTORY_ADD llamo a la función.

2017.09.22 10:30:50 Synmvo =SBRF-3.18 TRADE_TRANSACTION_DEAL_ADD order=3 order_type=ORDER_TYPE_BUY state=ORDER_STATE_STARTED Price=19352.0 deal=2 deal_type=DEAL_TYPE_BUY Position direction POSITION_TYPE_BUY Volume 1.0
2017.09.22 10:30:50 Synmvo =SBRF-3.18 TRADE_TRANSACTION_ORDER_DELETE order=3 order_type=ORDER_TYPE_BUY_LIMIT state=ORDER_STATE_FILLED Price=19352.0 deal=0 deal_type=DEAL_TYPE_BUY Position direction POSITION_TYPE_BUY Volume 1.0
2017.09.22 10:30:50 Synmvo =SBRF-3.18 TRADE_TRANSACTION_HISTORY_ADD order=3 order_type=ORDER_TYPE_BUY_LIMIT state=ORDER_STATE_FILLED Price=19352.0 deal=0 deal_type=DEAL_TYPE_BUY Position direction POSITION_TYPE_BUY Volume 1.0

En una función llamada desde OnTradeTransaction.

2017.09.22 10:32:50 Hay una posición 0.0 en el símbolo cotizado SBRF-3.18 hacia POSITION_TYPE_BUY

Después de un tiempo tratando de obtener el volumen de nuevo en OnTimer

2017.09.22 10:40:00 En OnTimer Symbol=SBRF-3.18 Volume=1.0

Cierra la posición

2017.09.22 10:48:53 orden [#5 vender límite 1,00 SBRF-3.18 a 19435] activada

¿Y por qué utilizar CPositionInfo si existe la estructura MqlTradeTransaction con toda la información sobre la orden, la operación y la posición?

Документация по MQL5: Стандартные константы, перечисления и структуры / Структуры данных / Структура торговой транзакции
Документация по MQL5: Стандартные константы, перечисления и структуры / Структуры данных / Структура торговой транзакции
  • www.mql5.com
Например, при отсылке рыночного ордера на покупку он обрабатывается, для счета создается соответствующий ордер на покупку, происходит исполнение ордера, его удаление из списка открытых, добавление в историю ордеров, далее добавляется соответствующая сделка в историю и создается новая позиция. Все эти действия являются торговыми транзакциями...
 

Para mayor comodidad. Una pequeña función es llamada desde MqlTradeTransaction. Encuentra el elemento necesario mediante la búsqueda de elementos de la clase. Entonces, se llama a una de las funciones de la clase para este elemento y hace algo útil.

 
pivomoe:

Para mayor comodidad. Una pequeña función es llamada desde MqlTradeTransaction. El elemento necesario se encuentra allí mediante la búsqueda de elementos de la clase. Una de las funciones de la clase es llamada para este elemento y hace algo útil.

Aparentemente hay que cambiar todo el algoritmo para hacerlo. El problema está muy mal descrito. Si necesitas algunas clases sin usar OnTradeTransaction, no necesitas algunas clases usando OnTradeTransaction. Esto es exactamente lo que dice

Foro sobre comercio, sistemas de comercio automatizados y pruebas de estrategias

FAQ de principiantes MQL5 MT5 MetaTrader 5

Alexey Viktorov, 2017.12.30 09:04

¿Y por qué usar CPositionInfo cuando existe la estructura MqlTradeTransaction donde está toda la información de órdenes, operaciones y posiciones?


 
No es un problema cambiar el algoritmo. No puedo entender si CPositionInfo devuelve 1, luego 0, luego 1 de nuevo después de la apertura de la posición (me refiero al tamaño de la posición). Aunque el historial muestra que la posición no se cerró ni se abrió de nuevo.
Совершение сделок - Торговые операции - Справка по MetaTrader 5
Совершение сделок - Торговые операции - Справка по MetaTrader 5
  • www.metatrader5.com
Торговая деятельность в платформе связана с формированием и отсылкой рыночных и отложенных ордеров для исполнения брокером, а также с управлением текущими позициями путем их модификации или закрытия. Платформа позволяет удобно просматривать торговую историю на счете, настраивать оповещения о событиях на рынке и многое другое. Открытие позиций...
 
Se ejecuta la función personalizada Abc(), que implementa un algoritmo largo (en tiempo).
Durante la ejecución de esta función, se producen eventos, por ejemplo - Comercio, Temporizador, etc.
¿Es posible saber que estos eventos se produjeron sin finalizar la ejecución de la función Abc()?
Razón de la queja: