Hi, I am writing this code but it is wrong and I don't know where and why it is not correct.

The rule is simple. If bar is bule, enter long and red is short.
You can see images and the original code converted from.
http://codebase.mql4.com/8057

Please help me.

Thanks in advance.


Code:
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();
      }

}


Last edited by SFF; 02/14/13 14:30.