Индикаторы: Price_Alert - страница 2

 
Granit:

Здравствуйте. Индикатор сбойный. Теряется установленный уровень при закрытии Метагрейдера.


//----
//ObjectDelete(NamePrice); //modificat
//----
return(0);

Сделай так.

 

Работает как надо. Спасибо.

 

А можно ли его применить к RSI ? Если да, то как это сделать? Спасибо.

 

А такойже, только для вертикальной линии есть?!

 

Мне кажется что так будет лучше с двумя линиями и без удаления линий при переключении тайм фреймов.

Также нахождение макс. мин. последних 20 баров

      ObjectCreate(NamePrice,OBJ_HLINE,0,0,High[ArrayMaximum(High,20,0)]);
      ObjectSet(NamePrice,OBJPROP_COLOR,LineUp);
      ObjectCreate(NamePrice+"2",OBJ_HLINE,0,0,Low[ArrayMinimum(Low,20,0)]);
      ObjectSet(NamePrice+"2",OBJPROP_COLOR,LineDown);



//+------------------------------------------------------------------+
//|                                                  PRICE_Alert.mq4 |
//|                                      Copyright © 2008, AlexGomel |
//|                                          mailto:alexgomel@tut.by |
//+------------------------------------------------------------------+
#property copyright "Copyright © 2008, AlexGomel"
#property link      "mailto:alexgomel@tut.by"
//----
#property indicator_chart_window
#property indicator_buffers 0
//---- input parameters
extern string    NamePrice="Price_1";
extern string    SoundFileName="Alert.wav";
extern bool      ActiveSignal=true;
extern bool      ActiveAlert=true;
extern color     LineUp=Gold;
extern color     LineDown=Red;
//+------------------------------------------------------------------+
//| Custom indicator initialization function                         |
//+------------------------------------------------------------------+
int init()
  {
//---- indicators
   if (ObjectFind(NamePrice)==-1)
     {
      ObjectCreate(NamePrice,OBJ_HLINE,0,0,High[ArrayMaximum(High,20,0)]);
      ObjectSet(NamePrice,OBJPROP_COLOR,LineUp);
      ObjectCreate(NamePrice+"2",OBJ_HLINE,0,0,Low[ArrayMinimum(Low,20,0)]);
      ObjectSet(NamePrice+"2",OBJPROP_COLOR,LineDown);
     }
//----
   return(0);
  }
//+------------------------------------------------------------------+
//| Custom indicator deinitialization function                       |
//+------------------------------------------------------------------+
int deinit()
  {
//----
//   ObjectDelete(NamePrice);
//   ObjectDelete(NamePrice+"2");
//----
   return(0);
  }
//+------------------------------------------------------------------+
//| Custom indicator iteration function                              |
//+------------------------------------------------------------------+
int start()
  {
//----
   if (ObjectFind(NamePrice)==-1) return(0);
   double   _price=ObjectGet(NamePrice,OBJPROP_PRICE1);
   double   _price2=ObjectGet(NamePrice+"2",OBJPROP_PRICE1);
   double _min=MathMin(High[1],Low[0]);
   double _max=MathMax(Low[1],High[0]);
//----
   if (ActiveSignal && _price>=_min  && _price<=_max
     ||ActiveSignal && _price2>=_min  && _price2<=_max)
     {
      if (ActiveAlert) Alert (Symbol()," ",Period()," Цена достигла ", NormalizeDouble(_price,Digits), " !"); // Предупреждение на экран
      if(SoundFileName!="" )
         PlaySound( SoundFileName ); // Звуковой сигнал
     }
//----
   return(0);
  }
//+------------------------------------------------------------------+
 
+10