alpha=0.81; //Questo valore sembra un'ottimizzazione ma non lo è...e risulta ottimo su tutti i sottostanti che ho testato.
ann=12;
mv=Param("Max Volat Richiesta:",3.5,0,50,1);
leva=Param("Leva:",1,0,10,1);
rf=Param("Risk Free Disponibile:",3,0,100,1);
ss=1.2; //Questa è una blanda ottimizzazione..è uno shift verticale alla media che vedrai usata come soglia.
sec=Foreign("^GSPC","C"); //MENSILE
r=100*log(sec/Ref(sec,-1));
k=Ref(r,-1)*alpha+r*(1-alpha)+ss/ann;
dt=IIf(r<k,1,0);
lpm=hpm=1;
lpm=(Ref(lpm,-1)*alpha +(r*dt-k)*(1-alpha));
dt=IIf(r>k,1,0);
hpm= (Ref(hpm,-1)*alpha +abs(k-r*dt)*(1-alpha));
tar=hpm+lpm+k;
dtx=IIf(Ref(tar,-1)>0,1,0);
dtx1=IIf(Ref(tar,-1)<0,-1,0);
mr=volat=r;
mr=Ref(mr,-1)*alpha+r*(1-alpha);
volat=sqrt(Ref(volat,-1)^2*(alpha)+(1-alpha)*(r-mr)^2);
volat=mv/(volat*sqrt(ann));
alpha1=0.97;
osa=IIf(tar*volat<0,0,tar*volat);
osa=Ref(osa,-1)*alpha1+(IIf(osa>leva,leva,osa))*(1-alpha1);
r=100*log(C/Ref(C,-1)); // -----> C=DAX MENSILE o Symbol corrente
eq=Cum(r*Ref(osa,-1)*dtx+r*Ref(osa,-1)*dtx1); //+(rf/ann)*(1-Ref(osa,-1)));
//Grafico
eqi = FirstVisibleValue(eq);
Ci = FirstVisibleValue(C);
Plot(100*((C-Ci)/Ci), "sec", colorRed);
Plot(100*((eq-eqi)/eqi), "equity", colorBlack);