Está perdiendo oportunidades comerciales:
- Aplicaciones de trading gratuitas
- 8 000+ señales para copiar
- Noticias económicas para analizar los mercados financieros
Registro
Entrada
Usted acepta la política del sitio web y las condiciones de uso
Si no tiene cuenta de usuario, regístrese
Pero no se puede programar con OOP en MQL4, por lo que sigue siendo más popular.
Ya he mostrado mi código, y lo mostraré de nuevo:
Esta es la interfaz del procesador de operaciones - es exactamente la misma para MT4 y MT5.
El usuario sólo tiene esta interfaz, y dispone de todas las posibilidades para realizar acciones comerciales. Ni siquiera tienes que saber si está en MT4 o MT5. Necesita comprar - llame a la función Comprar, que llenará el ticket del componente de comercio abierto (para MT4 es una orden, para MT5 es una posición), y devolverá el código de retorno del servidor de comercio.
Ni siquiera tiene que pensar en la diferencia entre los protocolos MT4 y MT5: la interfaz le proporciona todo lo que necesita.
Todas estas son capacidades OOP.
Ya he mostrado mi código, y lo mostraré de nuevo:
Esta es la interfaz del procesador de operaciones - es exactamente la misma para MT4 y MT5.
El usuario simplemente recibe esta interfaz - y tiene todas las posibilidades para las acciones de comercio. Ni siquiera necesita saber si está en MT4 o MT5.
Y todo gracias a la OOP.
¿Hay ejemplos de uso para casos típicos?
Si su teoría era que MQL4=MQL5, entonces MQL4 podría ejecutarse en MT5 y viceversa.
¿Tiene ejemplos de uso para casos típicos?
Bien, digamos que aquí está mi función enviando la solicitud de cambio de TP-SL a procesador de comercio:
En primer lugar, los objetos de la parte de EA - forman solicitudes de acción comercial (aquí, una de esas solicitudes es cambiar el TP-SL). A continuación, se llama a la función ProceedRequestInto() para que todas las solicitudes envíen información sobre una acción comercial al procesador de operaciones.
El propio procesador de comercio es un objeto de la siguiente clase:
Es decir, dependiendo de la plataforma - la clase CTradeProcessor se hereda de la clase CMT5TradeProcessor o de la clase CMT4TradeProceccor.
Por supuesto, todo esto podría hacerse sin OOP, con la ayuda de interruptores y ifdefs. Pero en mi opinión, el enfoque OOP es más conveniente y claro, y lo principal es que permite aislar las entidades entre sí y deshacerse de la masa de variables globales.
Por cierto, otro "eco de OOP" está justo en las funciones adicionales de trabajar con las órdenes pendientes. El procesador de operaciones - trabaja con el ticket de las operaciones, lo cual es un inconveniente - la referencia al ticket en MT4 y MT5 es diferente. Por eso existe la clase común COrderInfoCore - descendiente de la interfaz de órdenes. Es mucho más conveniente pasar al procesador sólo un puntero a este objeto. De este modo, evitamos los fragmentos dependientes de la plataforma.
Bien, digamos que aquí está mi función enviando la solicitud de cambio de TP-SL a procesador de comercio:
En primer lugar, los objetos de la parte de EA - forman solicitudes de acción comercial (aquí, una de esas solicitudes es cambiar el TP-SL). A continuación, se llama a la función ProceedRequestInto() para todas las solicitudes de envío de información sobre una acción comercial a un procesador comercial.
Mi código funciona completamente sin cambios en MT4 y MT5.
¿Por qué correr en diferentes terminales?
Creo que es demasiado complicado entender lo que realmente sucede en el interior... Y sin entender cómo funciona, no creo que nadie lo use... ¿No es más fácil escribir una versión separada para MT5 y conectarla cuando sea necesario?
George Merts:
Pero, en mi opinión, el enfoque OOP es mucho más conveniente y claro. Y lo más importante - permite aislar las entidades entre sí, y deshacerse de las masas de variables globales.
Esa es la cuestión, al haber aislado todo de todo, será mucho más difícil tratar con ese código, por no hablar de la imposibilidad de depurar adecuadamente el código cuando se necesita conocer los valores actuales de todas las variables necesarias...
¿Por qué correr en diferentes terminales?
Porque mi cuenta principal está abierta en MT4, y mi probador de estrategias es mucho mejor en MT5.
Es una petición común de los clientes en Freelance - "debe funcionar tanto en MT4 como en MT5" - significa que hay una razón para ello. Yo mismo no veo la razón de trabajar en Freelance, pero puedes preguntar a los que trabajan allí por qué los clientes piden multiplataforma.
¿Por qué necesitamos "entender lo que realmente se hace dentro"? Hay una interfaz fija que realiza una acción, independientemente de la plataforma - eso es lo que usamos. Y lo que hay, a bajo nivel, ¿qué diferencia hay?