Har lekt med en tanke under dagen som jag håller på att testa. Jag tycker att VAP filteret är fantastiskt bra för att minska risken i en modell. Jag håller på att testa filtret med en twist, men det tar så lång tid att köra analysern med VAP filter så jag hoppades på lite hjälp här.
Eftersom att VAP filtret har en skala på 0-100 precis som RSIWS (och många andra vanliga inikatorer), så jag tänkte att dom borde går att kombinera. Kör en inskalnings modell alá Connors PowerZone modell. Men RSI trigger värdet är direkt beroende av VAP värdet. Så när RSI värdet är under VAP värdet så har vi köpsignal. Har lagt in en "Limiter" som i tillägg subtraheras från VAP för att sänka RSI trigger värdet ytterligare om det behövs.
Än så länge så får min traditionella RSI PowerZone modell bättre resultat med fast RSI trigger värden och VAP filter för att stoppa köp helt. Men om vi slår våra kloka hjärnor ihop kanske vi kanske vi kan finna en bättre edge i den här modellen
Kör exit på högsta femdagars kurs, finns säker en bättre variant här, har inte testat än.
------------------------------------------------------------------------------------------------------------
{RSI SuperZones Long - 20200529}
antal_steg:=4 {antal delköp/steg}
storlek_steg:=0.25 {del av kontot för varje delköp}
hävstång_max:=2 {största hävstången på portföljen för att tillåta köp}
limiter:=40 {RSI minus VAP plus limiter ger trigger signal }
ris:=4 {RSI perioder}
$par_perioder1:=50 {50}
$par_perioder2:=1000 {1000}
{VAP}
high=cmpref(h,0,a)
low=cmpref(l,0,a)
eod=cmpref(c,0,a)
volla=sub(1,div(aref(eod,1),eod))
ma50=mov(volla,$par_perioder1,s)
bbl_1k=sub(ma50,mult(2.5,stdev(volla,$par_perioder2)))
bbl50=sub(ma50,mult(2,stdev(volla,$par_perioder1)))
rå=sub(bbl50,bbl_1k)
rating1=mult(1,sum(gt(rå,aref(rå,1)),50))
rating2=mult(50,sub(1,div(abs(rå),bbl_1k)))
vap=mx(0,mn(100,mult(sub(add(rating1,rating2),70),2)))
{ Hävstångs kontrol }
värde_positioner=sub(cash(a),cash(s))
depåvärde=sub(add(cash(a),cash(t)),mult(2,abs(cash(s))))
hävstång_nu=div(värde_positioner,depåvärde)
hävstång_ok=lt(hävstång_nu,hävstång_max)
new_buy=lt(c,lasttrade(b,p))
{---------------------------------}
{Cellberäkning}
sälj_senast=gt(lasttrade(s,d),lasttrade(b,d))
köp_senast=lt(lasttrade(s,d),lasttrade(b,d))
retval(lasttrade(b,2),2)
uppräknat=add(getval(2),1)
retval(if(köp_senast,uppräknat,getval(2)),2)
retval(if(sälj_senast,0,getval(2)),2)
sista_köp=lt(getval(2),antal_steg)
{ Övriga kontroller }
ej_samma_dag=gt(int(d),lasttrade(b,d))
öppet=ge(mult(1440,sub(market(c),frac(date()))),6)
stängning=le(mult(1440,sub(market(c),frac(date()))),7)
setgvarif(storlek_steg,701,1)
{ Signal }
ma5s=lt(c,mov(c,5,s))
signal=and(lt(c,aref(c,1)),lt(rsiws(ris),sub(VAP,limiter))) {<----RSI Limiter}
draw(mult(signal,10),3,ysbfw)
köp1=and(or(and(signal,le(getval(2),1)),and(and(new_buy,signal),köp_senast)),ma5s)
köp2=and(and(and(köp1,ej_samma_dag),and(and(sista_köp,stängning),öppet)),hävstång_ok)
mult(köp2,10)
{@A(0,)}
------------------------------------------------------------------------------------------------------------
{RSI SuperZones Sell - 20200529}
account_ok=not(eqv(cash(d),0))
köpdag=lasttrade(b,d)
innehav=gt(portfolio(v),0)
inpådagen=gt(frac(date()),0.376)
stängning=le(mult(1440,sub(market(c),frac(date()))),7)
öppet=ge(mult(1440,sub(market(c),frac(date()))),6)
{Säljvillkår}
ma200=mov(c,200,s)
dagar=if(ma200,5,4)
hög=gt(c,hhv(aref(c,1),{dagar:5}5))
{sälj_senast=gt(lasttrade(s,d),lasttrade(b,d))}
sälj1=and(and(and(and(and(hög,account_ok),innehav),stängning),account_ok),öppet)
mult(sälj1,5)
------------------------------------------------------------------------------------------------------------
{RSI SuperZones Sell - 20200529}
account_ok=not(eqv(cash(d),0))
köpdag=lasttrade(b,d)
innehav=gt(portfolio(v),0)
inpådagen=gt(frac(date()),0.376)
stängning=le(mult(1440,sub(market(c),frac(date()))),7)
öppet=ge(mult(1440,sub(market(c),frac(date()))),6)
{Säljvillkår}
ma200=mov(c,200,s)
dagar=if(ma200,5,4)
hög=gt(c,hhv(aref(c,1),{dagar:5}5))
{sälj_senast=gt(lasttrade(s,d),lasttrade(b,d))}
sälj1=and(and(and(and(and(hög,account_ok),innehav),stängning),account_ok),öppet)
mult(sälj1,5)
------------------------------------------------------------------------------------------------------------
{RSI SuperZones Antal - 20200529}
{ Antalsberäkning }
insatsproc:=getgvar(701)
konto=sub(add(cash(t),cash(a)),mult(2,abs(cash(s))))
insatsbelopp=mult(int(div(konto,c)),insatsproc)
int(insatsbelopp)
------------------------------------------------------------------------------------------------------------
Eftersom att VAP filtret har en skala på 0-100 precis som RSIWS (och många andra vanliga inikatorer), så jag tänkte att dom borde går att kombinera. Kör en inskalnings modell alá Connors PowerZone modell. Men RSI trigger värdet är direkt beroende av VAP värdet. Så när RSI värdet är under VAP värdet så har vi köpsignal. Har lagt in en "Limiter" som i tillägg subtraheras från VAP för att sänka RSI trigger värdet ytterligare om det behövs.
Än så länge så får min traditionella RSI PowerZone modell bättre resultat med fast RSI trigger värden och VAP filter för att stoppa köp helt. Men om vi slår våra kloka hjärnor ihop kanske vi kanske vi kan finna en bättre edge i den här modellen
Kör exit på högsta femdagars kurs, finns säker en bättre variant här, har inte testat än.
------------------------------------------------------------------------------------------------------------
{RSI SuperZones Long - 20200529}
antal_steg:=4 {antal delköp/steg}
storlek_steg:=0.25 {del av kontot för varje delköp}
hävstång_max:=2 {största hävstången på portföljen för att tillåta köp}
limiter:=40 {RSI minus VAP plus limiter ger trigger signal }
ris:=4 {RSI perioder}
$par_perioder1:=50 {50}
$par_perioder2:=1000 {1000}
{VAP}
high=cmpref(h,0,a)
low=cmpref(l,0,a)
eod=cmpref(c,0,a)
volla=sub(1,div(aref(eod,1),eod))
ma50=mov(volla,$par_perioder1,s)
bbl_1k=sub(ma50,mult(2.5,stdev(volla,$par_perioder2)))
bbl50=sub(ma50,mult(2,stdev(volla,$par_perioder1)))
rå=sub(bbl50,bbl_1k)
rating1=mult(1,sum(gt(rå,aref(rå,1)),50))
rating2=mult(50,sub(1,div(abs(rå),bbl_1k)))
vap=mx(0,mn(100,mult(sub(add(rating1,rating2),70),2)))
{ Hävstångs kontrol }
värde_positioner=sub(cash(a),cash(s))
depåvärde=sub(add(cash(a),cash(t)),mult(2,abs(cash(s))))
hävstång_nu=div(värde_positioner,depåvärde)
hävstång_ok=lt(hävstång_nu,hävstång_max)
new_buy=lt(c,lasttrade(b,p))
{---------------------------------}
{Cellberäkning}
sälj_senast=gt(lasttrade(s,d),lasttrade(b,d))
köp_senast=lt(lasttrade(s,d),lasttrade(b,d))
retval(lasttrade(b,2),2)
uppräknat=add(getval(2),1)
retval(if(köp_senast,uppräknat,getval(2)),2)
retval(if(sälj_senast,0,getval(2)),2)
sista_köp=lt(getval(2),antal_steg)
{ Övriga kontroller }
ej_samma_dag=gt(int(d),lasttrade(b,d))
öppet=ge(mult(1440,sub(market(c),frac(date()))),6)
stängning=le(mult(1440,sub(market(c),frac(date()))),7)
setgvarif(storlek_steg,701,1)
{ Signal }
ma5s=lt(c,mov(c,5,s))
signal=and(lt(c,aref(c,1)),lt(rsiws(ris),sub(VAP,limiter))) {<----RSI Limiter}
draw(mult(signal,10),3,ysbfw)
köp1=and(or(and(signal,le(getval(2),1)),and(and(new_buy,signal),köp_senast)),ma5s)
köp2=and(and(and(köp1,ej_samma_dag),and(and(sista_köp,stängning),öppet)),hävstång_ok)
mult(köp2,10)
{@A(0,)}
------------------------------------------------------------------------------------------------------------
{RSI SuperZones Sell - 20200529}
account_ok=not(eqv(cash(d),0))
köpdag=lasttrade(b,d)
innehav=gt(portfolio(v),0)
inpådagen=gt(frac(date()),0.376)
stängning=le(mult(1440,sub(market(c),frac(date()))),7)
öppet=ge(mult(1440,sub(market(c),frac(date()))),6)
{Säljvillkår}
ma200=mov(c,200,s)
dagar=if(ma200,5,4)
hög=gt(c,hhv(aref(c,1),{dagar:5}5))
{sälj_senast=gt(lasttrade(s,d),lasttrade(b,d))}
sälj1=and(and(and(and(and(hög,account_ok),innehav),stängning),account_ok),öppet)
mult(sälj1,5)
------------------------------------------------------------------------------------------------------------
{RSI SuperZones Sell - 20200529}
account_ok=not(eqv(cash(d),0))
köpdag=lasttrade(b,d)
innehav=gt(portfolio(v),0)
inpådagen=gt(frac(date()),0.376)
stängning=le(mult(1440,sub(market(c),frac(date()))),7)
öppet=ge(mult(1440,sub(market(c),frac(date()))),6)
{Säljvillkår}
ma200=mov(c,200,s)
dagar=if(ma200,5,4)
hög=gt(c,hhv(aref(c,1),{dagar:5}5))
{sälj_senast=gt(lasttrade(s,d),lasttrade(b,d))}
sälj1=and(and(and(and(and(hög,account_ok),innehav),stängning),account_ok),öppet)
mult(sälj1,5)
------------------------------------------------------------------------------------------------------------
{RSI SuperZones Antal - 20200529}
{ Antalsberäkning }
insatsproc:=getgvar(701)
konto=sub(add(cash(t),cash(a)),mult(2,abs(cash(s))))
insatsbelopp=mult(int(div(konto,c)),insatsproc)
int(insatsbelopp)
------------------------------------------------------------------------------------------------------------
Comment