//+---------------------------------------------------------------------+ //| GRFLeadingEdger_Pivot_HTF.mq5 | //| Copyright © 2017, Nikolay Kositsin | //| Khabarovsk, farria@mail.redcom.ru | //+---------------------------------------------------------------------+ #property copyright "Copyright © 2017, Nikolay Kositsin" #property link "farria@mail.redcom.ru" #property description "GRFLeadingEdger Bands Pivot" //---- номер версии индикатора #property version "1.60" //+--------------------------------------------+ //| Параметры отрисовки индикатора | //+--------------------------------------------+ //---- отрисовка индикатора в главном окне #property indicator_chart_window #property indicator_buffers 0 #property indicator_plots 0 //+--------------------------------------------+ //| Объявление констант | //+--------------------------------------------+ #define INDICATOR_NAME "GRFLeadingEdger_Pivot_HTF" // Имя индикатора #define RESET 0 // Константа для возврата терминалу команды на пересчет индикатора //+--------------------------------------------+ //| Входные параметры индикатора | //+--------------------------------------------+ input ENUM_TIMEFRAMES TimeFrame=PERIOD_H4; // Период графика input string Symbols_Sirname="GRFLeadingEdger_Pivot_"; // Название для меток индикатора input uint Samples=60; input int LookAhead=0; input double StdLevel1=2.0; input double StdLevel2=4.0; input color Up_Color=clrSpringGreen; // Цвет верхней полосы индикатора input color Dn_Color=clrYellow; // Цвет нижней полосы индикатора input uint SignalBar=0; // номер бара для получения значений индикатора input uint SignalLen=40; // Длина полос индикатора //---- цвета ценовых меток input color Middle_color=clrBlue; input color Upper_color1=clrMediumSeaGreen; input color Lower_color1=clrRed; input color Upper_color2=clrDodgerBlue; input color Lower_color2=clrMagenta; //+-----------------------------------+ //---- Объявление целых переменных начала отсчёта данных int min_rates_total,min_rates_1; //---- объявление глобальных переменных string UpName,MiddleName,DnName; //---- Объявление стрингов для текстовых меток string upper_name1,middle_name,lower_name1,upper_name2,lower_name2; int PerSignalLen; //--- объявление целочисленных переменных для хендлов индикаторов int Ind_Handle; //+------------------------------------------------------------------+ //| Custom indicator initialization function | //+------------------------------------------------------------------+ int OnInit() { //--- получение хендла индикатора GRFLeadingEdge Ind_Handle=iCustom(Symbol(),TimeFrame,"GRFLeadingEdge",Samples,LookAhead,StdLevel1,StdLevel2,0,0); if(Ind_Handle==INVALID_HANDLE) { Print(" Не удалось получить хендл индикатора GRFLeadingEdge"); return(INIT_FAILED); } //---- Инициализация переменных начала отсчёта данных min_rates_total=int(SignalLen); //---- инициализация переменных UpName=Symbols_Sirname+"Upper Band"; MiddleName=Symbols_Sirname+"Middle Band"; DnName=Symbols_Sirname+"Lower Band"; PerSignalLen=int(SignalLen)*PeriodSeconds(); //---- Инициализация стрингов upper_name1=Symbols_Sirname+" upper text lable 1"; middle_name=Symbols_Sirname+" middle text lable"; lower_name1=Symbols_Sirname+" lower text lable 1"; upper_name2=Symbols_Sirname+" upper text lable 2"; lower_name2=Symbols_Sirname+" lower text lable 2"; //--- создание имени для отображения в отдельном подокне и во всплывающей подсказке IndicatorSetString(INDICATOR_SHORTNAME,INDICATOR_NAME); //--- определение точности отображения значений индикатора IndicatorSetInteger(INDICATOR_DIGITS,_Digits); //--- завершение инициализации return(INIT_SUCCEEDED); } //+------------------------------------------------------------------+ //| Custom indicator deinitialization function | //+------------------------------------------------------------------+ void OnDeinit(const int reason) { //---- ObjectsDeleteAll(0,Symbols_Sirname,-1,-1); //---- 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[]) { //---- проверка количества баров на достаточность для расчёта if(rates_total