Ao mesmo tempo, o registro também mostra uma mensagem de que tudo está normal.
Há vários links nesta página sobre esse tópico. Em resumo, você pode ver um Result.deal nulo no registro. É possível ver no log (Request.position não nulo) que foi feito um OrderClose, que supostamente foi concluído com êxito (Result.code), mas, ao mesmo tempo, nenhum registro (DEAL_ENTRY_OUT deal) sobre ele apareceu no terminal por um segundo (a biblioteca estava aguardando). Isso indica dois cenários:
Uma ordem de negociação MT5 foi enviada com sucesso, mas a negociação MT5 não foi concluída.
A negociação foi aprovada, mas não apareceu no histórico de negociações.
Ambos os cenários nem sempre são bons para o MT5 (consulte o link acima para obter uma discussão detalhada). Infelizmente, a biblioteca funcionou claramente. Todas essas nuances já foram analisadas cuidadosamente e, portanto, a biblioteca desenvolveu reações razoáveis a elas.
Este é um alerta puramente informativo (não afeta a negociação) de que o MT5-OrderSend está trabalhando com um erro. Esse erro é discutido em detalhes aqui. No entanto, os desenvolvedores ainda não acreditam que esse seja um comportamento incorreto do MT5...
Não analisei por que o desempenho da biblioteca é tão superior ao da MQL5 pura. Presumo que o HistorySelect fica mais lento em tempo real. Não verifiquei isso no testador.
// Lista de modificações:// 03.09.2017:// Adicionar: Adicionado OrderTicketOpen() - Ticket MT5 da transação de abertura de posição// OrderOpenReason() - motivo da transação de abertura do MT5 (motivo para abrir uma posição)// OrderCloseReason() - причина проведения MT5-сделки закрытия (причина закрытия позиции)
Um resultado um tanto inesperado. O script calcula a hora de abertura/fechamento da última "posição".
Não analisei por que o desempenho da biblioteca é muito melhor do que o da MQL5 pura. Presumo que o HistorySelect fique mais lento em tempo real. Não verifiquei isso no Tester.
Consegui encontrar problemas de execução no MT5 com esse script. Recomendo que você verifique sua conexão Terminal+Servidor de Negociação e, em caso de problemas, informe ao Service Desk.
Script atualizado no aplicativo. Localiza rapidamente, por exemplo, esses problemas
// 30.05.2018// Acrescentar: trabalho acelerado com histórico comercial, selecionado uma média de ouro de realizações entre desempenho e// consumo de memória - importante para VPS. É usada a biblioteca genérica padrão.// Se você não quiser usar a biblioteca Generic, o modo antigo de trabalhar com o histórico está disponível.// Para fazer isso, você precisa escrever a seguinte linha na biblioteca MT4Orders ANTES da biblioteca MT4Orders//// #define MT4ORDERS_FASTHISTORY_OFF // Desative a implementação do histórico de negociação rápida - não use a biblioteca genérica.
Trabalhar com um longo histórico agora é muito fácil!
Verificando os ganhos genéricos em números
#define MT4ORDERS_FASTHISTORY_OFF // Desative a implementação rápida do histórico comercial - não use a biblioteca Generic.#include <MT4Orders.mqh>
double HistoryToDouble( void )
{
double Res = 0;
for (int i = OrdersHistoryTotal() - 1; i >= 0; i--)
if (OrderSelect(i, SELECT_BY_POS, MODE_HISTORY))
Res += OrderCloseTimeMsc() - OrderOpenTimeMsc() + OrderProfit() + OrderTicket() - OrderTicketOpen();
return(Res);
}
#define BENCH(A) \
{ \
constulong StartTime = GetMicrosecondCount(); \
A; \
Print("Time[" + #A + "] = " + (string)(GetMicrosecondCount() - StartTime)); \
}
#define PRINT(A) Print(#A + " = " + (string)(A))
voidOnStart()
{
if (HistorySelect(0, INT_MAX))
{
PRINT(HistoryDealsTotal());
PRINT(HistoryOrdersTotal());
}
for (int i = 0; i < 3; i++)
{
PRINT(i);
BENCH(Print(HistoryToDouble()))
}
}
Resultado sem genérico
HistoryDealsTotal() = 10063HistoryOrdersTotal() = 20296
i = 01195028482.07Time[Print(HistoryToDouble())] = 829525
i = 11195028482.07Time[Print(HistoryToDouble())] = 885207
i = 21195028482.07Time[Print(HistoryToDouble())] = 918911
Resultado com o genérico
HistoryDealsTotal() = 10063HistoryOrdersTotal() = 20296
i = 01195028482.07Time[Print(HistoryToDouble())] = 52603
i = 11195028482.07Time[Print(HistoryToDouble())] = 39051
i = 21195028482.07Time[Print(HistoryToDouble())] = 34409
Em um histórico com 10 mil negociações e 20 mil ordens, a variante Generic é cerca de 30 vezes mais rápida. Quanto maior o histórico de negociações, mais perceptível é a aceleração.
Ao mesmo tempo, o registro também mostra uma mensagem de que tudo está normal.
Há vários links nesta página sobre esse tópico. Em resumo, você pode ver um Result.deal nulo no registro. É possível ver no log (Request.position não nulo) que foi feito um OrderClose, que supostamente foi concluído com êxito (Result.code), mas, ao mesmo tempo, nenhum registro (DEAL_ENTRY_OUT deal) sobre ele apareceu no terminal por um segundo (a biblioteca estava aguardando). Isso indica dois cenários:
Ambos os cenários nem sempre são bons para o MT5 (consulte o link acima para obter uma discussão detalhada). Infelizmente, a biblioteca funcionou claramente. Todas essas nuances já foram analisadas cuidadosamente e, portanto, a biblioteca desenvolveu reações razoáveis a elas.
Se eu usar o corretor de demonstração da fhtm para testes, a função OrderSend abre uma negociação, mas retorna um erro.
Repeti o teste e descobri que a culpa foi minha. Obrigado pela mensagem, comportamento interessante do MT5 nesse servidor de negociação.
Corrigi o problema. Se precisar, posso enviá-la para sua PM. E assim, para não incomodar os moderadores, postarei a mensagem na KB, quando os desenvolvedores resolverem o DEAL_SL/TP em novas versões.
Repeti a operação e descobri que a culpa foi minha. Obrigado por sua mensagem, o comportamento interessante do MT5 nesse servidor de negociação.
Corrigi o problema. Se precisar, posso enviá-la para sua PM. E assim, para não incomodar os moderadores, vou postar na KB, quando os desenvolvedores resolverem o DEAL_SL/TP em novas compilações.
Sim, envie-o para sua PM
Sim, por favor, me envie uma MP
Enviado.
Raramente, mas podem ocorrer tais alertas
Este é um alerta puramente informativo (não afeta a negociação) de que o MT5-OrderSend está trabalhando com um erro. Esse erro é discutido em detalhes aqui. No entanto, os desenvolvedores ainda não acreditam que esse seja um comportamento incorreto do MT5...
ZY Uma sutileza do MT5 foi revelada. As ordens fantasmas não ocorrerão ao negociar por meio da biblioteca.
Trabalhar com um longo histórico agora simplesmente voa!
Alguns resultados inesperados. O script calcula a hora de abertura/fechamento da última "posição".
Fórum sobre negociação, sistemas de negociação automatizados e teste de estratégias de negociação
Consultor especialista OrderCloseTime MQL5
fxsaber, 2018.07.06 00:49
Resultado
Não analisei por que o desempenho da biblioteca é tão superior ao da MQL5 pura. Presumo que o HistorySelect fica mais lento em tempo real. Não verifiquei isso no testador.
ZЫ Sim, o HistorySelect fica mais lento.
Fórum sobre negociação, sistemas de negociação automatizados e teste de estratégias de negociação
Bibliotecas: MT4Orders
fxsaber, 2017.09.03 18:52
Impressão de todas as posições fechadas pelo SL
Fórum sobre negociação, sistemas de negociação automatizados e teste de estratégias de negociação
Como descobrir o preço de fechamento quando a posição entrou em stop loss?
fxsaber, 2018.07.10 11:46 AM
Um resultado um tanto inesperado. O script calcula a hora de abertura/fechamento da última "posição".
Não analisei por que o desempenho da biblioteca é muito melhor do que o da MQL5 pura. Presumo que o HistorySelect fique mais lento em tempo real. Não verifiquei isso no Tester.
ZЫ Sim, o HistorySelect fica mais lento.
Esta é a versão mais recente da biblioteca?
Esta é a versão mais recente da biblioteca?
Sim.
Fórum sobre negociação, sistemas de negociação automatizados e teste de estratégias de negociação
Bibliotecas: MT4Orders
fxsaber, 2017.02.16 15:16
Consegui encontrar problemas de execução no MT5 com esse script. Recomendo que você verifique sua conexão Terminal+Servidor de Negociação e, em caso de problemas, informe ao Service Desk.
Script atualizado no aplicativo. Localiza rapidamente, por exemplo, esses problemas
Fórum sobre negociação, sistemas de negociação automatizados e teste de estratégias de negociação
Bibliotecas: MT4Orders
Andrey Khatimlianskii, 2018.06.06 01:53 pm.
Trabalhar com um longo histórico agora é muito fácil!
Resultado sem genérico
Resultado com o genérico
Em um histórico com 10 mil negociações e 20 mil ordens, a variante Generic é cerca de 30 vezes mais rápida. Quanto maior o histórico de negociações, mais perceptível é a aceleração.