//+---------------------------------------------------------------------+ //| SilverTrend_HTF.mq5 | //| Copyright © 2018, Nikolay Kositsin | //| Khabarovsk, farria@mail.redcom.ru | //+---------------------------------------------------------------------+ //| Для работы индикатора следует положить файл SmoothAlgorithms.mqh | //| в папку (директорию): каталог_данных_терминала\MQL5\Include | //+---------------------------------------------------------------------+ #property copyright "Copyright © 2018, Nikolay Kositsin" #property link "farria@mail.redcom.ru" //---- номер версии индикатора #property version "1.60" //---- отрисовка индикатора в главном окне #property indicator_chart_window //---- для расчета и отрисовки индикатора использовано пять буферов #property indicator_buffers 5 //---- использовано всего одно графическое построение #property indicator_plots 1 //+----------------------------------------------+ //| объявление констант | //+----------------------------------------------+ #define RESET 0 // Константа для возврата терминалу команды на пересчёт индикатора #define INDICATOR_NAME "SilverTrend" // Константа для имени индикатора //+----------------------------------------------+ //| Параметры отрисовки индикатора | //+----------------------------------------------+ //---- в качестве индикатора использованы цветные свечи #property indicator_type1 DRAW_COLOR_CANDLES #property indicator_color1 clrLime,clrTeal,clrGray,clrPurple,clrRed //---- отображение метки индикатора #property indicator_label1 "SilverTrend_Open;SilverTrend_High;SilverTrend_Low;SilverTrend_Close" //+----------------------------------------------+ //| ВХОДНЫЕ ПАРАМЕТРЫ ИНДИКАТОРА | //+----------------------------------------------+ input ENUM_TIMEFRAMES TimeFrame=PERIOD_H4;//Период графика //+----------------------------------------------+ //| ВХОДНЫЕ ПАРАМЕТРЫ ИНДИКАТОРА | //+----------------------------------------------+ input int SSP=9; input int RISK=3;//степень риска input uint NumberofBar=1;//Номер бара для подачи сигнала input bool SoundON=true; //Разрешение алерта input uint NumberofAlerts=2;//Количество алертов input bool EMailON=false; //Разрешение почтовой отправки сигнала input bool PushON=false; //Разрешение отправки сигнала на мобильный //+----------------------------------------------+ //---- объявление динамических массивов, которые будут в дальнейшем использованы в качестве индикаторных буферов double ExtOpenBuffer[]; double ExtHighBuffer[]; double ExtLowBuffer[]; double ExtCloseBuffer[]; double ExtColorBuffer[]; //---- Объявление целых переменных начала отсчёта данных int min_rates_total; //---- Объявление целых переменных для хендлов индикаторов int Ind_Handle; //+------------------------------------------------------------------+ //| Получение таймфрейма в виде строки | //+------------------------------------------------------------------+ string GetStringTimeframe(ENUM_TIMEFRAMES timeframe) {return(StringSubstr(EnumToString(timeframe),7,-1));} //+------------------------------------------------------------------+ //| Custom indicator initialization function | //+------------------------------------------------------------------+ int OnInit() { //---- проверка периодов графиков на корректность if(TimeFrameRates_Total || Prev_Calculated<=0)// проверка на первый старт расчета индикатора { limit=Rates_Total-Min_Rates_Total-1; // стартовый номер для расчета всех баров LastCountBar=limit; } else limit=LastCountBar+Rates_Total-Prev_Calculated; // стартовый номер для расчета новых баров //--- основной цикл расчета индикатора for(int bar=limit; bar>=0 && !IsStopped(); bar--) { //--- копируем вновь появившиеся данные в массив IndTime if(CopyTime(Symbol(),TimeFrame,Time[bar],1,IndTime)<=0) return(RESET); //--- if(Time[bar]>=IndTime[0] && Time[bar+1]=Close[bar]) ExtColorBuffer[bar]=4; else ExtColorBuffer[bar]=3; } } else { ExtOpenBuffer[bar]=Open[bar]; ExtLowBuffer[bar]=Low[bar]; ExtHighBuffer[bar]=High[bar]; ExtCloseBuffer[bar]=Close[bar]; if(ExtColorBuffer[bar+1]<2) { if(Open[bar]<=Close[bar]) ExtColorBuffer[bar]=0; else ExtColorBuffer[bar]=1; } else { if(Open[bar]>=Close[bar]) ExtColorBuffer[bar]=4; else ExtColorBuffer[bar]=3; } } } //--- return(true); } //+------------------------------------------------------------------+