Bibliotecas: MT4Orders - página 93

 


 #include <MT4Orders.mqh>
 input datetime StartDate = D'2025.12.15 00:42:37' ;
 input datetime EndDate = D'2025.12.15 23:59:52' ;

 void OnStart() {
   int total = OrdersHistoryTotal();
   Print("OrdersHistoryTotal = " , total);
   for ( int i = 0 ; i < total; i++) {
     if (! OrderSelect (i, SELECT_BY_POS, MODE_HISTORY)) continue ;
     datetime openTime = OrderOpenTime();
     datetime closeTime = OrderCloseTime();
     if (openTime >= StartDate && closeTime <= EndDate) {
       ENUM_ORDER_TYPE orderType = ( ENUM_ORDER_TYPE )OrderType();
       if (orderType == OP_BUY || orderType == OP_SELL) {
        OrderPrint();
      }
    }
  }
}

No sé por qué el número de lotes obtenidos es 0,00 en lugar de 0,01?

Si necesitas una cuenta, te la puedo facilitar por mensaje privado.

OrderLots() también devuelve 0.

 
hini #:

¿No sé por qué el número de lotes recibidos es 0,00 y no 0,01?

Este es el comportamiento correcto. Usted ha cerrado el contador de posiciones a través de CloseBy.

Ejecute CustomReport - habrá más información para entender.

 
fxsaber #:

Este es el comportamiento correcto. Ha cerrado el contador de posiciones mediante CloseBy.

Ejecute CustomReport - habrá más información para entender.

Cerré manualmente todas mis posiciones usando MT5, y el número de lote devuelto fue 0, lo que causó cálculos inesperados para esa orden. ¿Por qué devuelve 0.00 en lugar de la cifra oficial? Por ejemplo, con respecto al recuento de órdenes, no estoy seguro de si excluir esta orden. Lógicamente, no debería excluirse, pero un resultado de 0 lotes indica que la orden no es válida.

¿Dónde puedo modificar este comportamiento?


 
Si es comprar 0,01 y vender 0,03, ¿te devolverá 0,02? Todavía no lo he probado. Lo probaré cuando tenga tiempo.
 
hini #:

Cerré manualmente todas mis posiciones usando MT5 y el número de lote devuelto fue 0, causando cálculos inesperados para esta orden. ¿Por qué se devuelve 0.00 en lugar del número oficial? Por ejemplo, con respecto al recuento de órdenes, no estoy seguro de si esta orden debería ser excluida. Lógicamente, no debería excluirse, pero devolver 0 lotes indica que la orden no es válida.

¿Dónde puedo cambiar este comportamiento?

Este es el comportamiento correcto, que es idéntico al comportamiento en MT4 en estas situaciones. Si dos posiciones multidireccionales de 1 lote se cierran mediante CloseBy, el volumen total de la posición cerrada debería ser 1, no 2.

La suma de lotes es el volumen de negociación, por el cual, entre otras cosas, se calcula la comisión.


https://www.mql5.com/ru/blogs/post/751985

https://www.mql5.com/ru/blogs/post/754817

 
hini #:
Si compras 0,01 y vendes 0,03, ¿volverá 0,02? Todavía no lo he probado. Lo probaré cuando tenga tiempo.
Habrá una posición abierta de 0,01 lote y dos posiciones cerradas: 0,01 lote y 0,00 (información) lote.
 
fxsaber # :
Habrá una posición abierta de 0,01 lote y dos posiciones cerradas: 0,01 lote y 0,00 (información) lote.
Si quiero contar el número de operaciones, debería ser 0,04, pero ahora es 0,03?
 
hini #:
Si quiero contar el número de operaciones, debería ser 0,04, pero ahora es 0,03?
He dado todos los enlaces con detalles. Todo funciona correctamente.
 
fxsaber #:
Proporcionado todos los enlaces con detalles. Todo funciona correctamente.
Entiendo la pregunta, pero quiero aclarar: ¿es posible obtener sólo una lista similar a la historia de la posición en MT5 sin entrar en detalles?
 
hini #:
Entiendo la pregunta, pero quiero aclarar: ¿es posible simplemente obtener una lista similar al historial de posiciones en MT5, sin entrar en detalles?