//+------------------------------------------------------------------+ //| ResSup.mq5 | //| Copyright © 2016, Nikolay Kositsin | //| Khabarovsk, farria@mail.redcom.ru | //+------------------------------------------------------------------+ //---- авторство индикатора #property copyright "Copyright © 2016, Nikolay Kositsin" //---- ссылка на сайт автора #property link "farria@mail.redcom.ru" //---- номер версии индикатора #property version "1.00" //---- отрисовка индикатора в главном окне #property indicator_chart_window //---- для расчета и отрисовки индикатора не используются буферы #property indicator_buffers 0 //---- не используются графические построения #property indicator_plots 0 //+----------------------------------------------+ //| Объявление констант | //+----------------------------------------------+ #define RESET 0 // константа для возврата терминалу команды на пересчет индикатора //+----------------------------------------------+ //| Объявление перечисления | //+----------------------------------------------+ enum Number { Number_0, Number_1, Number_2, Number_3 }; //+----------------------------------------------+ //| Объявление перечисления | //+----------------------------------------------+ enum Width { Width_1=1, //1 Width_2, //2 Width_3, //3 Width_4, //4 Width_5 //5 }; //+----------------------------------------------+ //| Объявление перечисления | //+----------------------------------------------+ enum STYLE { SOLID_,//Сплошная линия DASH_,//Штриховая линия DOT_,//Пунктирная линия DASHDOT_,//Штрих-пунктирная линия DASHDOTDOT_ //Штрих-пунктирная линия с двойными точками }; //+----------------------------------------------+ //| Входные параметры индикатора | //+----------------------------------------------+ input string SirName="ResSup"; //Первая часть имени графических объектов input ENUM_TIMEFRAMES TimeFrame=PERIOD_H1; //период графика для поиска экстремумов input uint SignalBar=1; //номер бара для поиска экстремумов input uint iPeriod=24; //период поиска экстремумов цены input uint iSize=15; //длина уровней в барах текущего графика input uint Digits_=0; //разряд округления цены input color Color_Bg = clrLavender; //цвет фона input color Color_Up = clrLimeGreen; //цвет линии сопротивления input STYLE Style_Up = SOLID_; //стиль линии сопротивления input Width Width_Up = Width_4; //толщина линии сопротивления input color Color_Dn = clrMagenta; //цвет линии поддержки input STYLE Style_Dn = SOLID_; //стиль линии поддержки input Width Width_Dn = Width_4; //толщина линии поддержки input uint FontSize = 2; //размер ценовых меток //+----------------------------------------------+ double iLow[],iHigh[],PointPow10; int min_rates_total1,min_rates_total2; string UpLinesName,UpPriceName,DnLinesName,DnPriceName,BgName; //+------------------------------------------------------------------+ //| Custom indicator initialization function | //+------------------------------------------------------------------+ void OnInit() { //---- распределение памяти под массивы переменных ArrayResize(iLow,iPeriod); ArrayResize(iHigh,iPeriod); //---- инициализация строковых имен объектов UpLinesName=SirName+" UpLine"; UpPriceName=SirName+" UpPrice"; DnLinesName=SirName+" DnLine"; DnPriceName=SirName+" DnPrice"; BgName=SirName+" Bg"; //---- инициализация переменных min_rates_total1=int(iPeriod+SignalBar); min_rates_total2=int(iSize); double Pow10=MathPow(10,Digits_); PointPow10=_Point*Pow10; //---- } //+------------------------------------------------------------------+ //| Custom indicator deinitialization function | //+------------------------------------------------------------------+ void OnDeinit(const int reason) { //---- ObjectDelete(0,UpLinesName); ObjectDelete(0,UpPriceName); ObjectDelete(0,DnLinesName); ObjectDelete(0,DnPriceName); ObjectDelete(0,BgName); //---- } //+------------------------------------------------------------------+ //| Custom indicator iteration function | //+------------------------------------------------------------------+ 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[] ) { //---- проверка количества баров на достаточность для расчета if(Bars(Symbol(),TimeFrame)