//+------------------------------------------------------------------+ //| DayBorders.mq5 | //| Copyright © 2008, Aleksandr Pak, Almaty | //| ekr-ap@mail.ru | //+------------------------------------------------------------------+ /* * Индикатор границы предыдущего календарного дня. * Вертикальные линии предыдущего дня с фиксированными именами DayTimeOpen DayTimeClose * Горизонтальные линии с фиксированнымии именами DayOpen DayClose * Цвета линий устанавливаются при компиляции. * The indicator draws borders of the last calendar day. * Vertical lines of the last day with fixed names DayTimeOpen DayTimeClose * Horizontal lines with fixed names DayOpen DayClose * Colors of lines of borders are set at compilation. */ //---- авторство индикатора #property copyright "Copyright © 2008, Aleksandr Pak, Almaty" //---- ссылка на сайт автора #property link "ekr-ap@mail.ru" //---- номер версии индикатора #property version "1.00" //---- количество индикаторных буферов #property indicator_buffers 0 //---- использовано всего ноль графических построения #property indicator_plots 0 //---- отрисовка индикатора в главном окне #property indicator_chart_window //+------------------------------------------------+ //| Перечисление для толщины уровня | //+------------------------------------------------+ enum ENUM_WIDTH //Тип константы { w_1 = 1, //1 w_2, //2 w_3, //3 w_4, //4 w_5 //5 }; //+------------------------------------------------+ //| Перечисление для стиля уровня | //+------------------------------------------------+ enum STYLE { SOLID_,//Сплошная линия DASH_,//Штриховая линия DOT_,//Пунктирная линия DASHDOT_,//Штрих-пунктирная линия DASHDOTDOT_ //Штрих-пунктирная линия с двойными точками }; //+------------------------------------------------+ //| Перечисление для толщины уровня | //+------------------------------------------------+ enum ENUM_MODE //Тип константы { OPEN_CLOSE = 1, //Open/Close HIGHLOW //High/Low }; //+------------------------------------------------+ //| Входные параметры индикатора | //+------------------------------------------------+ input ENUM_MODE Mode=OPEN_CLOSE; //тип цен для рачёта input color Open_level_color=clrRed; //цвет ценового уровня открытия input color Close_level_color=clrDodgerBlue; //цвет ценового уровня закрытия input ENUM_LINE_STYLE levels_style=STYLE_SOLID;//стиль ценовых уровней input ENUM_WIDTH levels_width=w_2;//толщина ценовых уровней input color Start_Line_Color=clrDarkOrange; //цвет стартовой линии input STYLE Start_Line_Style=SOLID_; //стиль стартовой линии input ENUM_WIDTH Start_Line_Width=w_3; //толщина стартовой линии input color End_Line_Color=clrDarkViolet; //цвет финишной линии input STYLE End_Line_Style=SOLID_; //стиль финишной линии input ENUM_WIDTH End_Line_Width=w_3; //толщина финишной линии //+----------------------------------------------+ //+------------------------------------------------------------------+ //| Custom indicator initialization function | //+------------------------------------------------------------------+ void OnInit() { //---- //---- } //+------------------------------------------------------------------+ //| Custom indicator deinitialization function | //+------------------------------------------------------------------+ void OnDeinit(const int reason) { //---- удаляем уровень, если это необходимо ObjectDelete(0,"DayTimeClose"); ObjectDelete(0,"DayTimeOpen"); ObjectDelete(0,"DayOpen"); ObjectDelete(0,"DayClose"); ObjectDelete(0,"DayHigh"); ObjectDelete(0,"DayLow"); //---- ChartRedraw(0); } //+------------------------------------------------------------------+ //| 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[] ) { //---- объявления локальных переменных datetime iTime[2]; static datetime LastTime; //---- копируем вновь появившиеся данные в массивы if(CopyTime(Symbol(),PERIOD_D1,0,2,iTime)<=0) return(0); //---- Делаем расчёт только на новых, дневных барах if(LastTime==iTime[0]) return(rates_total); LastTime=iTime[0]; //---- объявления локальных переменных string trendinfo; double iOpen[2],iClose[1]; //---- копируем вновь появившиеся данные в массивы if(CopyOpen(Symbol(),PERIOD_D1,1,1,iOpen)<=0) return(0); if(CopyClose(Symbol(),PERIOD_D1,1,1,iClose)<=0) return(0); if(iOpen[0]