Debate sobre la implantación de los consejeros.

 

Hola, estoy estudiando mql5 y hace tiempo que no puedo despegar. Como todo el mundo escribe programas de forma diferente, cada uno está seguro de su enfoque, y es difícil para los principiantes entender cuál es el óptimo.

A mí me gustaría entender y creo que la comunidad se beneficiaría de un debate público sobre la aplicación de soluciones óptimas para los bloques típicos de EA. Por ejemplo, alguien no escribe casi nada en la inicialización, y alguien llena mucho este bloque. Qué comprobaciones debe o no debe hacer un EA. Tomas y paradas virtuales o no, etc. También son interesantes las propias formas de aplicar la estrategia.

Así que, mi sugerencia es que si alguien quiere compartir el conocimiento. A continuación, podemos discutir la aplicación, por ejemplo, en el ejemplo de nettler, o un simple Asesor Experto basado en la media móvil, como si hay una desviación de la media, a continuación, esperar a que el retorno a la media. O cualquier otra estrategia que quiera mostrar. Publica el código con comentarios sobre por qué has decidido escribirlo así.

Gracias de antemano a quienes decidan contribuir a educar y mejorar la calidad del código en la comunidad de código abierto.

 
Ivan_Invanov:

Hola, estoy estudiando mql5 y hace tiempo que no puedo despegar. Como todo el mundo escribe programas de forma diferente, cada uno está seguro de su enfoque, y es difícil para los principiantes entender cuál es el óptimo.

A mí me gustaría entender y creo que la comunidad se beneficiaría de un debate público sobre la aplicación de soluciones óptimas para los bloques típicos de EA. Por ejemplo, alguien no escribe casi nada en la inicialización, y alguien llena mucho este bloque. Qué comprobaciones debe o no debe hacer un EA. Tomas y paradas virtuales o no, etc. También son interesantes las propias formas de aplicar la estrategia.

Así que, mi sugerencia es que si alguien quiere compartir el conocimiento. A continuación, podemos discutir la aplicación, por ejemplo, en el ejemplo de nettler, o un simple Asesor Experto basado en la media móvil, como si hay una desviación de la media, a continuación, esperar a que el retorno a la media. O cualquier otra estrategia que quiera mostrar. Publica el código con comentarios sobre por qué has decidido escribirlo así.

Gracias de antemano a los que deciden contribuir a educar y mejorar la calidad del código en la comunidad de código abierto.

¿has leído todos los artículos sobre el desarrollo de EA en este sitio y no te ha parecido suficiente? y eres un literalista)

 
Aleksey Mavrin:

¿has leído todos los artículos sobre el desarrollo de EA en este sitio y no crees que sea suficiente? y eres un literalista)

Me resulta difícil formar un paradigma para la ejecución de programas. Sí, he visto este artículo sobre la reducción del tiempo, es muy útil. Pero de qué sirve reducir el tiempo de ejecución de una sola pieza. Cuando, por ejemplo, el propio enfoque de la solución se ralentiza considerablemente en comparación con otro enfoque de la solución. ¿Estás seguro de que no hay mejor manera de escribir EAs que tú? Enhorabuena, debes ser del más alto nivel. ¿Quizás puedas mostrarnos un ejemplo de código entonces?
 
Ivan_Invanov:
Me resulta difícil formar un paradigma para dirigir un programa. Sí, he visto este artículo sobre la reducción del tiempo, es muy útil. Pero de qué sirve reducir el tiempo de ejecución de una sola pieza. Cuando, por ejemplo, el propio enfoque de la solución se ralentiza significativamente en comparación con otro enfoque de la solución. ¿Estás seguro de que no hay mejor manera de escribir EAs que tú? Enhorabuena, debes ser del más alto nivel. ¿Quizás puedas mostrarme un ejemplo de código entonces?
Haces lo que haces. Y con el tiempo desarrollarás tu propio paradigma.
 
Ivan_Invanov:
No puedo formar un paradigma de la ejecución del programa. Sí, he visto este artículo sobre la reducción del tiempo y es muy útil. Pero no tiene sentido disminuir el tiempo de ejecución de un fragmento separado. Cuando, por ejemplo, el propio enfoque de la solución se ralentiza considerablemente en comparación con otro enfoque de la solución. ¿Estás seguro de que no hay mejor manera de escribir EAs que tú? Enhorabuena, debes ser del más alto nivel. ¿Quizás puedas mostrarnos un ejemplo de código entonces?

Los enlaces a los artículos aquí se insertan automáticamente por palabras clave.

Y me refiero a un montón de artículos con Asesores Expertos ya hechos, donde los autores explican el código especialmente para gente como tú. ¿Los has mirado? Ahí hay suficientes ejemplos.

La forma óptima es una noción situacional.

Su enfoque del sistema es bueno.

Divida el proceso de creación de la EA en dos etapas:

1. algoritmo

2. el código.

Lo principal es aprender a formular el algoritmo. Y se puede codificar de muchas maneras, la que sea más conveniente.

¿Son familiares los autómatas finitos con varias retroalimentaciones? Si no es así, estudia la teoría y tendrás una mejor idea de por dónde empezar.

 
Ivan_Invanov:

Hola, estoy estudiando mql5 y hace tiempo que no puedo despegar. Como todo el mundo escribe programas de forma diferente, cada uno está seguro de su enfoque, y es difícil para los principiantes entender cuál es el óptimo.

A mí me gustaría entender y creo que la comunidad se beneficiaría de un debate público sobre la aplicación de soluciones óptimas para los bloques típicos de EA. Por ejemplo, alguien no escribe casi nada en la inicialización, y alguien llena mucho este bloque. Qué comprobaciones debe o no debe hacer un EA. Tomas y paradas virtuales o no, etc. También son interesantes las propias formas de aplicar la estrategia.

No entiendo el sentido del tema.

Está claro que cada programador tiene sus propias preferencias, sus propios principios, sus propios puntos de vista sobre la estructura del programa. Tú tendrás los tuyos. Para desarrollarlos, tienes que escribir el código y probarlo. A medida que vayas descubriendo las regularidades y los errores, te harás una idea de qué estructura de programa te conviene más.

Las implementaciones específicas están en KodoBase, hay muchas opciones. Tome cualquiera de ellos y explórelos, utilícelos y modifíquelos.

¿Qué más necesitas?

 
Georgiy Merts:

No entiendo el sentido del tema.

Está claro que cada programador tiene sus propias preferencias, sus propios principios, sus propios puntos de vista sobre la estructura de los programas. Usted tendrá los suyos propios. Para averiguarlos, tiene que escribir código y probarlo. A medida que identifique patrones y encuentre errores se formará una idea de qué estructura de programa le conviene más.

Implementaciones específicas - en KodoBase, muchas opciones. Tome cualquiera de ellos y explórelos, utilícelos y modifíquelos.

¿Qué más necesitas?

Estoy buscando en kodobase por supuesto. No tengo dudas sobre el código de un solo autor, metaquotes, es desarrollador oficial. Estoy aprendiendo de él. El hombre de allí escribe con lógica y utiliza al máximo las funciones incorporadas. Pero tiene muy pocos asesores expertos. En general, hay mucho código cuestionable escrito por diferentes autores, y a menudo sucede que uno mira el código y no puede entender por qué se ha escrito de esa manera. Me sorprende la confianza que tiene la gente en estas implementaciones. Tal vez estoy demasiado preocupado, por supuesto. Probablemente debería escribirlo para que funcione, como dijeron aquí.

 
Pero me parece que tarde o temprano habrá algún tipo de consenso en el código abierto. Al fin y al cabo, la gente escribe lo mismo una y otra vez, sólo que con variaciones. Así que por qué no hacer piezas preparadas y discutirlas. Al igual que aquí tenemos una implementación de un generador de flujo de red y ahora se lleva a la velocidad óptima y la funcionalidad. Lo haré. No tengo suficientes conocimientos para utilizar las soluciones óptimas. Ahora voy a dibujar un esquema, y lo que primero se me ocurra, será eso. O lo tomaré prestado de otra persona con el mismo nivel de conocimientos. Pero si pusiéramos ejemplos de aplicación, la gente experimentada y erudita se uniría, arreglaría algo, discutiría con los demás y llegaría a un consenso. Al final, todos obtendrían un código de calidad, o al menos un ejemplo a seguir.
 
Ivan_Invanov:
Pero me parece que tarde o temprano habrá un consenso en el código abierto. Al fin y al cabo, la gente escribe lo mismo de vez en cuando, sólo que con variaciones. Así que por qué no hacer piezas preparadas y discutirlas. Al igual que aquí tenemos una implementación de un generador de flujo de red y ahora se lleva a la velocidad óptima y la funcionalidad. Lo haré. No tengo suficientes conocimientos para utilizar las soluciones óptimas. Ahora voy a dibujar un esquema, y lo que primero se me ocurra, será eso. O lo tomaré prestado de otra persona con el mismo nivel de conocimientos. Pero si pusiéramos ejemplos de aplicación, la gente experimentada y erudita se uniría, arreglaría algo, discutiría con los demás y llegaría a un consenso. Al final, todos obtendrían un código de calidad, o al menos un ejemplo a seguir.

La idea es buena. La base de Igor Kim fue muy útil en su momento, muchas gracias por su trabajo :)

 
Ivan_Invanov:

Mirando el kodobase por supuesto. No tengo dudas sobre el código de un solo autor, metaquotes, que es el desarrollador oficial. Estoy aprendiendo de él. El hombre de allí escribe con lógica y utiliza al máximo las funciones incorporadas. Pero tiene muy pocos asesores expertos. En general, hay mucho código cuestionable escrito por diferentes autores, y a menudo sucede que uno mira el código y no puede entender por qué se ha escrito de esa manera. Me sorprende la confianza que tiene la gente en estas implementaciones. Tal vez estoy demasiado preocupado, por supuesto. Puede que tenga que escribirlo para que funcione, como dicen aquí.

Eso es otra cosa.

Hay que tener en cuenta que a veces miro mi propio código y no entiendo por qué está escrito en un lugar tan particular. Por eso intento comentar esos fragmentos con mucho detalle tratando de mencionar todas las sutilezas. Pero aún así veo regularmente que no he tenido en cuenta algunas cosas.

Además, utilizo el siguiente código (para determinar el tipo de ejecución), que fue escrito por un usuario muy autorizado del foro:

ENUM_ORDER_TYPE_FILLING CSymbolInfo::GetTypeFilling(string strSymbol,ENUM_ORDER_TYPE_FILLING otfFilingType)
{
   #ifndef __MQL5__
      return(otfFilingType);
   #else // __MQL5__
      
   const ENUM_SYMBOL_TRADE_EXECUTION steExeMode = (ENUM_SYMBOL_TRADE_EXECUTION)::SymbolInfoInteger(strSymbol, SYMBOL_TRADE_EXEMODE);
   const int iFillingMode = (int)::SymbolInfoInteger(strSymbol, SYMBOL_FILLING_MODE);

   return((iFillingMode == 0 || (otfFilingType >= ORDER_FILLING_RETURN) || ((iFillingMode & (otfFilingType + 1)) != otfFilingType + 1)) ?
         (((steExeMode == SYMBOL_TRADE_EXECUTION_EXCHANGE) || (steExeMode == SYMBOL_TRADE_EXECUTION_INSTANT)) ?
           ORDER_FILLING_RETURN : ((iFillingMode == SYMBOL_FILLING_IOC) ? ORDER_FILLING_IOC : ORDER_FILLING_FOK)) :
          otfFilingType);
  
   #endif // __MQL5__
};

NO ENTIENDO cómo funciona, es más, este mismo forista dijo cuando le preguntaron que ya no se acordaba, es que este código ya ha sido probado muchas veces y es de confianza.

Bueno, si tengo la oportunidad de sustituir estas estúpidas "preguntas" por verdaderas afirmaciones de tipo "if", veré cómo hacerlo... Por ahora...

 
Es mejor hacer un diagrama de bloques y escribir directamente con estos bloques, yo lo hice así al principio, luego empiezas a usar funciones, pero yo sólo uso la POO de otros. En general, hay que escribir de tal manera que se puedan hacer fácilmente cambios en un trozo de código sin tener que reescribirlo todo.