T3_Taotra_NK

Author:
Miscellaneous
Implements a curve of type %1
0 Views
0 Downloads
0 Favorites
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;
double M[6];
//---- ââåäåíèå ïåðåìåííûõ äëÿ ñîõðàíåíèÿ ïåðåìåííûõ  e1,e2,e3,e4,e5,e6
datetime 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((int)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-counted_bars-1);
   if(counted_bars==0) limit--;
//+--- äî îñíîâíîãî öèêëà ðàñ÷¸òà èíäèêàòîðà âîññòàíàâëèâàåì çíà÷åíèÿ 
//     ïåðåìåííûõ, êàêèìè îíè áûëè ïîñëå ðà÷¸òà íà âòîðîì áàðå
//+--- âîññòàíîâëåíèå çíà÷åíèé ïåðåìåííûõ
   datetime 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)
           {
            //PrintFormat("Tnew=%s   time2=%s",TimeToString(Tnew),TimeToString(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];
            Print("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);
  }
//+------------------------------------------------------------------+

Comments