T3.Lnx





/*
Äëÿ  ðàáîòû  èíäèêàòîðà  ñëåäóåò  ïîëîæèòü ôàéëû 
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