Discusión sobre el artículo "Biblioteca para el desarrollo rápido y sencillo de programas para MetaTrader (Parte X): Compatibilidad con MQL4" - página 3
Está perdiendo oportunidades comerciales:
- Aplicaciones de trading gratuitas
- 8 000+ señales para copiar
- Noticias económicas para analizar los mercados financieros
Registro
Entrada
Usted acepta la política del sitio web y las condiciones de uso
Si no tiene cuenta de usuario, regístrese
Artem, por favor, dime qué papel desempeña la sección de código resaltada.
¿Cómo puede ejecutarse este código si el temporizador no está activado?
Pero si se elimina esta sección de código, los mensajes de eventos no se imprimen. Pero todo funciona con ella.
Y me gustaría poder obtener un ticket, precios y quizás algunas otras propiedades de posiciones y órdenes junto con el mensaje de evento.
Creo que has cambiado el comentario. En OnTimer() se comprueba el EA no en el tester:
Y compara dos manejadores: en OnTick( ) el temporizador de la libreria se inicia solo en el tester, y en OnTimer() el temporizador de la libreria se inicia solo no en el t ester - porque en MQL4 el temporizador no funciona en el tester, y nosotros trabajamos en ticks en el tester.
Ahora haré un ejemplo.
Creo que has cambiado el comentario.
El comentario cambió solo, yo no lo toqué.))))))
Sólo copié en un lugar y pegué en diferentes lugares y no presté atención. Pero luego puse una negación en forma de ! y no importante no lo toqué.
Pero la pregunta sigue sin respuesta: Si el temporizador no se inicia en OnInit(), ¿cuál es el punto del controlador OnTimer() y por qué el código en él se ejecuta al menos una vez.
Básicamente, he conseguido los mensajes al log. Falta obtener las propiedades de los items. Tipo, ticket, precios y hora de apertura, cierre, modificación.
Y me gustaría poder obtener ticket, precios y quizás algunas otras propiedades de posiciones y órdenes junto con el mensaje del evento.
No en el probador se puede obtener el ticket de la orden del último evento en OnChartEvent() - parámetro lparam. En dparam se almacena el precio. En sparam - símbolo.
Para obtener datos en el probador, actualmente se debe utilizar el código de evento que se obtiene con engine.LastTradeEvent() - porque todo depende del evento - si se trata de una modificación, es necesario obtener una lista de modificaciones, y si se trata de un cambio en el número de órdenes, es necesario obtener listas de estas nuevas órdenes.
Necesitamos añadir en CEngine para devolver los valores necesarios al programa. Todavía no he llegado al punto de enviar información al programa - todavía estoy describiendo la preparación de los datos necesarios. En futuros artículos llegaremos a la clase que da fácil acceso a todos los datos necesarios. Y ahora - si lo necesita con urgencia, es necesario añadir a CEngine el retorno de la lista de la clase-colección de eventos - la propia clase tiene la recepción de esta lista, aquí están - todas las listas en la sección pública CEventCollection:
Todos los eventos se almacenan en la lista m_list_events, y estos métodos devuelven la lista completa o filtrada por un criterio dado.
Para obtener el último evento basta con crear en CEngine la devolución de esta lista al programa, y en el programa tomar el evento requerido de la lista.
Todo esto se automatizará pronto - todavía no está en la cola.
Si todavía necesita hacer una muleta, su discusión - en un privado. No vale la pena aquí - no se aplica a la biblioteca, ya que está en desarrollo, y más trabajo normal y adecuado se llevará a cabo para obtener todos y cualquier evento requerido en el programa.
El comentario ha cambiado solo, no lo he tocado.)))))
Simplemente copié en un sitio y pegué en otros diferentes y no presté atención. Pero luego puse una negación en forma de ! y no toqué lo importante.
Pero la pregunta sigue sin respuesta: Si el temporizador no se inicia en OnInit(), qué sentido tiene el manejador OnTimer() y por qué se ejecuta el código en él al menos una vez.
Básicamente, he conseguido los mensajes al log. Falta obtener las propiedades de los items. Tipo, ticket, precios y hora de apertura, cierre, modificación.
Explique lo que quieres decir? ¿Te refieres a la creación de un temporizador? Se crea en el constructor CEngine:
No en el probador se puede obtener el ticket de pedido del último evento en OnChartEvent() - parámetro lparam. En dparam se almacena el precio. En sparam - símbolo.
Ya lo he encontrado, gracias. Y mediante la obtención de una entrada se puede obtener todo lo que necesita. Excepto de qué precio hubo una modificación. O hacer una muleta real para saber el precio antes de la modificación. En principio no es muy necesario todavía.
Básicamente tengo los mensajes de registro. Sólo necesito obtener las propiedades de las posiciones. Tipo, ticket, precios y hora de apertura, cierre, modificación.
Sin embargo, para una solución rápida, añadir un retorno de lista de eventos a la sección pública de CEngine:
En el EA, añadir este código:
Y el último evento se imprimirá en el registro
¿A qué se refiere? ¿Te refieres a la creación de un temporizador? Se crea en el constructor CEngine:
Bueno, tuviste que ir a través de toda la biblioteca para eso. )))
Ya lo he encontrado, gracias. Y si usted consigue un boleto, usted puede conseguir todo lo que necesita. Excepto a qué precio se hizo la modificación. O hacer una muleta real para saber el precio antes de la modificación. Realmente no lo necesito todavía.
Ya te he dado el código - allí está todo, y el precio antes de la modificación también.
Bueno, para eso has tenido que buscar en toda la biblioteca. )))
No. Basta con leer los artículos
Y esto es lo que ocurrió:
Mientras ejecutaba este código en la demo, se estableció una orden limitada y se eliminó
Y de repente, durante el siguiente mocking, una posición fue modificada, una posición fue abierta y una posición fue cerrada. ¿Pero de dónde salió el registro de borrar una orden borrada hace tiempo?