Reglas de estructura. Aprender a estructurar los programas, explorar las posibilidades, los errores, las soluciones, etc. - página 19

 
komposter:

MetaDriver lo dice bien, y su sistema es correcto. Dick_fx también añadiría que el "controlador de operaciones" debería trabajar con 10-20 plataformas para utilizar los mejores precios.

Pero utilizar un sistema tan correcto sólo es conveniente en condiciones ideales: sin errores de estrategia, sin intervención del usuario, sin fuerza mayor... Y en la realidad esto no suele ser así.

Permítanme dar un ejemplo de dick_fx: 25 estrategias están trabajando, el agregador (conductor de comercio) los recoge en una posición neta y los pone en el mercado, todo está bien. De repente, algo va mal en la estrategia 17-th y da previsiones poco saludables - dice que hay que abrir al 50% del depósito. El Asesor Experto se abre obedientemente.

Qué hace un casillero trivial a la MT4:

  • elimina el 17º EA del gráfico (es fácil encontrarlo por el magik en el trato),
  • cerrar la posición correspondiente (en términos de MT4) o parte de la posición (en términos de MT5),
  • lee los registros, creados por este EA, para analizar la situación.

Ahora pasemos a la "contabilidad correcta". ¿Qué debe hacer el operador para corregir el error (una operación con un margen del 50%, un error lógico evidente)?

  • Encuentre la estrategia que lo generó (¿cómo? ¿a partir de los registros?),
  • Encuentra el código apropiado y edítalo (return(0)?),
  • O en el bucle de suma de posiciones, frente a la estrategia requerida (¡el número no debe ser erróneo!), ponga continue;
  • Compilar el Asesor Experto (si es MT4 - primero cerrar el terminal, o después de la compilación, especificar la configuración correcta),
  • El análisis de la situación - un tema aparte (si no está provisto de sus propios registros con la división en estrategias).

La pregunta es: ¿qué es más fácil? Obviamente, la variante con MT4.

¿Y qué es más barato? Obviamente, la opción con Red.

¿Cuál es la conclusión? Para hacer un controlador de mercado con GUI de MT4 ;)

El problema de la localización de una estrategia con fallos en una multitud de estrategias heterogéneas resumidas existe, pero aún no ha llegado a ser tan dramático. Personalmente resumo (en gran cantidad) sólo estrategias homogéneas, por ejemplo, redes neuronales optimizadas de forma diferente. Pero todo es más fácil allí - las señales de las estrategias están normalizadas (-1...+1), cada estrategia hace una contribución microscópica a la posición agregada, la fiabilidad del esquema se logra debido a la "preponderancia estadística". Por otro lado, es más complicado: es casi irreal detectar a tiempo un fallo en tal multitud. Sólo mediante pruebas individuales (preferiblemente mediante pruebas automatizadas).

Puede tratar de generar ideas para esta localización, pero no tratar de "reflexivamente" saltar a 4, y sólo sentir el espacio de opciones - tal vez algo mejor se encuentra. :)

// Probablemente, sería imposible inventar un indicador de equidad individual (aka tester) para cada estrategia mejor, pero hasta ahora parece ser una carga demasiado grande.

 
komposter:

MetaDriver lo dice bien, y su sistema es correcto. Dick_fx también añadiría que el "controlador de operaciones" debería trabajar con 10-20 plataformas para utilizar los mejores precios.

Pero utilizar un sistema tan correcto sólo es conveniente en condiciones ideales: sin errores de estrategia, sin intervención del usuario, sin fuerza mayor... Y en la realidad esto no suele ser así.

Permítanme dar un ejemplo de dick_fx: 25 estrategias están trabajando, el agregador (conductor de comercio) los recoge en una posición neta y los pone en el mercado, todo está bien. De repente, algo va mal en la estrategia 17-th y da previsiones poco saludables - dice que hay que abrir al 50% del depósito. El Asesor Experto se abre obedientemente.

Qué hace un casillero trivial a la MT4:

  • elimina el 17º EA del gráfico (es fácil encontrarlo por el magik en el trato),
  • cerrar la posición correspondiente (en términos de MT4) o parte de la posición (en términos de MT5),
  • lee los registros, creados por este EA, para analizar la situación.

Ahora pasemos a la "contabilidad correcta". ¿Qué debe hacer el operador para corregir el error (una operación con un margen del 50%, un error lógico evidente)?

  • Encuentre la estrategia que lo generó (¿cómo? ¿a partir de los registros?),
  • Encuentra el código apropiado y edítalo (return(0)?),
  • O en el bucle de suma de posiciones, frente a la estrategia requerida (¡el número no debe ser erróneo!), ponga continue;
  • Compilar el Asesor Experto (si es MT4 - primero cerrar el terminal, o después de la compilación, especificar la configuración correcta),
  • El análisis de la situación - un tema aparte (si no está provisto de sus propios registros con la división en estrategias).

La pregunta es: ¿qué es más fácil? Obviamente, la variante con MT4.

¿Y qué es más barato? Obviamente, la opción de la red.

¿Cuál es la conclusión? Para hacer un controlador de mercado con GUI de MT4 ;)

Uno tiene la sensación de que MT5 negocia posiciones.

El netting es un sistema contable y no más que eso, MT4 sólo tiene el historial de órdenes, MT5 tiene tanto el historial de órdenes como su suma en una posición.

Es decir, MT5 tiene inequívocamente más información que procesar.

También debemos tener en cuenta que cada orden tiene un magik y un comentario al igual que en MT4. Permiten identificar la estrategia del agregador que ha realizado un pedido por el 50% del margen.

Si no sabemos utilizar este tipo de números mágicos y comentarios, no veremos lo fácil que es identificar el orden.

Si queremos utilizar un MetaTrader 5 como fuente de datos, entonces poner una orden out en la misma orden que supuestamente se está cerrando, entonces en las órdenes cerradas se listarán sólo aquellas órdenes que tienen out, y en las órdenes abiertas que no tienen out.

 
TheXpert:

El conductor del comercio disminuye la fiabilidad del sistema.

¿No te lo crees de verdad? Y usted habla con tanto énfasis del conductor como algo realmente genial.

He aquí un ejemplo... tenemos un arbitraje de ida y vuelta. La primera orden se dispara por límite, luego la ronda se cierra por mercado.

¿Qué sucede en el probador interno? El círculo está cerrado y no hay Requotes, requotes, pings y otras cosas que perturban el comercio.

Ahora imaginemos que después de la recotización del límite (el activador estaba ahí, la posición no aparecía) el precio se ha movido hacia atrás pero ha ocurrido a medianoche (la ley de la Fortuna) y la conexión se ha perdido durante ese tiempo.

Se ha detectado la señal y hay una posición en el comprobador interno; debería estar ajustada. Esto supuso una enorme pérdida para los estándares de arbitraje. De hecho, la respuesta terminó con una rejunción, por lo que no es necesario abrir una posición.

Los mejores zapatos son los que se hacen a medida para adaptarse a tus pies. Cuanto más versátil, menos fiable.

 

TheXpert:

TheXpert:

El conductor comercial reduce la fiabilidad del sistema.

¿No te lo crees de verdad? Y discutir sobre el conductor tan vigorosamente como algo realmente genial.

Ejemplo: tenemos un arbitraje de ida y vuelta. La primera orden se dispara en el límite, luego el círculo se cierra en el mercado.

¿Qué sucede en el probador interno? El círculo está cerrado, no hay re-jacks, requotes, pings y otras cosas que perturban el comercio.

Ahora imaginemos que después de la recotización del límite (el activador estaba ahí, la posición no aparecía) el precio se ha movido hacia atrás pero ha ocurrido a medianoche (la ley de la Fortuna) y la conexión se ha perdido durante ese tiempo.

Se ha detectado la señal y hay una posición en el comprobador interno; debería estar ajustada. Esto supuso una enorme pérdida para los estándares de arbitraje. De hecho, la respuesta terminó con una rejunción, por lo que no es necesario abrir una posición.

Los mejores zapatos son los que se hacen a medida del pie. Cuanto más versátil, menos fiable.

Bueno, bueno, bueno.


¡Feliz cumpleaños a ti....!

--

Andriyuha, por supuesto que este controlador es para estrategias de predicción, no para estrategias de arbitraje. Y una no excluye a la otra. El lugar de las estrategias de arbitraje está algo más abajo en el canal, concretamente en el agregador. Estoy planificando este módulo (arbitraje). Si seguimos con el esquema... Sin embargo, ayer mismo escribí sobre ello, aquí

https://www.mql5.com/ru/forum/105007/page9#821911

y más aquí

https://www.mql5.com/ru/forum/105007/page10#821949

 
Urain:

Pasa de la tarea. ¿Qué tareas son las más demandadas en la interfaz gráfica?

Puedes hacerlo desde allí. Describa lo que quiere conseguir, defina las características comunes, cree un marco de trabajo, luego añada algunas cosas más y vea lo fácil que es cambiar el marco de trabajo.

Para entender lo que debe ser, reescríbalo. Eso es lo que me parece a mí.

Me gustaría algo así:

Urain:
¿Y si haces la referencia a la API a través del módulo de referencia? Entonces puedes cambiar un módulo y cambiar la plataforma.

Es decir, tendré que inventarme un router de eventos universal (: perdóname TheXpert :) personalizable. Para conectarlo al TC por un lado y al GUI por el otro.

--

TheXpert:
...

Los mejores zapatos son los que están hechos a medida para adaptarse a su pie. Cuanto más versátil, menos fiable.

// Andrei, el objetivo de las soluciones universales es el uso múltiple. Yo mismo conozco los inconvenientes... ))

 
Urain:

Tienes la sensación de que MT5 negocia en posiciones.

El netting es un sistema contable y no más que eso, MT4 sólo tiene el historial de órdenes, MT5 tiene tanto el historial de órdenes como su suma en una posición.

Es decir, MT5 tiene inequívocamente más información que procesar.

También hay que tener en cuenta que cada orden tiene un magik y un comentario al igual que en MT4. Permiten identificar la estrategia del agregador que ha realizado un pedido por el 50% del margen.

Si no sabemos utilizar este tipo de números mágicos y comentarios, no veremos lo fácil que es identificar el orden.

Si queremos usar un MetaTrader 5 como fuente de datos, entonces ponemos una orden out en la misma orden que se supone cerrada, entonces en las órdenes cerradas se listarán sólo aquellas órdenes que tengan out, y en las abiertas las que no tengan out.

Prácticamente has cerrado el tema de la ventaja de un sistema de órdenes (MT4) sobre un sistema de órdenes netas (MT5). No se me había ocurrido tal cosa, aunque obviamente funciona y está cerca.
 
MetaDriver:
No se me había ocurrido semejante truco, aunque está claro que funciona y está cerca.
Me parece extraño que no se me haya ocurrido :) entonces necesitas una segunda pista - de hecho, debería haber tres magos conectados, porque también hay TP y SL.
 
sergeev:
Es extraño que no vino :) entonces una segunda pista para usted - de hecho, debe haber tres magos relacionados, porque también hay TP y SL.

No es relevante para mí, no utilizo paradas comerciales (estratégicas), aunque gracias por el consejo. ))

--

Wap todos estos problemas son en su mayoría inverosímiles (en la red), o de los clientes de trabajo. Forma cuaternaria de "diversificación de estrategias" asomando por debajo de ella, el atavismo está desnudo, no es mejor que la locomoción. Se puede escribir todo el historial tanto de posiciones recomendadas como de ejecución (posiciones de mercado) en disco en general. Para cada subestrategia individualmente. Si el escritor no pierde el tiempo, póngalo en un hilo separado (Asesor Experto) y aliméntelo con la información a través de eventos personalizados. Para el análisis de las "realidades de ejecución" puede ser muy útil.

 
Urain:
Y si haces una referencia a la API a través del módulo de referencia... entonces puedes cambiar un módulo y cambiar la plataforma.

Exactamente. No es necesario escribir un módulo aparte. Porque el proveedor de datos es ese mismo módulo. El lunes dibujaré el esquema de dicha solicitud. En cuanto a la interfaz gráfica de usuario, no necesitamos inventar ningún "enrutador de eventos", como sugiere Vladimir. El módulo de ejecución soporta la interfaz GUI, lo que significa que cualquier TC conectado al módulo de ejecución comenzará a trabajar con el panel GUI por defecto, incluso sin saber nada de él (el esquema estará disponible el lunes). El módulo de ejecución aquí es como una clase adaptadora. El principio es sencillo:

Cualquier sistema que sepa trabajar con el módulo de tiempo de ejecución puede interactuar entre sí sin saber nada del otro.

 
MetaDriver:
Ni siquiera he pensado en algo así, aunque evidentemente está funcionando y se puede encontrar cerca de mí.

Es extraño, Vladimir, que esto haya sido una revelación para ti. Llevo casi un año utilizando este esquema en mi trabajo.

Sí, comprenda que no se trata de una red. Como ha señalado correctamente Vladimir, los algoritmos mandan, y no se puede construir un proyecto grande, y sobre todo escalable, sin saber cómo estructurar los datos correctamente. Presten atención a la discusión activa del esquema de impulsores del mercado, uno necesita esto y el otro aquello, y dentro de este esquema hay que introducir cada vez más módulos nuevos, interrelaciones, diferentes "enrutadores de eventos". ¿Y en qué se convertiría un proyecto si lo utilizaran decenas o dos operadores con tareas diferentes y distinta comprensión del mercado?

Por alguna razón, me vienen a la mente las palabras de Alexander Radishchev: "La bestia es pícaramente enorme, estoica y ladradora".

Razón de la queja: