11/10/10

Media

Nell'ordine:
- Blu - Media Adattativa (MA Adaptative)
- Viola - Filtro di Kalman
- Celeste - Filtro di Gauss
- Verde - Media di Tillson
- Rossa - Media XXXX

Quale vi piace di più? A me tutte. Le uso a seconda del momento e della convenienza.
Ecco i codici per Prorealtime. Premetto che li ho scopiazzati tutti qui e là.

----------------------------------------------------
AdaptiveMA - (Periods=10)

periods=periodo

ONCE AdaptiveMA = UNDEFINED

Direction = ABS(MOMENTUM[periods])
MyVolatility = SUMMATION[periods](ABS(MOMENTUM[1]))

IF MyVolatility>0 THEN
er = Direction / MyVolatility
ELSE
er=1
ENDIF

fastsc = 2 / (2+ 1)
slowsc = 2 / (30 + 1)

constant = SQUARE(er * (fastsc - slowsc) + slowsc)

IF BARINDEX = periods THEN
AdaptiveMA = CLOSE
ELSIF BARINDEX > periods THEN
AdaptiveMA = AdaptiveMA + constant * (CLOSE - AdaptiveMA)
ENDIF

RETURN AdaptiveMA

------------------------------------------------

Filtro di Kalman (gain=500)

pr=medianprice
once pred=pr
if barindex>0 then
dk=pr-pred
smooth=pred+dk*SQRT((gain/10000)*2)
velo=velo+((gain/10000)*dk)
pred=smooth+velo
kf=pred
endif
return kf

----------------------------------------------
Filtro di Gauss (POL=2; PER=20)

pr=medianprice
pi=3.141592654
if pol>4 then
pol=4
endif
if pol=2 then
sq=SQRT(2)
elsif pol=1 then
sq=2
elsif pol=3 then
sq=1.12246
elsif pol=4 then
sq=sqrt(sqrt(2))
endif
if barindex=0 then
w=2*pi/per
w=180*w/pi
b=(1-cos(w))/(sq-1)
aa=-b+sqrt(b*b+2*b)
a1=1-aa
a12=a1*a1
a13=a1*a1*a1
a14=a12*a12
a2=aa*aa
a3=aa*aa*aa
a4=a2*a2
y1=pr
y2=y1
y3=y2
y4=y3
endif
if pol=1 then
y=aa*pr+a1*y1
elsif pol=2 then
y=a2*pr+2*a1*y1-a12*y2
elsif pol=3 then
y=a3*pr+3*a1*y1-3*a12*y2+a13*y3
elsif pol=4 then
y=a4*pr+4*a1*y1-6*a12*y2+4*a13*y3-a14*y4
endif
y4=y3
y3=y2
y2=y1
y1=y
gauss=y
RETURN gauss



-----------------------------------------------

Media di Tillson (p=5)

period=p
price=close
vfactor=.7
x1=(exponentialaverage[period](price))*(1+vfactor)
x2=(exponentialaverage[period](exponentialaverage[period](price)))*vfactor
gd=x1-x2
x11=(exponentialaverage[period](gd))*(1+vfactor)
x21=(exponentialaverage[period](exponentialaverage[period](gd)))*vfactor
gd1=x11-x21
x12=(exponentialaverage[period](gd1))*(1+vfactor)
x22=(exponentialaverage[period](exponentialaverage[period](gd1)))*vfactor
gd2=x12-x22
return gd2

------------------------------------------------
Media XXXX (per=10)

price=medianprice//close
tn1=average[per](price)
s1=0
for i=0 to per-1
s1=s1+((per-(2*i)-1)/2)*(price[i])
next
ecar=((per/2)+1)*s1/((per+1)*per)
moy=tn1+ecar
return moy

Buon divertimento!

Nessun commento:

Posta un commento

www.finanza.com
info.gif (242 byte)