En una aplicación de la OOP

 

Estoy escribiendo un EA a un cliente y la situación es la siguiente. No hay un mandato claro para todos los artículos, pero hay ideas que quiere probar. Es decir, el trabajo se acerca más a la investigación.

Dice, no sé ni qué hacer, hay variantes de entradas, quiero probarlas, ¿puedo hacerlo? ¿Tendré que escribir varias variantes del Asesor Experto? Y las entradas por volumen obviamente no pueden encajar en una función y deben nacer dinámicamente por mercado. En otras palabras, puede haber 1... N. Estoy haciendo una descripción simplificada de la situación.

Creemos una clase base en la que todo permanezca inalterado y a partir de esta clase tendremos descendientes con comportamiento cambiado.

- ¿Y qué es una clase?

El cliente entiende un poco de MQL, pero no es un programador. Empecé a explicarle, pero no lo entendió.

He encontrado una imagen en Internet de la clasificación de las especies animales. Dije: Simplifiquemos y asumamos que todos ellos evolucionaron a partir de los demás.

Yo digo que nuestra clase base serían los antiguos flagelados. Tiene una funcionalidad básica, sólo lo esencial. Y a partir de ella, tendremos Protozoos, Multicelulares, etc. Y cada descendiente contendrá toda la funcionalidad de su padre.

- ¡Oh, ya veo! E incluso los mamíferos tendrán la funcionalidad de los antiguos flagelados, ¿estoy en lo cierto?

- Sí, eso es.

Ahora estoy pensando como se utilizaría este caso de forma óptima en un probador, la estrategia no es scalper ni ticking, para un probador es adecuada. También en los espantosos enigmas de quiénes son los Suckers ))

clases

**

 
Alexey Volchanskiy:

...

Yo digo que nuestra clase base serían los antiguos flagelados. Tiene una funcionalidad básica, sólo lo esencial. Y de ella nacerán Protozoos, Multicelulares, etc. Cada descendiente contendrá toda la funcionalidad de su padre.

...

Por desgracia, la idea de la herencia resultó ser un palo con dos puntas. Puedes hacerte daño sin querer. Por eso es mejor utilizar la herencia de forma muy limitada.
 
Vasiliy Sokolov:
Por desgracia, la idea de la herencia resultó ser un arma de doble filo. Puede que te quedes inconsciente por accidente. Por eso es mejor que uses la herencia de forma muy limitada.

Es probable que este EA no tenga más de dos vínculos de herencia. La imagen es sólo para demostrar la herencia. Yo mismo no soy un seguidor de las complicaciones ) Pero el Señor Dios... que le gusta divertirse))).

Con respecto al "bulto" mira la biblioteca estándar, es bastante profunda allí, especialmente en Controles.

 
Alexey Volchanskiy:

Es probable que este EA no tenga más de dos enlaces de herencia. La imagen es sólo para demostrar la herencia. Yo mismo no soy un seguidor de las complicaciones ) Pero el Señor Dios... que le gusta divertirse))).

En cuanto a "lamer", mira la biblioteca estándar, es un nivel bastante profundo allí, especialmente en Controles.

Por desgracia, la biblioteca estándar no es un punto de referencia. Algunas clases son simplemente obras maestras, otras están escritas sin entender el tema (probablemente escritas por diferentes personas).
 
Vasiliy Sokolov:
Por desgracia, la idea de la herencia se ha convertido en un arma de doble filo. Puedes hacerte daño sin querer. Por eso es mejor que uses la herencia de forma muy limitada.

¿Puedo darle un ejemplo de "zashib"?

Yo, por el contrario, siempre intento utilizar la herencia y el polimorfismo en la medida de lo posible. Es muy conveniente tener funciones virtuales que se llaman según sea necesario en los objetos que se crean...

Hay casos en los que todos los descendientes llevan la funcionalidad de la clase antecesora que los descendientes ya no necesitan - pero no veo ningún problema especial en este caso. No lo uses, eso es todo. Ni siquiera estoy hablando de la herencia protegida, cuando los usuarios de la clase - ya no puede hacer referencia a las funciones del ancestro, y, aquí, es muy fácil de "eliminar la funcionalidad innecesaria".

 
George Merts:

¿Puedo darle un ejemplo de "zashib"?

Yo, por el contrario, siempre intento utilizar la herencia y el polimorfismo en la medida de lo posible. Es muy conveniente tener funciones virtuales que se llaman cuando se necesitan en los objetos que se crean...

Hay casos en los que todos los descendientes llevan la funcionalidad de la clase antecesora, que los descendientes ya no necesitan, pero no veo ningún problema particular en este caso. No lo uses, eso es todo. Ni siquiera estoy hablando de la herencia protegida, cuando los usuarios de la clase - ya no puede hacer referencia a las funciones del ancestro, y, aquí, es muy fácil de "eliminar la funcionalidad innecesaria".

Bien escrito. Utilizo mucho las funciones virtuales en este proyecto, son muy útiles. Las clases descendientes tienen diferentes "comportamientos", pero la misma interfaz. No existe la noción de interfaz en MQL, pero no es difícil imitarla.

Ya he pensado en poner las instancias de todos los descendientes en un array y ejecutarlas en un bucle con llamadas de funciones virtuales. Y seleccionar las señales más exitosas de alguna manera, que aún no se me ha ocurrido. Hasta ahora, no está claro cómo determinar si las señales son "afortunadas" o no. Por tanto, existe la oportunidad de optimizar sobre la marcha ajustándose a los cambios del mercado.

Creo que es mejor hacer esto no en el EA de trabajo, pero en su pequeña modificación que trabaja en paralelo con la escritura de información al menos en un archivo, la velocidad de intercambio no es importante aquí.

Qué pasa con la"funcionalidad de la clase antecesora, que los descendientes ya no necesitan" - no importa, las funciones existen en la memoria como una sola copia de todos modos. Por supuesto, se asignará memoria de datos para cada instancia, pero hoy en día con gigabytes de RAM no es muy importante.

 
Será mejor que describas los TdR, porque no queda claro a qué te refieres y qué tienen que ver las clases con esto.
 
Alexey Volchanskiy:

Estoy escribiendo un EA a un cliente y la situación es la siguiente. No hay un mandato claro para todos los artículos, pero hay ideas que quiere probar. Es decir, el trabajo se acerca más a la investigación.

Dice, no sé ni qué hacer, hay variantes de entradas, quiero probarlas, ¿puedo hacerlo? ¿Tendré que escribir varias variantes del Asesor Experto? Y las entradas por volumen obviamente no pueden encajar en una función y deben nacer dinámicamente por mercado. En otras palabras, puede haber 1... N. Estoy haciendo una descripción simplificada de la situación.

Creemos una clase base en la que todo permanezca inalterado y a partir de esta clase tendremos descendientes con comportamiento cambiado.

- ¿Y qué es una clase?

El cliente entiende un poco de MQL, pero no es un programador. Empecé a explicarle, pero no lo entendió.

He encontrado una imagen en Internet de la clasificación de las especies animales. Dije: Simplifiquemos y asumamos que todos ellos evolucionaron a partir de los demás.

Yo digo que nuestra clase base serían los antiguos flagelados. Tiene una funcionalidad básica, sólo lo esencial. Y a partir de ella, tendremos Protozoos, Multicelulares, etc. Y cada descendiente contendrá toda la funcionalidad de su padre.

- ¡Oh, ya veo! E incluso los mamíferos tendrán la funcionalidad de los antiguos flagelados, ¿estoy en lo cierto?

- Sí, eso es.

Ahora estoy pensando como se utilizaría este caso de forma óptima en un probador, la estrategia no es scalper ni ticking, para un probador es adecuada. También en los espantosos enigmas de quiénes son los Suckers ))

**

Si no sabe lo que quieren, puede pedirles que lo hagan manualmente. O dejar que prueben a mano lo que no saben...
 
Alexey Volchanskiy:

Estoy escribiendo un EA a un cliente y la situación es la siguiente. No hay un mandato claro para todos los artículos, pero hay ideas que quiere probar. Es decir, el trabajo se acerca más a la investigación.

Dice, no sé ni qué hacer, hay variantes de entradas, quiero probarlas, ¿puedo hacerlo? ¿Tendré que escribir varias variantes del Asesor Experto? Y las entradas por volumen obviamente no pueden estar contenidas en una función y deben nacer dinámicamente por el mercado. En otras palabras, puede haber 1... N. Estoy haciendo una descripción simplificada de la situación.

Creemos una clase base en la que todo permanezca inalterado y a partir de esta clase tendremos descendientes con comportamiento cambiado.

- ¿Y qué es una clase?

El cliente entiende un poco de MQL, pero no es un programador. Empecé a explicarle, pero no lo entendió.

He encontrado una imagen en Internet de la clasificación de las especies animales. Dije: Simplifiquemos y asumamos que todos ellos evolucionaron a partir de los demás.

Yo digo que nuestra clase base serían los antiguos flagelados. Tiene una funcionalidad básica, sólo lo esencial. Y a partir de ella, tendremos Protozoos, Multicelulares, etc. Y cada descendiente contendrá toda la funcionalidad de su padre.

- ¡Oh, ya veo! E incluso los mamíferos tendrán la funcionalidad de los antiguos flagelados, ¿estoy en lo cierto?

- Sí, eso es.

Ahora estoy pensando como se utilizaría este caso de forma óptima en un probador, la estrategia no es scalper ni ticking, para un probador es adecuada. También en los espantosos enigmas de quiénes son los Suckers ))

**

Lo más importante es su comodidad de uso. Para probar diferentes entradas, puede hacerlo en bloque por número de conjunto de entrada. Es decir, hay una colección de conjuntos de entrada. Si es conveniente, como una matriz de funciones. Los más sencillos: compra o venta incondicional por mercado. O condicional)). Y luego ejecutamos el optimizador y miramos los diferentes conjuntos de entradas.
 
Alexey Busygin:
Será mejor que describas tu TdR, porque no queda claro a qué te refieres y qué tienen que ver las clases.

¿Cuál es el pliego de condiciones, el que me ha dado el cliente? )) ¿Crees que es políticamente correcto?

¿O es algo exótico para ti? ¿O es una especie de exotismo para ti? Para mí, es una herramienta de trabajo ordinaria.

 
Vladimir Pastushak:
Hay que mandarles a decidir primero lo que quieren y luego pedirlo... O dejar que prueben a mano lo que no saben...
¿Por qué no? Me encanta la investigación, sobre todo si es pagada)
Razón de la queja: