Discusión sobre el artículo "Biblioteca para el desarrollo rápido y sencillo de programas para MetaTrader (Parte XXIII): Clase comercial principal - control de parámetros permitidos" - página 2

 
Artyom Trishkin:

¿Qué se entiende por "condición de experto"?

Supongamos que tengo un TS con 2 indicadores, pero comercio en un indicador todo el tiempo, en el otro indicador sólo 2 veces después del inicio y además abriré órdenes después de la última pérdida en el 1er indicador.....

no importa que TS, pero un determinado TS con el que se colocan las órdenes de acuerdo a un principio independiente, pero el momento de la conmutación en el segundo TS es importante, es decir, multi-experto puede ser llamado, o 2 TS en un EA ...

si sobrecarga el terminal, puede complicar el algoritmo de búsqueda de órdenes de inicio, porque podemos no saber qué TS comenzó a trabajar primero ...




como en tu EA grande, puede haber necesidad de guardar datos, por eso pregunto, ¿habrá o ya se han escrito o no hay clases/funciones para guardar formatos de datos complejos?

 
Artyom Trishkin:

la biblioteca puede.

La misma información no está disponible en el historial de operaciones de MT4.

 
fxsaber:

La misma información no está disponible en el historial de operaciones de MT4.

Sí, no está. Pero hay (por el momento) en la lista de eventos. Se registra durante el funcionamiento del Asesor Experto. Y todo está disponible en ella.

Naturalmente, después de recargar el terminal o reiniciar el Asesor Experto, la historia actual del Asesor Experto se perderá. Pero esto es sólo por ahora, porque en el futuro todos los elementos importantes de todas las listas se guardarán en archivos y se leerán de ellos al reiniciar. No en el probador, por supuesto.

 
Igor Makanu:

Supongamos que tengo un TS con 2 indicadores, pero yo comercio en un indicador todo el tiempo, en el otro indicador sólo 2 veces después del lanzamiento y en el futuro voy a abrir órdenes después de la última pérdida en el 1er indicador.....

no importa que TS, pero un determinado TS con el que se colocan las órdenes de acuerdo con un principio independiente, pero el momento de la conmutación en el segundo TS es importante, es decir, un multi-experto puede ser llamado, o 2 TS en un EA....

si sobrecargamos el terminal, podemos complicar el algoritmo de búsqueda de órdenes de inicio, porque puede que no sepamos qué TS empezó a funcionar primero?




como en tu Expert Advisor grande, puede haber necesidad de guardar datos, por eso pregunto si habrá o ya se han escrito o no hay clases/funciones para guardar formatos de datos complejos?

La verdad es que no lo entiendo. ¿Cómo puede una librería conocer la lógica de un EA que aún no ha sido creado? Está pensada para facilitar la creación de programas para terminales, y no sabe en absoluto qué programas se crearán con su ayuda.

Al mismo tiempo, si algo es difícil de definir programáticamente, es muy probable que sea fácil hacerlo con la ayuda de la biblioteca, y entonces será posible para el escritor experto controlar todo rápidamente.

No necesito un ejemplo abstracto para entenderlomejor.

 
Artyom Trishkin:

No lo entiendo muy bien para ser honesto. ¿Cómo puede una biblioteca conocer la lógica de un Asesor Experto aún no creado? Está pensada para facilitar la creación de programas para terminales, y no sabe en absoluto qué programas se crearán con su ayuda.

Al mismo tiempo, si algo es difícil de definir programáticamente, es muy probable que sea fácil hacerlo con la ayuda de la biblioteca, y entonces será posible para el experto escritor controlar todo rápidamente.

No necesito un ejemplo abstracto para entenderlomejor.

Basta con que lo pongas en práctica:

Artyom Trishkin:

Naturalmente, después de recargar el terminal o reiniciar el Asesor Experto, la historia actual del Asesor Experto se perderá. Pero esto es sólo por ahora, porque en el futuro todos los elementos importantes de todas las listas se guardarán en archivos y se leerán de ellos al reiniciar. No en el probador, por supuesto.

a primera vista es una tarea sencilla, pero hay un montón de problemas: la sincronización con un archivo, la grabación oportuna, la lógica de la recuperación después de reiniciar..... hay un montón de matices en los que me gustaría ver la aplicación de la escritura de tipos de datos complejos

 
Igor Makanu:

es suficiente para que te des cuenta

Naturalmente, después de recargar el terminal o reiniciar el Asesor Experto, la historia actual del Asesor Experto se perderá. Pero esto es sólo por ahora, porque en el futuro todos los elementos importantes de todas las listas se guardarán en archivos y se leerán de ellos al reiniciar. No en el probador, por supuesto.

a primera vista es una tarea sencilla, pero hay un montón de problemas: la sincronización con un archivo, la grabación oportuna, la lógica de la recuperación después de reiniciar..... hay un montón de matices en los que me gustaría ver la aplicación de la escritura de tipos de datos complejos

Así que esto ha sido planeado desde hace mucho tiempo - se puede decir que desde el principio. Voy a poner en práctica cuando todas las colecciones de datos necesarios serán creados - para hacer todo a la vez.

Pero lo que se escribió sobre - que es necesario entender cuando qué TC fue el primero en operar - no necesita tal complejidad. Después de todo, la biblioteca ve toda la historia de la terminal desde la reposición de la cuenta hasta la actualidad. Para MetaTrader4 es importante resolver toda la historia en el terminal. No lo hice con la ayuda de dll - planeo proporcionar posibles posibilidades (juego de palabras) con herramientas estándar, es por eso que no consideré dll y no lo consideraré.

Por lo tanto, siempre se puede encontrar rápidamente todas las ofertas de cada TS para cualquier período de tiempo y compararlos. ¿Qué acuerdo es el primero - que TS y zapatillas.

 
Igor Makanu:

MQL4 no almacena el historial de órdenes pendientes activadas, sólo se puede definir en el historial de órdenes:

He probado esta funcionalidad de la librería en mql4. El historial no tiene nada que ver, la librería capta el hecho mismo de la activación de la orden pendiente y en este momento todas las propiedades de una posición abierta están disponibles.

 
Alexey Viktorov:

He probado la funcionalidad de esta librería en mql4. La historia no tiene nada que ver, la librería capta el hecho mismo de la activación de una orden pendiente y en este momento todas las propiedades de una posición abierta están disponibles.

No sólo en este momento. La historia de todas las órdenes activadas (y en general - todos los eventos de negociación) se almacena en la biblioteca y está disponible durante todo el trabajo. Es decir, siempre se puede encontrar toda la historia de una posición - desde el establecimiento de una orden pendiente hasta su cierre completo.

Sin embargo, aún no se ha implementado la posibilidad de guardar el historial del Asesor Experto en un archivo - después de reiniciar el Asesor Experto, el historial de todos sus eventos de negociación se perderá y comenzará a acumularse de nuevo después del siguiente evento de negociación. Pero este comportamiento es temporal - inicialmente estaba previsto guardar toda la información importante en archivos. Esto se hará más adelante - después de crear todas las colecciones de datos necesarias.

CEngine tiene un método GetListAllOrdersEvents(), que devuelve al programa de control una lista completa de todos los eventos de negociación que se han producido en la cuenta desde el lanzamiento del programa basado en la biblioteca.

Para obtener la lista completa de eventos de negociación pertenecientes a un Asesor Experto (o sus posiciones con un determinado mago), debe filtrar la lista obtenida por el mago necesario:

   //--- Obtener una lista completa de todos los eventos de negociación en la cuenta
   CArrayObj *list=engine.GetListAllOrdersEvents();
   //--- Dejar en la lista sólo los eventos pertenecientes al experto (u órdenes) con magik 100500
   list=CSelect::ByOrderProperty(list,ORDER_PROP_MAGIC,100500,EQUAL);

Y luego en un bucle a través de la lista obtenida puede obtener todos los eventos comerciales de la lista uno por uno y trabajar con ellos.

   if(list!=NULL)
     {
      for(int i=0;i<list.Total();i++)
        {
         CEvent *event=list.At(i);
         if(event==NULL)
            continue;
         Print("----------------------");
         event.Print();
        }
     }
 
Artyom Trishkin:

No sólo en este momento. La historia de todas las órdenes activadas (y en general - todos los eventos de negociación) se almacena en la biblioteca y está disponible durante todo el trabajo. Es decir, siempre se puede encontrar toda la historia de una posición - desde el establecimiento de una orden pendiente hasta su cierre completo.

Sin embargo, aún no se ha implementado la posibilidad de guardar el historial del Asesor Experto en un archivo - después de reiniciar el Asesor Experto, el historial de todos sus eventos de negociación se perderá y comenzará a acumularse de nuevo después del siguiente evento de negociación. Pero este comportamiento es temporal - inicialmente estaba previsto guardar toda la información importante en archivos. Esto se hará más adelante - después de crear todas las colecciones de datos necesarias.

CEngine tiene un método GetListAllOrdersEvents(), que devuelve al programa de control una lista completa de todos los eventos de negociación que se han producido en la cuenta desde el inicio del programa basado en la biblioteca.

Para obtener la lista completa de eventos de negociación pertenecientes a un Asesor Experto (o sus posiciones con un determinado mago), es necesario filtrar la lista obtenida por el mago requerido:

Y luego en un bucle a través de la lista obtenida puede obtener todos los eventos de negociación de la lista uno por uno y trabajar con ellos.

He dicho sólo lo que es importante para mí en este momento. Y lo que se ha probado. Gracias por las aclaraciones, cuando habrá una necesidad te atormentaré con preguntas.

 
Hola! he descargado la última versión de la biblioteca y Expert Part_23, puse el modo visual en el tester y se abren las órdenes de mercado, pero todas las órdenes pendientes no.
las ordenes se abren, pero todas las ordenes pendientes no, en el diario escribe "2019.10.27 10:13:32.157 2019.09.23 10:00:02 failed sell stop limit 2.00 RTS-12.19 at 135750 (135800) sl: 135900 tp: 135600 [Invalid expiration].
Símbolos de cambio, broker Otkritie, versión 5.00 build 2190.
También. En artículos anteriores, creo que en la parte 14 o 15, prometiste crear clases para trabajar con la colección de símbolos, pero ¿por qué es así?
con el cristal, pero por alguna razón no las has creado, y estas son las necesidades básicas de la biblioteca, junto con símbolos y cuentas, y ya has ido

lejos en las mejoras de la biblioteca (recursos, sonidos, etc.) y creo que te faltaron las tareas básicas.

Gracias, la biblioteca es muy necesaria.