FFTfiltr





//+------------------------------------------------------------------+
//|                                                         IFFT.mq4 |
//|                                   Copyright © 2006, Michal Rutka |
//|                                        http://www.mqlservice.com |
//+------------------------------------------------------------------+
#property copyright "Copyright © 2006, Michal Rutka"
#property link      "http://www.mqlservice.com"
#include <sampledll.mqh>
#define MAX_N 10080

#property indicator_chart_window
#property indicator_buffers 1
#property indicator_color1 DarkOliveGreen
#property indicator_width1 2
//---- input parameters
extern int       points=720;//24;
extern int       tones=1;
extern double    f=1.0;
extern int       shift=0;
extern int       min_tone=1;

double arr[];
//+------------------------------------------------------------------+
//| Custom indicator initialization function                         |
//+------------------------------------------------------------------+
int init()
  {
//---- indicators
   string short_name;
//---- indicator lines
   SetIndexStyle(0,DRAW_LINE);
   SetIndexBuffer(0,arr);
//---- name for DataWindow and indicator subwindow label
   short_name="FFT("+points+", "+tones+", "+shift+")";
   IndicatorShortName(short_name);
   SetIndexLabel(0,short_name);
//----
   //SetIndexDrawBegin(0, points);
//----
   return(0);
//----
   return(0);
  }
//+------------------------------------------------------------------+
//| Custom indicator deinitialization function                       |
//+------------------------------------------------------------------+
int deinit()
  {
//----
   
//----
   return(0);
  }
//+------------------------------------------------------------------+
//| Custom indicator iteration function                              |
//+------------------------------------------------------------------+
int start()
  {
   //int points=BarsPerWindow();
   //Print(BarsPerWindow());
   if(points>MAX_N)
   {
     Print("Too many FFT ponts");
     return(-1);
   }
   if(Bars<points)
   {
     Print("Less Bars than FFT points");
     return(-1);
   }
   int counted_bars=IndicatorCounted();
   if(counted_bars < 0)
   {
     Print("IndicatorCounted(): ",counted_bars);
     return(-1);
   }
   if(counted_bars > 0) counted_bars--;
   int limit=Bars-counted_bars-points;
   limit=0;
   while(limit>=0)
   {
     //for(int i=0;i<points;i++)
     //  arr[i] = Open[i-limit];
//----
     double prices[MAX_N],oprices[MAX_N];
     for(int i=0;i<points;i++)
       prices[i] = Open[i+limit+shift];
   //ArrayCopySeries(prices, MODE_OPEN);
   int ton=FFTfiltr(prices,oprices,points,tones,f,min_tone);
     if(ton>=0)

     
   //  Print("prices[0]: ", oprices[0], " Open[0]: ", Open[0]);
   //FFT(prices, points);
   //arr[0]=0.0;
       for(i=0;i<points;i++)
         arr[i+limit+shift] = oprices[i];
     else
       Print("FFT failed");
   string short_name="FFT("+points+", "+tones+", "+shift+", "+ton+")";
   //IndicatorShortName(short_name);
     //Print(short_name);
     Comment("Highest energy ton is ", ton);
     limit--;
   }
   for(i=shift-1;i>=0;i--)
     arr[i] = arr[i+points];
   
//----
   return(0);
  }
//+------------------------------------------------------------------+



Sample





Analysis



Market Information Used:

Series array that contains open prices of each bar


Indicator Curves created:

Implements a curve of type DRAW_LINE


Indicators Used:



Custom Indicators Used:

Order Management characteristics:

Other Features: