Ser ut som att Fusion säljer av 50 % av innehavet idag. Hoppas alltså på att dagen bjuder på en rejäl uppgång...
Allmänt meddelande
Collapse
No announcement yet.
Fusion MultiStrategy
Collapse
X
-
Ursprungligen postat av Christer Visa inläggHej! Som några av er kanske redan vet så gillar jag att Entry tas baserat på vald gearing, dvs. antalscriptet ska beräkna rätt antal instrument så att vald gearing uppnås. Jag byggde en sådan lösning för Legato OMX och har nu ett förslag på modifierat antalscript för Fusion. Vad tror ni, kommer detta fungera?
Original Antal-script: Bull Köp
i1(
signal=div(getgvar(857),2)
insats1=div(abs(scrpar(21)),100)
insats2=mult(sub(add(cash(a),cash(t)),cash(u)),insats1)
insats3=if(gt(scrpar(21),0),scrpar(21),insats2)
maxantal=Int(Div(insats3,s))
målantal=mult(if(gt(signal,0),signal,0),maxantal)
innehav=Portfolio(v)
övermål=Ge(innehav,målantal)
slutantal1=If(övermål,0,SUB(målantal,innehav))
add(0,slutantal1)
)
Modifierat Antal-script: Bull Köp
i1(
Signal=div(getgvar(857),2)
Index=cmpref(c,0,A)
MålGearing=ScrPar(32)
GearingInstrument=div(Index,s)
Andel1=div(MålGearing,GearingInstrument)
Andel2=if(gt(Andel1,0.90),0.90,Andel1)
Kapital=sub(add(cash(a),cash(t)),cash(u))
MaxAntal=div(mult(Andel2,Kapital),s)
MålAntal=int(mult(if(gt(Signal,0),Signal,0),MaxAntal))
Innehav=Portfolio(v)
Övermål=ge(Innehav,MålAntal)
Slutantal1=If(Övermål,0,SUB(MålAntal,Innehav))
add(0,Slutantal1)
)
{@A(0,OMX Stock )}
Jag tycker gearing (hävstångsanpassning) vid entry skulle vara väldigt bra att ha som standard i Fusion (troligen flera stadardmodeller)!
Tittade lite snabbt på koden och ser att insats1-insats3 inte är med, jag tolkar att du därmed inte sätter % av portfölj eller belopp (och sedan sedan anpassar antal till önskad hävstång för insatsbeloppbelopp), utan hoppar över det steget och direkt utgår från portföljkapital.
Exempel på målgearing värde, är det t.ex. procent av portfölj givet i 1-100?
EDIT: Någon som ser nackdel med den här metoden (att den t.ex. inte redan används som standard, något man bör känna till)?
Last edited by jimmy; 2016-09-25, 10:37.
Comment
-
Gearing
Har inte läst koden så noga men jag tycker att det verkar bra. Eftersom gearing är ett bättre sätt att styra sin exponering än procent. Skull personligen tycka att det att det vore ett bra tillägg.
Jag har använt gearing i mina simuleringar men inte på samma sätt utan mer att jag utgår från hur mycket jag är beredd att förlora per trade och sedan räknar jag ut tillsammans med stopploss hur många instrument jag kan köpa. Det tycker jag funkar just i denna strategi.
Comment
-
Jimmy och HenrikSyst, jag har byggt egna Fusion slavscript som handlar minifutures. Den enda manuella inputen är vald gearing, tex. 4, vilket matas in i ScrPar. Jag är ingen duktig scriptkodare, så jag utvärderar fortfarande mina egna script. Än så länge ser de dock ut att fungera. Här kan ni läsa mer om min målsättning med de nya slavscripten, http://www.autostock.se/vbulletin/sh...&postcount=972
Koden i inlägg 996 är inte aktuell längre. Ska jag lägga ut min nya kod? Vore ju toppen om fler testar och utvärderar dem. Rikard, det vore även bra om någon av proffsen kan kika på min kod och se om den ser korrekt ut.
Comment
-
Här kommer mina egenhändigt byggda Fusion slavscript. Utöver de fyra slavscripten har jag även behövt bygga om de fyra antalscripten. Notera att det kanske inte är den allra mest tjusiga kodningen, men den verkar fungera. OBS, jag tar inget ansvar för kodens funktion och om ni väljer att använda denna kod så gör ni det på egen risk!
Mina mål med slavscripten för följande:
1. Jag vill styra positionens gearing genom att sätta ett värde (målgearingen) i en Scrpar.
2. Jag vill kunna göra manuella justeringar i positionen utan att riskera att modellen återställer positionen automatiskt.
3. Då den sammanlagda signalen ändras, dvs. värdet i cell 857 ändras, ska hela innehavet "resettas" till ny beräknad position (baserad på portföljvärde och målgearing)
sl) C: Fusion Bull Köp
{ C: Fusion Bull Köp 2016-07-08 }
i1(
lt1=LastTrade(b,d)
MinSedanTrans=mult(sub(date(),lt1),1440)
TidSpärr=gt(MinSedanTrans,0.3)
trade_time=le(mult(1440,sub(market(c),frac(date()))),5.5)
öppet=ge(mult(1440,sub(market(c),frac(date()))),4)
innehav=portfolio(v)
setgvarif(innehav,861,1)
värde=mult(innehav,b)
setgvarif(värde,867,1)
{ Om kl är mindre än 17.20: skriv innehav till 859 och 860, samt nollställ ändringsindikator }
reset=gt(mult(1440,sub(market(c),frac(date()))),10)
setgvarif(getgvar(857),858,reset)
setgvarif(innehav,859,reset)
setgvarif(innehav,860,reset)
{ Läs in signal och kontrollera om ändring }
signal=div(getgvar(857),2)
lång=gt(getgvar(857),0)
ändring=and(and(not(eqv(getgvar(857),getgvar(858))),lång),trade_time)
{ Beräkna målantal }
index=cmpref(c,0,A)
målgearing=scrpar(29)
gearinginstrument=div(index,s)
andel1=div(målgearing,gearinginstrument)
andel2=if(gt(andel1,0.90),0.90,andel1)
kapital=add(add(cash(t),getgvar(867)),getgvar(868))
antalmax=div(mult(andel2,kapital),s)
målantal=int(mult(if(gt(signal,0),signal,0),antalmax))
{ Skriv målantal till cell 859, ska endast göras en en gång }
setgvarif(målantal,859,and(and(ändring,trade_time),eqv(getgvar(859),getgvar(860))))
{ Har målantalet uppnåtts så ska triggern stängas av }
setgvarif(getgvar(857),858,and(and(and(ändring,trade_time),not(eqv(getgvar(859),getgvar(860)))),eqv(innehav,getgvar(859))))
samma_dag=eqv(int(date()),int(d))
IngetMotsattInnehav=eqv(getgvar(865),0)
buy1=and(ändring,not(eqv(getgvar(859),getgvar(860))))
buy2=and(buy1,lt(innehav,getgvar(859)))
buy3=and(buy2,IngetMotsattInnehav)
buy4=and(and(and(and(buy3,samma_dag),trade_time),TidSpärr),öppet)
mult(buy4,10)
)
{@A(0,OMX Stock )}
==================
sl) C: Fusion Bull Sälj
{ C: Fusion Bull Sälj 2016-07-08 }
i1(
lt1=LastTrade(s,d)
MinSedanTrans=mult(sub(date(),lt1),1440)
TidSpärr=gt(MinSedanTrans,0.3)
trade_time=le(mult(1440,sub(market(c),frac(date()))),6)
öppet=ge(mult(1440,sub(market(c),frac(date()))),4)
innehav=portfolio(v)
setgvarif(innehav,861,1)
värde=mult(innehav,b)
setgvarif(värde,867,1)
{ Om kl är mindre än 17.20: skriv innehav till 859 och 860, samt nollställ ändringsindikator }
reset=gt(mult(1440,sub(market(c),frac(date()))),10)
setgvarif(getgvar(857),858,reset)
setgvarif(innehav,859,reset)
setgvarif(innehav,860,reset)
{ Läs in signal och kontrollera om ändring }
signal=div(getgvar(857),2)
ändring=and(not(eqv(getgvar(857),getgvar(858))),trade_time)
{ Beräkna målantal }
index=cmpref(c,0,A)
målgearing=scrpar(29)
gearinginstrument=div(index,s)
andel1=div(målgearing,gearinginstrument)
andel2=if(gt(andel1,0.90),0.90,andel1)
kapital=add(add(cash(t),getgvar(867)),getgvar(868))
antalmax=div(mult(andel2,kapital),s)
målantal=int(mult(if(gt(signal,0),signal,0),antalmax))
{ Skriv målantal till cell 859, ska endast göras en en gång }
setgvarif(målantal,859,and(and(ändring,trade_time),eqv(getgvar(859),getgvar(860))))
{ Har målantalet uppnåtts så ska triggern stängas av }
setgvarif(getgvar(857),858,and(and(and(ändring,trade_time),not(eqv(getgvar(859),getgvar(860)))),eqv(innehav,getgvar(859))))
samma_dag=eqv(int(date()),int(d))
sell1=and(ändring,not(eqv(getgvar(859),getgvar(860))))
sell2=and(sell1,gt(innehav,getgvar(859)))
sell3=and(and(and(and(sell2,samma_dag),trade_time),TidSpärr),öppet)
mult(sell3,10)
)
{@A(0,OMX Stock )}
==================
sl) C: Fusion Bear Köp
{ C: Fusion Bear Köp 2016-07-08 }
i1(
lt1=LastTrade(b,d)
MinSedanTrans=mult(sub(date(),lt1),1440)
TidSpärr=gt(MinSedanTrans,0.3)
trade_time=le(mult(1440,sub(market(c),frac(date()))),5.5)
öppet=ge(mult(1440,sub(market(c),frac(date()))),4)
innehav=portfolio(v)
setgvarif(innehav,865,1)
värde=mult(innehav,b)
setgvarif(värde,868,1)
{ Om kl är mindre än 17.20: skriv innehav till 863 och 864, samt nollställ ändringsindikator }
reset=gt(mult(1440,sub(market(c),frac(date()))),10)
setgvarif(getgvar(857),862,reset)
setgvarif(innehav,863,reset)
setgvarif(innehav,864,reset)
{ Läs in signal och kontrollera om ändring }
signal=div(getgvar(857),2)
kort=lt(getgvar(857),0)
ändring=and(and(not(eqv(getgvar(857),getgvar(862))),kort),trade_time)
{ Beräkna målantal }
index=cmpref(c,0,A)
målgearing=scrpar(29)
gearinginstrument=div(index,s)
andel1=div(målgearing,gearinginstrument)
andel2=if(gt(andel1,0.90),0.90,andel1)
kapital=add(add(cash(t),getgvar(867)),getgvar(868))
antalmax=div(mult(andel2,kapital),s)
målantal=int(mult(if(lt(signal,0),abs(signal),0),antalmax))
{ Skriv målantal till cell 863, ska endast göras en en gång }
setgvarif(målantal,863,and(and(ändring,trade_time),eqv(getgvar(863),getgvar(864))))
{ Har målantalet uppnåtts så ska triggern stängas av }
setgvarif(getgvar(857),862,and(and(and(ändring,trade_time),not(eqv(getgvar(863),getgvar(864)))),eqv(innehav,getgvar(863))))
samma_dag=eqv(int(date()),int(d))
IngetMotsattInnehav=eqv(getgvar(861),0)
buy1=and(ändring,not(eqv(getgvar(863),getgvar(864))))
buy2=and(buy1,lt(innehav,getgvar(863)))
buy3=and(buy2,IngetMotsattInnehav)
buy4=and(and(and(and(buy3,samma_dag),trade_time),TidSpärr),öppet)
mult(buy4,10)
)
{@A(0,OMX Stock )}
==================
sl) C: Fusion Bear Sälj
{ C: Fusion Bear Sälj 2016-07-08 }
i1(
lt1=LastTrade(s,d)
MinSedanTrans=mult(sub(date(),lt1),1440)
TidSpärr=gt(MinSedanTrans,0.3)
trade_time=le(mult(1440,sub(market(c),frac(date()))),6)
öppet=ge(mult(1440,sub(market(c),frac(date()))),4)
innehav=portfolio(v)
setgvarif(innehav,865,1)
värde=mult(innehav,b)
setgvarif(värde,868,1)
{ Om kl är mindre än 17.20: skriv innehav till 863 och 864, samt nollställ ändringsindikator }
reset=gt(mult(1440,sub(market(c),frac(date()))),10)
setgvarif(getgvar(857),862,reset)
setgvarif(innehav,863,reset)
setgvarif(innehav,864,reset)
{ Läs in signal och kontrollera om ändring }
signal=div(getgvar(857),2)
ändring=and(not(eqv(getgvar(857),getgvar(862))),trade_time)
{ Beräkna målantal }
index=cmpref(c,0,A)
målgearing=scrpar(29)
gearinginstrument=div(index,s)
andel1=div(målgearing,gearinginstrument)
andel2=if(gt(andel1,0.90),0.90,andel1)
kapital=add(add(cash(t),getgvar(867)),getgvar(868))
antalmax=div(mult(andel2,kapital),s)
målantal=int(mult(if(lt(signal,0),abs(signal),0),antalmax))
{ Skriv målantal till cell 863, ska endast göras en en gång }
setgvarif(målantal,863,and(and(ändring,trade_time),eqv(getgvar(863),getgvar(864))))
{ Har målantalet uppnåtts så ska triggern stängas av }
setgvarif(getgvar(857),862,and(and(and(ändring,trade_time),not(eqv(getgvar(863),getgvar(864)))),eqv(innehav,getgvar(863))))
samma_dag=eqv(int(date()),int(d))
sell1=and(ändring,not(eqv(getgvar(863),getgvar(864))))
sell2=and(sell1,gt(innehav,getgvar(863)))
sell3=and(and(and(and(sell2,samma_dag),trade_time),TidSpärr),öppet)
mult(sell3,10)
)
{@A(0,OMX Stock )}
==================
va) C: Fusion Bull Köp-antal
{ C: Fusion Bull Köp-antal 2016-06-15 }
i1(
målantal=getgvar(859)
innehav=portfolio(v)
övermål=ge(innehav,målantal)
slutantal1=If(övermål,0,sub(målantal,innehav))
add(0,slutantal1)
)
==================
va) C: Fusion Bull Sälj-antal
{ C: Fusion Bull Sälj-antal 2016-06-15 }
i1(
målantal=getgvar(859)
innehav=portfolio(v)
övermål=ge(innehav,målantal)
slutantal1=If(övermål,sub(innehav,målantal),0)
add(0,slutantal1)
)
==================
va) C: Fusion Bear Köp-antal
{ C: Fusion Bear Köp-antal 2016-06-15 }
i1(
målantal=getgvar(863)
innehav=portfolio(v)
övermål=ge(innehav,målantal)
slutantal1=If(övermål,0,sub(målantal,innehav))
add(0,slutantal1)
)
==================
va) C: Fusion Bear Sälj-antal
{ C: Fusion Bear Sälj-antal 2016-06-15 }
i1(
målantal=getgvar(863)
innehav=portfolio(v)
övermål=ge(innehav,målantal)
slutantal1=If(övermål,sub(innehav,målantal),0)
add(0,slutantal1)
)
==================
Sammanställning över globala celler som används:
857 signal från master-scripten
858 föregående position i Bull-scripten
859 beräknat målantal Bull
860 tidigare innehav Bull
861 momentant innehav Bull
862 föregående position i Bear-scripten
863 beräknat målantal Bear
864 tidigare innehav Bear
865 momentant innehav Bear
867 marknadsvärde Bull-innehav (baserat på köp-kurs)
868 marknadsvärde Bear-innehav (baserat på köp-kurs)Last edited by Christer; 2016-09-26, 11:35.
Comment
-
Jag har två fiktiva konton som köpte OMX-index kl 17:22. Det ena kontot har dessutom ett annat innehav. Men någon riktig Fusion-position blev det inte. Ska jag ta bort ett fiktivt konto, och i så fall vilket? Eller måste jag ta bort alla kopplingar och fiktiva konton och börja om från början? (Jag har inte använt Fusion på ett tag och minns inte vilket av de två kontona jag använde.)
Comment
Comment