Como desenhar objetos persistentes no gráfico do Backtest?

 

Pessoal, boas à todos.

Gostaria de uma ajuda, gostaria de inserir figuras no gráfico gerado no backtest para visualmente poder ver mais fácil onde uma operação saiu por stop loss. Meu código funciona de boa no teste visual e no simulador ao vivo, mas no backtest somente ficam as setas de negociação. Há alguma forma de criar objetos próprios que fiquem no gráfico? Meu objetivo é poder estudar se há algum padrão que eu possa prever antes do SL, mas para isso preciso ver muitos casos que isso ocorra e olhar só pelo log não está me ajudando.

Segue abaixo o código que faz o desenho.


Antecipadamente agradeço a ajuda.

void OnTradeTransaction(const MqlTradeTransaction& trans,
                        const MqlTradeRequest& request,
                        const MqlTradeResult& result)
  {
    if(trans.price >0)
     {
      if((dir == 1 && trans.price<=trans.price_sl)||(dir == -1 && trans.price>=trans.price_sl))
          {
            printf("Prejuízo");
             ObjectCreate(0,"Prejuízo",OBJ_ARROW,0,tempos.GetTempoAtual(),trans.price);
             ObjectSetInteger(0,"Prejuízo",OBJPROP_ARROWCODE,85);
             ObjectSetInteger(0,"Prejuízo",OBJPROP_WIDTH,5);
             ObjectSetInteger(0,"Prejuízo",OBJPROP_COLOR,clrAqua);
             ChartRedraw();
          }
     }
  }
 
sim isso da para fazer normalmente, vai no ajuda do editor do mt5 e procura por objectcreate vai encontrar um exemplo de como fazer
 
Você está  criando o mesmo objeto toda vez, com o mesmo nome.
Se quer vários objetos precisa de um nome diferente a cada interação, pode atribuir uma variável contador a cada vez que o objeto é criado, ou associar uma variável de tempo ao nome. 

 
Pablo Jaguanharo Carvalho Pinheiro #:
Você está  criando o mesmo objeto toda vez, com o mesmo nome.
Se quer vários objetos precisa de um nome diferente a cada interação, pode atribuir uma variável contador a cada vez que o objeto é criado, ou associar uma variável de tempo ao nome. 

Sim, obrigado por informar, eu vi isso e corrigi. De qualquer forma, não é esse o problema principal, pois mesmo o único que era criado não aparecia na janela após o teste, parece que o metatrader deleta todos os objetos que não são as setas de negociação.

O problema disso é que somente consigo ver esses pontos no teste visual, que obviamente será um teste curto por questões de tempo de execução ou eu terei que olhar cuidadosamente os dados, algo que eu queria otimizar.

De qualquer forma eu agradeço a resposta e ficarei feliz se tiver mais alguma sugestão.

 
Eduardo Oliveira #:
sim isso da para fazer normalmente, vai no ajuda do editor do mt5 e procura por objectcreate vai encontrar um exemplo de como fazer
Sim Eduardo, obrigado por informar. Foi exatamente a função que eu usei, mas as figuras não persistem no teste não visual.
 
rsdcampos #:
Sim Eduardo, obrigado por informar. Foi exatamente a função que eu usei, mas as figuras não persistem no teste não visual.
Como voce quer algo desenho de figura no teste nao visual? Uma coisa que tava pensando, talvez no OnDeInit tu salva um template no estado atual. Dai tu recarrega depois manualmente, mas acredito que no modo nao visual ele ignora as funcoes de desenho, como voce ja disse.
 
rsdcampos #:
Sim Eduardo, obrigado por informar. Foi exatamente a função que eu usei, mas as figuras não persistem no teste não visual.

O "não visual" a que você se refere deve provavelmente ser "Otimização", certo?

Se sim, você está misturando as coisas... Como é que você quer em um processo de Otimização, ainda assim desenhar objetos??