Errores, fallos, preguntas - página 147

 
Vladix:

¿Existe alguna posibilidad en mql5 de seguir el estado de una posición abierta, por ejemplo, que se esté cerrando ahora?

...

Pero luego llega el siguiente tick, se repiten todos los pasos anteriores, se hace la selección de posiciones, se toma el volumen y se coloca UNA posición más en la dirección de cierre.

¿Qué se puede hacer para evitarlo?

No hay que hacer nada. Hasta que la función OnTick() procese el tic actual, se saltan todos los tics entrantes.

Lo que ocurre con la posición en tiempo real, se puede seguir utilizando la función OnTrade ().

Обработка торговых событий в эксперте при помощи функции OnTrade()
Обработка торговых событий в эксперте при помощи функции OnTrade()
  • 2010.06.01
  • KlimMalgin
  • www.mql5.com
В 5-ой версии языка MQL появилась масса нововведений, в том числе работа с событиями различных типов (события таймера, торговые события, пользовательские и т.д.). Возможность обработки событий позволяет создавать совершенно новый тип программ для автоматического и полуавтоматического трейдинга. В этой статье мы рассмотрим торговые события и напишем для функции OnTrade() код, который будет обрабатывать событие Trade.
 
Valmars:

No es necesario hacer nada. Mientras el tick actual no sea procesado por la función OnTick(), todos los ticks recién llegados se saltan.

Lo que ocurre con la posición en tiempo real puede seguirse mediante la función OnTrade ().

Si no fuera por la ejecución asíncrona de la solicitud, todo estaría bien. Pero cuando llega un tick, la posición se cierra, mientras que sigue en la lista cuando llega el siguiente tick, así que ¿cómo podemos entender si la posición está abierta, abierta o cerrada? ¿Cómo se procesan los eventos comerciales? En mi opinión, una operación básica no debería ser tan complicada.

Lo ideal sería que al intentar cerrar una posición, ésta obtuviera el estado "Cerrado" o "Procesando" o alguna otra cosa, por la cual se pueda determinar que está actualmente en proceso de alguna acción, entonces se puede dejar en paz con la conciencia tranquila.

Y ahora, hay que revisar mucha historia y entender cómo sucedió todo, y no hay garantía de que todo sea correcto.

 
Vladix:

Si no fuera por la naturaleza asíncrona de la solicitud, todo estaría bien. Pero cuando llega un tick, la posición está cerrada, y cuando llega el siguiente tick, siguen en la lista, así que ¿cómo podemos entender si están abiertas o cerradas? ¿Cómo se procesan los eventos comerciales? En mi opinión, una operación básica no debería ser tan complicada.

Lo ideal es que cuando se intente cerrar una posición, ésta obtenga el estado "Cerrando" o "Procesando" o lo que sea, lo que indicaría que está en proceso de algún tipo de acción, entonces se puede dejar tranquila con la conciencia tranquila.

Y ahora, hay que revisar mucha historia y entender cómo sucedió todo, y no hay garantía de que todo sea correcto.

No abra y cierre posiciones en cada tic, haga una demora después de cada operación.
Документация по MQL5: Стандартные константы, перечисления и структуры / Торговые константы / Типы торговых операций
Документация по MQL5: Стандартные константы, перечисления и структуры / Торговые константы / Типы торговых операций
  • www.mql5.com
Стандартные константы, перечисления и структуры / Торговые константы / Типы торговых операций - Документация по MQL5
 
EQU:

Por qué... ¿Quién dice que NewBar no es un evento? )))))))))

OnNews - la noticia llega, el bot tiene que leerla... Oficialmente. No hurgando en la WinAPI de una manera zurda.

1.NewBar - Un evento que puedes implementar tú mismo. Es probable que esto sea lo que aconsejen. Una vez pregunté por Connect y la respuesta fue sencilla: tienes que ponerlo en práctica tú mismo.

No es un problema - lo implementé y ahora trato de rastrear casi todo lo que necesito con ayuda del temporizador (ya tengo cerca de 30 eventos). Cuando termine, el usuario no podrá cambiar ninguno de los parámetros que me interesan, para que el experto no se entere.

2. OnNews - La idea en general es comprensible, podrías unirte. Aunque es probable que los desarrolladores señalen la presencia de News.wav.

Aunque, hace tiempo que busco que los desarrolladores amplíen la funcionalidad del lenguaje mediante la posibilidad de trabajar con el calendario de noticias económicas y otras FA. ¿Crees que lo harán todo bien? No lo creo.

Ya he enviado mi solicitud en esta ocasión, la esperanza sigue viva. Estaría bien que un experto hiciera algún trabajo por su cuenta...

Документация по MQL5: Основы языка / Функции
Документация по MQL5: Основы языка / Функции
  • www.mql5.com
Основы языка / Функции - Документация по MQL5
 
Vladix:

Si no fuera por la petición asíncrona, todo iría bien. Pero cuando llega un tic, la posición se cierra y en el siguiente tic siguen en la lista, y ¿cómo podemos entender si están abiertas, abiertas o cerradas? ¿Cómo se procesan los eventos comerciales? En mi opinión, una operación básica no debería ser tan complicada.

Lo ideal es que cuando se intente cerrar una posición, ésta obtenga el estado "Cerrado" o "Procesando" o lo que sea, por lo que se puede determinar que está en proceso de algún tipo de acción, entonces se puede dejar tranquila con la conciencia tranquila.

Y ahora, hay que revisar mucha historia y entender cómo sucedió todo, y no hay garantía de que todo sea correcto.

Incluso ahora se puede hacer con facilidad, si se sabe cómo hacerlo. Los desarrolladores han prometido reescribir OnTrade(), añadir los parámetros necesarios allí. si se hace, será aún más fácil de manejar.

No se evita manejar tales situaciones en el sitio, en OnTick() o OnTime() - en el lugar de la operación de comercio; o en OnTrade(), si se quiere atrapar las acciones del usuario o las operaciones de comercio no controladas directamente desde el código.

Документация по MQL5: Стандартные константы, перечисления и структуры / Торговые константы / Типы торговых операций
Документация по MQL5: Стандартные константы, перечисления и структуры / Торговые константы / Типы торговых операций
  • www.mql5.com
Стандартные константы, перечисления и структуры / Торговые константы / Типы торговых операций - Документация по MQL5
 
Interesting:

1.NewBar - Un evento que puedes implementar tú mismo. Es probable que esto sea lo que aconsejen. Una vez pregunté por Connect y la respuesta fue sencilla: debes implementarlo tú mismo.

...

Estoy un poco confuso sobre cómo veo OnNewBar...)

OnNewBar(ulong Param), donde Param - rellena de forma bitácora 1 en posiciones de timeframe con una nueva barra... - No todos los gráficos se actualizan simultáneamente por el número de barras...

Por ejemplo...

...00001 - sólo se actualiza un minuto

...00111 - sólo un minuto, 2 y 3 se actualizan... y así sucesivamente...

Es sólo una idea, pero creo que sería útil. Aunque...;)

 
EQU:

Estoy un poco confuso sobre cómo veo OnNewBar...)

OnNewBar(ulong Param), donde Param - rellena 1 en las posiciones del marco temporal con una nueva barra... - No todos los gráficos se actualizan simultáneamente por el número de barras...

Por ejemplo...

...00001 - sólo se actualizó el minuto.

...00111 - sólo un minuto, 2 y 3 se actualizan... etc.

Es sólo una idea, pero creo que sería útil. Aunque...;)

A expensas del parámetro hay que pensar. ¿Vale la pena hacerlo (puede ser que sea más fácil poner TF allí como ENUM_TIMEFRAMES)?

Al menos, yo quería hacer algo así, pero luego desistí...

PS

Se me olvidó decir, que quería hacer OnNewBar en la clase Chart, en la que estoy trabajando ahora (por el momento todavía estoy empaquetando allí cosas estándar + mis propias bagatelas agradables).

No me preguntes por qué no me gusta el CChart estándar... :)

 

Si necesitas rastrear un nuevo bar, echa un vistazo a mi código. puede ser útil. he probado diferentes variantes - este método es el más fiable

https://www.mql5.com/ru/code/107

isNewBar
isNewBar
  • votos: 7
  • 2010.05.07
  • Prival
  • www.mql5.com
Функция анализа появления нового бара на заданном таймфрейме.
 
Prival:

Si necesita rastrear una nueva barra, eche un vistazo a mi código. puede ser útil. he probado diferentes variantes - este método es el más fiable

https://www.mql5.com/ru/code/107

¿Qué ocurre con la hora de apertura de la última barra en comparación con el período del símbolo SERIES_LASTBAR_DATE? Mucho más fácil que tu versión y no necesitas un indicador.


Además, para un EA multidivisa debe definirse una nueva barra para cada símbolo, lo que significa que el indicador debe inicializarse para todos los símbolos.

 
Prival:

Si necesitas rastrear una nueva barra, echa un vistazo a mi código. puede ser útil. he probado diferentes variantes - este método es el más fiable

https://www.mql5.com/ru/code/107

De nuevo - código... código... El código es bueno... pero también lo son las tácticas, los bucles... ;)

¿El gráfico no recibe un mensaje sobre la creación de una nueva barra? No me lo creo...))

¿Hay algún problema para hacer un evento? ¿Hay alguna variable predefinida al menos?

Y en general, es más fácil procesar eventos que llenar una montaña de código. Y además - con errores (¡¡¡Programas sin errores nunca!!! )))))

Razón de la queja: