#
A
B
C
D
E
F
G
H
I
J
K
L
M
N
O
P
Q
R
S
T
U
V
W
X
Y
Z
Home
Forex Forum
+ Add Script
Metastock
Expert Advisors
Explorations
Indicators
Trading Systems
Metatrader
MQL Experts
MQL Indicators
MQ4 Experts
MQ4 Indicators
MQ4 Scripts
Tradestation
Functions
Indicators
PaintBars
ShowMe
Trading Systems
Amibroker
Commentaries
Explorations
Functions
Indicators
Trading Systems
Contact us
Newsletter
Group: Metatrader MQ4 Indicators
Title: EMA Predictive 2
Description:
EMAPredictive2 -- a 'predicing' indicator using two EMAs
//+------------------------------------------------------------------+ //| 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); } //+------------------------------------------------------------------+
Author/Source:
Matthew ("Dr Chaos") Kennel
Forex Directory
|
Free Forex Strategies
|
Forex Trading Systems
|
Privacy
|
Disclaimer
|
Contact