Radiance.mq4

Radiance.mq4 download link will appear after 10 seconds.




Radiance.mq4 Programming source code

//--- зададим название индикатора
#property description "Radiance"
//--- установим строгий режим компиляции
#property strict
//--- укажем где отрисовываться индиктору
#property indicator_chart_window
//--- укажем количество буферов
#property indicator_buffers 2
//--- зададим цвет отрисовки индикатора
#property indicator_color1 clrGreenYellow
#property indicator_color2 clrRed
//--- зададим входные параметры
extern string             S_1              = "Настройки индикатора";
extern int                count            = 5;                    //период
extern double             level_up         = 0.00;                 //уровень вверх
extern double             level_down       = -0.00;                //уровень вниз
extern string             S_2              = "Настройки графики";
extern ENUM_TIMEFRAMES    timeframes       = PERIOD_CURRENT;       //таймфрейм
extern string             symbol           = "";                   //символ
extern int                indent_arrow     = 100;                  //отступ стрелок
extern int                counted_bars     = 100;                  //подсчет баров
extern string             S_3              = "Настройки звука";
extern string             sound_file       = "alert.wav";          //звуковой файл
extern bool               use_sound        = true;                 //использование звука
extern bool               use_notification = false;                //использование телефона
extern bool               use_mail         = false;                //использование почты
//--- укажем массивы индикаторных буферов
double arrow_01[];
double arrow_02[];
//--- укажем флажки
bool signal_1=false;
bool signal_2=false;
bool sound_1=false; 
bool sound_2=false;
//+------------------------------------------------------------------+ 
//| Custom indicator initialization function                         | 
//+------------------------------------------------------------------+ 
int OnInit(void) 
  {
//--- зададим отрисовку индикатора в виде стрелок
   SetIndexStyle(0,DRAW_ARROW,EMPTY,EMPTY,clrGreenYellow);
   SetIndexArrow(0,159);
   SetIndexBuffer(0,arrow_01);
   SetIndexStyle(1,DRAW_ARROW,EMPTY,EMPTY,clrRed);
   SetIndexArrow(1,159);
   SetIndexBuffer(1,arrow_02);
//--- проверим условия входных параметров
   if(count<5)
     {
      Alert("значение переменной период не должно быть меньше 5");
      return(INIT_FAILED);
     }
//--- если нет ошибок,то инициализация успешно завершена
   return(INIT_SUCCEEDED); 
  } 
//+------------------------------------------------------------------+
//|                           Radiance                               |
//+------------------------------------------------------------------+
int OnCalculate(const int rates_total, 
                const int prev_calculated, 
                const datetime& time[], 
                const double& open[], 
                const double& high[], 
                const double& low[], 
                const double& close[], 
                const long& tick_volume[], 
                const long& volume[], 
                const int& spread[]) 
  { 
   for(int shift=counted_bars;shift>=0;shift--)
   {
   int i=iBarShift(symbol,timeframes,Time[shift]);
   double hhhh=High[iHighest(symbol,timeframes,MODE_HIGH,count,i)] - High[iHighest(symbol,timeframes,MODE_HIGH,count,i+1)];
   double llll=Low[iLowest(symbol,timeframes,MODE_LOW,count,i)] - Low[iLowest(symbol,timeframes,MODE_LOW,count,i+1)];
   {
   if(signal_1==false)
   if(hhhh>level_up)
   {
   arrow_01[shift]=Low[shift]-indent_arrow*Point;
   signal_1=true;
   signal_2=false;
   }
   if(signal_2==false)
   if(llll