Bibliotecas: MT4Orders - página 94

 
hini #:
Entendo a pergunta, mas gostaria de esclarecer: é possível obter uma lista semelhante ao histórico de posições no MT5, sem entrar em detalhes?
 
fxsaber #:
Tentei fazer isso e não é a mesma coisa que a lista de posições históricas no MT5. Embora as duas posições próximas tenham se fundido, o volume ainda é curto em 0,01 lote.
 
hini #:
O volume ainda não é suficiente para 0,01 lote.
Forneça evidências do erro. Recomendo que você abra uma conta demo no MT4 e tente fazer as mesmas operações de negociação nela.
 
fxsaber # :
Forneça evidências do erro. Recomendo que você abra uma conta de demonstração no MT4 e tente fazer as mesmas operações de negociação lá.
Entendi, é de fato idêntico ao MT4.
 
hini #:
É possível obter uma lista semelhante ao histórico de posições no MT5?
Por meio de instantâneos.
#define  MT4ORDERS_BYPASS_MAXTIME 1000000 // Tempo máximo (em µs) para aguardar a sincronização do ambiente de negociação
#include <MT4Orders.mqh> // https://www.mql5.com/pt/code/16006

#define  VIRTUAL_SNAPSHOT_REFRESHTIME 1000 // Tempo de vida do instantâneo para atualização. No MT5, é necessário conectar o MT4Orders.mqh
#include <fxsaber\Virtual\Virtual.mqh> // https://www.mql5.com/pt/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) é outra sequência.
    {
      Print("\nWith CloseBy.");
      PrintHistory(); // O resultado depende da sequência de parâmetros de entrada OrderCloseBy.
      
      Print("\nWithout CloseBy.");
      VIRTUAL::Snapshot(VIRTUAL_SNAPSHOT_REFRESHTIME, -1, false, "", false);    
      PrintHistory(); // Resultado NOT зависит от последовательности входных параметров 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 # :
Por meio de fotos instantâneas.
Muito bem, muito obrigado!
 

Isso parece errado; a direção está incorreta e o número do pedido também não parece corresponder.

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


 

Fórum sobre negociação, sistemas de negociação automatizados e teste de estratégias de negociação

Bibliotecas: MT4Orders

hini, 2025.12.17 02:14 pm.

Isso parece incorreto; a direção está incorreta e o número da ordem também não parece corresponder.

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

No MT5, há apenas duas entidades no histórico de negociações: negociações e ordens. Não há posições no histórico de negociações e, durante muitos anos, o MT5 não exibiu posições fechadas.

O MQ criou esse modo de exibição do histórico ao gerar o histórico de posições a partir do histórico de negociações/ordens. Isso é geração. E, infelizmente, em algumas situações, ela está errada. Em particular, no caso acima.


Vamos considerar a cronologia das operações de negociação nessa situação.

  1. A negociação 2025.12.16 06:10:25.029 721657655 BUY 0.04 foi executada - a posição 999167005 BUY 0.04 foi aberta.
  2. Negociações executadas 2025.12.16 06:13:38.019 721662376 SELL 0.01 - abre a posição 999174176 SELL 0.01.
  3. Negociações executadas 2025.12.16 06:50:54.942 721743849 SELL 0.03 - a posição 999167005 BUY 0.03 foi fechada.

No total, foram feitas exatamente três negociações. E isso corresponde totalmente ao que o script mostra na citação acima.


No histórico de negociações, o OrderTicket é o ticket da transação que fecha a posição. Cada posição tem seu próprio OrderTicket. O MT4Orders gera o histórico de posições de forma inequívoca.

O mesmo valor POSITION_ID (OrderTicketID) pode ser usado para diferentes posições que nem sequer se sobrepuseram no período de sua existência. O MT5 gera o histórico de posições livremente.


Dê uma olhada nessas linhas de geração de histórico de posição do MT5 (o vermelho não é meu).

Há muita coisa que levanta dúvidas. Em particular, houve um giro de negociação (círculo completo) de 0,05 lote?


Muitas situações de negociação diferentes são tratadas em detalhes no blog.

 

Repeti o experimento e parece que as posições históricas geradas pelo MT5 estão corretas:

Aqui, abri manualmente as posições: buy-0.04, sell-0.01, buy-0.04 e, em seguida, fechei todas com um botão.

E as posições históricas geradas pelo CloseBy são diferentes das que criei 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

Aqui estão as posições históricas do MT5:


 
hini #:

E o histórico de posições gerado pelo CloseBy é diferente daquele que criei manualmente.

Ele corresponde perfeitamente à linha do tempo. Mais uma vez. O MT5 gera o histórico de negociação. É uma representação distorcida das posições fechadas.

Você não deve se guiar pelo que o MT5 mostra, mas pelo bom senso.