Interpolation





//+------------------------------------------------------------------+
//|                                                Interpolation.mq4 |
//|                                 Copyright © 2008, Gryb Alexander |
//|                ICQ: 478-923-832 E-mail: alexandergrib@rambler.ru |
//+------------------------------------------------------------------+
#property copyright "Copyright © 2008, Gryb Alexander"
#property link      "ICQ: 478-923-832 E-mail: alexandergrib@rambler.ru"
#property indicator_separate_window
#property indicator_buffers 1


extern double numPrognoz = 2;
extern int begin=20;
extern int end=25;
double index_buffer[];

//+------------------------------------------------------------------+
//| Custom indicator initialization function                         |
//+------------------------------------------------------------------+
int init()
  {
//---- indicators
    SetIndexBuffer(0,index_buffer);
    SetIndexStyle(0,DRAW_LINE);
    ObjectCreate("begin",OBJ_VLINE,0,0,0);
    ObjectSet("begin",OBJPROP_COLOR,Red);
    ObjectCreate("end",OBJ_VLINE,0,0,0);
    ObjectSet("end",OBJPROP_COLOR,Blue);
//----
   return(0);
  }
//+------------------------------------------------------------------+
//| Custom indicator deinitialization function                       |
//+------------------------------------------------------------------+
int deinit()
  {
//----
   ObjectDelete("begin");
   ObjectDelete("end");
//----
   return(0);
  }
//+------------------------------------------------------------------+
//| Custom indicator iteration function                              |
//+------------------------------------------------------------------+
int start()
  {
   int    counted_bars=IndicatorCounted();
//----
    int k; int z; int bar_num; int x;
    double  a = 0; double  b1 = 1;  double  d = 1;
        
    double b[5000];
    double c[5000];
    //Îïðåäåëÿåì êîýôèöèåíòû
    for(k=end;k>=begin;k--)
    {
     b[k]=k;
     c[k]=Close[k];
    }
  for(x=begin-numPrognoz;x<end+numPrognoz+1;x++)
  { 
    a = 0;
    for(k=begin;k<=end;k++)
    {      
           b1=1;d=1;
            //Ïðîèçâåäåíèå îò 0 äî i-1 ýëåìåíòà
           for(z=begin;z<k;z++)
           {
              b1=b1*(x-b[z]);
              d=d*(b[k]-b[z]);
           }
           //Ïðîèçâåäåíèå îò i+1 äî numBars ýëåìåíòà
           for(z=k+1;z<=end;z++)
           {
              b1=b1*(x-b[z]);
              d=d*(b[k]-b[z]);
           }
     a=a+c[k]*((b1)/(d));
    }
    bar_num = x;
    index_buffer[bar_num]=a;
  }
  ObjectSet("begin",OBJPROP_TIME1,Time[begin]);
  ObjectSet("end",OBJPROP_TIME1,Time[end]);
//----
   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: