MQL4. Пустые значения

 

Написала робота, а один из индикаторов показывает пустые значения и не выставляет сделок. Помогите разобраться в чем проблема и как ее решить?

индикатор прилагается. 

 

 double Val_0=iCustom(Symbol(),0,"ExtremeTMALine",TimeFrame,TMAPeriod,Price,ATRMultiplier,ATRPeriod,TrendThreshold,ShowCenterLine,0,0);
   double Val_1=iCustom(Symbol(),0,"ExtremeTMALine",TimeFrame,TMAPeriod,Price,ATRMultiplier,ATRPeriod,TrendThreshold,ShowCenterLine,1,0);
   double Val_2=iCustom(Symbol(),0,"ExtremeTMALine",TimeFrame,TMAPeriod,Price,ATRMultiplier,ATRPeriod,TrendThreshold,ShowCenterLine,2,0);
   double Val_3=iCustom(Symbol(),0,"ExtremeTMALine",TimeFrame,TMAPeriod,Price,ATRMultiplier,ATRPeriod,TrendThreshold,ShowCenterLine,3,0);
   double Val_4=iCustom(Symbol(),0,"ExtremeTMALine",TimeFrame,TMAPeriod,Price,ATRMultiplier,ATRPeriod,TrendThreshold,ShowCenterLine,4,0);
   double Val_5=iCustom(Symbol(),0,"ExtremeTMALine",TimeFrame,TMAPeriod,Price,ATRMultiplier,ATRPeriod,TrendThreshold,ShowCenterLine,5,0);

   double X0=iCustom(Symbol(),0,"wajdyss",Lb,0,0);  
   double X1=iCustom(Symbol(),0,"wajdyss",Lb,1,0);
   double X2=iCustom(Symbol(),0,"wajdyss",Lb,2,0);
   double X3=iCustom(Symbol(),0,"wajdyss",Lb,3,0);
   Comment(+X3+"\n",+X2+"\n"); Эти значения пустые

//BUY===================================== 
   bool Open_Buy=(Val_2>X3);
   bool Close_Buy=(Val_1<X2);
   bool Open_SELL=(Val_1<X2);
   bool Close_SELL=(Val_2>X3);

      if(Open_Buy && !Close_Buy)
        {
         tiket=OrderSend(Symbol(),OP_BUY,Lot,NormalizeDouble(Ask,Digits),3,0,0,"",Magic,0,clrNONE);
         if(tiket<0) { Print("Ошибка при выборе ордера BUY #",GetLastError());}
         PlaySound("alert.wav");
        }

   if(Close_Buy)
     {
      for(i=OrdersTotal()-1;i>=0;i--)
        {
         OrderSelect(i,SELECT_BY_POS,MODE_TRADES);
           {
            if(OrderSymbol()==Symbol())
              {
               if(OrderType()==OP_BUY)
                 {
                  OrderClose(OrderTicket(),OrderLots(),NormalizeDouble(Bid,Digits),3,Violet);
                  PlaySound("ok.wav");
                 }
              }
           }
        }
     }
Файлы:
wajdyss.mq4  7 kb
 
Anna_89:

Написала робота, а один из индикаторов показывает пустые значения и не выставляет сделок. Помогите разобраться в чем проблема и как ее решить?

индикатор прилагается. 

 

Вы не получаете значения стрелок.

Стрелки рисуются там где есть цена если цены нет то буфер пустой.

Пошартесь по буферам найдите последние стрелки и анализируйте их.

 
Anna_89:

Написала робота, а один из индикаторов показывает пустые значения и не выставляет сделок. Помогите разобраться в чем проблема и как ее решить?

индикатор прилагается. 

 

Добавьте в индикатор 2 строки

int init()
  {
   
   IndicatorBuffers(8);
   SetIndexBuffer(0,ssld); SetIndexDrawBegin(0,Lb+1);
   SetIndexBuffer(1,sslu); SetIndexDrawBegin(0,Lb+1);
   SetIndexBuffer(4,Hlv);
  
   SetIndexStyle(3, DRAW_ARROW, EMPTY);
   SetIndexArrow(3, 233);
   SetIndexBuffer(3, CrossUp);
   SetIndexStyle(2, DRAW_ARROW, EMPTY);
   SetIndexArrow(2, 234);
   SetIndexBuffer(2, CrossDown);
   
   SetIndexEmptyValue(2,0.0);
   SetIndexEmptyValue(3,0.0);

D=Time[1];

   return(0);
  }

int deinit()
  {
   return(0);
  }

 

В советнике получите значение с буферов

  double wajdyssUp=iCustom(_Symbol,0,"wajdyss",Lb,2,1);
  double wajdyssDn=iCustom(_Symbol,0,"wajdyss",Lb,3,1);

// Ели нужны постоянно, а не кратковременно - можно запомнить
   if(GlobalVariableGet("wajdyssUp")!=wajdyssUp && wajdyssUp!=0) { GlobalVariableSet("wajdyssUp",wajdyssUp); } // можно запоминать последнее верхнее значение стрелки
   if(GlobalVariableGet("wajdyssDn")!=wajdyssDn && wajdyssDn!=0) { GlobalVariableSet("wajdyssDn",wajdyssDn); } // можно запоминать последнее нижнее значение стрелки

    Comment("Up=",GlobalVariableGet("wajdyssUp"),", Dn=",GlobalVariableGet("wajdyssDn") );
Причина обращения: