Como otimizar e testar um robô?



  • Olá, bom dia!

    Tenho tentado fazer otimizações em alguns robôs que encontrei pela internet na tentativa de encontrar um bom setup para day trade no gráfico de 1 a 5 minutos, mas não sei se estou fazendo certo. Acontece que sou iniciante nessa coisa de robô sabe, por isso tenho tido dificuldades.

    Tenho algumas dúvidas sobre o assunto que talvez alguém aqui do fórum possa tirar. Quem puder tirar um tempo para me ajudar eu agradeço e faço mais um pedido, explique como se escrevesse para um criança de 5 anos. (rsrsrs)

    1. Devo otimizar apenas 1 parâmetro por vez?
    2. Quando otimizo 1 parâmetro quer dizer que estou testando a melhor combinação dele dentro da configuração dos demais parâmetros? (quero saber se antes de otimizar algum parâmetro devo deixar o campo "VALOR" de todos os demais zerados ou não)
    3. Preciso esperar a otimização acabar para escolher um resultado para backtest?
    4. Como analisar os resultados da otimização e escolher uma boa opção para backtest? Quais pontos devo observar, especificamente?
    5. Quando usar o backtest exatamente? Se, por exemplo, fiz a otimização apenas do stop móvel, devo fazer backtest ou apenas anotar a configuração e fazer o backtest só após ter otimizado todos os parâmetros, item por item, para assim testar o setup completo?
    6. Quais os principais pontos a se analisar nos resultados de um backtest, especificamente?
    7. Como faço para salvar os resultados de um backtest?
    8. Por quanto tempo é recomendado rodar um robô com setup novo em conta demo antes de partir para a real?

    Mais uma vez agradeço a todos que puderem me ajudar com essas dúvidas, que acredito ser de muitas outras pessoas que estão começando com o MetaTrader. E por favor, sintam-se livres para acrescentar qualquer outro conhecimento sobre o assunto que julgarem interessante.



  • Olá Trader6200,

    Ótimas questões!

    Não há um consenso em relação as otimizações dos robôs, mas algumas boas práticas podem ser adotadas. Acredito que um bom gerenciamento do processo de otimização é essencial, mas cada robô/estratégia possuem suas características próprias, ou seja, os parâmetros recomendados para uma otimização ideal.

    Já utilizo robôs há dois anos e desde então desenvolvi um método de otimização, que me permite chegar a um set de produção (conta real) de forma padronizada e objetiva para qualquer robô. O processo de otimização de alto nível é bem complexo e leva muitas horas para ser executado, não se iluda que você possa realizá-lo manualmente e que chegará a um resultado satisfatório. Comento mais sobre otimização e preparação de robôs neste post: https://forum.portaldotrader.c...

    Abaixo deixo minhas respostas, mas lembre é apenas o meu ponto de vista.

    Devo otimizar apenas 1 parâmetro por vez? 

    • R: Não é obrigatório e tão pouco resulta num processo melhor. Cria uma alta dependência do investidor (você) definir manualmente cada parâmetro e intervalo dos valores, tornando o processo subjetivo a cada iteração e mais lento, na medida em que o número de parâmetros do robô aumenta.

    Quando otimizo 1 parâmetro quer dizer que estou testando a melhor combinação dele dentro da configuração dos demais parâmetros? (quero saber se antes de otimizar algum parâmetro devo deixar o campo "VALOR" de todos os demais zerados ou não)

    • R: Cada parâmetro quando otimizado, reflete seu melhor resultado combinado aos valores dos demais. Zerar outros parâmetros, ao se otimizar um parâmetro por vez, é irrelevante desde que o valor zero esteja no intervalo a ser testado e seja um valor válido para o teste. 

    Preciso esperar a otimização acabar para escolher um resultado para backtest?

    • R: A regra geral é sim, espere. Mas a interrupção é válida quando dentro de um plano de otimização, você retoma aquele teste parcial para que seja concluído 100%.

    Como analisar os resultados da otimização e escolher uma boa opção para backtest? Quais pontos devo observar, especificamente?

    • R: Basicamente o indice sharpe (maior que 0.2) deve sempre ser observado, mas com o tempo verá que outros critérios podem ajudar na decisão final. Para entender melhor cada um dos parâmetros do relatório dê uma olhada neste link: https://www.mql5.com/pt/articl...

    Quando usar o backtest exatamente? Se, por exemplo, fiz a otimização apenas do stop móvel, devo fazer backtest ou apenas anotar a configuração e fazer o backtest só após ter otimizado todos os parâmetros, item por item, para assim testar o setup completo?

    • R: O backtest é sempre importante, pois é neste momento que você verifica como o setup se comporta fora do período de teste. Neste momento você percebe que um resultado de otimização pode ser bom, mediano ou muito ruim.

    Quais os principais pontos a se analisar nos resultados de um backtest, especificamente?

    • R: Todos os dados do relatório tem relevância, mas gosto de observar principalmente a curva de capital e o drawdown do período (menor que 12%).

    Como faço para salvar os resultados de um backtest?

    • R: Botão direito do mouse, clique em Salvar (pode ser Excel ou html)

    Por quanto tempo é recomendado rodar um robô com setup novo em conta demo antes de partir para a real?

    • R: Depende, alguns robôs necessitam atualização semanal de parâmetros, outros 15 dias. Vai mais da volatilidade do ativo e da estratégia adotada.
    • R: Agora que eu vi, a resposta não era essa. Bem, respondendo então, pra chegar a colocar os robôs em conta real, recomenda-se de 1 a 3 meses de conta demo, no mínimo.

    Espero ter ajudado e estou a disposição.



  • Aproveitando o assunto, o que vocês consideram um periodo bom para otimização para daytrade no mini dolar? Tenho executado as otimizacoes e teste em periodos de 30 dias, pois mais que isso tenho notado uma razoavel diferença, pois por exemplo um setup que funcionou bem em julho não funcionou bem agosto. Tenho pensado em diminiuir a otimização/testes para semanal, por exemplo rodar uma otimização para um periodo de uma semana atrás que definirá o setup da proxima semana, mas não sei se isso é uma boa ideia, gostaria da opinião do pessoal, principalmente quem opera ja em contas reais.



  • Trader8557, o período em dias ou meses passados pode variar de acordo com a estratégia que estamos avaliando, mas uma boa referência no geral é de 6 meses de testes, mas caso seja necessário aumente ou diminua este período, se verificar inconsistências com o comportamento do mercado. No geral, a memória de preços deste período contém as variações (gaps, reversões de tendência, consolidação, etc.) que são necessárias para testarmos um robô.

    O principal é seguir um roteiro bem definido, para que este possa ser repetido mais de uma vez, um exemplo é:

    1 - Divida os parâmetros do robô em etapas separadas (não selecione parâmetros demais, de 5 a 10 no máximo);

    2 - Defina um período maior e outro menor para rodar sua otimização;

    3 - Avalie sempre o resultado do período maior, qual o máximo "drawdown" ou rebaixamento? Se o número de operações realizadas é significativo para o período, pois um valor baixo pode não ser relevante estatisticamente. Enfim, analise o relatório do testador de estratégia e procure compreender todas as informações ou se desejar utilize uma ferramenta que dê apoio a esta tomada de decisão;

    4 - Após classificar o melhor resultado para os períodos otimizados, deixe rodar em contas demo os dois setups (de maior e menor tempo), daí então optar por um período único de otimização, para que este modelo possa se repetir ao longo dos meses.

    Por fim, executar o modelo escolhido semanalmente, para avaliar possíveis ajustes.



  • Obrigado aos dois pela participação.

    Trader8557, também percebi que quando otimizo em períodos menores meus resultados são mais atrativos. Em 1 mês, por exemplo, parece ser fácil alcançar os resultados que espero, mas não me sinto confortável com eles. Aí coloco para rodar o backteste do setup otimizado no período de 1 mês nos últimos 3 meses e apresenta bastante variação. Se no mês de criação chegou a 55% de acerto nas negociações nos dois meses anteriores chegou a ter até 40%. Como não tenho experiência não sei dizer se isso é normal ou não.

    M.Clique, vou resumir todas as informações que você passou da forma que entendi. Por favor, me corrija se estiver errado.

    • Otimizar de 5 a, no máximo, 10 parâmetros por vez;
    • Quando otimizo um determinado parâmetro estou procurando o melhor resultado para ele dentro das configurações dos demais;
    • Sempre esperar as otimizações terminarem por completo, salvo exceções;
    • Ao analisar resultados de backtestes dar atenção especial ao índice sharpe que deve ser no mínimo 0.20;
    • Sempre fazer backteste após a otimização;
    • O rebaixamento máximo deve ser 12%;
    • Rodar robô durante 3 meses em conta demo antes de ir para a real;
    • Definir dois períodos, um maior e outro menor, para rodar a otimização;
    • Se atentar na quantidade de negociações para saber se os resultados são, estatisticamente falando, confiáveis;
    • Colocar para rodar os dois setups criados em conta demo (maior e menor período) e então escolher um dos períodos como padrão para meu modelo de otimização.

    Não sei se estou certo, mas foi isso que consegui entender. Dito isto, me surgem as seguintes dúvidas:

    1. Existe uma ordem de parâmetros para otimizar ou sou eu quem define isso?
    2. Qual o período usar (+ ou -) para otimizar um robô para day trade?
    3. Quando você fala para usar dois períodos você que dizer, por exemplo, otimizar um em 3 meses e outro em 6 meses?
    4. Depois de algumas pesquisas cheguei a seguinte base para analisar os resultados de um backtest, são eles:
    • Fator de lucro mínimo 1.7
    • Rebaixamente máxima 12
    • Fator de recuperação no mínimo 4
    • Índice Sharpe mínimo 0.20
    • Média de lucro tem que estar acima da média de perdas

    Estou avaliando certo?



  • A troca de informações é fundamental, estou muito satisfeito de poder participar e quem sabe ajudar.

    Trader6200,

    Vamos aos pontos mencionados:

    1. Existe uma ordem de parâmetros para otimizar ou sou eu quem define isso? 

    R: Não exista uma ordem específica, mas sim uma coerência em reunir alguns parâmetros comuns em um passo ou etapa de otimização. E sim você deve definir a sequência em que estes grupos de parâmetros serão otimizados.
    Exemplos de agrupamento: 
    Passo 1 = Otimizar (Indicador HiLo, Stop Loss e Take Profit)
    Passo 2 = Otimizar (Outro Indicador ou não, Parcial 1, Parcial 2, Stop Móvel)
    Passo 3 = Otimizar (Break Even 1, Break Even 2) e por último retornar ao passo 1 com os resultados obtidos até o momento.
    A lógica por trás disso é de refinamento contínuo dos resultados e a comparação entre cada passo. Se um passo resultar em dados muito abaixo do esperado, pode haver alguma inconsistência nos parâmetros e estes precisarão ser revistos.

    2. Qual o período usar (+ ou -) para otimizar um robô para day trade?

    R: Eu costumo utilizar de 30 a 120 dias no máximo, mas depende da sua estratégia, se for uma clássica seguidora de tendência pense num período maior, mas o viés é mais scalper e operações rápidas, pense em períodos menores, onde é muito importante a memória mais recente de preços.

    3. Quando você fala para usar dois períodos você que dizer, por exemplo, otimizar um em 3 meses e outro em 6 meses?

    R: Sim, isso mesmo. Veja por exemplo aquele dia da notícia sobre a JBS (em Maio/17), aquele evento poderia impactar na sua análise e gerar resultados incompatíveis com sua estratégia. Então procure entender o cenário geral envolvido no período escolhido para extrair as informações corretas dos resultados.

    4. Depois de algumas pesquisas cheguei a seguinte base para analisar os resultados de um backtest, são eles:

    R: Os valores estão muito bons, também costumo utilizar critérios muito parecidos. 

    Enfim, sua avaliação está correta, mas só uma uma pergunta, como você pensa em viabilizar seu plano de otimização (Execução/Repetição, Refinamento, Classificação)?



  • Viabilizar meu plano de otimização?

    Não sei se entendi sua pergunta. Talvez queira saber qual é meu plano de otimização. Se for isso, ainda não tenho um definido. Estou pensando em um enquanto aprendo mais sobre o assunto. Tudo ainda está em fase de testes.

    Caso não tenho sido esta a sua pergunta, me explique de novo.

    Outra coisa...

    Você mencionou antes a possibilidade de usar uma ferramenta para ajudar na tomada de decisão durante a otimização. Como funciona isso? Que tipo de ferramenta é essa?



  • O plano de otimização é justamente englobar todos esses tópicos que falamos e torná-lo prático, objetivo e exequível. E a ferramenta que mencionei é responsável por gerenciar cada plano de otimização de forma integrada. Trata-se de um projeto que desenvolvi há algum e que apóia diretamente o processo de otimização de robôs. Posso apresentá-lo em detalhes ou se preferir fiz alguns vídeos sobre a ferramenta:

    Otmizando robôs na nuvem (Plano de otimização - 5:48)

    Tem uma versão gratuita para estudos nos links abaixo, na minha assinatura.



  • M.Clique, muito boas suas dicas, tanto aqui quanto no face e em outros grupos que coloquei esses mesmos questionamentos. Pois pra quem eh novato nesse negocio de automação, tudo isso gera muitas dúvidas.

    Já tive uma experiência na smarttbot, em que deixei o robo em teste por um tempo e obtive bons resultados e coloquei na conta real e obtive resultados ruins. Espero não cometer os mesmos erros no MT5, pois quando a gente testa os resultados são excelentes, ai a gente ja pensa que vai ficar rico... hehehe... ai quando coloca na conta real começa a chorar... kkkk

    Uma pergunta, nos backtests uso o WDO$N, na conta real usaria este mesmo ativo ou o ativo real por exemplo WDOU17?

    Obrigado pelo que já ajudou até agora!



  • Que bom que consegui ajudar de alguma forma, estou a disposição. 

    Quanto aos backtests e otimizações procure sempre utilizar a série contínua $N, $D... pois são elas que armazenam o histórico do ativo. Algumas corretoras trabalham com séries diferentes, como é o caso da Rico. Eu faço as otimizações a partir da XP e por ela analiso os resultados de otimizações.



  • Qual é a diferença de $N e $D? Sempre fico na dúvida quando o assunto são séries continuas.

    Para rodar em conta demo colocar sempre o normal, WDO por exemplo?



  • @Trader6200

    Ainda não vi uma documentação clara sobre as séries e como cada uma é atualizada, mas o fato é que na própria descrição disponível no Metatrader já demonstra uma diferença na natureza de cada uma delas.

    Ex.1 WDO$N { XP } = "DOLAR MINI - Por Liquidez (Contrato Vigente) - Sem Ajustes"

    Ex.2 WDO$D { XP } = "DOLAR MINI - Por Liquidez (Contrato Vigente) - Ajustes por Diferença"

    Cheguei a fazer otimizações pelas duas séries, as diferenças foram poucas, mas há diferenças nos backtests, portanto há diferença na disponibilização do histórico de preços. A que se mostra mais fiel aos resultados das operações reais é a série $N.

    ATENÇÃO: Não é possível realizar operações nas séries contínuas, ou seja, você manualmente não pode boletar nesta série e nem o robô. Porém, alguns robôs realizam a associação automática com o contrato vigente, excluindo-se a necessidade de trocar o contrato a cada vencimento. Verifique sempre com o desenvolvedor se o robô possui tal recurso.

    Enfim, o robô sempre irá enviar ordens para a série vigente do contrato futuro, ok? 

    O que é contrato vigente? São as letras após WDO ou WIN que indicam o vencimento do ativo.

    F = JaneiroG = FeveiroH = Março
     J = Abril K = MaioM = Junho
    N = JulhoQ = AgostoU = Setembro
    V = OutubroX = Novembro Z = dezembro


        

      



  • Caros, sobre este ponto:

    • Média de lucro tem que estar acima da média de perdas

    No caso que estou testando Hilo + Silver Trend, o robo esta mais para uma especie de scalper, pois o stop loss eh maior que o gain, então quando há perda realmente eh maior que quando há ganhos, até porque tem saidas parciais que fazem o ganho diminuir mais ainda.

    No meu caso começo a posicão com 3 contratos, se cai, perco 8 pontos por exemplo. Se sobe até o gain, sao apenas 5 pontos e antes do cinco, tem saida parcial em 1 e 3. Então a media de ganho eh na faixa de 30 reais por contrato e a perda cerca de 200 para os 3 contratos.

    Então no meu caso, estou ferindo essa regrinha que citei acima, de que a media de ganho deve estar acima da media de perda, essa eh uma estrategia ruim? a qual estou seguindo?



  • Boa noite,

    Peço desculpas ao criador do tópico, mas também sou novo por aqui. Dando umas olhadas achei esse tópico de dúvidas, então vamos lá:

    1) Ao utilizar a opção de realização parcial, vocês deixam o stop fixo de perda para o valor da saída?

    Exemplo: Se eu coloquei que eu quero fazer uma saída parcial com 5 pontos, o stop fixo se coloca no mesmo valor. Sendo assim se cair, realiza o  resto. Correto?

    2) Qual ou quais indicadores recomendam ou já obtiveram resultados interessantes para contratos de WIN e DWO?

    Acho que era isso, se lembrar de mais algo, escrevo por aqui.

    Bom feriado a todos.



  • @Trader9123

    1) Ao utilizar a opção de realização parcial, vocês deixam o stop fixo de perda para o valor da saída?

    R.: Minha sugestão para sua dúvida é que realize otimizações com diferentes cenários e avalie o melhor desempenho, 
    dados os resultados obtidos no processo de otimização. É importante realizar testes com parciais e sem parciais, utilizando
    stop fixo, móvel e break even, etc. Um plano de otimização pode contemplar vários cenários e ajudar a responder sua
    dúvida. 

    2) Qual ou quais indicadores recomendam ou já obtiveram resultados interessantes para contratos de WIN e WDO?

    R.: Convido você a participar do nosso grupo no Facebook, para que confira algumas dicas sobre robôs. 
    Você também poderá entender melhor sobre boas práticas de otimização e como utilizar a tecnologia a 
    seu favor, na busca de melhores resultados. 


  • @Trader8557

    • Média de lucro tem que estar acima da média de perdas?
    R.: Eu diria que sim, o melhor é que as médias de ganho sejam maiores que as de perdas. Mas nem sempre um bom setup é definido 
    somente pela média de ganhos. Existem outras formas de se avaliar um bom setup. Em setups com parciais, geralmente acontece da 
    média de ganho ser menor que a de perda, neste caso verifique o percentual de acerto, maior lucro da negociação  e fator de lucro. 
    Confirme se as parciais foram dimensionadas de acordo com o Take Profit, se possível utilize alguma ferramenta que apóie neste processo.

    Já experimentou não realizar parciais?

    Esta é uma dúvida comum entre os traders, realizar ou não parciais, mas não vejo nenhum dilema nisto, pois temos os backtests que validam os melhores resultados, portanto está nas nossas mãos definirmos qual será a melhor opção. O mercado muda constantemente e somos nós que precisamos nos adequar a ele, assim como os robôs.

    Robôs precisam de informações atualizadas constantemente, nós precisamos ser ágeis na busca destas informações (parâmetros, indicadores, risco, etc...)

    Não se acomode com resultados medianos, exija melhores resultados do(s) seu(s) robô(s).

    @Trader8557 te enviei uma mensagem sobre um webinar que irei realizar no dia 14/09, aqui está o link para participar



Parece que sua conexão com Fórum Portal do Trader caiu, por favor aguarde enquanto tentamos reconectar.