Divergencia entre resultado da otimização e backtest

 

Boa tarde, ao realizar uma otimização de todos os ativos selecionados na tabela de visualização do mercado, os resultados da otimização divergem do backtest (ambos mesmas configurações e parâmetros), como corrigir isso?

Arquivos anexados:
1.png  51 kb
2.png  46 kb
 
ROMEU MASSELAI: Boa tarde, ao realizar uma otimização de todos os ativos selecionados na tabela de visualização do mercado, os resultados da otimização divergem do backtest (ambos mesmas configurações e parâmetros), como corrigir isso?

Definiu uma data especifica de inicio e fim para os testes e para as otimizações?

É que se a resposta for não, e simplesmente selecionou algo como "Último mês", então vai incluir dados actuals (que estão sempre em atualização), especialmente se os testes e as otimizações forem feitas em dias diferentes.

 
Fernando Carreiro #:

Definiu uma data especifica de inicio e fim para os testes e para as otimizações?

É que se a resposta for não, e simplesmente selecionou algo como "Último mês", então vai incluir dados actuals (que estão sempre em atualização), especialmente se os testes e as otimizações forem feitas em dias diferentes.

Utilizei uma data especifica (-+ 10 anos) para ambos. Fiz a otimização em seguida com clicando em um dos resultados da otimização, e deu divergência. 
 
ROMEU MASSELAI #: Utilizei uma data especifica (-+ 10 anos) para ambos. Fiz a otimização em seguida com clicando em um dos resultados da otimização, e deu divergência. 

Isso já me aconteceu antes e foi por causa dum erro no meu código na inicialização de variáveis globais.

Não quero dizer com isto, que seja o seu caso, mas pode ser uma falha no código do EA.

 
Fernando Carreiro #:

Isso já me aconteceu antes e foi por causa dum erro no meu código na inicialização de variáveis globais.

Não quero dizer com isto, que seja o seu caso, mas pode ser uma falha no código do EA.

Eu estou com um problema assim também, revisei todas as variaveis para se elas estavam inicializadas e não encontrei nenhuma faltando inicialização. Nos includes do Trade.mqh poderia ter algo que precisaria me preocupar? A CTrade eu tenho a parte dela declarada globalmente e a inicialização - numero magico e async mode no OnInit -, mas não mudou nada. Me parece as vezes que pode ser por falta de memoria que a maquina durante o otimizador fica extremamente lenta.

Nessa saga ai inclusive tambem tentei colocar teste pra ver se o ativo estava sincronizado, o tester executar cada tick simulado (propriedade tester_everytick_calculate) e retirar a otimizacao do compilador. Mas nada pareceu diminuir a divergência entre teste único e otimização... Minha região global ta assim:


#property tester_everytick_calculate

#include <Trade/Trade.mqh>
#include <Trade/SymbolInfo.mqh>

input string InpHorarioEntrada = "10:01"; // Horario de Inicio das Ordens
input string InpHorarioSaida = "16:53"; // Horario de Encerramento das Posicoes (a partir do horario daqui)
input uint InpEncerrarEntradas = 50; // N minutos para Cancelar Ordens (zero eh exatamente no horario da posicao, 50 eh 50 minutos antes da posicao)
input double InpCaixa = 10000; // Capital a ser usado nas operacoes (nao validado)
input double InpLote = -1; // Lote a ser utilizado de divisor
input double InpShift = 0.0; // Deslocamento a aplicar no preço de compra
input double InpPercentageEntry = 2.0; // Compra N% abaixo do preço anterior (N=20=20%)
input double InpStopPercentage = 10; // Stop N% sob o valor inicial da posição (N=12=12%)
input long InpEA = 0x1473; // Código único

datetime marketOpen = 0;
datetime marketClosingOrdens = 0;
datetime marketClosingPositions = 0;
double lote = -1;
double entryp = -1;
double stopp = -1;

double volmin = -1;
double ticksize = -1;
datetime current = 0;
double caixa_atual = -1;
double caixa_inicial = -1;
const datetime day = PeriodSeconds(PERIOD_D1);
bool primeiro_negocio_dia = false;

struct data
{
   ulong ticket;
   datetime tempo;
   double preco;
   double stop;
   double lote;
};

CTrade htrade;

Dessas variaveis a unica que so tem chamadas (e não inicialização) seria a CTrade, mas eu converti ela pra ponteiro em uma versão de teste e mesmo fazendo new e delete não mudou nada na divergencia então voltei. A struct data é usada em contexto local no qual só é inicializada via declaração e é passada como referencia (&). Queria ideias do que poderia ver mais....