//+------------------------------------------------------------------+ //| EMAPredictive3.mq4 | //| Matthew ("Dr Chaos") Kennel | //| ftp://lyapunov.ucsd.edu/pub/nonlinear | //+------------------------------------------------------------------+ /* Goal of this indicator: Given three EMA's of varying lengths, use their values for a estimator of "where we are now" or will be in the near future. This is a very simplistic method, better ones are probably found in the signal processing and target tracking literature. A Kalman filter has been known since the 1950's 1960's and there is better still. Nevertheless this is easily programmable in the typical environments of a retail trading application like Metatrader4. Method: An an exponential moving average (EMA) or a simple moving average (SMA), for that matter, have a bandwidth parameter 'L', the effective length of the window. This is in units of time or, really, inverse of frequency. Higher L means a lower frequency effect. With a parameter L, the weighted time index of the EMA and SMA is (L-1)/2. Example: take an SMA of the previous 5 values: -5 -4 -3 -2 -1 now. The average "amount of time" back in the past of the data which go in to the SMA is hence -3, or (L-1)/2. Same applies for an EMA. The standard parameterization makes this correspondence between EMA and SMA. Therefore the idea here is to take two different EMA's, a longer, and a shorter of lengths L1 and L2 (L2 0) counted_bars--; //---- limit=Bars-counted_bars; //---- //---- main loop p1=2.0/(LongPeriod+1.0); p3=2.0/(ShortPeriod+1.0); t1=(LongPeriod-1.0)/2.0; t3=(ShortPeriod-1.0)/2.0; t=ShortPeriod + ExtraTimeForward; //---- ma1=Close[limit-1]; ma3=ma1; for(int i=limit-1; i>= 0; i--) { //---- ma_shift set to 0 because SetIndexShift called abowe double val=Close[i]; double slope1, predict; //---- ma1=p1*val + (1.0-p1)*ma1; ma3=p3*val + (1.0-p3)*ma3; slope1=(ma3-ma1)/(t1-t3); predict=ma3 + slope1*t; ExtBuffer[i]=predict; } //---- done return(0); } //+------------------------------------------------------------------+