pds:=Input("Weekly EMA periods",1,520,4); shift:=1+Input("EMA vertical shift %", -100,100,0)/100; EOW:=Input("Final week's end: [1]True, [2]Current (dynamic)",1,2,2); plot:=Input("plot: [1] EMA, [2] Crossover signals",1,2,1); { Choice of Static/Dynamic last EOW signal } EOW:=If(EOW=2,Cum(1)=LastValue(Cum(1)), Cum(1)=LastValue(Cum(1)) AND DayOfWeek()=5); { Reference EOW signals } WkEnd:=EOW OR FmlVar("Week's true Start & End","WEEKEND"); { Week's Close } WkCl:=ValueWhen(1,WkEnd,C); WkCl:=ValueWhen(1,WkCl<>0,WkCl); { Reduce periodicity if insufficient periods } pds:=If(pds>Cum(WkEnd),Cum(WkEnd),pds); { Weekly EMA } WkEma:=ValueWhen(1,WkEnd,PREV) *(1-2/(pds+1))+WkCl*2/(pds+1); { Vertical shift } WkEma:=WkEma*shift; { Crossover signals } signals:=Cross(C,WkEma)-Cross(WkEma,C); { Plot on price chart } If(plot=2,signals,WkEma)