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...
Seguiré el proyecto con interés...
Por favor, aclare, ¿quiere estar conectado al proyecto(Proyectos - MetaEditor)?
![Проекты - Справка по MetaEditor Проекты - Справка по MetaEditor](/i/community/logo_metatrader5_small.png)
- www.metatrader5.com
¡Hola!
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](/i/community/logo_metatrader5_small.png)
- www.metatrader5.com
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.
***
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
***
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.
... 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.
¿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](/i/community/logo_metatrader5_small.png)
- www.metatrader5.com
![MQL5 - Lenguaje de estrategias comerciales para el terminal de cliente MetaTrader 5](https://c.mql5.com/i/registerlandings/logo-2.png)
- Aplicaciones de trading gratuitas
- 8 000+ señales para copiar
- Noticias económicas para analizar los mercados financieros
Usted acepta la política del sitio web y las condiciones de uso
Voy a abrir un proyecto
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):
(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)