Buy stop Sell stop Grid advisor as a class

 

Voy a abrir un proyecto

Borrador de la parada de compra de la parada de venta Asesor de la red como una clase

Probar una estrategia para trabajar con órdenes de stop pendientes.

La esencia del comercio: al principio ponemos dos órdenes pendientes de stop (Buy stop y Sell stop). Si una se dispara, entonces elimina la segunda (la modificaremos más tarde, pero por ahora, simplemente elimínala) y de nuevo dos órdenes pendientes de parada.

El significado: un conjunto de posiciones de acuerdo con la tendencia.

Captura de pantalla (resultado cuando hay una tendencia y se han disparado varias órdenes pendientes):

Parada de compra Parada de venta Rejilla

(un poco más tarde...).


Cómo acceder al código completo: SÓLO a través de la conexión con el proyecto, mientras que las piezas serán, por supuesto, en la discusión en este hilo. El propio EA tendrá la forma de una clase (*.mqh).


Añadido:

Cuando el EA se está ejecutando, los datos se escriben en un array en OnTradeTransaction. El formato de registro es el siguiente: si tenemos una posición de compra, registramos "+1"; si tenemos una posición de venta, registramos "-1".

Comprobemos la idea de piramidar (en caso de que se abra una posición en dirección a la anterior)

 
Vladimir Karputov:

Estoy abriendo un proyecto para probar una estrategia para trabajar con órdenes de stop pendientes.

La esencia del comercio: al principio ponemos dos órdenes pendientes de stop (Buy stop y Sell stop). Si una se dispara, entonces elimina la segunda (la modificaremos más tarde, pero por ahora, simplemente elimínala) y de nuevo dos órdenes pendientes de parada.

El significado: un conjunto de posiciones por tendencia.

Imagen:

(un poco más tarde...).


Cómo acceder al código completo: SÓLO a través de la conexión con el proyecto, mientras que las piezas serán, por supuesto, en la discusión en este hilo. El Asesor Experto en sí mismo tendrá la forma de una clase (*.mqh).


Actualmente estoy haciendo algo similar a la orden, sólo que más complicado

 

Seguiré el proyecto con interés...

 
Vasily Bykov:

Seguiré el proyecto con interés...


Por favor, aclare, ¿quiere estar conectado al proyecto(Proyectos - MetaEditor)?

Проекты - Справка по MetaEditor
Проекты - Справка по MetaEditor
  • www.metatrader5.com
MetaEditor позволяет программистам вести совместную разработку приложений на MQL4/MQL5 удаленно. Специально для этих целей в нем предусмотрены...
 

¡Hola!


Estos robots son conocidos y están disponibles. ¿Y cuál es el objetivo de su proyecto?
 
Alexander Ivanov:

¡Hola!


Se sabe que existen estos Asesores Expertos. ¿Y cuál es el objetivo de su proyecto?

Los principales objetivos se han descrito anteriormente:

  • es crear una EA como una clase separada
  • desarrollo de proyectos(Proyectos - MetaEditor)
  • probar una estrategia de negociación con órdenes pendientes de parada

Проекты - Справка по MetaEditor
Проекты - Справка по MetaEditor
  • www.metatrader5.com
MetaEditor позволяет программистам вести совместную разработку приложений на MQL4/MQL5 удаленно. Специально для этих целей в нем предусмотрены...
 

El tema me parece interesante. En primer lugar, la condición "como clase".

Mi "puramente como una clase" no funcionó. La arquitectura del sistema incluye la plantilla principal, que contiene las funciones estándar OnInit(), OnTick(), etc. Además, declara un objeto de la clase CExpert -que tiene funciones- miembros de la clase, que son los manejadores de todos estos eventos. En la plantilla Main - las funciones miembro son llamadas desde funciones estándar.

Por lo tanto, ya tenemos "no puramente en la forma de una clase", porque hay funciones estándar, de la que los controladores de eventos de la clase EA se llaman.

Y en esta arquitectura, si queremos reemplazar esta misma clase EA, tendremos que reescribir todo este archivo de plantilla. El Asesor Experto como clase" debería ser así: debemos declarar la clase del EA (toda su descripción está en los archivos de inclusión), conectar la plantilla - y eso es todo.

En otras palabras, resulta que en la plantilla, debe haber funciones estándar, un objeto hub que conecta el EA a estas funciones estándar, y entonces el archivo principal puede ser reducido a la "estructura correcta" - declarando un objeto EA y conectando la plantilla. En este caso, en el archivo principal, declaramos un objeto EA, conectamos la plantilla principal, el objeto hub registra un objeto y conecta sus funciones de manejador en la plantilla principal a las funciones de evento estándar.

Incluso es posible implementar muchos CT en un solo EA - para ello, se declaran varios objetos EA y la clase Hub los conecta a todos con las funciones principales, y trabajan independientemente unos de otros (por supuesto, al conectar, hay que comprobar la diferencia de magos, y los propios EAs deben seleccionar las posiciones de sus magos).


Sobre lo de "conéctame al proyecto" - estoy dispuesto a conectarme en modo "sólo lectura" - es poco probable que escriba algo, pero puedo mirar, sugerir algo, señalar errores.

 
George Merts:

***

Y además, en esta arquitectura, si queremos reemplazar este mismo asesor de clase, debemos reescribir todo este archivo de plantilla. El "EA como clase" debería ser así: declaramos una clase EA (toda su descripción - en archivos de inclusión), conectamos la plantilla - y eso es todo.

***

... conectar la plantilla y pasar los parámetros de entrada a la clase Expert Advisor


George Merts:

***

Acerca de "conéctame al proyecto" - listo para conectarse en modo "Read Only" - es poco probable que escriba algo, pero para mirar, para ofrecer algo, para señalar los errores - puedo.


Hecho, conectado.

 
Vladimir Karputov:

... conectar la plantilla y pasar los parámetros de entrada a la clase EA



Hecho, enchufado.

¡О ! Lo tengo. Tengo los archivos. Cuando tenga tiempo, veré lo que hay.

 
Ibragim Dzhanaev:

¿Quién no puede programar, no puede participar?


Cualquiera puede participar, pero sólo aquellos que quieran unirse al proyecto(Proyectos - MetaEditor) tendrán acceso al código COMPLETO. Se debatirá el proyecto, por lo que la opinión de cualquier persona (programador o usuario) será valiosa.

Проекты - Справка по MetaEditor
Проекты - Справка по MetaEditor
  • www.metatrader5.com
MetaEditor позволяет программистам вести совместную разработку приложений на MQL4/MQL5 удаленно. Специально для этих целей в нем предусмотрены...
 
Ibragim Dzhanaev:

No sé programar, pero construí tu idea para el 4.



Aquí sólo hay mql5. El antiguo terminal no cotiza.