
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
Foro sobre negociación, sistemas automatizados de negociación y ensayo de estrategias de negociación
Características del lenguaje mql5, sutilezas y técnicas de trabajo
fxsaber, 2018.02.19 08:39 AM
En la red al mismo tiempo en el mismo símbolo puede ser una posición abierta y varias órdenes de mercado de cualquier dirección. Por ejemplo, una posición de COMPRA y una orden de COMPRA.
En la librería MT5, las órdenes MT5 y las posiciones MT5 son una entidad - órdenes MT4. Por esta razón, en esta situación es posible obtener varias órdenes de COMPRA/VENTA-MT4 sobre un símbolo en una cuenta de compensación. Esto no es un error y puede conducir a nada malo. Pero escribo sobre ello por si a alguien le sorprende esta situación.
Es cierto que no he conseguido encontrar una cuenta demo de este tipo.
Esto es más una advertencia teórica. No lo he encontrado en la práctica.
A continuación se muestra el código que compila sin advertencias bajo MQL4/5
¡Gracias a @Andrey Voytenko por sugerir esta solución!
A continuación se muestra el código que compila sin advertencias bajo MQL4/5
Gracias a @Andrey Voytenko por sugerir esta solución.
¿Para qué sirve este hack?
¿Para qué sirve este hack?
Los tipos largos están comentados en el ejemplo. Si se dejan, no habrá advertencias en MQL5 y NoStrict-MQL4. Pero en MQL4 estricto sí se producirán.
Para poder escribir librerías multiplataforma sin las correspondientes advertencias, se añadió esta funcionalidad.
No es necesario utilizarla en absoluto. Se trata de una comodidad adicional para aquellos que puedan enfrentarse a una tarea multiplataforma de este tipo.
Foro sobre trading, sistemas automatizados de trading y prueba de estrategias de trading
Robot de MT4 a MT5
fxsaber, 2018.03.08 09:27 pm.
Estoy intentando implementar una estrategia (que obviamente funciona bien en MT4) pero me he topado con un muro.
La EA comienza una nueva secuencia de operaciones cada vez que se genera una nueva señal, por lo que cada par negociado normalmente tendrá múltiples secuencias en ejecución.
Cada operación tiene un SL y un TP, y el EA necesita hacer un seguimiento de lo que ha ocurrido (SL o TP) en la operación más reciente de cada secuencia comprobando el historial de órdenes.
Desafortunadamente, esto no parece ser posible basado en las notas de la biblioteca (abajo) y varios intentos de hacer que el sistema funcione:
// En MT4 OrderSelect en modo SELECT_BY_TICKET selecciona un ticket independientemente de MODE_TRADES / MODE_HISTORY,
// ya que "El número de ticket es un ID de orden único".
// En MT5, el número de ticket NO es único,
// por lo que OrderSelect en modo SELECT_BY_TICKET tiene las siguientes prioridades de selección para tickets coincidentes:
// MODE_TRADES: posición existente> orden existente> transacción> orden cancelada
// MODE_HISTORY: transacción> orden cancelada> posición existente> orden existente
A partir de la experimentación, he confirmado que el número de ticket siempre cambia después de un evento SL/TP, y que la única información común es el número mágico - ni siquiera se conserva el comentario de la orden.
En las pruebas, la colocación de una orden inicial con un SL, TP, número mágico y comentario de operación devuelve el ticket #2 y muestra toda la información esperada.
Sin embargo, cuando se alcanza el SL o el TP, el ticket nº 2 desaparece y no se puede recuperar utilizando SELECT_BY_POS o SELECT_BY_TICKET.
En su lugar, (suponiendo que no haya otra actividad de negociación) aparecerá el ticket nº 3, que no tiene ningún comentario de orden establecido.
Sin coherencia en cuanto al número de ticket, y sin comentario de orden al que hacer referencia, no parece haber una forma sencilla de identificar la última orden de una secuencia determinada :(
Esperemos que @fxsaber pueda encontrar una solución o sugerir una solución :)
Desgraciadamente, no entendí el problema.
Lo siento por la respuesta tardía :(
El problema es que la información comercial 'MODE_HISTORY' es básicamente inutilizable porque:
1) cuando una operación se cierra, el número de ticket cambia ...puede comprobarlo fácilmente abriendo una operación de compra/venta con un TP y un SL - si la operación se abre como ticket #2, esa operación se convertirá en ticket #3 en el histórico después de que se active el SL o el TP
2) se pierde el número mágico
3) se pierde el comentario del ticket
Por lo tanto, si el código del EA necesita comprobar si una operación se cerró con beneficios o pérdidas, es imposible porque no hay información disponible para identificar la operación.
Espero que puedas ajustar las cosas para mantener el número mágico y hacer que el comentario de la operación se comporte como MT4 - tal vez puedas encontrar una manera de mantener el número de ticket también.
Perdón por la respuesta tardía :(
La cuestión es que 'MODE_HISTORY' información comercial es básicamente inutilizable porque:
1) cuando una operación se cierra, el número de ticket cambia ...puede comprobarlo fácilmente abriendo una operación de compra/venta con un TP y un SL - si la operación se abre como ticket #2, esa operación se convertirá en ticket #3 en el histórico después de que se active el SL o el TP
2) el número mágico se pierde
3) se pierde el comentario del ticket
Por lo tanto, si el código del EA necesita comprobar si una operación se cerró con beneficios o con pérdidas, es imposible porque no hay información disponible para identificar la operación.
Espero que puedas ajustar las cosas para mantener el número mágico y hacer que el comentario de la operación se comporte como MT4 - tal vez puedas encontrar una manera de mantener el número de ticket también.
Ejemplo
Resultado
stop loss!!!
PS hilo de discusión ruso.