Drawing lines

 

Hi, 

Script to inform prevHigh and prevMin on D tf. However, trying to drawn lines to represent it. Not sure what is happening. Any idea ?

trying to draw H_Line to represent prevHigh and prevMin. 

Using two functions:

High, 

 HLineCreate(0,highlevel,0,0,AntColor,AntStyle,AntWidth);
          HLineMove(0,highlevel,prevHigh);

Low, 

 HLineCreate(0,lowlevel,0,0,AntColor,AntStyle,AntWidth);
          HLineMove(0,lowlevel,prevLow);
//+------------------------------------------------------------------+
//|                                                      Max-Low.mq5 |
//|                        Copyright 2017, MetaQuotes Software Corp. |
//|                                             https://www.mql5.com |
//+------------------------------------------------------------------+
#property copyright "Copyright 2017, MetaQuotes Software Corp."
#property link      "https://www.mql5.com"
#property version   "1.00"

//+------------------------------------------------------------------+
//| Script program start function                                    |
//+------------------------------------------------------------------+

//
   string highlevel="Maxima Anterior"; 
   string lowlevel="Minima Anterior"; 
   double prevHigh;           // O Máxima do dia anterior 
   double prevLow;            // O Mínimo do dia anterior 
   double highs[],lows[];     // Arrays de Máximo e Mínimo 
  
// input parameters of the script 
input color             AntColor         = clrRed;        // Line color 
input ENUM_LINE_STYLE   AntStyle         = STYLE_SOLID;     // Line style 
input int               AntWidth        = 1;              // Line width 

//

void OnStart() 
  { 
   

//--- redefine o código de erro 
   ResetLastError(); 
//--- Obtém os 2 últimos valores de Máximo na janela de tempo diária 
   int highsgot=CopyHigh(Symbol(),PERIOD_D1,0,2,highs); 
      if(highsgot>0) // Se cópia foi bem sucedida 
     { 
      Print("Os preços em alta dos últimos dois dias foram obtidos com sucesso"); 
      prevHigh=highs[0]; // O Máximo do dia anterior 
     Print("Maxima Anterior = ",prevHigh); 
      if(ObjectFind(0,highlevel)<0) // Objeto com o mesmo highlevel não encontrado 
        { 
         //ObjectCreate(0,highlevel,OBJ_HLINE,0,0,0); // Cria o objeto de linha Horizontal 
          HLineCreate(0,highlevel,0,0,AntColor,AntStyle,AntWidth);
          HLineMove(0,highlevel,prevHigh);
        } 
      //--- Define valor para nível de preço para a linha highlevel 
      ObjectSetDouble(0,highlevel,OBJPROP_PRICE,0,prevHigh); 
      //--- Define a visibilidade apenas para PERIOD_M10 e PERIOD_H4 
      ObjectSetInteger(0,highlevel,OBJPROP_TIMEFRAMES,OBJ_PERIOD_M10|OBJ_PERIOD_H4); 
     } 
   else 
     { 
      Print("Não foi possível obter preços em lata nos últimos dois dias, Erro = ",GetLastError()); 
     } 
  
//--- redefine o código de erro 
   ResetLastError(); 
//--- Obtém os 2 últimos valores de Mínimo na janela de tempo diária 
   int lowsgot=CopyLow(Symbol(),PERIOD_D1,0,2,lows); 
   if(lowsgot>0) // Se cópia foi bem sucedida 
     { 
      Print("Os preços em baixa dos últimos dois dias foram obtidos com sucesso"); 
      prevLow=lows[0]; // O Mínimo do dia anterior 
      Print("Minima Anterior = ",prevLow); 
      if(ObjectFind(0,lowlevel)<0) // Objeto com o mesmo lowlevel não encontrado 
        { 
          //ObjectCreate(0,lowlevel,OBJ_HLINE,0,0,0); // Cria o objeto linha Horizontal 
          HLineCreate(0,lowlevel,0,0,AntColor,AntStyle,AntWidth);
          HLineMove(0,lowlevel,prevLow);
        } 
      //--- Define valor para o nível de preço para a linha lowlevel 
      ObjectSetDouble(0,lowlevel,OBJPROP_PRICE,0,prevLow); 
      //--- Define a visibilidade apenas para PERIOD_M10 e PERIOD_H4 
      ObjectSetInteger(0,lowlevel,OBJPROP_TIMEFRAMES,OBJ_PERIOD_M10|OBJ_PERIOD_H4); 
     } 
   else Print("Não foi possível obter preços em baixa nos últimos dois dias, Erro = ",GetLastError()); 
  
   ChartRedraw(0); // redesenha o gráfico de forma forçada 
  }
  
  //+------------------------------------------------------------------+ 
//| Criar a linha horizontal                                         | 
//+------------------------------------------------------------------+ 
bool HLineCreate(const long            chart_ID=0,        // ID de gráfico 
                 const string          name="HLine",      // nome da linha 
                 const int             sub_window=0,      // índice da sub-janela 
                 double                price=0,           // line price 
                 const color           clr=clrRed,        // cor da linha 
                 const ENUM_LINE_STYLE style=STYLE_SOLID, // estilo da linha 
                 const int             width=1,           // largura da linha 
                 const bool            back=false,        // no fundo 
                 const bool            selection=true,    // destaque para mover 
                 const bool            hidden=true,       //ocultar na lista de objetos 
                 const long            z_order=0)         // prioridade para clique do mouse 
  { 
//--- se o preço não está definido, defina-o no atual nível de preço Bid 
   if(!price) 
      price=SymbolInfoDouble(Symbol(),SYMBOL_BID); 
//--- redefine o valor de erro 
   ResetLastError(); 
//--- criar um linha horizontal 
   if(!ObjectCreate(chart_ID,name,OBJ_HLINE,sub_window,0,price)) 
     { 
      Print(__FUNCTION__, 
            ": falha ao criar um linha horizontal! Código de erro = ",GetLastError()); 
      return(false); 
     } 
//--- definir cor da linha 
   ObjectSetInteger(chart_ID,name,OBJPROP_COLOR,clr); 
//--- definir o estilo de exibição da linha 
   ObjectSetInteger(chart_ID,name,OBJPROP_STYLE,style); 
//--- definir a largura da linha 
   ObjectSetInteger(chart_ID,name,OBJPROP_WIDTH,width); 
//--- exibir em primeiro plano (false) ou fundo (true) 
  /* ObjectSetInteger(chart_ID,name,OBJPROP_BACK,back); 
//--- habilitar (true) ou desabilitar (false) o modo do movimento da seta com o mouse 
//--- ao criar um objeto gráfico usando a função ObjectCreate, o objeto não pode ser 
//--- destacado e movimentado por padrão. Dentro deste método, o parâmetro de seleção 
//--- é verdade por padrão, tornando possível destacar e mover o objeto 
   ObjectSetInteger(chart_ID,name,OBJPROP_SELECTABLE,selection); 
   ObjectSetInteger(chart_ID,name,OBJPROP_SELECTED,selection); 
//--- ocultar (true) ou exibir (false) o nome do objeto gráfico na lista de objeto  
   ObjectSetInteger(chart_ID,name,OBJPROP_HIDDEN,hidden); 
//--- definir a prioridade para receber o evento com um clique do mouse no gráfico 
   ObjectSetInteger(chart_ID,name,OBJPROP_ZORDER,z_order); 
//--- sucesso na execução 
  */
   return(true); 
  } 
  
  //+------------------------------------------------------------------+ 
//| Mover linha horizontal                                           | 
//+------------------------------------------------------------------+ 
bool HLineMove(const long   chart_ID=0,   // ID do gráfico 
               const string name="HLine", // nome da linha 
               double       price=0)      // preço da linha 
  { 
//--- se o preço não está definido, defina-o no atual nível de preço Bid 
   if(!price) 
      price=SymbolInfoDouble(Symbol(),SYMBOL_BID); 
//--- redefine o valor de erro 
   ResetLastError(); 
//--- mover um linha horizontal  
   if(!ObjectMove(chart_ID,name,0,0,price)) 
     { 
      Print(__FUNCTION__, 
            ": falha ao mover um linha horizontal! Código de erro = ",GetLastError()); 
      return(false); 
     } 
//--- sucesso na execução 
   return(true); 
  } 
//+------------------------------------------------------------------+ 
//| Excluir uma linha horizontal                                     | 
//+------------------------------------------------------------------+ 
bool HLineDelete(const long   chart_ID=0,   // ID do gráfico 
                 const string name="HLine") // nome da linha 
  { 
//--- redefine o valor de erro 
   ResetLastError(); 
//--- excluir uma linha horizontal 
   if(!ObjectDelete(chart_ID,name)) 
     { 
      Print(__FUNCTION__, 
            ": falha ao Excluir um linha horizontal! Código de erro = ",GetLastError()); 
      return(false); 
     } 
//--- sucesso na execução 
   return(true); 
  } 

Thanks in advanced! 

 
Look at this example: High and Low Custom levels
 
Vladimir Karputov:
Look at this example: High and Low Custom levels


Thank you very much ! 

very usefull .. I fixed my script.