ang_PR (Din)-v1





//+------------------------------------------------------------------+
//|                                              ang_PR (Din)-v1.mq4 |
//|                           Copyright © 2006, ANG3110@latchess.com |
//+------------------------------------------------------------------+

#property  copyright "ANG3110@latchess.com"
//---------ang_PR (Din)--------------------
#property indicator_chart_window
#property indicator_buffers 1
#property indicator_color1 Blue
//----
extern double hours = 24;
extern int m = 2;
extern int i = 0;
//----
double fx[];
double ai[10,10], b[10], x[10], sx[20];
double sum; 
int p, n, f, sName, fs;
double qq, mm, tt;
int ii, jj, kk, ll, nn;
//+------------------------------------------------------------------+
//| Custom indicator initialization function                         |
//+------------------------------------------------------------------+
int init() 
  {
   IndicatorShortName("at_PR (Din)");
   SetIndexStyle(0, DRAW_LINE, 0, 2);
   SetIndexBuffer(0, fx);
   if(fs == 0) 
     {
       sName = CurTime(); 
       fs = 1;
     }
   p = hours*60 / Period(); 
   nn = m + 1; 
//----
   return(0);
  }
//+------------------------------------------------------------------+
//| Custom indicator deinitialization function                       |                                                                 |
//+------------------------------------------------------------------+
int deinit() 
  {
    ObjectDelete("pr" + sName);
  }
//+------------------------------------------------------------------+
//| Custom indicator start function                                  |
//+------------------------------------------------------------------+
int start()
  { 
   int mi;
//----
   if(f == 1) 
     { 
       p = iBarShift(Symbol(), Period(), ObjectGet("pr" + sName, OBJPROP_TIME1));
     } 
   sx[1] = p + 1;
   SetIndexDrawBegin(0, Bars - p - 1); 
//---- sx
   for(mi = 1; mi <= nn*2 - 2; mi++) 
     {
       sum = 0; 
       //----
       for(n = i; n <= i + p; n++) 
         {
           sum += MathPow(n, mi);
         } 
       sx[mi+1] = sum;
     }  
//---- syx
   for(mi = 1; mi <= nn; mi++) 
     {
       sum=0.00000; 
       //----
       for(n = i; n <= i + p; n++) 
         {
           if(mi == 1) 
               sum += Close[n]; 
           else 
               sum += Close[n]*MathPow(n, mi - 1);
         } 
       b[mi] = sum;
     } 
//---- Matrix
   for(jj = 1; jj <= nn; jj++) 
     {
       for(ii = 1; ii <= nn; ii++) 
         {
           kk = ii + jj - 1; 
           ai[ii,jj] = sx[kk];
         }
     }  
//---- Gauss
   for(kk = 1; kk <= nn - 1; kk++) 
     {
       ll = 0; mm = 0; 
       //----
       for(ii = kk; ii <= nn; ii++) 
         {
           if(MathAbs(ai[ii,kk]) > mm) 
             {
               mm = MathAbs(ai[ii,kk]); 
               ll = ii;
             }
         } 
       //----
       if(ll == 0) 
           return(0);   
       //----
       if(ll != kk) 
         {
           for(jj = 1; jj <= nn; jj++) 
             {
               tt = ai[kk,jj]; 
               ai[kk,jj] = ai[ll,jj]; 
               ai[ll,jj] = tt;
             } 
           tt = b[kk]; 
           b[kk] = b[ll]; 
           b[ll] = tt;
         }  
       //----
       for(ii = kk + 1; ii <= nn; ii++) 
         {
           qq = ai[ii,kk] / ai[kk,kk]; 
           //----
           for(jj = 1; jj <= nn; jj++) 
             {
               if(jj==kk) 
                   ai[ii,jj]=0; 
               else 
                   ai[ii,jj]=ai[ii,jj]-qq*ai[kk,jj];
             } 
           b[ii]=b[ii]-qq*b[kk];
         }
     }  
   x[nn] = b[nn] / ai[nn,nn]; 
   //----
   for(ii = nn - 1; ii >= 1; ii--) 
     {
       tt = 0; 
       //----
       for(jj = 1; jj <= nn - ii; jj++) 
         {
           tt = tt + ai[ii,ii+jj]*x[ii+jj]; 
           x[ii] = (1 / ai[ii,ii])*(b[ii] - tt);
         }
     } 
   //----
   for(n = i; n <= i + p; n++) 
     {
       sum = 0; 
       for(kk = 1; kk <= m; kk++) 
         {
           sum += x[kk+1]*MathPow(n,kk);
         } 
       fx[n]=x[1]+sum;
     } 
   ObjectCreate("pr" + sName, 22, 0, Time[p], fx[p]);
   ObjectSet("pr" + sName, 14, 159);
   ObjectSet("pr" + sName, OBJPROP_TIME1, Time[p]);
   ObjectSet("pr" + sName, OBJPROP_PRICE1, fx[p]);
   f = 1;
//----
   return(0);
  }
//+------------------------------------------------------------------+






Sample





Analysis



Market Information Used:

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


Indicator Curves created:

Implements a curve of type DRAW_LINE


Indicators Used:



Custom Indicators Used:

Order Management characteristics:

Other Features: