//+------------------------------------------------------------------+ //| #_i_SpecktrAnalis.mq4 | //| Copyright © 2006, klot. | //| klot@mail.ru | //+------------------------------------------------------------------+ #property copyright "Copyright © 2006, klot." #property link "klot@mail.ru" #import "#_lib_FFT.ex4" void realfastfouriertransform(double& a[], int tnn, bool inversefft); #import #property indicator_separate_window #property indicator_buffers 4 #property indicator_color1 Yellow #property indicator_color2 Blue #property indicator_color3 Red #property indicator_color4 Lime #property indicator_level1 0.0 //#property indicator_level1 0.0 //#property indicator_level1 0.0 //---- buffers double Buffer1[]; double Buffer2[]; double Buffer3[]; double Buffer4[]; //--- extern int n=7; // Äëèíà ðÿäà extern int Fmin=2;//2; // Ãðíèöà Ôèëüòðà ïî Í×. extern int Fmax=60;//128; // Ãðàíèöà Ôèëüòðà ïî Â×. extern int shift=6;//127; extern int MaPeriod=10; //extern string sym="GBPUSD"; //extern string sym="EURUSD"; double aa[]; double bb[]; int N; //+------------------------------------------------------------------+ //| ???????????? ???????? ???????? | //+------------------------------------------------------------------+ void Normalize2(double& aa[]) { int n=ArraySize(aa); double sum_sqrt=0; for(int i=0; i<=n-1; i++) { sum_sqrt+=MathPow(aa[i],2); } sum_sqrt=MathSqrt(sum_sqrt); //--- if (sum_sqrt!=0) { for( i=0; i<=n-1; i++) { aa[i]=aa[i]/sum_sqrt; } } //--- return; } //+------------------------------------------------------------------+ //+------------------------------------------------------------------+ //| Custom indicator initialization function | //+------------------------------------------------------------------+ int init() { //---- indicators SetIndexStyle(0,DRAW_LINE,0,1); SetIndexBuffer(0,Buffer1); SetIndexEmptyValue(0,0); SetIndexStyle(1,DRAW_HISTOGRAM,0,1); SetIndexBuffer(1,Buffer2); SetIndexEmptyValue(1,0); SetIndexStyle(2,DRAW_HISTOGRAM,0,1); SetIndexBuffer(2,Buffer3); SetIndexEmptyValue(2,0); SetIndexStyle(3,DRAW_LINE,2,1); SetIndexBuffer(3,Buffer4); SetIndexEmptyValue(3,0); //--- N=MathPow(2,n); ArrayResize(aa,N); ArrayResize(bb,N); if( Fmax>=N ) Fmax=N; if( Fmin<=2 ) Fmin=2; //---- return(0); } //+------------------------------------------------------------------+ //| Custom indicator deinitialization function | //+------------------------------------------------------------------+ int deinit() { //---- //---- return(0); } //+------------------------------------------------------------------+ //| Custom indicator iteration function | //+------------------------------------------------------------------+ int start() { if( Bars<N+shift) return(0); //--- for(int i=N-1; i>=0; i--) { aa[i]=iVolume(Symbol(),0,i); //Normalize2(aa); bb[i]=iVolume(Symbol(),0,i+shift); //Normalize2(bb); } //--- realfastfouriertransform(aa, N, false); realfastfouriertransform(bb, N, false); //--- N=ArraySize(aa); //Comment("n= ",N); //--- for( i=0; i<=N-1; i++) { if( i<Fmin || i>Fmax) { aa[i]=0.0;bb[i]=0.0; } } //--- //realfastfouriertransform(double& a[], int tnn, bool inversefft); realfastfouriertransform(aa, N, true); realfastfouriertransform(bb, N, true); //tworealffts(double a1[], double a2[], double& a[], double& b[], int tn); //--- SetIndexDrawBegin(0,Bars-N); //SetIndexDrawBegin(1,Bars-N-shift); SetIndexDrawBegin(1,Bars-N); //--- for( i=0; i<=N-1; i++) { double diff1=bb[i]-aa[i]; if (diff1<0) { Buffer3[i]=0;//red Buffer2[i]=-diff1;//blue //Buffer2[i+shift]=bb[i]; } else if (diff1>0) { Buffer3[i]=-diff1;//red Buffer2[i]=0; //blue } Buffer1[i]=-diff1; } //---- for( i=0; i<=N-1; i++) { Buffer4[i]=iMAOnArray(Buffer1,0,MaPeriod,0,MODE_SMA,i); } return(0); } //-------------------------------------------------------------------+
Sample
Analysis
Market Information Used:
Series array that contains tick volumes of each bar
Indicator Curves created:
Implements a curve of type DRAW_LINE
Implements a curve of type DRAW_HISTOGRAM
Indicators Used:
Moving average indicator
Custom Indicators Used:
#_lib_FFT
Order Management characteristics:
Other Features: