Bibliotecas: MT4Orders - página 94

 
fxsaber #:
He probado esto y no es lo mismo que la lista de posiciones históricas en MT5. A pesar de que los dos closeby se fusionaron, el volumen sigue siendo corto por 0,01 lotes.
 
hini #:
volumen sigue siendo insuficiente para 0,01 lote.
Proporcione pruebas del error. Recomiendo abrir una cuenta demo en MT4 y tratar de hacer las mismas operaciones de comercio allí.
 
fxsaber # :
Proporcione pruebas del error. Te recomiendo que abras una cuenta demo en MT4 e intentes hacer las mismas operaciones allí.
Entendido, efectivamente es idéntico con MT4.
 
hini #:
¿es posible obtener una lista similar al historial de posiciones en MT5?
A través de instantáneas.
#define  MT4ORDERS_BYPASS_MAXTIME 1000000 // Tiempo máximo (en µs) de espera para la sincronización del entorno comercial
#include <MT4Orders.mqh> // https://www.mql5.com/es/code/16006

#define  VIRTUAL_SNAPSHOT_REFRESHTIME 1000 // Tiempo de vida de la instantánea para la actualización. En MT5 requiere conectado MT4Orders.mqh
#include <fxsaber\Virtual\Virtual.mqh> // https://www.mql5.com/es/code/22577

#define  Bid SymbolInfoDouble(_Symbol, SYMBOL_BID)
#define  Ask SymbolInfoDouble(_Symbol, SYMBOL_ASK)

void PrintHistory()
{
  for (uint i = OrdersHistoryTotal(); (bool)i--;)
    if (OrderSelect(i, SELECT_BY_POS, MODE_HISTORY))
      OrderPrint();
}

void OnStart()
{
  if (AccountInfoInteger(ACCOUNT_TRADE_MODE) == ACCOUNT_TRADE_MODE_DEMO)
  {
    const TICKET_TYPE Ticket1 = OrderSend(_Symbol, OP_BUY, 1, Ask, 0, 0, 0);
    const TICKET_TYPE Ticket2 = OrderSend(_Symbol, OP_SELL, 1, Bid, 0, 0, 0);
      
    if (OrderCloseBy(Ticket1, Ticket2)) // OrderCloseBy(Ticket2, Ticket1) es otra secuencia.
    {
      Print("\nWith CloseBy.");
      PrintHistory(); // El resultado depende de la secuencia de parámetros de entrada OrderCloseBy.
      
      Print("\nWithout CloseBy.");
      VIRTUAL::Snapshot(VIRTUAL_SNAPSHOT_REFRESHTIME, -1, false, "", false);    
      PrintHistory(); // Resultado NO зависит от последовательности входных параметров OrderCloseBy.
    }
  }  
}


Resultado.

With CloseBy.
#151231378604 2025.12.16 14:59:36.869 sell 0.00 GBPJPY 207.722 0.000 0.000 2025.12.16 14:59:36.904 207.722 0.00 0.00 0.00 #151304734151  by #151304734153 0
#151231378603 2025.12.16 14:59:36.834 buy 1.00 GBPJPY 207.734 0.000 0.000 2025.12.16 14:59:36.904 207.722 0.00 0.00 -6.59 #151304734151  by #151304734153 0
#151231377009 2025.12.16 14:59:15.351 balance 0.00 0.000 0.000 0.000 2025.12.16 14:59:15.351 0.000 0.00 0.00 100000.00 0

Without CloseBy.
#151231378603 2025.12.16 14:59:36.834 buy 1.00 GBPJPY 207.734 0.000 0.000 2025.12.16 14:59:36.869 207.722 0.00 0.00 -6.59 #151304734151  by #151304734153 0: -12 (-12) - 00:00:00
#151231377009 2025.12.16 14:59:15.351 balance 0.00 0 0 0 2025.12.16 14:59:15.351 0 0.00 0.00 100000.00 0 - 00:00:00
 
fxsaber # :
A través de instantáneas.
Vale, ¡muchas gracias!
 

Esto parece incorrecto; la dirección es incorrecta y el número de pedido tampoco parece coincidir.

With CloseBy.
#721743851 2025.12.16 06:12:03.182 buy 0.02 XAUUSDm 4285.524 0.000 0.000 2025.12.16 06:50:55.122 4289.859 0.00 0.00 8.67 0
#721743849 2025.12.16 06:10:25.029 buy 0.03 XAUUSDm 4286.454 0.000 0.000 2025.12.16 06:50:54.942 4289.859 0.00 0.00 10.22 0
#721743835 2025.12.16 06:14:10.761 sell 0.03 BTCUSDm 86202.58 0.00 0.00 2025.12.16 06:50:54.142 86461.98 0.00 0.00 -7.78 0
#721743834 2025.12.16 06:10:41.259 sell 0.03 BTCUSDm 86199.15 0.00 0.00 2025.12.16 06:50:54.123 86461.98 0.00 0.00 -7.89 0
#721743827 2025.12.16 06:11:07.913 buy 0.02 GBPUSDm 1.33627 0.00000 0.00000 2025.12.16 06:50:54.069 1.33626 0.00 0.00 -0.02 0
#721743824 2025.12.16 06:10:55.744 buy 0.04 EURUSDm 1.17503 0.00000 0.00000 2025.12.16 06:50:54.032 1.17511 0.00 0.00 0.32 0
#721743822 2025.12.16 06:13:38.019 sell 0.00 XAUUSDm 4286.352 0.000 0.000 2025.12.16 06:50:53.875 4286.352 0.00 0.00 0.00 #999167005  by #999174176 0
#721743821 2025.12.16 06:10:25.029 buy 0.01 XAUUSDm 4286.454 0.000 0.000 2025.12.16 06:50:53.875 4286.352 0.00 0.00 -0.10 #999167005  by #999174176 0

Without CloseBy.
#721743851 2025.12.16 06:12:03.182 buy 0.02 XAUUSDm 4285.524 0.000 0.000 2025.12.16 06:50:55.122 4289.859 0.00 0.00 8.67 0: +4335 (+4335) - 00:38:52
#721743849 2025.12.16 06:10:25.029 buy 0.03 XAUUSDm 4286.454 0.000 0.000 2025.12.16 06:50:54.942 4289.859 0.00 0.00 10.22 0: +3405 (+3405) - 00:40:29
#721743835 2025.12.16 06:14:10.761 sell 0.03 BTCUSDm 86202.58 0.00 0.00 2025.12.16 06:50:54.142 86461.98 0.00 0.00 -7.78 0: -25940 (-25940) - 00:36:44
#721743834 2025.12.16 06:10:41.259 sell 0.03 BTCUSDm 86199.15 0.00 0.00 2025.12.16 06:50:54.123 86461.98 0.00 0.00 -7.89 0: -26283 (-26283) - 00:40:13
#721743827 2025.12.16 06:11:07.913 buy 0.02 GBPUSDm 1.33627 0.00000 0.00000 2025.12.16 06:50:54.069 1.33626 0.00 0.00 -0.02 0: -1 (-1) - 00:39:47
#721743824 2025.12.16 06:10:55.744 buy 0.04 EURUSDm 1.17503 0.00000 0.00000 2025.12.16 06:50:54.032 1.17511 0.00 0.00 0.32 0: +8 (+8) - 00:39:59
#721743821 2025.12.16 06:10:25.029 buy 0.01 XAUUSDm 4286.454 0.000 0.000 2025.12.16 06:13:38.019 4286.352 0.00 0.00 -0.10 #999167005  by #999174176 0: -102 (-102) - 00:03:13


 

Foro sobre trading, sistemas automatizados de trading y testeo de estrategias de trading

Bibliotecas: MT4Orders

hini, 2025.12.17 02:14 pm.

Eso parece incorrecto; la dirección es incorrecta, y el número de orden tampoco parece coincidir.

With CloseBy.
#721743849 2025.12.16 06:10:25.029 buy 0.03 XAUUSDm 4286.454 0.000 0.000 2025.12.16 06:50:54.942 4289.859 0.00 0.00 10.22 0
#721743822 2025.12.16 06:13:38.019 sell 0.00 XAUUSDm 4286.352 0.000 0.000 2025.12.16 06:50:53.875 4286.352 0.00 0.00 0.00 #999167005  by #999174176 0
#721743821 2025.12.16 06:10:25.029 buy 0.01 XAUUSDm 4286.454 0.000 0.000 2025.12.16 06:50:53.875 4286.352 0.00 0.00 -0.10 #999167005  by #999174176 0

Without CloseBy.
#721743849 2025.12.16 06:10:25.029 buy 0.03 XAUUSDm 4286.454 0.000 0.000 2025.12.16 06:50:54.942 4289.859 0.00 0.00 10.22 0: +3405 (+3405) - 00:40:29
#721743821 2025.12.16 06:10:25.029 buy 0.01 XAUUSDm 4286.454 0.000 0.000 2025.12.16 06:13:38.019 4286.352 0.00 0.00 -0.10 #999167005  by #999174176 0: -102 (-102) - 00:03:13

En MT5, sólo hay dos entidades en el historial de operaciones: operaciones y órdenes. No hay posiciones en el historial de operaciones y durante muchos años MT5 no mostraba las posiciones cerradas.

MQ creó este modo de mostrar el historial generando el historial de posiciones a partir del historial de operaciones/órdenes. Eso es generación. Y desafortunadamente, en algunas situaciones es incorrecto. En particular, en el caso anterior.


Consideremos la cronología de las operaciones comerciales en esta situación.

  1. La operación 2025.12.16 06:10:25.029 721657655 BUY 0.04 fue ejecutada - la posición 999167005 BUY 0.04 fue abierta.
  2. Operaciones ejecutadas 2025.12.16 06:13:38.019 721662376 VENTA 0.01 - se abre la posición 999174176 VENTA 0.01.
  3. Operaciones ejecutadas 2025.12.16 06:50:54.942 721743849 SELL 0.03 - se cierra la posición 999167005 BUY 0.03.

En total, se realizaron exactamente tres operaciones. Y se corresponde totalmente con lo que muestra el script en la cita anterior.


En el historial de operaciones, OrderTicket es el ticket de la operación que cierra la posición. Cada posición tiene su propio OrderTicket. MT4Orders genera el historial de posiciones de forma inequívoca.

El mismo valor POSITION_ID (OrderTicketID) puede ser usado para diferentes posiciones que ni siquiera se solaparon en el tiempo de su existencia. MT5 genera el historial de posiciones libremente.


Echa un vistazo a estas líneas de generación del historial de posiciones de MT5 (el rojo no es mío).

Hay muchas cosas ahí que plantean preguntas. En particular, ¿hubo una rotación de operaciones (círculo completo) de 0,05 lotes?


En el blog se tratan en detalle muchas situaciones de trading diferentes.

 

Repetí el experimento y parece que las posiciones históricas generadas por MT5 son correctas:

Aquí abrí posiciones manualmente: compra-0.04, venta-0.01, compra-0.04, y luego cerré todas con un botón.

Y las posiciones históricas generadas vía CloseBy son diferentes de la que creé manualmente.

With CloseBy.
#726199620 2025.12.17 08:31:37.613 buy 0.04 XAUUSDm 4315.506 0.000 0.000 2025.12.17 08:31:54.047 4315.881 0.00 0.00 1.50 0
#726199619 2025.12.17 08:31:00.023 buy 0.03 XAUUSDm 4315.885 0.000 0.000 2025.12.17 08:31:54.038 4315.881 0.00 0.00 -0.02 0
#726199617 2025.12.17 08:31:04.356 sell 0.00 XAUUSDm 4315.630 0.000 0.000 2025.12.17 08:31:53.880 4315.630 0.00 0.00 0.00 #1004816081  by #1004816270 0
#726199616 2025.12.17 08:31:00.023 buy 0.01 XAUUSDm 4315.885 0.000 0.000 2025.12.17 08:31:53.880 4315.630 0.00 0.00 -0.26 #1004816081  by #1004816270 0

Without CloseBy.
#726199620 2025.12.17 08:31:37.613 buy 0.04 XAUUSDm 4315.506 0.000 0.000 2025.12.17 08:31:54.047 4315.881 0.00 0.00 1.50 0: +375 (+375) - 00:00:17
#726199619 2025.12.17 08:31:00.023 buy 0.03 XAUUSDm 4315.885 0.000 0.000 2025.12.17 08:31:54.038 4315.881 0.00 0.00 -0.02 0: -4 (-4) - 00:00:54
#726199616 2025.12.17 08:31:00.023 buy 0.01 XAUUSDm 4315.885 0.000 0.000 2025.12.17 08:31:04.356 4315.630 0.00 0.00 -0.26 #1004816081  by #1004816270 0: -255 (-255) - 00:00:04

Aquí están las posiciones históricas de MT5:.


 
hini #:

Y el historial de posiciones generado vía CloseBy es diferente del que creé manualmente.

Coincide perfectamente con la línea de tiempo. Una vez más. MT5 genera el historial de operaciones. Es una representación torcida de las posiciones cerradas.

No hay que guiarse por lo que muestra MT5, sino por el sentido común.

 
fxsaber #:

Se ajusta perfectamente a la línea de tiempo. Una vez más. MT5 genera un historial de operaciones. Es una representación torcida de posiciones cerradas.

No hay que guiarse por lo que muestra MT5, sino por el sentido común.

Vale, lo entiendo. Te estás centrando en el proceso de cierre de órdenes históricas.

Y yo quería decir, o más precisamente, obtener una lista de posiciones (órdenes de posiciones) que existieron en la cuenta entre los dos puntos especificados en el tiempo.

Por supuesto, debido a la operación CloseBy, el precio y la hora de cierre de algunas órdenes pueden ser inexactos. Pero para mí (como usuario) no es crítico, ya que el cálculo de beneficios es correcto. Si necesitas detalles, siempre puedes mirar en la sección "Órdenes y Operaciones".