//+------------------------------------------------------------------+
//| SVS_Oscillator 03.05.2008. |
//+------------------------------------------------------------------+
#property copyright "Copyright © 2010"
#property link ""
#property indicator_separate_window
#property indicator_buffers 4
#property indicator_color1 Blue
#property indicator_color2 Red
#property indicator_color3 Brown
#property indicator_color4 Green
extern int period=1;
//---- buffers
double ExtMapBuffer1[];
double ExtMapBuffer2[];
double ExtMapBuffer3[];
double ExtMapBuffer4[];
//+------------------------------------------------------------------+
//| Custom indicator initialization function |
//+------------------------------------------------------------------+
int init()
{
//---- indicators
SetIndexStyle(0,DRAW_HISTOGRAM,0,2);
SetIndexBuffer(0,ExtMapBuffer1);
SetIndexStyle(1,DRAW_HISTOGRAM,0,2);
SetIndexBuffer(1,ExtMapBuffer2);
SetIndexStyle(2,DRAW_HISTOGRAM,0,2);
SetIndexBuffer(2,ExtMapBuffer3);
SetIndexStyle(3,DRAW_HISTOGRAM,0,2);
SetIndexBuffer(3,ExtMapBuffer4);
//----
return(0);
}
//+------------------------------------------------------------------+
//| Custom indicator iteration function |
//+------------------------------------------------------------------+
int start()
{
double d1,d11,d111;
double a1,a11,a111,a1111,a2,a22,a222,a2222,a3,a33,a333,a3333;
double a4,a44,a444,a4444,a5,a55,a555,a5555,a6,a66,a666,a6666;
double z,m1,m2,m3,m4,m5,mp1,mp2,mp3,mp11,mp22,mp33;
int pp1,pp2,pp3,pp4,p1,p2,p3,p4,p5,MODE;
if (period==1) {p1=5;p2=15;p3=60;p4=240;p5=1440;}
if (period==2) {p1=3;p2=12;p3=48;p4=288;p5=1440;}
if (period==3) {p1=4;p2=16;p3=96;p4=480;p5=1920;}
if (period==4) {p1=4;p2=24;p3=120;p4=480;p5=1920;}
if (period==5) {p1=6;p2=30;p3=120;p4=480;p5=1920;}
if (period==6) {p1=5;p2=20;p3=80;p4=320;p5=1280;}
if (period==7) {p1=4;p2=16;p3=64;p4=256;p5=1024;}
if (period==8) {p1=4;p2=16;p3=64;p4=256;p5=1024;}
pp1=(p1+p2);pp2=(p2+p3);pp3=(p3+p4);
int limit;
int counted_bars=IndicatorCounted();
if(counted_bars>0) counted_bars--;
limit=Bars-counted_bars-1;
for(int i=0;i<=limit;i++){
//------------------------------------------------------
MODE=0;
z=iMA(NULL,0,1,0,MODE,PRICE_WEIGHTED,i);
m1=iMA(NULL,0,p1,0,MODE,PRICE_WEIGHTED,i);
m2=iMA(NULL,0,p2,0,MODE,PRICE_WEIGHTED,i);
m3=iMA(NULL,0,p3,0,MODE,PRICE_WEIGHTED,i);
m4=iMA(NULL,0,p4,0,MODE,PRICE_WEIGHTED,i);
mp1=iMA(NULL,0,pp1,0,MODE,PRICE_WEIGHTED,i);
mp11=iMA(NULL,0,pp1/2,0,MODE,PRICE_WEIGHTED,i);
mp2=iMA(NULL,0,pp2,0,MODE,PRICE_WEIGHTED,i);
mp22=iMA(NULL,0,pp2/2,0,MODE,PRICE_WEIGHTED,i);
mp3=iMA(NULL,0,pp3,0,MODE,PRICE_WEIGHTED,i);
mp33=iMA(NULL,0,pp3/2,0,MODE,PRICE_WEIGHTED,i);
//-----------------------------------------
a1=(m1+m2)/2;
a2=(mp1+z)/2;
a3=a1-mp11;
a4=a2-mp11;
a5=a2-a1;
a6=m1-m2;
d1=(a3+a4+a5+a6);
//---------
a11=(m2+m3)/2;
a22=(mp2+z)/2;
a33=a11-mp22;
a44=a22-mp22;
a55=a22-a11;
a66=m2-m3;
d11=(a33+a44+a55+a66);
//---------
a111=(m3+m4)/2;
a222=(mp3+z)/2;
a333=a111-mp33;
a444=a222-mp33;
a555=a222-a111;
a666=m3-m4;
d111=(a333+a444+a555+a666);
//---------
if (d1>0 && d11<0) ExtMapBuffer1=d1;
if (d1<0 && d11>0) ExtMapBuffer2=d1;
if (d1>0 && d11>0) ExtMapBuffer2=d1;
if (d1<0 && d11<0) ExtMapBuffer1=d1;
if (d11>0 && d111>0) ExtMapBuffer3=d1;
if (d11<0 && d111<0) ExtMapBuffer4=d1;
if (d1>0 && d11>0) ExtMapBuffer2=d1;
if (d1<0 && d11<0) ExtMapBuffer1=d1;
if (d1>0 && d11<0) ExtMapBuffer1=d1;
if (d1<0 && d11>0) ExtMapBuffer2=d1;
}
return(0);
}
//+--------------------------------+