//+------------------------------------------------------------------+ //| PriceGrid1_Plus.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 description "Сетка из круглых ценовых уровней" //---- отрисовка индикатора в главном окне #property indicator_chart_window //---- для расчёта и отрисовки индикатора не используются буферы #property indicator_buffers 0 //---- не используются графические построения #property indicator_plots 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="PriceGrid1_Plus"; //Первая часть имени графических объектов input uint Digits_=2; //разряд сетки input uint Total=200; //количество блоков сетки сверху или снизу от цены //---- input color Color_A = clrSlateBlue; //цвет уровня 1 input bool ShowPriceLable_A = true; //отображение значения ценовой метки 1 на ценовом графике input color Color_AL = clrBlueViolet; //цвет ценовой метки 1 input STYLE Style_A = DASHDOTDOT_; //стиль линии уровня 1 input WIDTH Width_A = Width_1; //толщина линии уровня 1 //---- input color Color_B = clrDarkOrange; //цвет уровня 2 input bool ShowPriceLable_B = true; //отображение значения ценовой метки 2 на ценовом графике input color Color_BL = clrGold; //цвет ценовой метки 2 input STYLE Style_B = DASH_; //стиль линии уровня 2 input WIDTH Width_B = Width_1; //толщина линии уровня 2 //---- input color Color_C = clrMagenta; //цвет уровня 3 input bool ShowPriceLable_C = true; //отображение значения ценовой метки 3 на ценовом графике input color Color_CL = clrMagenta; //цвет ценовой метки 3 input STYLE Style_C = SOLID_; //стиль линии уровня 3 input WIDTH Width_C = Width_1; //толщина линии уровня 3 //---- input color Color_D = clrRed; //цвет уровня 4 input bool ShowPriceLable_D = true; //отображение значения ценовой метки 4 на ценовом графике input color Color_DL = clrRed; //цвет ценовой метки 4 input STYLE Style_D = SOLID_; //стиль линии уровня 4 input WIDTH Width_D = Width_1; //толщина линии уровня 4 //---- input color Color_E = clrLime; //цвет уровня 5 input bool ShowPriceLable_E = true; //отображение значения ценовой метки 5 на ценовом графике input color Color_EL = clrLime; //цвет ценовой метки 5 input STYLE Style_E = SOLID_; //стиль линии уровня 5 input WIDTH Width_E = Width_1; //толщина линии уровня 5 //---- input uint FontSize = 2; //размер ценовых меток input int Shift = 5; //Сдвиг ценовых меток по горизонтали в барах input bool ShowLineInfo = true; //отображение значения уровня на ценовом графике //+----------------------------------------------+ color clr,clrl; STYLE Style; WIDTH Width; bool ShowPriceLable; int middle,size,Normalize; string ObjectNames[][2]; double PointPow10,PointPow100,PointPow1000,PointPow10000,PointPow100000,PriceGrid[],Price[]; //+------------------------------------------------------------------+ //| Custom indicator initialization function | //+------------------------------------------------------------------+ void OnInit() { //---- распределение памяти под массивы переменных size=int(Total*2); ArrayResize(ObjectNames,size); ArrayResize(PriceGrid,size); ArrayResize(Price,size); //---- инициализация имён for(int count=0; count=0; count--) PriceGrid[count]=-NormalizeDouble(PointPow10*(middle-count),Normalize); //---- } //+------------------------------------------------------------------+ //| Custom indicator deinitialization function | //+------------------------------------------------------------------+ void OnDeinit(const int reason) { //---- for(int count=0; count