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

 
Como es de esperar, cada uno tiene su propia estructura y comprensión de cómo deben ser las cosas. ))
 
tol64:
Como es de esperar, cada uno tiene su propia estructura y comprensión de cómo deben ser las cosas. ))
Exactamente, por eso propongo abandonar esta discusión, ya que de todas formas no llegaremos a ningún consenso. Sugiero que volvamos a discutir los principios generales de la programación de grandes proyectos.
 
C-4:
¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡No, no y otra vez no!!!!!!!!!!!!!!!! Por esa lógica, una simple estrategia de giro sobre una media móvil también es MM. Por qué, era +1 contrato y se convirtió en -1.

:)

Mi colega trató de explicarle cómo se puede estructurar convenientemente el EA (los nombres de los módulos son convencionales, por supuesto). En lugar de jugar con la terminología (que no es importante), trate de comprobar esta división estructural, es bastante conveniente y productiva.

Las flechas muestran el movimiento de la información:


 
C-4:
Exactamente, así que sugiero que dejemos de discutir sobre esto, porque de todos modos no llegaremos a un consenso. Sugiero que volvamos a discutir los principios generales de la programación de grandes proyectos.
Parece que se discute uno de estos principios, cuando se aplica a los proyectos comerciales (a la lógica básica de su creación).
 
MetaDriver:

...

Kartinko. Las flechas muestran el movimiento de la información:

Es una forma mucho más clara de ver los pensamientos. Todo está claro incluso sin palabras. Por lo demás, estos interminables bla-bla-bla son muy difíciles de digerir a veces. )) Y después del esquema puede hacer preguntas de calificación. Todavía no los tengo. ))

 
MetaDriver:

:)

Mi colega trató de explicarle cómo se puede estructurar convenientemente el EA (los nombres de los módulos son convencionales, por supuesto). En lugar de jugar con la terminología (que no es importante), trate de comprobar esta división estructural, es bastante conveniente y productiva.

Las flechas muestran el movimiento de la información:

Sí, ya lo veo. Sólo que la complejidad no se da en ningún sitio, sino que se delega en el corrector de recomendaciones y en el impulsor del mercado. Bajo este esquema, el corrector tiene que indagar en el historial de operaciones de la ST y entender por ella cuál es su estado real. El conductor del mercado todavía tiene que identificar correctamente la posición actual de la estrategia y corregirla, y en la red, esto no es fácil.
Документация по MQL5: Стандартные константы, перечисления и структуры / Константы графиков / Позиционирование графика
Документация по MQL5: Стандартные константы, перечисления и структуры / Константы графиков / Позиционирование графика
  • www.mql5.com
Стандартные константы, перечисления и структуры / Константы графиков / Позиционирование графика - Документация по MQL5
 
tol64:

Es una manera mucho más clara de pensar en las cosas. Todo está claro incluso sin palabras. Por lo demás, estos interminables bla-bla-bla son muy difíciles de digerir a veces. )) Y después del esquema puede hacer preguntas de calificación. Todavía no los tengo. ))

Aquí está la respuesta si tienes que hacer un dibujo para entender la tarea :)

MetaDriver:

:)

(Los nombres de los módulos son, por supuesto, relativos.) En lugar de jugar con la terminología (que no es importante), intente comprobar esta división estructural, que es bastante conveniente y eficiente.

Las flechas muestran el movimiento de la información:


¿Dónde está la red de arrastre? Supongo que está en el bloque MM, porque necesita un pronosticador direccional.

¿O es que todavía está en el controlador de mercado? porque se necesita la pose actual para arrastrar.

Yo añadiría un predictor de volatilidad y un bloque más para corregir los stops de protección, concretamente los stops de protección porque (imho) la salida por TP o SL es fuerza mayor para un TS normal.

 
Urain:

Esta es la respuesta a si necesitas hacer un dibujo para entender la tarea :)

¿Dónde está la red de arrastre? Creo que está en el bloque MM, ¿no?

o en el conductor del mercado? Después de todo, la posición actual es necesaria para el arrastre.

Yo añadiría un predictor de volatilidad y un bloque más para corregir stops de protección, exactamente de protección porque (imho) la salida por TP o SL es fuerza mayor para un TS normal.

Y luego unas pocas cuadras más y la estrategia empezará a dar tumbos... Si al principio hay preguntas absolutamente razonables en qué bloque describir una parte de la estrategia y cuál en el otro, entonces significa que el esquema no es inequívoco, y esto lleva a lo que se conoce como problemas.
 

Ahora que hemos empezado a dibujar esquemas, aquí está el mío mejorado. Espero que sea más claro que el anterior:

PRESTACIONES

  • Sólo hay dos módulos.
  • Los vínculos están claramente definidos y son inequívocos.
  • Cualquier clase que describa 4 métodos puede ser una estrategia comercial
  • La descripción de todas las reglas se almacena siempre en un solo lugar: la clase de estrategia comercial. No es necesario buscar en todo el proyecto algún "módulo de volatilidad".
  • El número de estados de la estrategia es una constante. Bajo ninguna regla del TS, no puede ser mayor. No puede haber módulos adicionales y son simplemente innecesarios
  • Todas las entidades comunes pueden y deben ser descritas en la clase base de control*.

*Así, la regla "Salir al final de la sesión de negociación", que es universal para todas las estrategias, puede describirse en la clase base. Si se establece esta regla, la clase base llamará al método de apoyo de cierre de la posición al final del día en lugar de llamarlo una vez más. Y la posición se cerrará en el momento adecuado, incluso si esto no está especificado en las reglas de la estrategia básica.
 
C-4:

Sí, ya lo veo. Sólo que la complejidad no se da en ningún sitio, sino que se delega en el ajustador de recomendaciones y en el conductor del mercado.

Está bien. El objetivo no era eliminar las dificultades objetivas, sino no crear otras nuevas.


Según este esquema, el ajustador debe indagar en el historial comercial de la ST y entender por ella cuál es su estado real.

Creo que ya hemos descubierto que el TS no tiene estado (memoria). El corrector tampoco tiene que escarbar en el historial. Fue insertado en el esquema a propósito por su petición - me va perfectamente sin él... ))


El conductor del mercado todavía tiene que identificar correctamente la posición de la estrategia actual y ajustarla, y en la red, eso no es fácil.

:)

¿Tengo que creer en tu palabra?

double CMarketDriver::GetCurrentPos(string Sym)
  {
   if(!PosInfo.Select(Sym)) return 0; // DBL_MIN;
   double v=PosInfo.Volume();
   return(PosInfo.PositionType()==POSITION_TYPE_SELL) ? -v : v;
  }
bool CMarketDriver::Synhronize(const SymbolPos  &sp,int  &Err)
  {
   Err=0;
   bool res=true;
     {
      SymInfo.Name(sp.Sym);
      SymInfo.Refresh();
      double fp= TranslateLots(sp.Pos);  // Приводит рекомендованную в процентах от депо позу к рыночным лотам для данного инструмента
      double cp=GetCurrentPos(sp.Sym);
      double pos=fp-cp;   // вычисляет разницу текущей и рекомендованной позы
      if(pos>0.000001)
         res=Trade.Buy(NolrmalizeLots(pos),sp.Sym);  // "обналичивает разницу"
      if(pos<-0.000001)
         res=Trade.Sell(NolrmalizeLots(pos),sp.Sym);  // "обналичивает разницу"   
     }
   return res;
  }