Neo traderBot

Neo traderBot

Você sabia?

Abordamos o tema de automatização de estratégias em NTSL, MQL5 e NinjaScript!

leaf leftleaf right
Notifications
Clear all

[Solucionado] não estou conseguindo fazer um backteste correto

3 Posts
2 Usuários
2 Reactions
206 Visualizações
(@favin123)
Novo membro
Registrou: 2 anos atrás
Posts: 2
Iniciador do tópico  

Boa noite não sei nada de programação de robô, mas estou tentando fazer um código para fazer um backteste da minha estratégia que venho colocando em prática no simulador durante o pregão alguém poderia-me ajudar por favor.(a minha estratégia ela funciona assim, eu posso-so vender quando a minha média de 50 período estiver acima da média de 20 período e se o fechamento da barra atual for maior que a média de 50 período e a abertura da mesma barra for menor que a média de 50 período colocar uma venda na máxima desse candle com um stop 250 pontos e 500 pontos de alvo. E para compra seria o inverso. Agradeço a compreensão.

input
  mediacurta(50);
  mediapequena(20);
Var
  mediac : float;
  mediap : float;
inicio
  se (IsBought) entao
    inicio
      SellToCoverLimit(BuyPrice + 500,1);
      SellShortStop(BuyPrice - 250,BuyPrice - 250);
    fim;
  se (IsSold) entao
    inicio
      BuyToCoverLimit(SellPrice - 500,1);
      BuyStop(SellPrice + 250,SellPrice + 250);
    fim;
  se (BuyPosition = 0) e (SellPosition = 0) entao
    inicio
      mediac := MediaExp(mediacurta,FECHAMENTO);
      mediap := MediaExp(mediapequena,FECHAMENTO);
      se (mediac > mediap) e (FECHAMENTO > mediac) e (ABERTURA < mediac) entao
        inicio
          SellShortLimit(MAXIMA);
        fim;
      se (mediac < mediap) e (ABERTURA > mediac) e (FECHAMENTO < mediac) entao
        BuyLimit(MINIMA);
    fim;
fim;

   
Citar
(@admin)
Membro Admin
Registrou: 3 anos atrás
Posts: 216
 

Olá @favin123!

Pelo que você descreveu, seu código está fazendo o que deveria.

Você está iniciando pelo caminho certo! Fazer a simulação do setup operacional certamente será muito mais eficiente do que testar manualmente um setup, pois você terá o resultado do desempenho desse setup em um período de tempo muito maior em questão de segundos.

Claro que este benefício exige escrever um bom código de estratégia, ou seja, conseguir traduzir para código e simular uma situação mais próxima possível da realidade. Nesse ponto, sempre que olharmos nosso próprio código iremos possivelmente perceber algum ponto de melhoria. É um trabalho iterativo pra ser feito em etapas.

Por ora, gostaria de pontuar os seguintes itens:

  1. Faça o plot das médias para fazer uma inspeção mais apurada no editor de estratégias. Você perceberá que suas médias estão sendo calculadas apenas quando você não tem posição aberta. A princípio isso não afeta sua lógica no momento. Mas é uma boa prática não misturar isso. Deixe um trecho inicial com a definição das variáveis de forma independente da execução de ordens.
  2. Ordens de abertura do tipo limitadas podem não ser executadas se no próximo candle, o preço de gatilho não estiver no range. Dependendo do seu operacional isso pode necessitar de um tratamento mais adequado.
  3. Para o segundo parâmetro de ordens stop, utilize o offset com uma margem de segurança. Ex: 100 pontos...BuyStop(SellPrice + 250, SellPrice + 350). Isso evitará pulos de ordens em algumas situações.
  4. Se sua estratégia for de daytrade, insira o encerramento de posição no horário limite que deseja. Se você listar as operações no editor de estratégia e ordenar pela coluna de "Tempo Operação" verá quantas ordens estão sendo carregadas para o próximo pregão.

 

Meu conselho é que vá aperfeiçoando seu código aos poucos para assegurar que cada mudança não está bagunçando a lógica. Uma dica que posso dar é utilizar os snippets da comunidade, pois já tem muita coisa pronta que você pode reutilizar rapidamente (restrição de horário de negociação, técnicas de stoploss, etc...).

Se tiver alguma dificuldade com código e de entender detalhes do backtesting, eu sugeriria baixar o eBook "Como programar robôs no Profit Chart?", 100% gratuito, o qual poderá te ajudar a entender melhor os aspectos relacionados ao tema.

Boa sorte e boa programação!

Abs!


   
favin123 reacted
ReplyCitar
(@favin123)
Novo membro
Registrou: 2 anos atrás
Posts: 2
Iniciador do tópico  

Obrigado pela ajuda. Muito bom os seus vídeos no youtube e o site de extrema qualidade.


   
Johnathas reacted
ReplyCitar