Maxima e Minima do dia anterior

 

Boa noite,

Alguém pode me ajudar a decifrar o pq o meu código nao mostra as linhas do dia anterior? no Caso como nao consegui fazer a linha da maxima, nem fiz a linha da minima do dia anterior.


#include <trade/trade.mqh>
#property indicator_chart_window
   
    input int lote = 100;
    CTrade trade ;
    MqlRates rates[];     
    bool sinalcompra = false;
    bool comprado    = false;   
    double MaxDiaAnterior, MinDiaAnterior = 0;
 
    
int OnInit()
  {
  MaxDiaAnterior = iHigh(_Symbol,PERIOD_D1,1);
  MinDiaAnterior = iLow(_Symbol,PERIOD_D1,1);
  return(INIT_SUCCEEDED);
  }

void OnDeinit(const int reason)
  {
   
  }

void OnTick()
   {   
  CriarLinhaH(0,0, "Linha Maxima", MaxDiaAnterior, clrRed, STYLE_SOLID, 0);
         
   }
 
 
void CriarLinhaH(const long janela,
                 const int subjanela,
                 const string nome,
                 double preco,
                 color cor,
                 const ENUM_LINE_STYLE estilo,
                 const int tamanho)
  {
    ObjectCreate(janela,nome,OBJ_HLINE,subjanela,0,preco);
    ObjectSetDouble(janela,nome,OBJPROP_PRICE,preco);
    ObjectSetInteger(janela,nome,OBJPROP_COLOR,cor);
    ObjectSetInteger(janela,nome,OBJPROP_STYLE,estilo);
    ObjectSetInteger(janela,nome,OBJPROP_WIDTH,tamanho);
 
  }   
  

 

Boa noite,

Seu código esta correto. Mas experimente colocar a função CriarLinha no onInit ao invés do onTick.

 
ArmandoJunior70:

Boa noite,

Seu código esta correto. Mas experimente colocar a função CriarLinha no onInit ao invés do onTick.

Fiz, mas da a mesma coisa :\
 
coloca o robô no gráfico e clica Ctrl B (lista de objetos) -> Listar tudo, e verifica se a linha consta na janela Objetos.
 



Após criar um objeto ou alterar suas propriedades gráficas, deve usar o ChartRedraw();

 
Eduardo Putka:

Boa noite,

Alguém pode me ajudar a decifrar o pq o meu código nao mostra as linhas do dia anterior? no Caso como nao consegui fazer a linha da maxima, nem fiz a linha da minima do dia anterior.


#include <trade/trade.mqh>
#property indicator_chart_window
   
    input int lote = 100;
    CTrade trade ;
    MqlRates rates[];     
    bool sinalcompra = false;
    bool comprado    = false;   
    double MaxDiaAnterior, MinDiaAnterior = 0;
 
    
int OnInit()
  {
  MaxDiaAnterior = iHigh(_Symbol,PERIOD_D1,1);
  MinDiaAnterior = iLow(_Symbol,PERIOD_D1,1);
  return(INIT_SUCCEEDED);
  }

void OnDeinit(const int reason)
  {
   
  }

void OnTick()
   {   
  CriarLinhaH(0,0, "Linha Maxima", MaxDiaAnterior, clrRed, STYLE_SOLID, 0);
         
   }
 
 
void CriarLinhaH(const long janela,
                 const int subjanela,
                 const string nome,
                 double preco,
                 color cor,
                 const ENUM_LINE_STYLE estilo,
                 const int tamanho)
  {
    ObjectCreate(janela,nome,OBJ_HLINE,subjanela,0,preco);
    ObjectSetDouble(janela,nome,OBJPROP_PRICE,preco);
    ObjectSetInteger(janela,nome,OBJPROP_COLOR,cor);
    ObjectSetInteger(janela,nome,OBJPROP_STYLE,estilo);
    ObjectSetInteger(janela,nome,OBJPROP_WIDTH,tamanho);
 
  }   
  

Se código tem 2 erros cruciais...

1- Não se deve insistentemente CRIAR um objeto a cada OnTick(). Sugiro você rever a documentação de todos os Event Handlers da linguagem, do contrário você cometerá mais erros ainda.

2- JAMAIS assuma que tudo DARÁ CERTO em MQL5. SEMPRE cheque por erros.  o iHigh() e iLow() NÃO garantem sucesso na primeira chamada, principalmente quando usamos essas funções no OnInit(). Leia a documentação com atenção.


;)

Razão: