Bibliotecas: MT4Orders - página 56

 
2) cuando se produce un cierre parcial, los comentarios sobre la orden de las partes abierta y cerrada no muestran "a #xxxxxxxxx" y "de #xxxxxxxxx"

de nuevo, ¿hay alguna forma fiable (y espero que sencilla) de determinar qué ha ocurrido con una orden concreta?

Lo que quería decir es lo siguiente:

Si tiene una operación de 1,00 lote en MT4 con un número de ticket 123456 y cierra parcialmente 0,40 lotes, entonces el número de ticket 123456 se muestra en la pestaña Historial como 0,40 lotes y su comentario de operación muestra "a #NuevoTicket".

En la pestaña Operaciones, aparece una nueva operación de 0,60 lotes con el número de ticket "NewTicket", y su comentario de operación muestra "from #123456".

 
SysFX:

Lo que quería decir era esto:

Si tienes una operación de 1.00 lote en MT4 con un número de ticket 123456 y cierras parcialmente 0.40 lotes, entonces el número de ticket 123456 se muestra en la pestaña Historial como 0.40 lotes y su comentario de operación muestra "a #NuevoTicket".

En la pestaña Operaciones, aparece una nueva operación de 0,60 lotes con el número de ticket "NewTicket", y su comentario de operación muestra "from #123456".

#include <MT4Orders.mqh> // https://www.mql5.com/es/code/16006

#define  Ask SymbolInfoDouble(_Symbol, SYMBOL_ASK)

void OnStart()
{
  const TICKET_TYPE Ticket = OrderSend(_Symbol, OP_BUY, 1, Ask, 0, 0, 0);
  
  if (OrderSelect(Ticket, SELECT_BY_TICKET))
    OrderClose(OrderTicket(), 0.4, OrderClosePrice(), 0);
}

Este script crea su situación. ¿Escriba claramente lo que quiere obtener en esta situación?

 
fxsaber:

Este guión crea tu situación. Escriba claramente lo que necesita para llegar a esta situación?

Así, en el probador, la siguiente línea crearía el ticket #2 (el depósito de apertura es #1)

const TICKET_TYPE Ticket = OrderSend(_Symbol, OP_BUY, 1, Ask, 0, 0, 0);

Entonces, cuando esta siguiente línea se ejecute, un nuevo ticket (#3) debería abrirse por 0.6 lotes y el ticket #2 debería aparecer en el historial de órdenes como una operación de 0.4 lotes.

OrderClose(OrderTicket(), 0.4, OrderClosePrice(), 0);

En MT4, el comentario de la orden #2 sería "a #3" y el comentario de la orden #3 sería "desde #2".

Esto no ocurre en MT5 - el comentario no aparece en las pestañas Operaciones / Historial, y OrdersToString() sólo muestra "0" para el comentario de la operación.

La misma funcionalidad debe existir para el probador y para el comercio real - Sólo he mencionado el probador porque los números de ticket se puede anticipar.

 
SysFX:

En MT4, el comentario de la orden #2 sería "a #3" y el comentario de la orden #3 sería "desde #2".

Esto no ocurre en MT5 - el comentario no se muestra en las pestañas Operaciones / Historial, y OrdersToString() sólo muestra "0" para el comentario de la operación.

Como ya habrás notado, MT5 no crea comentarios específicos cuando se ejecuta parcialmente como lo hace en MT4.


MT4Orders nunca emulará ningún comportamiento de MT4. Esta librería está diseñada para utilizar la API de trading estilo MT4 en MT5. Nada más y nada menos.

Esto significa que si conoces MT4, puedes escribir fácilmente lógica de trading en MT5.


Si necesitas tener en cuenta algunas sutiles peculiaridades de cada plataforma, hay macros para ello.

#ifdef __MQL5__
  // El código MQL5 está aquí.
#else // #ifdef __MQL5__
  // El código MQL4 está aquí.
#endif // #ifdef __MQL5__ #else


Si hay alguna tarea que no puede resolver en MT5, hay gente aquí para ayudar. Muchas cosas se pueden hacer a través de MT4Orders.

 
fxsaber:

Como ya habrá notado, MT5 no crea ciertos comentarios durante la ejecución parcial como lo hace en MT4.


MT4Orders nunca emulará ningún comportamiento de MT4. Esta librería está diseñada para utilizar la API de trading estilo MT4 en MT5. Nada más y nada menos.

Esto significa que si conoces MT4, puedes escribir fácilmente lógica de trading en MT5.


Si necesitas tener en cuenta algunas sutiles peculiaridades de cada plataforma, existen macros para ello.


Si hay alguna tarea que no puedes resolver en MT5, aquí hay gente para ayudar. Muchas cosas se pueden hacer a través de MT4Orders.

Sí ... Me di cuenta de que era causado por el comportamiento de MT5 y he encontrado una solución a ese problema. Era más importante para mí para resolver el [sl] / [tp] problema y que ahora está funcionando muy bien - gracias por la información :)

 
Lo copio y obtengo un archivo vacío
 
grin4k:
Lo copio y obtengo un archivo vacío

Sí, está vacío. Es un fallo del sitio.

Pero no subas el archivo si el código ha sido actualizado. El zip no está actualizado. Descarga por archivo.

 
fxsaber :

Interesante el caso de MT5.


La toma fue parcialmente ejecutada, después de lo cual fue borrada. En este caso tenemos una situación en la que DEAL_ORDER tiene el estado ORDER_STATE_CANCELED, no FILLED/PARTIAL.

En este caso DEAL_TIME_MSC no es igual a ORDER_TIME_DONE_MSC.

¿Cuál era el ORDER_TYPE_FILLING en este caso?

Estoy operando a través del censor url broker. Al configurar Take Profit, el valor por defecto es ORDER_TYPE_FILLING == ORDER_FILLING_IOC. Su caso no debería ocurrir con IOC, ¿verdad?

 
Cómo manejar los errores - GetLastError, y ERR_INVALID_PRICE, ERR_PRICE_CHANGED, ERR_REQUOTE, ERR_OFF_QUOTES, ERR_TRADE_CONTEXT_BUSY - las constantes no están definidas.
 
Konstantin Kurkin : Cómo manejar los errores - GetLastError, y ERR_INVALID_PRICE, ERR_PRICE_CHANGED, ERR_REQUOTE, ERR_OFF_QUOTES, ERR_TRADE_CONTEXT_BUSY - las constantes no están definidas.

MT4ORDERS::LastTradeResult.retcode