Discussão do artigo "Criar Critérios Personalizados de Otimização de Expert Advisors" - página 2

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
Você está dizendo que o código é do tipo
if (balance < 3000) ExpertRemove();
não funciona?
Funciona. Eu já entendi. Ele interrompe a otimização, mas ainda exibe os resultados, por isso achei que não funcionava.
Karlson:
Mas não foi isso que eu disse. Que essa interrupção (pelo menos antes de funcionar) levou à saída da genética no final.
É isso mesmo.
Mas se você redefinir os resultados de OnTester() para zero ou fizer como acima (atribuir o valor negativo -777), a genética poderá realmente se comportar de forma imprevisível, porque a seleção é realizada nos resultados apenas pelo valor de retorno de OnTester().
Isso existia no MT4:
Certamente, isso pode ser feito com a ajuda das ferramentas MQL5, já que os desenvolvedores removeram completamente essas funções.
É claro que tudo pode ser copiado para o Excel, mas eu gostaria de aproveitar as vantagens da nova plataforma.
Resolvemos as limitações - podemos fazer isso com ExpertRemove().
E quanto a ignorar resultados inúteis no relatório?
E quanto a ignorar resultados inúteis no relatório?
Você não pode fazer isso no relatório padrão e não precisa fazê-lo (sou contra isso). Crie seu próprio relatório.
Agora você pode gerar um relatório no estágio de otimização(https://www.mql5.com/pt/docs/optimization_frames) em qualquer formato que precisar.
E, em breve (hoo-hoo), será possível gerenciar a genética por conta própria.
Excelente.
Com base em meu trabalho anterior na área de redes neurais e algoritmos genéticos de previsão de futuros, percebi a importância de uma curva de patrimônio razoavelmente reta.
E escrevi algumas rotinas para levar isso em consideração. É realmente uma medida da "robustez" de um sistema de previsão.
Encontros com trabalhos práticos.
O módulo de retidão é um bom começo, mas está incompleto. É possível obter uma classificação muito boa com lucro zero. Portanto, o lucro deve ser incluído na equação. Apenas adicionar algum tipo de medida do lucro total
não funciona. Você poderia obter uma linha reta com bom valor se tivesse alguns ganhos no início, alguns rebaixamentos no meio e alguns ganhos melhores no final. Isso produziria uma linha reta nivelada com bom ajuste e mostraria algum lucro. Mas isso não é realmente o que estamos procurando.
Na verdade, queremos uma linha de regressão que suba para cima com bom ajuste. Portanto, para que a ideia de usar uma linha de regressão com o menor desvio possível, o coeficiente para a inclinação ascendente deve ser incorporado à equação. É isso que
é o que queremos ver. Uma linha de regressão inclinada para cima com bom ajuste. Farei uma tentativa de incorporar isso. Sugestões e ajuda são bem-vindas :-)
Estou testando o código CSTS.
Acho esse resultado um pouco estranho:
Resultado Lucro #Trades Frofit factor DrawDown Expected Payoff Recovery Factor
0.58 1237 84 1.26 12.70 14.74 0.93
0.57 1598 90 1.38 8.69 17.36 1.76
Aqui está outro exemplo
0.61 3175 123 1.33 21.04 25.82 1.48
0.60 4460 145 1.49 11.32 30.77 2.56
De todos os pontos de vista, os valores da segunda linha são melhores!!! Mas a pontuação é menor
A única coisa que posso deduzir é que há uma penalidade em muitas negociações. Eu preferiria que fosse o contrário
E, por fim, uma última observação. Parece que há exatamente uma pessoa interessada nesse assunto. Eu.
Mais sobre isso. Cometi um erro em meu código e isso fez com que as ordens pendentes não fossem liberadas. Também resultou em apenas 5 ordens colocadas em um período de teste de 12 meses. Com um bom lucro.
Isso realmente aumentou o resultado da otimização para mais de 100. Claramente, o valor da "vitória média" foi extremamente alto, resultando nessa pontuação extrema. Tecnicamente, isso está correto, mas não tem sentido
no contexto do backtesting. Qual é a probabilidade de que tendências longas como essa sejam representativas? Então, pensei que o número de negociações deveria ser incorporado à equação de alguma forma.
Com algumas tentativas e erros, alterando o código, cheguei a um método que produz resultados que considero úteis.
mudanças:
// CSTS:
double tssf=real/teor;
if(tssf <= 0) return 0;
work = TesterStatistics( STAT_TRADES );
if( work <= 0) work = 1;
work = MathSqrt(work/4);
tssf = tssf * work;
if( tssf < 1 ) tssf = 0;
if(TesterStatistics(STAT_PROFIT) <= 0) tssf = 0;
return(tssf);
O método original provavelmente é bom para avaliar um sistema em execução, mas basicamente inútil para basear parâmetros em uma execução de backtest
Bem, aqui estou eu novamente, o lobo solitário neste universo :-)
Tenho experimentado o critério personalizado de retidão tentando incluir a inclinação da linha reta calculada na equação. Da forma como está, ele pode lhe dar uma classificação muito alta em um lucro muito fraco. A simples adição do lucro final
Em uma tentativa de adicionar a inclinação real à equação, alterei o código como mostrado abaixo.
Não é uma solução perfeita, mas está mais próxima do que eu quero ver. Usar o resultado junto com o saldo ou o lucro funciona bem para mim com este código
Bem, aqui estou eu novamente, o lobo solitário neste universo :-)
Tenho tentado usar o critério personalizado de retidão para tentar incluir a inclinação da linha reta calculada na equação. Da forma como está, ele pode lhe dar uma classificação muito alta em um lucro muito fraco. A simples adição do lucro final
Em uma tentativa de adicionar a inclinação real à equação, alterei o código como mostrado abaixo.
Não é uma solução perfeita, mas está mais próxima do que eu quero ver. Usar o resultado junto com o saldo ou o lucro funciona bem para mim com este código
Por exemplo, para algoritmos genéticos, você deve ter um bom algoritmo de aptidão e, com certeza, criar um critério personalizado alinhado a essa aptidão.
Não tenho certeza de que calcular a inclinação da curva de equilíbrio seja a melhor maneira, pois temos várias outras maneiras, de qualquer forma, conte comigo para explorar e debater essas ideias.