Testador de estratégia: diferença anormal entre "Cada tick" e "Cada tick é baseado em um tick real" - página 3

 
Rogerio Giannetti Torres #:

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.

Ah, ok. Quando uso o Tester, eu uso uma latência similar à do meu ambiente físico, mas imaginava que o propósito dela fosse apenas simular slippage, não perda de ticks
 

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.

latência pontos #ticks
zero 340 1672250
20 325 1672225
50 330 1672180
100 330 1672104
500 360 1671503


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.

 
Filipe_Almeida #:

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.

latência pontos #ticks
zero 340 1672250
20 325 1672225
50 330 1672180
100 330 1672104
500 360 1671503


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?

 
Filipe_Almeida #:

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)

 
Filipe_Almeida #:

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í.

 
Amigos, eu fiz teste com o cada tick e cada tick baseado em tick real , e o cada tick baseado em tick real está errado , pois abre ordens fakes não tem lógica , pois no mt4 não tem essa opção !!
Razão: