FX_Sniper's_Ergodic_CCI_Trigger_Alert_Fast basically revritten by Mladen
"CCI" in FXSniper's Ergodic name - deep tradition, has nothing to do with CCI
double alphaPq = 2.0/(1.0+pq);
double alphaPr = 2.0/(1.0+
pr);
double alphaPs = 2.0/(1.0+ps);
double alphaTrigger = 2.0/(1.0+trigger);
for(i=limit,r=Bars-limit-1; i >=0; i--,r++)
{
buffer[r][mtm] = Close[i]-Close[i+1];
buffer[r][absmtm] = MathAbs(buffer[r][mtm]);
buffer[r][var1] = buffer[r-1][var1] + alphaPq*(buffer[r][mtm] -buffer[r-1][var1]);
buffer[r][var2] = buffer[r-1][var2] + alphaPr*(buffer[r][var1] -buffer[r-1][var2]);
buffer[r][var2a] = buffer[r-1][var2a] + alphaPq*(buffer[r][absmtm]-buffer[r-1][var2a]);
buffer[r][var2b] = buffer[r-1][var2b] + alphaPr*(buffer[r][var2a] -buffer[r-1][var2b]);
buffer[r][var2c] = buffer[r-1][var2c] + alphaPs*(buffer[r][var2] -buffer[r-1][var2c]);
buffer[r][var2d] = buffer[r-1][var2d] + alphaPs*(buffer[r][var2b] -buffer[r-1][var2d]);
if (buffer[r][var2d]!=0)
ErgoCCI[i] = (500*buffer[r][var2c]/buffer[r][var2d]);
else ErgoCCI[i] = 0;
MainCCI[i] = MainCCI[i+1] + alphaTrigger*(ErgoCCI[i]-MainCCI[i+1]);
}
if (alertsOn)
{
if(MainCCI[1] <= ErgoCCI[1] && MainCCI[0] > ErgoCCI[0]) doAlert("short");
if(MainCCI[1] >= ErgoCCI[1] && MainCCI[0] < ErgoCCI[0]) doAlert("long");
}
Thank you, FxSniper; Thank you Igorad, Thank you, Mladen
