//+------------------------------------------------------------------+ //| #_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_level2 0.005 #property indicator_level3 -0.005 #property indicator_level4 0.01 #property indicator_level5 -0.01 //---- buffers double Buffer1[]; double Buffer2[]; double Buffer3[]; double Buffer4[]; //--- extern int n=7; // Äëèíà ðÿäà extern int Fmin=2;//80;//2; // Ãðíèöà Ôèëüòðà ïî Í×. extern int Fmax=60;//128; // Ãðàíèöà Ôèëüòðà ïî Â×. //extern string sym="GBPUSD"; extern int shift=6;//extern string sym="EURUSD"; extern int MaPeriod=10; double aa[]; double bb[]; int N; //+------------------------------------------------------------------+ //| 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]=iClose(Symbol(),0,i); bb[i]=iClose(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(aa, N, true); realfastfouriertransform(bb, N, true); //--- SetIndexDrawBegin(2,Bars-N); //SetIndexDrawBegin(1,Bars-N-shift); SetIndexDrawBegin(1,Bars-N); SetIndexDrawBegin(0,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 close prices for 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: