Bibliotecas: MT4Orders - página 93

 
fxsaber #:
O autor não pode fazer nada com relação às versões em outros idiomas.
O fato foi relatado à MQ.
 


 #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();
      }
    }
  }
}

Não sei por que o número de lotes obtidos é 0,00 em vez de 0,01?

Se você precisar de uma conta, posso fornecê-la por mensagem privada.

OrderLots() também retorna 0.

 
hini #:

Não sei por que o número de lotes recebidos é 0,00 e não 0,01?

Esse é o comportamento correto. Você fechou o contador de posições por meio de CloseBy.

Execute o CustomReport - haverá mais informações para entender.

 
fxsaber #:

Esse é o comportamento correto. Você fechou o contador de posições por meio de CloseBy.

Execute o CustomReport - haverá mais informações para entender.

Fechei manualmente todas as minhas posições usando o MT5, e o número de lote retornado foi 0, o que causou cálculos inesperados para essa ordem. Por que ele retorna 0,00 em vez do número oficial? Por exemplo, com relação à contagem de ordens, não tenho certeza se devo excluir essa ordem. Logicamente, ela não deveria ser excluída, mas um retorno de 0 lotes indica uma ordem inválida.

Onde posso modificar esse comportamento?


 
Se for comprar 0,01 e vender 0,03, ele retornará 0,02? Ainda não testei isso. Vou testá-lo quando tiver tempo.
 
hini #:

Fechei manualmente todas as minhas posições usando o MT5 e o número do lote retornado foi 0, causando cálculos inesperados para essa ordem. Por que está sendo retornado 0,00 em vez do número oficial? Por exemplo, com relação à contagem de ordens, não tenho certeza se essa ordem deve ser excluída. Logicamente, ela não deveria ser excluída, mas o retorno de 0 lotes indica que a ordem é inválida.

Onde posso alterar esse comportamento?

Esse é o comportamento correto, que é idêntico ao comportamento do MT4 nessas situações. Se duas posições multidirecionais de 1 lote forem fechadas por meio de CloseBy, o volume total da posição fechada deverá ser 1, e não 2.

A soma dos lotes é o volume de negociação, pelo qual, entre outras coisas, a comissão é calculada.


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

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

 
hini #:
Se você comprar 0,01 e vender 0,03, 0,02 voltará? Ainda não testei isso. Vou testá-lo quando tiver tempo.
Haverá uma posição aberta de 0,01 lote e duas posições fechadas: 0,01 lote e 0,00 (informação) lote.
 
fxsaber # :
Haverá uma posição aberta de 0,01 lote e duas posições fechadas: 0,01 lote e 0,00 (informação) lote.
Se eu quiser contar o número de negociações, ele deveria ser 0,04, mas agora é 0,03?
 
hini #:
Se eu quiser contar o número de negociações, deveria ser 0,04, mas agora é 0,03?
Forneci todos os links com detalhes. Tudo funciona corretamente.
 
fxsaber #:
Forneceu todos os links com detalhes. Tudo funciona corretamente.
Entendi a pergunta, mas gostaria de esclarecer: é possível obter apenas uma lista semelhante ao histórico de posições no MT5 sem entrar em detalhes?