Radiance.mq4
Radiance.mq4 FOREX MetaTrader4 Indicators Download
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