Como ultrapassar a validação de um EA MT4 quando o problema é do sistema de verificação?

 

Olá,

Estou com um problema na validação automática de um EA para o Market e já não estou a conseguir perceber a causa.

Tenho duas versões da mesma estratégia:

  • uma versão para MT5;
  • uma versão equivalente para MT4.

A versão MT5 passou a validação sem problemas.

Na versão MT4, a validação devolve sempre:

test on EURUSD,H1 there are no trading operations

test on NZDUSD,H1 there are no trading operations

test on GBPUSDcheck,M30 there are no trading operations

test on XAUUSDcheck,Daily there are no trading operations

O EA é uma estratégia Forex multi-symbol e, em utilização normal e em backtests locais, funciona corretamente, [ . . . ].

Já tentei várias coisas:

  • verificar e normalizar MODE_MINLOT, MODE_MAXLOT e MODE_LOTSTEP;
  • verificar margem antes do OrderSend;
  • validar STOPLEVEL e FREEZELEVEL;
  • rever a resolução dos símbolos com prefixos e sufixos;
  • testar problemas relacionados com MODE_TRADEALLOWED;
  • adaptar temporariamente o código ao comportamento do Strategy Tester MT4;
  • rever OnTimer / OnTick;
  • remover warnings do compilador;
  • voltar novamente a uma versão limpa da estratégia, sem adaptações específicas para o validator.

Mesmo assim, o resultado continua exatamente igual: there are no trading operations.

O que me está a causar mais estranheza é que a versão MT5 da mesma estratégia passou normalmente, enquanto a versão MT4 não consegue passar deste ponto.

Não quero começar a criar trades artificiais ou alterar a lógica da estratégia apenas para satisfazer o validator.

Alguém já passou recentemente por este problema na validação de produtos MT4?

Existe alguma diferença específica no validator do Market para MT4, especialmente para EAs multi-symbol, que possa provocar este resultado mesmo quando o EA funciona normalmente no terminal e no Strategy Tester local?

Qualquer indicação sobre o que verificar a seguir seria muito útil.

Obrigado.

 

Olá, Rui! O comportamento faz todo sentido quando se conhece a diferença fundamental entre os dois testadores:

  • O Strategy Tester do MT5 é multissímbolo - durante um teste, o EA pode acessar dados e negociar em qualquer símbolo disponível. Por isso sua versão MT5 passou sem problemas.
  • O Strategy Tester do MT4 é monossímbolo - ele só disponibiliza dados e permite operações no símbolo do teste.

A solução é o EA detectar que está no testador e restringir a operação ao símbolo corrente:

   if(MQLInfoInteger(MQL_TESTER))
     {
      // No testador MT4, operar apenas no símbolo do gráfico
      g_symbols[g_symbolCount].symbol = _Symbol;
     }
   else
     {
      // Em operação normal, carregar a lista completa de símbolos
      ...
     }


Este meu código de exemplo também é multissímbolo e passa sem problemas na validação do Market:


 
Vinicius Pereira De Oliveira #:

Olá, Rui! O comportamento faz todo sentido quando se conhece a diferença fundamental entre os dois testadores:

  • O Strategy Tester do MT5 é multissímbolo - durante um teste, o EA pode acessar dados e negociar em qualquer símbolo disponível. Por isso sua versão MT5 passou sem problemas.
  • O Strategy Tester do MT4 é monossímbolo - ele só disponibiliza dados e permite operações no símbolo do teste.

A solução é o EA detectar que está no testador e restringir a operação ao símbolo corrente:


Este meu código de exemplo também é multissímbolo e passa sem problemas na validação do Market:


Olá Vinicius,
Obrigado, vou testar a versão XAUUSD e ver se esta passa, se passar é por isso mesmo.