T3 Taotra_NK





//+------------------------------------------------------------------+
//|                                          Version  July 20, 2006  |
//|   Editing   Nikolay Kositsin  15.06.2006  farria@mail.redcom.ru  |
//+------------------------------------------------------------------+
//+------------------------------------------------------------------+
//|                                                    T3 Taotra.mq4 |
//|                                T3 code: Copyright © 1998, Tilson |
//+------------------------------------------------------------------+
#property copyright ""
#property link "" 
//---- îòðèñîâêà èíäèêàòîðà â ãëàâíîì îêíå
#property indicator_chart_window 
//---- êîëè÷åñòâî èíäèêàòîðíûõ áóôôåðîâ
#property indicator_buffers 6
//---- öâåòà èíäèêàòîðà
#property indicator_color1 Brown
#property indicator_color2 Red
#property indicator_color3 Purple
#property indicator_color4 Aqua
#property indicator_color5 Green
#property indicator_color6 Blue
//---- ÂÕÎÄÍÛÅ ÏÀÐÀÌÅÒÐÛ ÈÍÄÈÊÀÒÎÐÀ 
extern int MA_Period_1 = 3; // ïåðèîä èíäèêàòîðà 1
extern int MA_Period_2 = 5; // ïåðèîä èíäèêàòîðà 2
extern int MA_Period_3 = 8; // ïåðèîä èíäèêàòîðà 3
extern int MA_Period_4 = 12;// ïåðèîä èíäèêàòîðà 4
extern int MA_Period_5 = 21;// ïåðèîä èíäèêàòîðà 5
extern int MA_Period_6 = 34;// ïåðèîä èíäèêàòîðà 6
//----
extern int Shift1 = 0;  // cäâèã èíäèêàòîðà 1 âäîëü îñè âðåìåíè 
extern int Shift2 = 0;  // cäâèã èíäèêàòîðà 2 âäîëü îñè âðåìåíè
extern int Shift3 = 0;  // cäâèã èíäèêàòîðà 3 âäîëü îñè âðåìåíè
extern int Shift4 = 0;  // cäâèã èíäèêàòîðà 6 âäîëü îñè âðåìåíè
extern int Shift5 = 0;  // cäâèã èíäèêàòîðà 5 âäîëü îñè âðåìåíè
extern int Shift6 = 0;  // cäâèã èíäèêàòîðà 6 âäîëü îñè âðåìåíè
extern double b = 0.7;
//---- èíäèêàòîðíûå áóôôåðû
double Ind_Buffer1[];
double Ind_Buffer2[];
double Ind_Buffer3[];
double Ind_Buffer4[];
double Ind_Buffer5[];
double Ind_Buffer6[];
//----
double e1[6], e2[6], e3[6], e4[6], e5[6], e6[6];
double c1, c2, c3, c4, Price, Resalt[6];
double n[6], w1[6], w2[6], b2, b3;
int M[6];
//---- ââåäåíèå ïåðåìåííûõ äëÿ ñîõðàíåíèÿ ïåðåìåííûõ  e1,e2,e3,e4,e5,e6
int time2; 
double E1[6], E2[6], E3[6], E4[6], E5[6], E6[6];
//+------------------------------------------------------------------+
//| T3 Taotra initialization function                                |
//+------------------------------------------------------------------+
int init()
  {
 //---- îïðåäåëåíèå ñòèëÿ èñïîëíåíèÿ ãðàôèêà
   SetIndexStyle(0, DRAW_LINE);
   SetIndexStyle(1, DRAW_LINE);
   SetIndexStyle(2, DRAW_LINE);
   SetIndexStyle(3, DRAW_LINE);
   SetIndexStyle(4, DRAW_LINE);
   SetIndexStyle(5, DRAW_LINE);
//----
   IndicatorDigits(MarketInfo(Symbol(), MODE_DIGITS));
//---- èìÿ äëÿ îêîí äàííûõ è ëýéáà äëÿ ñóáúîêîí
   IndicatorShortName("T3 Taotra");
//---- óñòàíîâêà íîìåðà áàðà, íà÷èíàÿ ñ êîòîðîãî áóäåò îòðèñîâûâàòüñÿ èíäèêàòîð 
   SetIndexDrawBegin(0, 100);
   SetIndexDrawBegin(1, 100);
   SetIndexDrawBegin(2, 100);
   SetIndexDrawBegin(3, 100);
   SetIndexDrawBegin(4, 100);
   SetIndexDrawBegin(5, 100);
//---- 6 èíäèêàòîðíûõ áóôôåðîâ èñïîëüçîâàíû äëÿ ñ÷¸òà
   SetIndexBuffer(0, Ind_Buffer1);
   SetIndexBuffer(1, Ind_Buffer2);
   SetIndexBuffer(2, Ind_Buffer3);
   SetIndexBuffer(3, Ind_Buffer4);
   SetIndexBuffer(4, Ind_Buffer5);
   SetIndexBuffer(5, Ind_Buffer6);
//---- ãîðèçîíòàëüíûé ñäâèã èíäèêàòîðíûõ ëèíèé  
   SetIndexShift (0, Shift1); 
   SetIndexShift (1, Shift2); 
   SetIndexShift (2, Shift3); 
   SetIndexShift (3, Shift4); 
   SetIndexShift (4, Shift5); 
   SetIndexShift (5, Shift6); 
//---- óñòàíîâêà çíà÷åíèé èíäèêàòîðà, êîòîðûå íå áóäóò âèäèìû íà ãðàôèêå
   SetIndexEmptyValue(0, 0);
   SetIndexEmptyValue(1, 0);
   SetIndexEmptyValue(2, 0);
   SetIndexEmptyValue(3, 0);
   SetIndexEmptyValue(4, 0);
   SetIndexEmptyValue(5, 0);
   SetIndexEmptyValue(6, 0);
//---- èíèöìàëèçàöèÿ ïåðåìåííûõ
   n[0] = MA_Period_1;
   n[1] = MA_Period_2;
   n[2] = MA_Period_3;
   n[3] = MA_Period_4;
   n[4] = MA_Period_5;
   n[5] = MA_Period_6;
//----
   b2 = b*b;
   b3 = b2*b;
   c1 = -b3;
   c2 = (3*(b2 + b3));
   c3 = -3*(2*b2 + b + b3);
   c4 =(1 + 3*b + b3 + 3*b2);
//----
   for(int iii = 0; iii < 6; iii++)
     {
       M[iii] = 4*n[iii];
       if(n[iii] < 1) 
       n[iii] = 1;
       n[iii] = 1 + 0.5*(n[iii] - 1);
       w1[iii] = 2 / (n[iii] + 1);
       w2[iii] = 1 - w1[iii];
     }
//---- çàâåðøåíèå èíèöèàëèçàöèè
   return(0);
  }
//+------------------------------------------------------------------+
//| T3 Taotra iteration function                                     |
//+------------------------------------------------------------------+
int start()
  {
//----+ Ââåäåíèå öåëûõ ïåðåìåííûõ è ïîëó÷åíèå óæå ïîäñ÷èòàííûõ áàðîâ
    int limit, nnn, bar, MaxBar, counted_bars = IndicatorCounted();
//---- ïðîâåðêà íà âîçìîæíûå îøèáêè
    if(counted_bars < 0)
        return(-1);
//---- ïîñëåäíèé ïîäñ÷èòàííûé áàð äîëæåí áûòü ïåðåñ÷èòàí
    if(counted_bars > 0) 
        counted_bars--;
//---- îïðåäåëåíèå íîìåðà ñàìîãî ñòàðîãî áàðà, íà÷èíàÿ ñ êîòîðîãî áóäåò 
//     ïðîèçåä¸í ïåðåñ÷¸ò âñåõ áàðîâ
    MaxBar = Bars - 1;
//---- îïðåäåëåíèå íîìåðà ñàìîãî ñòàðîãî áàðà, íà÷èíàÿ ñ êîòîðîãî áóäåò 
//     ïðîèçåä¸í ïåðåñ÷¸ò òîëüêî íîâûõ áàðîâ
    limit = (Bars -1 - counted_bars);
//+--- äî îñíîâíîãî öèêëà ðàñ÷¸òà èíäèêàòîðà âîññòàíàâëèâàåì çíà÷åíèÿ 
//     ïåðåìåííûõ, êàêèìè îíè áûëè ïîñëå ðà÷¸òà íà âòîðîì áàðå
//+--- âîññòàíîâëåíèå çíà÷åíèé ïåðåìåííûõ
    int Tnew = Time[limit+1];
    if(limit < MaxBar)
        if(Tnew == time2)
            for(int xxx = 0; xxx < 6; xxx++)
               {
                e1[xxx] = E1[xxx]; 
                e2[xxx] = E2[xxx]; 
                e3[xxx] = E3[xxx]; 
                e4[xxx] = E4[xxx]; 
                e5[xxx] = E5[xxx]; 
                e6[xxx] = E6[xxx];  
              }
            else 
              {
                if(Tnew > time2)
                    Print("ERROR01");
                else 
                    Print("ERROR02");
                return(-1);
              }
//----
    for(bar = limit; bar >= 0; bar--)
      {
        //+--- Çàïîìèíàåì çíà÷åíèÿ ïåðåìåííûõ, êàêèìè îíè áûëè ïîñëå âòîðîãî áàðà
        //+--- Ñîõðàíåíèå çíà÷åíèé ïåðåìåííûõ +=============+ 
        if(bar == 1)
            if(((limit == 1) && (time2 != Time[2])) || (limit > 1))
              {
                time2 = Time[2]; 
                for(int yyy = 0; yyy < 6; yyy++)
                  {
                    E1[yyy] = e1[yyy]; 
                    E2[yyy] = e2[yyy]; 
                    E3[yyy] = e3[yyy]; 
                    E4[yyy] = e4[yyy]; 
                    E5[yyy] = e5[yyy]; 
                    E6[yyy] = e6[yyy];  
                  }
              }
        //+---+============================================+
        for(nnn = 0; nnn < 6; nnn++)
          {
            Price = Close[bar];
            e1[nnn] = w1[nnn]*Price   + w2[nnn]*e1[nnn];
            e2[nnn] = w1[nnn]*e1[nnn] + w2[nnn]*e2[nnn];
            e3[nnn] = w1[nnn]*e2[nnn] + w2[nnn]*e3[nnn];
            e4[nnn] = w1[nnn]*e3[nnn] + w2[nnn]*e4[nnn];
            e5[nnn] = w1[nnn]*e4[nnn] + w2[nnn]*e5[nnn];
            e6[nnn] = w1[nnn]*e5[nnn] + w2[nnn]*e6[nnn];
            //----
            if(bar <= Bars - M[nnn])
                Resalt[nnn] = c1*e6[nnn] + c2*e5[nnn] + c3*e4[nnn] + c4*e3[nnn];
            //---- èíèöèàëèçàöèÿ íóëÿ
            else 
                Resalt[nnn] = 0;
          }
        Ind_Buffer1[bar] = Resalt[0];
        Ind_Buffer2[bar] = Resalt[1];
        Ind_Buffer3[bar] = Resalt[2];
        Ind_Buffer4[bar] = Resalt[3];
        Ind_Buffer5[bar] = Resalt[4];
        Ind_Buffer6[bar] = Resalt[5];       
      }
//----
    return(0);
  }
//+------------------------------------------------------------------+





Sample





Analysis



Market Information Used:

Series array that contains open time of each bar
Series array that contains close prices for each bar


Indicator Curves created:

Implements a curve of type DRAW_LINE


Indicators Used:



Custom Indicators Used:

Order Management characteristics:

Other Features: