//+------------------------------------------------------------------+ //| VTS_Keltner.mq5 | //| Copyright © 2007, IZZY | //| | //+------------------------------------------------------------------+ //--- авторство индикатора #property copyright "Copyright © 2007, IZZY" //--- ссылка на сайт автора #property link "" //--- номер версии индикатора #property version "1.00" //--- отрисовка индикатора в главном окне #property indicator_chart_window //--- для расчета и отрисовки индикатора использовано восемь буферов #property indicator_buffers 8 //--- использовано всего восемь графических построений #property indicator_plots 8 //+----------------------------------------------+ //| Параметры отрисовки медвежьего индикатора 1 | //+----------------------------------------------+ //--- отрисовка индикатора в виде линии #property indicator_type1 DRAW_LINE //--- в качестве цвета медвежьей линии индикатора использован Purple цвет #property indicator_color1 clrPurple //--- толщина линии индикатора равна 2 #property indicator_width1 2 //--- отображение бычей метки индикатора #property indicator_label1 "VTS Sell" //+----------------------------------------------+ //| Параметры отрисовки бычьго индикатора 1 | //+----------------------------------------------+ //--- отрисовка индикатора в виде линии #property indicator_type2 DRAW_LINE //--- в качестве цвета бычей линии индикатора использован зеленый цвет #property indicator_color2 clrDarkGreen //--- толщина линии индикатора равна 2 #property indicator_width2 2 //--- отображение медвежьей метки индикатора #property indicator_label2 "VTS Buy" //+----------------------------------------------+ //| Параметры отрисовки медвежьего индикатора 2 | //+----------------------------------------------+ //--- отрисовка индикатора в виде линии #property indicator_type3 DRAW_LINE //--- в качестве цвета медвежьей линии индикатора использован Purple цвет #property indicator_color3 clrPurple //--- толщина линии индикатора равна 2 #property indicator_width3 2 //--- отображение бычей метки индикатора #property indicator_label3 "VTS Sell" //+----------------------------------------------+ //| Параметры отрисовки бычьго индикатора 2 | //+----------------------------------------------+ //--- отрисовка индикатора в виде линии #property indicator_type4 DRAW_LINE //--- в качестве цвета бычей линии индикатора использован зеленый цвет #property indicator_color4 clrDarkGreen //--- толщина линии индикатора равна 2 #property indicator_width4 2 //--- отображение медвежьей метки индикатора #property indicator_label4 "VTS Buy" //+----------------------------------------------+ //| Параметры отрисовки медвежьего индикатора 3 | //+----------------------------------------------+ //--- отрисовка индикатора в виде линии #property indicator_type5 DRAW_LINE //--- в качестве цвета медвежьей линии индикатора использован Purple цвет #property indicator_color5 clrPurple //--- толщина линии индикатора равна 2 #property indicator_width5 2 //--- отображение бычей метки индикатора #property indicator_label5 "VTS Sell" //+----------------------------------------------+ //| Параметры отрисовки бычьго индикатора 3 | //+----------------------------------------------+ //--- отрисовка индикатора в виде линии #property indicator_type6 DRAW_LINE //--- в качестве цвета бычей линии индикатора использован зеленый цвет #property indicator_color6 clrDarkGreen //--- толщина линии индикатора равна 2 #property indicator_width6 2 //--- отображение медвежьей метки индикатора #property indicator_label6 "VTS Buy" //+----------------------------------------------+ //| Параметры отрисовки медвежьего индикатора 4 | //+----------------------------------------------+ //--- отрисовка индикатора в виде символа #property indicator_type7 DRAW_ARROW //--- в качестве цвета медвежьей линии индикатора использован розовый цвет #property indicator_color7 clrMagenta //--- толщина линии индикатора равна 2 #property indicator_width7 2 //--- отображение бычей метки индикатора #property indicator_label7 "VTS Sell" //+----------------------------------------------+ //| Параметры отрисовки бычьго индикатора 4 | //+----------------------------------------------+ //--- отрисовка индикатора в виде символа #property indicator_type8 DRAW_ARROW //--- в качестве цвета бычей линии индикатора использован салатовый цвет #property indicator_color8 clrMediumSpringGreen //--- толщина линии индикатора равна 2 #property indicator_width8 2 //--- отображение медвежьей метки индикатора #property indicator_label8 "VTS Buy" //+----------------------------------------------+ //| объявление констант | //+----------------------------------------------+ #define RESET 0 // Константа для возврата терминалу команды на пересчёт индикатора //+----------------------------------------------+ //| Входные параметры индикатора | //+----------------------------------------------+ input uint Keltner_Period=10; input double deviation=1.0; // кол-во стандартных отклонений //+----------------------------------------------+ //--- объявление динамических массивов, которые в дальнейшем будут использованы в качестве индикаторных буферов double UpIndBuffer1[],DnIndBuffer1[]; double UpIndBuffer2[],DnIndBuffer2[]; double UpIndBuffer3[],DnIndBuffer3[]; double UpIndBuffer4[],DnIndBuffer4[]; //--- int min_rates_total; //+------------------------------------------------------------------+ // вычисление половины ширины канала Кёлтнера | //+------------------------------------------------------------------+ double GetKeltner(int period,int bar,const double &High[],const double &Low[]) { //---- double keltner,sum=0; for(int iii=0; iiirates_total || prev_calculated<=0)// проверка на первый старт расчета индикатора { limit=rates_total-min_rates_total; // стартовый номер для расчета всех баров double res=close[limit+1]; VTS_prev=res; VTS1_prev=res; VTS2_prev=res; VTS3_prev=res; VTS4_prev=res; VTS5_prev=res; VTS6_prev=res; VTS7_prev=res; VTS8_prev=res; VTS9_prev=res; VTS10_prev=res; VTS11_prev=res; VTS12_prev=res; VTS13_prev=res; VTS14_prev=res; VTS15_prev=res; VTS16_prev=res; VTS17_prev=res; VTS18_prev=res; VTS19_prev=res; VTS20_prev=res; VTS21_prev=res; VTS22_prev=res; VTS23_prev=res; } else { limit=rates_total-prev_calculated; // стартовый номер для расчета новых баров } to_copy=limit+1; //--- индексация элементов в массивах как в таймсериях ArraySetAsSeries(high,true); ArraySetAsSeries(low,true); ArraySetAsSeries(close,true); //--- основной цикл расчета индикатора for(bar=limit; bar>=0 && !IsStopped(); bar--) { double Keltner=GetKeltner(Keltner_Period,bar,high,low); VTS=close[bar]-Keltner; VTS1=close[bar]+Keltner; //--- VTS2= MathMax(VTS,VTS_prev); VTS3= MathMin(VTS1,VTS1_prev); VTS4= MathMax(VTS2,VTS2_prev); VTS5= MathMin(VTS3,VTS3_prev); VTS6= MathMax(VTS4,VTS4_prev); VTS7= MathMin(VTS5,VTS5_prev); VTS8= MathMax(VTS6,VTS6_prev); VTS9= MathMin(VTS7,VTS7_prev); VTS10= MathMax(VTS8,VTS8_prev); VTS11= MathMin(VTS9,VTS9_prev); VTS12= MathMax(VTS10,VTS10_prev); VTS13= MathMin(VTS11,VTS11_prev); VTS14= MathMax(VTS12,VTS12_prev); VTS15= MathMin(VTS13,VTS13_prev); VTS16= MathMax(VTS14,VTS14_prev); VTS17= MathMin(VTS15,VTS15_prev); VTS18= MathMax(VTS16,VTS16_prev); VTS19= MathMin(VTS17,VTS17_prev); VTS20= MathMax(VTS18,VTS18_prev); VTS21= MathMin(VTS19,VTS19_prev); VTS22= MathMax(VTS20,VTS20_prev); VTS23= MathMin(VTS21,VTS21_prev); UpIndBuffer1[bar]= MathMax(VTS22,VTS22_prev); DnIndBuffer1[bar]= MathMin(VTS23,VTS23_prev); UpIndBuffer2[bar]= MathMax(UpIndBuffer1[bar],UpIndBuffer1[bar+1]); DnIndBuffer2[bar]= MathMin(DnIndBuffer1[bar],DnIndBuffer1[bar+1]); UpIndBuffer3[bar]= MathMax(UpIndBuffer2[bar],UpIndBuffer2[bar+1]); DnIndBuffer3[bar]= MathMin(DnIndBuffer2[bar],DnIndBuffer2[bar+1]); UpIndBuffer4[bar]=UpIndBuffer4[bar+1]; DnIndBuffer4[bar]=DnIndBuffer4[bar+1]; if(close[bar]>DnIndBuffer3[bar]) { UpIndBuffer4[bar]=UpIndBuffer3[bar]; DnIndBuffer4[bar]=NULL; } if(close[bar]