Não marca linhas no Gráfico.

 

Senhores bom dia.


Tenho um código simples para marcar linhas no  gráfico, porem quando eu rodo o mesmo no MQL5 ele simplesmente ignora. Quando eu tiro o EA do gráfico as linhas aparecem, alguém pode me dar uma luz?


Segue o código

//+------------------------------------------------------------------+
//|                                                   TraçaLinha.mq5 |
//|                                    Copyright 2020, Abimael Silva |
//|                                             https://www.mql5.com |
//+------------------------------------------------------------------+
#property copyright "Copyright 2020, Abimael Silva"
#property link      "https://www.mql5.com"
#property version   "1.00"

input double Linha1 = 1.11633;
input double Linha2 = 1.11070;
double CalculaLinha;

//+------------------------------------------------------------------+
//| Expert initialization function                                   |
//+------------------------------------------------------------------+
int OnInit()
  {
//---
   EventSetTimer(5);
//---
   return(INIT_SUCCEEDED);
  }
//+------------------------------------------------------------------+
//| Expert deinitialization function                                 |
//+------------------------------------------------------------------+
void OnDeinit(const int reason)
  {
//---
   
  }
//+------------------------------------------------------------------+
//| Expert tick function                                             |
//+------------------------------------------------------------------+
//void OnTick()
void OnTimer()
  {
//---
     
   CalculaLinha = Linha1-Linha2;

    
   //Set Object Proprietis for a Line
   ObjectCreate(_Symbol,"Line1", OBJ_HLINE,0,0,Linha1);
   ObjectCreate(_Symbol,"Line2", OBJ_HLINE,0,0,Linha2);
   
   ObjectCreate(_Symbol,"Line3", OBJ_HLINE,0,0,Linha2 - CalculaLinha);
   ObjectCreate(_Symbol,"Line4", OBJ_HLINE,0,0,Linha1 + CalculaLinha);
   
   ObjectCreate(_Symbol,"Line5", OBJ_HLINE,0,0,Linha1 - CalculaLinha/2);
   ObjectCreate(_Symbol,"Line6", OBJ_HLINE,0,0,Linha1 + CalculaLinha/2);
   
   
   //Set Object Color
   ObjectSetInteger(0,"Line1",OBJPROP_COLOR,clrBlue);
   ObjectSetInteger(0,"Line2",OBJPROP_COLOR,clrBlue);
   
   ObjectSetInteger(0,"Line3",OBJPROP_COLOR,clrRed);
   ObjectSetInteger(0,"Line4",OBJPROP_COLOR,clrRed);
   
   ObjectSetInteger(0,"Line5",OBJPROP_COLOR,clrDarkGreen);
   ObjectSetInteger(0,"Line6",OBJPROP_COLOR,clrDarkGreen);
   
   //Set Object Width
   ObjectSetInteger(0,"Line1",OBJPROP_WIDTH,3);
   ObjectSetInteger(0,"Line2",OBJPROP_WIDTH,3);
   
   ObjectSetInteger(0,"Line3",OBJPROP_WIDTH,3);
   ObjectSetInteger(0,"Line4",OBJPROP_WIDTH,3);
   
   ObjectSetInteger(0,"Line5",OBJPROP_WIDTH,2);
   ObjectSetInteger(0,"Line6",OBJPROP_WIDTH,2);
   
   Print("Valor = ",CalculaLinha);


  }
//+------------------------------------------------------------------+
 
abimael Silva:

Senhores bom dia.


Tenho um código simples para marcar linhas no  gráfico, porem quando eu rodo o mesmo no MQL5 ele simplesmente ignora. Quando eu tiro o EA do gráfico as linhas aparecem, alguém pode me dar uma luz?


Segue o código

Você está, a cada 5 segundos, criando linhas no mesmo ponto. Sua sorte é que o MT5 ignora isso por causa dos nomes repetidos, do contrário vc estaria encavalando linhas a cada 5 segundos no mesmo lugar. Completamente errada essa abordagem.

Estude mais sobre os Eventos (Hooks) do MQL5.

E, depois de desenhar as linhas, use ChartRedraw().

;)

Razão: