Filtro de parametros para Otimização...

 

Ola  a todos

Vamos partir da idéia de um simples sistema de cruzamentos de médias, com BreakEven (BE) duas realizações parciais(RP1 e RP2), TakeProfit (TP) e StopLoss(SL) para nosso assunto

Ao otimizar existem combinações de parâmetros que não são admissíveis numa otimização, e a ideia seria pular este passo de otimização

vamos pegar um exemplo de

BE = iniciando em 1 ate 50 variando de 1 em 1

RP1 = iniciando em 10 ate 300 variando de 1 em 1

RP2 = iniciando em 20 ate 400 variando de 1 em 1

TP = iniciando em 50 ate 500 variando de 1 em 1

você pode dizer de 1 em 1, lembre-se pegamos algo simples, não otimizamos indicadores, e queremos muitos testes para explanar o problmea... então, temos um total de 2.500.141.050 testes e pedindo para rodar o Algoritmo Completo ele realiza 10.469, porque? deve mudar para modo Genético...

Penso que todos concordam comigo que TP=50 e RP1=60 não tem sentido fazer esse passo e assim inúmeros outros... uma saída que pensei é fazer a checagem de parâmetros e retornar INIT_PARAMETERS_INCORRECT... é uma Boa tática, mas isso se a otimização não envolver grandes quantidades de passos...  pois a partir de um certo valor, aparentemente, ele passa a usar o Algoritmo Genético (não estou seguro) pois a quantidade de testes no painel de configuração e a quantidade de testes durante a execução são bem diferentes... e quando tem muitos passos com INIT_PARAMETERS_INCORRECT ele resolve finalizar a otimização....

Com fazer para que a Otimização completa passe por todos os testes (ou pela maioria) com parâmetros Validos?

ou melhor como informar ao Otimizador, para ignorar e não contar o passo atual de otimização? caso seja algo sem sentido...

quero que tenha em mente um sistema que ter mais de um método de negociação (Lateral, Tendência, scalper, noticias etc), vários indicadores que decide qual método usar... agora imagine a quantidade de parâmetros, você pode dizer, otimiza separadamente cada método, e depois otimiza a escolha de qual usar, mas mesmo assim, podemos cair neste buraco....

obrigado

 
Charles Adriano:

Ola  a todos

Vamos partir da idéia de um simples sistema de cruzamentos de médias, com BreakEven (BE) duas realizações parciais(RP1 e RP2), TakeProfit (TP) e StopLoss(SL) para nosso assunto

Ao otimizar existem combinações de parâmetros que não são admissíveis numa otimização, e a ideia seria pular este passo de otimização

vamos pegar um exemplo de

BE = iniciando em 1 ate 50 variando de 1 em 1

RP1 = iniciando em 10 ate 300 variando de 1 em 1

RP2 = iniciando em 20 ate 400 variando de 1 em 1

TP = iniciando em 50 ate 500 variando de 1 em 1

você pode dizer de 1 em 1, lembre-se pegamos algo simples, não otimizamos indicadores, e queremos muitos testes para explanar o problmea... então, temos um total de 2.500.141.050 testes e pedindo para rodar o Algoritmo Completo ele realiza 10.469, porque? deve mudar para modo Genético...

Penso que todos concordam comigo que TP=50 e RP1=60 não tem sentido fazer esse passo e assim inúmeros outros... uma saída que pensei é fazer a checagem de parâmetros e retornar INIT_PARAMETERS_INCORRECT... é uma Boa tática, mas isso se a otimização não envolver grandes quantidades de passos...  pois a partir de um certo valor, aparentemente, ele passa a usar o Algoritmo Genético (não estou seguro) pois a quantidade de testes no painel de configuração e a quantidade de testes durante a execução são bem diferentes... e quando tem muitos passos com INIT_PARAMETERS_INCORRECT ele resolve finalizar a otimização....

Com fazer para que a Otimização completa passe por todos os testes (ou pela maioria) com parâmetros Validos?

ou melhor como informar ao Otimizador, para ignorar e não contar o passo atual de otimização? caso seja algo sem sentido...

quero que tenha em mente um sistema que ter mais de um método de negociação (Lateral, Tendência, scalper, noticias etc), vários indicadores que decide qual método usar... agora imagine a quantidade de parâmetros, você pode dizer, otimiza separadamente cada método, e depois otimiza a escolha de qual usar, mas mesmo assim, podemos cair neste buraco....

obrigado


Bom dia Charles Adriano!


Uma forma de evitar esse monte de parâmetros sem sentido seria definir um parâmetro base e os outros seriam frações dessa base...


Tomando o exemplo acima, você poderia definir o TP como base: o SL poderia ser, por exemplo, 0,5 a 2,0 do TP; RP1 poderia ser 0,25 a 0,5 do TP; RP2 poderia ser 0,6 a 0,8 do TP; e por aí vai...


Claro, esses valores (percentuais/frações) também serão parâmetros de entrada definidos/otimizados pelo usuário.

 

Ola Vinicius

Sim, eu tinha pensado em algo parecido, porem, penso que concordará comigo que e uma solução para encontrar quem sabe extremos de uma otimização final, pois, a ideia base seria, testar dentro do código se o passo atual é valido e ignorar...

Além do mais Teria uma combinação individual para cada processo, vamos tomar como exemplo, um sistema com 2 métodos um que ao entrar considera que esta na tendência e outro na contra tendência... como dizer que tentar ganhar mais na tendência é mais vantajoso que ganhar menos, focando em um equilíbrio entre os dois métodos... por exemplo, se você desativar um método (Contra Tendência por exemplo) podem maximizar o outro, e vice versa, porem, ao trabalhar com ambos, pode não ser ideal trabalhar com as maximizações de cada método... talvez, uma configuração menos radical renda menos resultados... e agora pense um método de tendência fortemente detectada outro com enfraquecimento de tendência

A grande vantagem de otimizar e encontrar a combinação de parâmetros mais adequada ou pelo menos a mais eficiente entre todas... otimizando parte dos parâmetros sem combiná-los, deixa uma grande quantidade de analise fora da avaliação...

Com mencionei o ideal seria dizer ao Otimizador para ignorar o passo, e não levar ele em consideração para nada...

 

É um assunto bem complexo esse aí...

Você pode negar a continuidade do processo de otimização caso, por exemplo, algum resultado demonstre após X trades ineficiência.

Para tanto você gera uma função que contabiliza o número de trades e seus acertos e, se não estiverem dentro da suas condições, você utiliza a função

TesterStop();

É apenas um exemplo...

Agora, de fato, como mencionou, quando há uma grande quantidade de testes a serem realizados, ele utiliza o teste génetico e informa isso no terminal (aba diário).

O que aprendi por experiência é que, na maioria dos casos, muitos dos parâmetros, e seus intervalos, não tinham muito sentido e acabei chegando assim a modelos que possuem o mínimo possível de parâmetros a serem testados e, para mim, os resultados melhoraram e tornaram o EA mais consistente. 

Vendo seu empenho, vou deixar algo que só entendi após muito teste. 

Todo resultado que você adquirir em seus teste é como uma foto e quando colocamos àquela foto no "vídeo" do mercado, as chances deste vídeo atual não continuar igual a foto que tiramos antes é muito maior que ele reproduzir o mesmo vídeo do passado.

Todas as variações que ocorreram lá naquele foto, dificilmente irão ocorrer novamente.

Chegando a essa conclusão eu entendi que; na verdade, quanto mais parâmetros eu colocava mais difícil e distante eu ficava da consistência, pois, estava pedindo ao mercado uma foto igual ao do passado e de quebra, exigia um número enorme de detalhes (parâmetros).

Sucesso por aí.

 

Concordo Adailton Silva pois observação do passado é apenas uma esperança no futuro, não uma garantia... assim como a simulação de natação feita na terra, não garante que você vai nadar bem na água, mas, vai dar esperanças de que seja melhor se não treinar na terra...

o ponto principal aqui é não perder processamento tentando otimizar passos que são inconsistentes ou que gerem algo parecido com algum passo já realizado... quero ter resultarmos mais rapidamente nas otimizações...

Razão: