Kan ni legga upp uppdaterat script her?
Allmänt meddelande
Collapse
No announcement yet.
Pairtrading OMXS30 DAX intradag
Collapse
X
-
Det är enklare för ett instrument. För två instrument i par blir det lurigare. Jag tror celler och en egen dummy-modell är en väg att gå. Du kan förkasta denna. Om intresserad ge feed-back om det fungerar som du vill. Cell 105 måste vara sann för alla triggers i projektet. Eventuellt även skrivning till celler som påverkas av feeden.
Indexen måste vara på samma dag. Uppehåll feed används då något index ligger stilla under dagen. Den kan kopplas bort med värdet 0.
Vad gäller felstämpling i DAX vet jag ej exakt hur det påverkar.
{check feed två instrument}
{cell 100 kurs igår omx}
{cell 101 synkdatum omx}
{cell 102 kurs igår dax}
{cell 103 synkdatum dax}
{cell 104 registrera index som ligger platt}
{cell 105 trigger och skriv celler ok i andra script}
uppehåll_feed:=6 {ange krav på minuter som kursen legat stilla, 0= används ej villkoret }
år:=if(ge(yearnumber(),2011),0,5) {ändrad tid för stängningscallen omx }
i1(
OMX=eqv(468276556,crcid())
öppet=ge(mult(1440,sub(market(c),frac(date()))),add(5,år))
idag=and(eqv(int(d),int(date())),öppet)
SetGvarIf(c,100,and(gt(frac(date()),0.495),OMX))
nydagO=and(and(idag,not(eqv(c,GetGvar(100)))),gt(int(d),int(GetGvar(101))))
SetGvarIf(date(),101,and(OMX,nydagO))
SetGvarIf(c,102,and(gt(frac(date()),0.495),not(OMX)))
nydagD=and(and(idag,not(eqv(c,GetGvar(102)))),gt(int(d),int(GetGvar(103))))
SetGvarIf(date(),103,and(not(OMX),nydagD))
SetGvarIf(0,101,and(OMX,not(idag)))
SetGvarIf(0,103,and(not(OMX),not(idag)))
flatline=llv(eqv(c,aref(c,1)),uppehåll_feed)
SetGvarIf(0,104,and(eqv(crcid(),GetGvar(104)),not(flatline)))
SetGvarIf(crcid(),104,flatline)
lineOK=or(eqv(GetGvar(104),0),eqv(uppehåll_feed,0))
synk=and(eqv(int(date()),int(mn(GetGvar(101),GetGvar(103)))),lineOK)
SetGvarIf(synk,105,1)
and(0,0)
)Last edited by Henric; 2018-03-14, 12:53.
Comment
-
-
Henric,
Har nu testat ditt script i inlägg #78.
uppehåll_feed:=6, om man inte sätter 0 här så köper den på Daxen annandag pingst 2017-06-05 när Daxen var stängd och Omx var öppet.
Verkar funka väldigt bra inpådagen, inga köp görs före marknaderna är öppna från 2013-01-01 till idag. Man ser tydligt att mina script handlar olika tider inpådagen under första halvåret 2013 mot resten av tiden.
Tyvärr sjunker avkastningen när man inte kan handla när det är stängt.
Comment
-
Det är tre saker vi försöker uppnå i simuleringen.
1. Inte ta signaler när ena indexet är stängt halv eller heldag och de andra inte.
2. Att feeden är på rätt dag och inte spiller över på nästa dag.
3. Längre luckor i feeden som kan skapa ett konstgjort förhållande mellan indexen
Inpådagen fungerar oftast fint. Ju närmare dagens början ju större risk att feeden spiller över. Det räcker dock att det ena inte har kommit igång för att det kan bli fel.
2012-2013 vet vi att signaler kan bli konstiga om inte feeden flyttas längre in på dagen.
Jag körde mitt som ett köpscript och egen ordermodell. Triggade max en gång per dag för respektive index då synk är sant. Köper en enhet. Ordermodellen för sälj är alltid falskt. Får följande från 2017-05-31 till 2017-06-08. Verkar stämma med diagrammen. Har inte kollat någon kalender. Får gärna kolla.
31:a båda indexen
1:a båda indexen
2:a båda indexen
7:e båda indexen
8:e båda indexen
Varför det skiljer för dig vet jag ej. Jag ska testa mer ikväll eller imorgon.
Edit: Jag kan inte se vad du gör. Tänk på att inte skriva till celler som kan påverka signaler då synk inte är sant. Generellt om möjligt tycker jag att det är enklast att lägga all beräkning i ett av scripten och de andra bara exekverar.Last edited by Henric; 2018-03-15, 10:27.
Comment
-
Feeden för Dax kom inte igång förrän lunch en dag. Det gjorde att signal inte togs.
Därför byggde jag om så att feeden är ok så fort en ny kursändring kommer för dagen.
Det skulle gå att förenkla ytterligare tex jämföra absoluta tidskillnaden för d mellan indexen.
{check feed två instrument}
{cell 100 kurs igår omx}
{cell 101 synkdatum omx}
{cell 102 kurs igår dax}
{cell 103 synkdatum dax}
{cell 104 registrera index som ligger platt}
{cell 105 trigger och skriv celler ok i andra script}
uppehåll_feed:=6 {ange krav på minuter som kursen legat stilla, 0= används ej villkoret }
år:=if(ge(yearnumber(),2011),0,5) {ändrad tid för stängningscallen omx }
i1(
OMX=eqv(468276556,crcid())
öppet=ge(mult(1440,sub(market(c),frac(date()))),add(5,år))
idag=and(eqv(int(d),int(date())),öppet)
StreamO=and(and(not(eqv(c,aref(c,1))),idag),gt(int(date()),int(GetGvar(101))))
SetGvarIf(date(),101,and(StreamO,OMX))
StreamD=and(and(not(eqv(c,aref(c,1))),idag),gt(int(date()),int(GetGvar(103))))
SetGvarIf(date(),103,and(StreamD,not(OMX)))
SetGvarIf(0,101,and(OMX,not(öppet)))
SetGvarIf(0,103,and(not(OMX),not(öppet)))
flatline=llv(eqv(c,aref(c,1)),uppehåll_feed)
SetGvarIf(0,104,and(eqv(crcid(),GetGvar(104)),not(flatline)))
SetGvarIf(crcid(),104,flatline)
lineOK=or(eqv(GetGvar(104),0),eqv(uppehåll_feed,0))
synk=and(eqv(int(date()),int(mn(GetGvar(101),GetGvar(103)))),lineOK)
SetGvarIf(synk,105,1)
and(0,0)
)
Comment
Comment