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] Plotar variação de valores de um indicador dentro de um candle

3 Posts
2 Usuários
0 Reactions
136 Visualizações
(@mfpublicos)
Membro ativo
Registrou: 2 anos atrás
Posts: 7
Iniciador do tópico  

Olá Johnathas, tudo blz?

Criei um indicador e o mesmo plota o fechamento representado em linha ou histograma no gráfico, como usual. Entretando como os valores variam durante a formação do último candle, gostaria também de plotar esta variação? Como? 

Teria que fazer um laço executando no ultimo candle e dentro do mesmo armazenando maximas e minimas? Neste caso não teria um candle, mas teria talvez duas ou três linhas sendo plotadas. Poderia dar uma ideia?

Muito obrigado


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

Boa noite @mfpublicos!

A sua solução passa pelo problema de identificar o primeiro tick de uma barra (snippet aqui), porque você precisa inicializar um valor para o máximo e mínimo do valor que está calculando.

Depois é só fazer a lógica de seleção do máximo e mínimo nos ticks da mesma barra. Segue abaixo o código que eu acho que resolverá seu problema. 

 

Grande abs!

var
  bPrimeiroTickDaBarra : boolean;
  iBarraAtual          : integer;
  fIndicadorQualquer: float;
  fMaxIndicador, fMinIndicador: float;
begin
  //Calculo do indicador que deseja
  fIndicadorQualquer := Media(2,Close);

  if LastBarOnChart then
    if (CurrentBar <> iBarraAtual) then
      begin
        iBarraAtual := CurrentBar;
        bPrimeiroTickDaBarra := true;
      end
  else
    bPrimeiroTickDaBarra := false;

  if bPrimeiroTickDaBarra then
    begin
      //Faz alguma coisa no primeiro tick da barra, no caso, inicializa max e min
      //Aplicável apenas em execução de tempo real
      fMaxIndicador := fIndicadorQualquer;
      fMinIndicador := fIndicadorQualquer;
    end
  else
    begin
      //Faz alguma coisa nos demais ticks da barra atual
      //Aplicável apenas em execução de tempo real
      if fIndicadorQualquer > fMaxIndicador then fMaxIndicador := fIndicadorQualquer ;
      if fIndicadorQualquer < fMinIndicador then fMinIndicador := fIndicadorQualquer ;
    end;

    plot(fIndicadorQualquer);
    plot2(fMaxIndicador);
    plot3(fMinIndicador);
end;

   
ReplyCitar
(@mfpublicos)
Membro ativo
Registrou: 2 anos atrás
Posts: 7
Iniciador do tópico  

Muito obrigado Johnathans. 

Alternativamente, estava usando uma janela extra apenas com indicador e com o TimeFrame bem mais rápido do que o Time Frame de observação usual. Desta forma consiguia valores aproximados. Vou testar aqui e depois comento.


   
ReplyCitar