Mitt script enligt tidigare diskussioner för hantering av egna positioner i Fusion och allokering av Fusion i en depå. Grundupplägget är att det går att sätta modellens exponering/andel av hela depåvärdet. Dessutom går det att ändra önskad hävstång oberoende av hävstången för minifuture som är kopplad. Om inte minifuture handlas eller att man vill använda den inbyggda hävstången sätts värdet till noll och endast exponering används.
Det finns två sätt att hantera antalet. Detta för att det ska bli enkelt att justera allokeringen i depån med flera strategier och/eller innehav. Givetvis går det att köra enbart Fusion. Samtidigt går det att sätta hävstången efter strategin och/eller vad man tycker är lämpligt för tillfället.
Egna positioner kan tas tills en ny signal genereras av indexmodellen då den handlar till målantalet enligt riktiga signalen. Vill man samtidigt som egen position tas även tilta mot long eller short går det att göra genom att ändra sidans hävstång eller exponering mot hela depån.
En global cell används. En position som eventuellt finns i instrumentet för Fusion inkluderar över- eller undervärde jämfört med senast ställda kurs. Andra positioner än Fusion kan hållas. Dock uppdateras marknadsvärdet endast för instrument kopplade till Fusion. Även mina antalscript har justerats för ändringarna.
Motsvarande script för Bull nedan finns för Bear.
BULL KÖP
======
{ handelstider, transtider, mm }
SenasteTrans=if(gt(LastTrade(b,d),lastTrade(s,d)),lasttrade(b,d),lasttrade(s,d))
MinSedanTrans=mult(sub(date(),senasteTrans),1440)
TidSpärr=gt(MinSedanTrans,0.2)
trade_time=le(mult(1440,sub(market(c),frac(date()))),5.5)
öppet=ge(mult(1440,sub(market(c),frac(date()))),4)
spreadOK=and(gt(s,0),gt(b,0))
släpp_order=and(and(and(TidSpärr,trade_time),öppet),spreadOK)
{ Läs in signal och kontrollera om ändring }
hämtaSignal=div(getGvar(857),2)
regSignal=div(GetGvar(858),2)
köpSignal=and(and(and(gt(hämtaSignal,regSignal),ge(regSignal,0)),gt(hämtaSignal,0)),släpp_order)
{ Beräkna målantal }
index=cmpref(c,0,A)
andelportfölj=scrpar(30)
andelLong=if(or(gt(andelportfölj,1),le(andelportfölj,0)),1,andelportfölj)
posFus=mult(sub(b,c),portfolio(v))
kapital=mult(add(sub(add(cash(t),cash(a)),cash(u)),posFus),andelLong)
målgearing=scrpar(29)
gearinginstrument=div(index,s)
justGearing1=div(målgearing,gearinginstrument)
justGearing2=if(or(le(målgearing,0),gt(justGearing1,1)),1,justGearing1)
antalmax=div(mult(justGearing2,kapital),s)
antalposition=int(add(mult(if(gt(hämtaSignal,0),hämtaSignal,0),antalmax),0.5))
överskrida=gt(mult(sub(antalposition,portfolio(v)),mult(s,1.0025)),cash(t))
målantal=if(överskrida,add(portfolio(v),int(div(cash(t),mult(s,1.0025)))),antalposition)
{ ordervillkor, skrivning, exekvering}
order_klar=and(köpSignal,ge(portfolio(v),mult(målantal,0.95)))
SetGvarIf(mult(hämtaSignal,2),858,order_klar)
and(and(and(köpSignal,lt(portfolio(v),målantal)),not(order_klar)),gt(cash(t),0))
{@A(0,OMX Stock )}
BULL SÄLJ
=======
{ handelstider mm }
SenasteTrans=if(gt(LastTrade(s,d),LastTrade(b,d)),lasttrade(s,d),lasttrade(b,d))
MinSedanTrans=mult(sub(date(),senasteTrans),1440)
TidSpärr=gt(MinSedanTrans,0.2)
trade_time=le(mult(1440,sub(market(c),frac(date()))),5.5)
öppet=ge(mult(1440,sub(market(c),frac(date()))),4)
spreadOK=and(gt(s,0),gt(b,0))
släpp_order=and(and(and(TidSpärr,trade_time),öppet),spreadOK)
{ Läs in signal och kontrollera om ändring }
regSignal=div(GetGvar(858),2)
hämtaSignal=div(GetGvar(857),2)
målSignal=if(lt(hämtaSignal,0),0,hämtaSignal)
säljSignal=and(and(lt(målSignal,regSignal),gt(regSignal,0)),släpp_order)
{ Beräkna målantal }
index=cmpref(c,0,A)
andelportfölj=scrpar(30)
andelLong=if(or(gt(andelportfölj,1),le(andelportfölj,0)),1,andelportfölj)
posFus=mult(sub(s,c),portfolio(v))
kapital=mult(add(sub(add(cash(t),cash(a)),cash(u)),posFus),andelLong)
målgearing=scrpar(29)
gearinginstrument=div(index,s)
justGearing1=div(målgearing,gearinginstrument)
justGearing2=if(or(le(målgearing,0),gt(justGearing1,1)),1,justGearing1)
antalmax=div(mult(justGearing2,kapital),s)
målantal=int(add(mult(if(gt(målSignal,0),målSignal,0),antalmax),0.5))
{ ordervillkor, skrivning och exekvering}
order_klar=and(säljSignal,le(portfolio(v),if(eqv(målantal,0),0,mult(målantal,1.05))))
SetGvarIf(mult(målSignal,2),858,order_klar)
and(and(SäljSignal,gt(portfolio(v),målantal)),not(order_klar))
{@A(0,OMX Stock )}
Det finns två sätt att hantera antalet. Detta för att det ska bli enkelt att justera allokeringen i depån med flera strategier och/eller innehav. Givetvis går det att köra enbart Fusion. Samtidigt går det att sätta hävstången efter strategin och/eller vad man tycker är lämpligt för tillfället.
Egna positioner kan tas tills en ny signal genereras av indexmodellen då den handlar till målantalet enligt riktiga signalen. Vill man samtidigt som egen position tas även tilta mot long eller short går det att göra genom att ändra sidans hävstång eller exponering mot hela depån.
En global cell används. En position som eventuellt finns i instrumentet för Fusion inkluderar över- eller undervärde jämfört med senast ställda kurs. Andra positioner än Fusion kan hållas. Dock uppdateras marknadsvärdet endast för instrument kopplade till Fusion. Även mina antalscript har justerats för ändringarna.
Motsvarande script för Bull nedan finns för Bear.
BULL KÖP
======
{ handelstider, transtider, mm }
SenasteTrans=if(gt(LastTrade(b,d),lastTrade(s,d)),lasttrade(b,d),lasttrade(s,d))
MinSedanTrans=mult(sub(date(),senasteTrans),1440)
TidSpärr=gt(MinSedanTrans,0.2)
trade_time=le(mult(1440,sub(market(c),frac(date()))),5.5)
öppet=ge(mult(1440,sub(market(c),frac(date()))),4)
spreadOK=and(gt(s,0),gt(b,0))
släpp_order=and(and(and(TidSpärr,trade_time),öppet),spreadOK)
{ Läs in signal och kontrollera om ändring }
hämtaSignal=div(getGvar(857),2)
regSignal=div(GetGvar(858),2)
köpSignal=and(and(and(gt(hämtaSignal,regSignal),ge(regSignal,0)),gt(hämtaSignal,0)),släpp_order)
{ Beräkna målantal }
index=cmpref(c,0,A)
andelportfölj=scrpar(30)
andelLong=if(or(gt(andelportfölj,1),le(andelportfölj,0)),1,andelportfölj)
posFus=mult(sub(b,c),portfolio(v))
kapital=mult(add(sub(add(cash(t),cash(a)),cash(u)),posFus),andelLong)
målgearing=scrpar(29)
gearinginstrument=div(index,s)
justGearing1=div(målgearing,gearinginstrument)
justGearing2=if(or(le(målgearing,0),gt(justGearing1,1)),1,justGearing1)
antalmax=div(mult(justGearing2,kapital),s)
antalposition=int(add(mult(if(gt(hämtaSignal,0),hämtaSignal,0),antalmax),0.5))
överskrida=gt(mult(sub(antalposition,portfolio(v)),mult(s,1.0025)),cash(t))
målantal=if(överskrida,add(portfolio(v),int(div(cash(t),mult(s,1.0025)))),antalposition)
{ ordervillkor, skrivning, exekvering}
order_klar=and(köpSignal,ge(portfolio(v),mult(målantal,0.95)))
SetGvarIf(mult(hämtaSignal,2),858,order_klar)
and(and(and(köpSignal,lt(portfolio(v),målantal)),not(order_klar)),gt(cash(t),0))
{@A(0,OMX Stock )}
BULL SÄLJ
=======
{ handelstider mm }
SenasteTrans=if(gt(LastTrade(s,d),LastTrade(b,d)),lasttrade(s,d),lasttrade(b,d))
MinSedanTrans=mult(sub(date(),senasteTrans),1440)
TidSpärr=gt(MinSedanTrans,0.2)
trade_time=le(mult(1440,sub(market(c),frac(date()))),5.5)
öppet=ge(mult(1440,sub(market(c),frac(date()))),4)
spreadOK=and(gt(s,0),gt(b,0))
släpp_order=and(and(and(TidSpärr,trade_time),öppet),spreadOK)
{ Läs in signal och kontrollera om ändring }
regSignal=div(GetGvar(858),2)
hämtaSignal=div(GetGvar(857),2)
målSignal=if(lt(hämtaSignal,0),0,hämtaSignal)
säljSignal=and(and(lt(målSignal,regSignal),gt(regSignal,0)),släpp_order)
{ Beräkna målantal }
index=cmpref(c,0,A)
andelportfölj=scrpar(30)
andelLong=if(or(gt(andelportfölj,1),le(andelportfölj,0)),1,andelportfölj)
posFus=mult(sub(s,c),portfolio(v))
kapital=mult(add(sub(add(cash(t),cash(a)),cash(u)),posFus),andelLong)
målgearing=scrpar(29)
gearinginstrument=div(index,s)
justGearing1=div(målgearing,gearinginstrument)
justGearing2=if(or(le(målgearing,0),gt(justGearing1,1)),1,justGearing1)
antalmax=div(mult(justGearing2,kapital),s)
målantal=int(add(mult(if(gt(målSignal,0),målSignal,0),antalmax),0.5))
{ ordervillkor, skrivning och exekvering}
order_klar=and(säljSignal,le(portfolio(v),if(eqv(målantal,0),0,mult(målantal,1.05))))
SetGvarIf(mult(målSignal,2),858,order_klar)
and(and(SäljSignal,gt(portfolio(v),målantal)),not(order_klar))
{@A(0,OMX Stock )}
Comment