//+------------------------------------------------------------------+ //| #_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 3 #property indicator_color1 Red #property indicator_color2 Blue #property indicator_color3 Yellow #property indicator_level1 0.0 //#property indicator_level1 0.0 //#property indicator_level1 0.0 //---- buffers double Buffer1[]; double Buffer2[]; double Buffer3[]; //--- extern int n=7; // Äëèíà ðÿäà extern int Fmin=2;//2; // Ãðíèöà Ôèëüòðà ïî Í×. extern int Fmax=60;//128; // Ãðàíèöà Ôèëüòðà ïî Â×. extern int shift=6;//127; //extern string sym="GBPUSD"; //extern string sym="EURUSD"; double aa[]; double bb[]; int N; //+------------------------------------------------------------------+ //| Custom indicator initialization function | //+------------------------------------------------------------------+ int init() { //---- indicators SetIndexStyle(0,DRAW_HISTOGRAM,0,2); SetIndexBuffer(0,Buffer1); SetIndexEmptyValue(0,0); SetIndexStyle(1,DRAW_HISTOGRAM,0,2); SetIndexBuffer(1,Buffer2); SetIndexEmptyValue(1,0); SetIndexStyle(2,DRAW_LINE,0,2); SetIndexBuffer(2,Buffer3); SetIndexEmptyValue(2,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); bb[i]=iVolume(Symbol(),0,i+shift); } //--- 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) Buffer2[i]=diff1; //Buffer2[i+shift]=bb[i]; else if (diff1<0) Buffer1[i]=diff1; Buffer3[i]=diff1; } //---- 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_HISTOGRAM
Implements a curve of type DRAW_LINE
Indicators Used:
Custom Indicators Used:
#_lib_FFT
Order Management characteristics:
Other Features: