var GSMOOTH(var price_,vars arr,var alfa){
var ret = pow(alfa,4)*price_ + 4*(1-alfa)*arr[0+1] - 6*pow(1-alfa,2)*arr[0+2] + 4*pow(1-alfa,3)*arr[0+3] - pow(1-alfa,4)*arr[0+4];
return (ret);
}
var getAlfa(var p){
var pis = 3.1415926535;
var w = 2*pis/p;
var beta = (1 - cos(w))/(pow(1.414,2.0/3) - 1);
var alfa = -beta + sqrt(beta*beta + 2*beta);
return (alfa);
}
function run(){
set(TICKS);
int Fast=26;
int Slow=12;
int Signal=3;
vars Fastalfa=series(getAlfa(Fast));
vars Slowalfa=series(getAlfa(Slow));
vars Signalalfa=series(getAlfa(Signal));
vars Close=series(priceClose());
vars ma = series();
ma = series(GSMOOTH(Close[0],ma,Slowalfa[0]));
vars maf = series();
maf=series(GSMOOTH(Close[0],maf,Fastalfa[0]));
vars mains=series(ma[0]-maf[0]);
vars signal = series();
signal=series(GSMOOTH(mains[0],signal,Signalalfa[0]));
vars tmp=series(mains[0]-signal[0]);
if(tmp[0]>tmp[1]){
exitShort();
enterLong();
}
if(tmp[0]<tmp[1]){
exitLong();
enterShort();
}
}