Mi enfoque. El núcleo es el motor. - página 80

 
Александр:

¿Debe tomarse su puesto como una solicitud para participar en la aplicación?

Yo también estaba mirando este hilo, pero parece que no has leído bien mi post anterior.

Si es a través del trabajo autónomo, por favor, hágalo. ¿Cuál es el presupuesto? ¿En qué momento te pareció que leía sin atención?

 
Dmitry Fedoseev:

Si es a través del trabajo autónomo, por favor, hágalo. ¿Cuál es el presupuesto? ¿En qué momento pensaste que no estaba leyendo con atención?

Me abstendré de sugerir el trabajo por cuenta propia.

Me abstendré de prestar atención aquí:

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

Mi enfoque. Núcleo - Motor.

Alexander, 2018.12.16 16:12

Mis conocimientos de MQL y de programación en general son bastante modestos. ....

...Si hay una forma de acelerar los resultados sin profundizar demasiado en el proceso, ¿por qué no aprovecharla?

 

Ejemplo de una animación personalizada dibujada por el EA en la ventana del motor:

Código de control en el EA:

void OnTimer()
  { 
   static int q1,a,b; 
   //------------------------------------
   if(!a)LOAD_CANVAS_Last_10_bars(); 
   //---------------------------------
   if(!b) q1++;
   if(q1 == 200)b = 1;
   if(b)q1--;
   if(!q1)b = 0;  
   //------------- 
   ELLIPSE(q1,q1,q1+q1*2,q1+q1,clrBlue);          
   //------------------------------------
  }

Se han añadido 14 funciones de dibujo de la clase CCanvas al bloque de dibujo del motor. Estas funciones se llaman desde el Asesor Experto. Para ello, se han añadido las funciones envolventes de las funciones de dibujo en el archivo Connection_Properties.mqh

Puedes dibujar círculos, rectángulos, triángulos, arcos, elipses y líneas.

Antes de llamar a las funciones de dibujo, tenemos que especificar en qué lienzo van a dibujar (por ejemplo,LOAD_CANVAS_Last_10_bars();).

La tecnología está todavía en su estado bruto. En cuanto lo depure, publicaré un ejemplo listo.

 
Александр:

Buenas tardes.

Estoy tratando de construir una barra de herramientas para controlar la activación/desactivación de las funciones de comercio personalizadas y, respectivamente, la corrección de algunos de sus parámetros.

Me he encontrado con la imposibilidad de activar/desactivar el panel debido a la ausencia del evento ChartEvent en el Probador de Estrategias, al implementar el panel en el código del Asesor Experto.

O la imposibilidad de abrir órdenes en caso de que el panel esté implementado en el código del indicador.

Discusión aquí: https://www.mql5.com/ru/forum/294890

Peter me ofreció su ayuda para desarrollar el panel, que no pude rechazar.

Así que el panel tiene este aspecto

o así, cuando se pulsan todos los botones:

debajo de cada botón sus parámetros, que pueden modificarse mediante las flechas arriba/abajo o editando el campo de edición.

Para los botones "Ahora" el valor es .Locking(false); para todos los demás botones .Locking(true);

Para el botón "Trailing", añada otro parámetro (switch) con los valores All/Each.

Además, tenemos que añadir una lista desplegable en el panel con la elección del marco temporal y una ventana con la lista de órdenes abiertas por el símbolo actual con indicación del beneficio de cada orden (incluyendo el swap) y una cruz delante de cada una de ellas para cerrarla.

Peter, ¿es esta descripción suficiente para su TOR?

Aquí está el panel.

Por favor, haz ajustes en la apariencia, y explica dónde colocar exactamente el interruptor "Todo/Cada", y también la lista de lanzamientos con los plazos (supongo que en la parte superior en el centro).

Botones pulsados:


 

En cuanto al cambio del probador, estoy resolviendo ese problema ahora mismo. Quiero rehacer completamente la comunicación entre el EA y el motor. Implementarlo a través de "objetos de comunicación" (objetos MT cuya descripción de cadena se utiliza para la transmisión de datos entre programas).

Esta puede ser una forma de comunicación rápida y versátil para la comunicación normal y para la comunicación en el modo de prueba del EA.

El enfoque actual de la comunicación sobrecarga la cola de eventos OnChartEvent(). El envío y la recepción de mensajes entre el EA y el motor se retrasa si hay demasiados eventos, y esto se puede apreciar visualmente. La comunicación a través de objetos MT debería eliminar este problema, ya que la recepción y el envío de mensajes se realizará fuera de la cola de eventos OnChartEvent().

En teoría, esto debería funcionar...

 
Реter Konow:

Aquí está el panel.

Por favor, corrige la apariencia, y explica dónde poner exactamente el interruptor "Todo/Cada", así como la lista de plazos (supongo que arriba en el centro).

Creo que sería mejor hacer el panel de todo el ancho del área de trabajo (habrá más meta para la lista de pedidos).

Los campos de edición con etiquetas Lote, Beneficio y junto a los botones "Ahora" deben tener centésimas (formato 0,00).

He experimentado y he llegado a la conclusión de que sería mejor sustituir el campo con la lista de plazos por la etiqueta y dos botones ("-" y "+"). Colóquese a la altura de la fila superior de botones. Etiqueta en el centro, botón "-" a la izquierda, botón "+" a la derecha de la etiqueta. A continuación habrá espacio para una lista de pedidos abiertos.

Coloque los interruptores All/Each debajo de los botones "Trailing" a la altura de la etiqueta "Profit".

Esta es mi visión, pero por lo que he entendido, después de leer el foro y ver tu trabajo, tienes ganas y capacidad de dibujar, así que no me opondré a tus sugerencias.

 
Александр:

1. Creo que sería mejor hacer el panel a todo el ancho del área de trabajo (habría más meta para la lista de pedidos).

2. Los campos de edición con etiquetas Lote, Beneficio y junto a los botones "Ahora" deben tener centésimas (formato 0,00).

3. He experimentado y he llegado a la conclusión de que es mejor sustituir el campo con la lista de plazos por una etiqueta y dos botones ("-" y "+"). Colóquese a la altura de la fila superior de botones. Etiqueta en el centro, botón "-" a la izquierda, botón "+" a la derecha de la etiqueta. Abajo habrá espacio para la lista de pedidos abiertos.

4. Coloque los interruptores All/Each debajo de los botones Trailing a la altura de la etiqueta Profit.

5. Esta es mi visión, pero he entendido que, después de leer el foro y ver tu trabajo, tienes el talento y la capacidad de dibujar, así que no me opondré a tus sugerencias.

1. ¿hacer que el panel se ajuste automáticamente a la anchura del gráfico? ¿O sólo a la anchura del gráfico?

2. Lo haré.

3. No entiendo bien. ¿Quiere decir que los plazos se establecerán en el campo de entrada con botones +/-? ¿Y no hacer una ventana separada con una lista de pedidos? ¿Todo en el panel?

4. El interruptor podría ser un simple botón que cambie el texto al pulsarlo/reprimirlo?

5. Añadir elementos gráficos.

(Un pequeño deslizador podría convertirse en un interruptor. El deslizador iría a la derecha/izquierda)

 
Реter Konow:

En cuanto al cambio del probador, estoy resolviendo ese problema ahora mismo. Quiero rehacer completamente la comunicación entre el EA y el motor. Implementarlo a través de "objetos de comunicación" (objetos MT cuya descripción de cadena se utiliza para la transmisión de datos entre programas).

Esta puede ser una forma de comunicación rápida y versátil para la comunicación normal y para la comunicación en el modo de prueba del EA.

El enfoque actual de la comunicación sobrecarga la cola de eventos OnChartEvent(). El envío y la recepción de mensajes entre el EA y el motor se retrasa si hay demasiados eventos, y esto se puede apreciar visualmente. La comunicación a través de objetos MT debería eliminar este problema, ya que la recepción y el envío de mensajes se realizará fuera de la cola de eventos OnChartEvent().

En teoría, debería funcionar...

No estoy seguro de entender del todo el punto.

¿Estoy entendiendo bien que vas a implementar la comunicación entre el EA y el panel en modo de prueba a través de los eventos OnChartEvent()?

Si es así, las posibilidades de éxito no son muy altas, porque los eventos OnChartEvent() no se generan para el EA en el probador (sólo para el indicador).

https://www.mql5.com/ru/forum/294890/page4#comment_9914750 aquí se sugirió reemplazar los eventos OnChartEvent() por eventos OnTick().

Lo he probado, pero hace que todos los objetos compuestos (SpinEdit, ComboBox y otros) dejen de funcionar. El único método que permite cambiar los valores de las variables en el comprobador Button.Pressed() y sólo para los botones autónomos (botones no incluidos en ningún objeto complejo como SpinEdit)

SimplePanel проблема при переключении таймфрейма
SimplePanel проблема при переключении таймфрейма
  • 2018.12.16
  • www.mql5.com
В составе стандартного пакета MT4 имеется пример создания панели управления "Simple Panel...
 
Александр:

No estoy seguro de entender del todo el punto.

¿He entendido bien que vas a realizar la comunicación entre el EA y el panel en modo de prueba a través de los eventos OnChartEvent()?

Si es así, las posibilidades de éxito no son muy altas, porque los eventos OnChartEvent() no se generan para el EA en el probador (sólo para el indicador).

https://www.mql5.com/ru/forum/294890/page4#comment_9914750 aquí se sugirió reemplazar los eventos OnChartEvent() por eventos OnTick().

Lo he probado, pero hace que todos los objetos compuestos (SpinEdit, ComboBox y otros) dejen de funcionar. El único método que permite cambiar los valores de las variables en el comprobador de Button.Pressed() y sólo para los botones independientes (botones no incluidos en ningún objeto complejo como SpinEdit)

Es una explicación larga. Pero, confía en mi experiencia. El método de comunicación funcionará.

El panel estará en un gráfico regular. El Asesor Experto en el probador. El panel encontrará el Asesor Experto en el Probador de Estrategias, creará objetos MT y a través de su descripción se "comunicará" con el EA.

La función OnChartEvent() funciona en el gráfico normal. No lo hace en el probador. Pero no impedirá la sincronización de los valores de los parámetros.

Estoy seguro de que funcionará.

Será cuestión de una semana.

 
Реter Konow:

Es una explicación larga. Pero, confía en mi experiencia. El método de comunicación funcionará.

El panel estará en un gráfico normal. El Asesor Experto en el probador. El panel encontrará el Asesor Experto en el Probador de Estrategias, creará objetos MT y a través de su descripción se "comunicará" con el EA.

La función OnChartEvent() funciona en el gráfico normal. No lo hace en el probador. Pero no impedirá la sincronización de los valores de los parámetros.

Estoy seguro de que funcionará.

Será cuestión de una semana.

No funcionará.