/* Äëÿ ðàáîòû èíäèêàòîðà ñëåäóåò ïîëîæèòü ôàéëû T3Series.mqh PriceSeries.mqh â ïàïêó (äèðåêòîðèþ): MetaTrader\experts\include\ Heiken Ashi#.mq4 â ïàïêó (äèðåêòîðèþ): MetaTrader\indicators\ */ //+------------------------------------------------------------------+ //| T3.2Bollinger Bands.mq4 | //| Copyright © 2006, Nikolay Kositsin | //| Khabarovsk, farria@mail.redcom.ru | //+------------------------------------------------------------------+ #property copyright "Copyright © 2006, Nikolay Kositsin" #property link "farria@mail.redcom.ru" //---- îòðèñîâêà èíäèêàòîðà â ãëàâíîì îêíå #property indicator_chart_window //---- êîëè÷åñòâî èíäèêàòîðíûõ áóôåðîâ #property indicator_buffers 1 //---- öâåò èíäèêàòîðà #property indicator_color1 Red //---- ÂÕÎÄÍÛÅ ÏÀÐÀÌÅÒÐÛ ÈÍÄÈÊÀÒÎÐÀ --------------------------------------------------------------------------------------------------+ extern int T3Period= 14; // ïåðèîä óñðåäíåíèÿ T3Bollinger Bands extern int MA_method=0; // ìåòîä óñðåäíåíèÿ extern int MA_Smooth=20; // ãëóáèíà ñãëàæèâàíèÿ ïîëó÷åííîãî Moving Avereges extern int Bands_Smooth=20; // ãëóáèíà ñãëàæèâàíèÿ ïîëó÷åííûõ Bollinger Bands extern int Smooth_Curvature=100; // ïàðàìåòð ñãëàæèâàíèÿ, èçìåíÿþùèéñÿ â ïðåäåëàõ -100 ... +100, âëèÿåò íà êà÷åñòâî ïåðåõîäíîãî ïðîöåññà; extern int Bands_Shift=0; // cäâèã èíäèêàòîðà âäîëü îñè âðåìåíè extern int Input_Price_Customs=0; //Âûáîð öåí, ïî êîòîðûì ïðîèçâîäèòñÿ ðàñ÷¸ò èíäèêàòîðà //(0-CLOSE, 1-OPEN, 2-HIGH, 3-LOW, 4-MEDIAN, 5-TYPICAL, 6-WEIGHTED, 7-Heiken Ashi Close, 8-SIMPL, 9-TRENDFOLLOW, 10-0.5*TRENDFOLLOW, //11-Heiken Ashi Low, 12-Heiken Ashi High, 13-Heiken Ashi Open, 14-Heiken Ashi Close.) //---- -------------------------------------------------------------------------------------------------------------------------------+ //---- èíäèêàòîðíûå áóôåðû double T3MovingBuffer[]; double Series_buffer []; //+------------------------------------------------------------------+ //----+ Ââåäåíèå ôóíêöèè T3Series //----+ Ââåäåíèå ôóíêöèè T3SeriesResize //----+ Ââåäåíèå ôóíêöèè T3SeriesAlert //----+ Ââåäåíèå ôóíêöèè T3_ErrDescr #include <T3Series.mqh> //+------------------------------------------------------------------+ //----+ Ââåäåíèå ôóíêöèè PriceSeries //----+ Ââåäåíèå ôóíêöèè PriceSeriesAlert #include <PriceSeries.mqh> //+------------------------------------------------------------------+ //| T3.2Bollinger Bands initialization function | //+------------------------------------------------------------------+ int init() { //---- îïðåäåëåíèå ñòèëÿ èñïîëíåíèÿ ãðàôèêà SetIndexStyle(0,DRAW_LINE); //---- 4 èíäèêàòîðíûõ áóôåðà èñïîëüçîâàíû äëÿ ñ÷¸òà IndicatorBuffers(2); SetIndexBuffer(0,T3MovingBuffer); SetIndexBuffer(1,Series_buffer); //---- óñòàíîâêà çíà÷åíèé èíäèêàòîðà, êîòîðûå íå áóäóò âèäèìû íà ãðàôèêå SetIndexEmptyValue(0,0); SetIndexEmptyValue(1,0); //---- óñòàíîâêà íîìåðà áàðà, íà÷èíàÿ ñ êîòîðîãî áóäåò îòðèñîâûâàòüñÿ èíäèêàòîð int drawbegin=100; SetIndexDrawBegin(0,drawbegin); //---- èìÿ äëÿ îêîí äàííûõ è ëýéáà äëÿ ñóáúîêîí IndicatorShortName ("T3 Lnx( Period="+T3Period+")"); string Moving; switch(MA_method) { case 0: Moving= "T3SMA";break; case 1: Moving= "T3EMA";break; case 2: Moving="T3SSMA";break; case 3: Moving="T3LWMA";break; default: Moving="T3SMA"; } SetIndexLabel (1, "T3 Moving Average "+Moving+" "); //---- Óñòàíîâêà ôîðìàòà òî÷íîñòè îòîáðàæåíèÿ èíäèêàòîðà IndicatorDigits(Digits); //----+ Èçìåíåíèå ðàçìåðîâ áóôåðíûõ ïåðåìåííûõ ôóíêöèè T3Series, nT3.number=3(Òðè îáðàùåíèÿ ê ôóíêöèè T3Series) if (Bands_Smooth<=1){if (T3SeriesResize(1)!=1)return(-1);}else if (T3SeriesResize(3)!=3)return(-1); //---- óñòàíîâêà àëåðòîâ íà íåäîïóñòèìûå çíà÷åíèÿ âíåøíèõ ïåðåìåííûõ T3SeriesAlert(0,"MA_Smooth",MA_Smooth); T3SeriesAlert(0,"T3Period",T3Period); if((MA_method<0)||(MA_method>3)) {Alert("Ïàðàìåòð MA_method äîëæåí áûòü îò 0 äî 3"+" Âû ââåëè íåäîïóñòèìîå " +MA_method+ " áóäåò èñïîëüçîâàíî 0");} PriceSeriesAlert(Input_Price_Customs); //---- êîðåêöèÿ íåäîïóñòèìîãî çíà÷åíèÿ ïàðàìåòðà T3Period if(T3Period<1)T3Period=1; //---- çàâåðøåíèå èíèöèàëèçàöèè return(0); } //+------------------------------------------------------------------+ //| T3.2Bollinger Bands iteration function | //+------------------------------------------------------------------+ int start() { //---- ïðîâåðêà êîëè÷åñòâà áàðîâ íà äîñòàòî÷íîñòü äëÿ ðàñ÷¸òà if(Bars-1<=T3Period) return(0); //---- Ââåäåíèå ïåðåìåííûõ ñ ïëàâàþùåé òî÷êîé double deviation,Temp_Series,sum,midline,priceswing,Resalt; //----+ Ââåäåíèå öåëûõ ïåðåìåííûõ è ïîëó÷åíèå óæå ïîäñ÷èòàííûõ áàðîâ int reset,MaxBar,MaxBarBB,bar,kk,counted_bars=IndicatorCounted(); //---- ïðîâåðêà íà âîçìîæíûå îøèáêè if (counted_bars<0)return(-1); //---- ïîñëåäíèé ïîäñ÷èòàííûé áàð äîëæåí áûòü ïåðåñ÷èòàí //---- (áåç ýòîãî ïåðåñ÷¸òà äëÿ counted_bars ôóíêöèÿ T3Series áóäåò ðàáîòàòü íåêîððåêòíî!!!) if (counted_bars>0) counted_bars--; //---- îïðåäåëåíèå íîìåðà ñàìîãî ñòàðîãî áàðà, íà÷èíàÿ ñ êîòîðîãî áóäåò ïðîèçåä¸í ïåðåñ÷¸ò íîâûõ áàðîâ int limit=Bars-counted_bars-1;MaxBar=Bars-1-T3Period;MaxBarBB=MaxBar-30; //----+ çàãðóçêà âõîäíûõ öåí â áóôåð äëÿ ðàñ÷¸òà for(bar=limit;bar>=0;bar--)Series_buffer[bar]=PriceSeries(Input_Price_Customs,bar); //---- ïðîâåðêà áàðà íà äîñòàòî÷íîñòü äëÿ ðàñ÷¸òà Bollinger Bands //---- èíèöèàëèçàöèÿ íóëÿ if (limit>MaxBar) { for(bar=limit;bar>=MaxBar;bar--)T3MovingBuffer[bar]=0; limit=MaxBar; } //----+ öèêë ðàñ÷¸òà Moving Avereges for(bar=limit;bar>=0;bar--) { //----+ ôîðìóëà äëÿ ðàñ÷¸òà Moving Avereges Temp_Series=iMAOnArray(Series_buffer,0,T3Period,0,MA_method, bar); //----+ ñãëàæèâàíèå ïîëó÷åííîãî Moving Avereges //----+ îáðàùåíèå ê ôóíêöèè T3Series çà íîìåðîì 0. Ïàðàìåòðs nT3.Length íå ìåíÿtòñÿ íà êàæäîì áàðå (nT3.din=0) Resalt=T3Series(0,0,MaxBar,limit,Smooth_Curvature,MA_Smooth,Temp_Series,bar,reset); //----+ ïðîâåðêà íà îòñóòñòâèå îøèáêè â ïðåäûäóùåé îïåðàöèè if(reset!=0)return(-1); T3MovingBuffer[bar]=Resalt; } //---- çàâåðøåíèå âû÷èñëåíèé çíà÷åíèé èíäèêàòîðà return(0); } //+---------------------------------------------------------------------------+
Sample
Analysis
Market Information Used:
Indicator Curves created:
Implements a curve of type DRAW_LINE
Indicators Used:
Moving average indicator
Custom Indicators Used:
Order Management characteristics:
Other Features:
It issuies visual alerts to the screen