Testador de estratégia: diferença anormal entre "Cada tick" e "Cada tick é baseado em um tick real" - página 3
![MQL5 - Linguagem para estratégias de negociação inseridas no terminal do cliente MetaTrader 5](https://c.mql5.com/i/registerlandings/logo-2.png)
Você está perdendo oportunidades de negociação:
- Aplicativos de negociação gratuitos
- 8 000+ sinais para cópia
- Notícias econômicas para análise dos mercados financeiros
Registro
Login
Você concorda com a política do site e com os termos de uso
Se você não tem uma conta, por favor registre-se
Olá Felipe,
no backteste foi inserida a configuração da latência exatamente prá isso, simular as perdas de ticks que ocorrem em ambiente real.
Sobre a questão da latência vs perda de ticks.
No teste foram usados dados históricos da série WIN$N, dia 2022-01-17, das 9h00 às 18h25, e o Tester padrão do MetaTrader operando na modalidade "every tick" (ticks simulados). Além de realizar operações de trading, o robot conta o total de ticks recebidos. Segue tabulação dos resultados operando com diversas latências.
Cabem duas observações:
1) Embora o Tester tente simular a perda de ticks para latências maiores, a perda simulada parece desprezível comparada com a perda real. No meu caso específico, com uma latência na faixa de 20-30ms a perda é da ordem de 50%. Pode ser que minhas condições de conectividade sejam particularmente adversas.
2) Contra-intuitivamente, o desempenho do robot não sofre variação expressiva. Por um lado, se considerarmos que os efeitos de slippage são aleatórios (positivos ou negativos) pode ser que na média se compensem uns aos outros. Por outro lado, os efeitos de slippage podem depender da estratégia. Por exemplo, talvez uma estatégia que compre quando o preço está descendo (e vice-versa) seja menos afetada do que uma estratégia que compre quando o preço está subindo.
Sobre a questão da latência vs perda de ticks.
No teste foram usados dados históricos da série WIN$N, dia 2022-01-17, das 9h00 às 18h25, e o Tester padrão do MetaTrader operando na modalidade "every tick" (ticks simulados). Além de realizar operações de trading, o robot conta o total de ticks recebidos. Segue tabulação dos resultados operando com diversas latências.
Cabem duas observações:
1) Embora o Tester tente simular a perda de ticks para latências maiores, a perda simulada parece desprezível comparada com a perda real. No meu caso específico, com uma latência na faixa de 20-30ms a perda é da ordem de 50%. Pode ser que minhas condições de conectividade sejam particularmente adversas.
2) Contra-intuitivamente, o desempenho do robot não sofre variação expressiva. Por um lado, se considerarmos que os efeitos de slippage são aleatórios (positivos ou negativos) pode ser que na média se compensem uns aos outros. Por outro lado, os efeitos de slippage podem depender da estratégia. Por exemplo, talvez uma estatégia que compre quando o preço está descendo (e vice-versa) seja menos afetada do que uma estratégia que compre quando o preço está subindo.
A perda de ticks é o motivo para o slippage.
Derrapa justamente porque, aquela região onde estavam os ticks foi afetava pela latência e daí ocorre a derrapagem.
O MetaTrader mostra a latência no canto inferior direito da tela, mas existe alguma função na API para obter a latência de forma programática?
O MetaTrader mostra a latência no canto inferior direito da tela, mas existe alguma função na API para obter a latência de forma programática?
TerminalInfoInteger(TERMINAL_PING_LAST) - último ping para o servidor
TerminalInfoDouble(TERMINAL_RETRANSMISSION) - perda de pacotes (geral, obtida do sistema operacional)
TerminalInfoInteger(TERMINAL_PING_LAST) - último ping para o servidor
TerminalInfoDouble(TERMINAL_RETRANSMISSION) - perda de pacotes (geral, obtida do sistema operacional)
Olha aí, essa é bem útil...
Valeu por achar a solução e ainda compartilhar.
Sucesso por aí.