Testade koden ovan rakt av men det gick tyvärr inte riktigt som tänkt, Senast_bet uppdaterades och ny_dag blev sant prick klockan 9, när handeln skulle öppna enligt kalendern. Men handeln öppnade inte förrän ca 30 sekunder senare. Går det att göra något åt tro?
Allmänt meddelande
Collapse
No announcement yet.
Order innan öppning
Collapse
X
-
Jag har tidigare haft liknande problem med modeller som kan handla direkt vid öppning. Då jag handlar terminen med index finns inte volym. Jag använder därför en cell för att kolla om feeden kommit i gång och det fungerar bra. Däremot blir det nog bökigt om många instrument handlas och många celler. Jag testade volym och det fungerar i simulering(exempel triggar en trade per dag och på illikvid aktie för att tydligt se).
i1(
test1=and(not(eqv(cmpref(v,0,a),cmpref(v,1,a))),gt(cmpref(v,0,a),0))
and(test1,gt(int(d),int(lasttrade(b,d))))
)
{@A(0,)}
Om det sedan fungerar live vet jag inte. Ett annat sätt kan vara att använda find i minutupplösning.
Edit:
Två andra sätt som fungerar i simulering.
i1(
SetGvarIf(date(),100,not(and(eqv(h,aref(c,1)),eqv(l,aref(c,1)))))
and(eqv(int(date()),int(GetGvar(100))),gt(int(d),int(lasttrade(b,d))))
)
i1(
test1=find(not(and(eqv(h,aref(c,1)),eqv(l,aref(c,1)))),520,d,1)
and(eqv(int(d),int(test1)),gt(int(d),int(lasttrade(b,d))))
)Last edited by Henric; 2024-07-28, 13:52.
Comment
-
Tack för förslagen!
Det första förslaget var en bra workaround om gårdagens volym alltid returnas både i cmpref(v,0,a) och cmpref(v,1,a) innan handeln öppnat. Ska börja med att testa den imorgon bitti.
Angående andra förslaget så verkar det också vara en smart lösning ifall både h och l alltid är 1 när det är stängt. Men jag förstod inte helt varför man behöver spara undan datumet för att jämföra senare. Finns det någon anledning till att man inte bara kan kolla så här direkt?
handel_oppnat=not(and(eqv(h,aref(c,1)),eqv(l,aref(c,1))))
Har lite att prova mig fram med nu, uppskattas!
Comment
-
Close i går kan avvika något mot sista insamlade kurs intradag i går. Eftersom att det inte finns luckor är det sista insamlade kurs som spiller över till nästa dag. Det är mot den man måste kolla. Problemet ska vara åtgärdat och jag vet inte om det nu är helt vattentätt att använda ditt sätt i handel_oppnat med dagskurser. Simulerar man längre tillbaka kan det definitivt bli fel.
SetGvarIf och find använder upplösning i intradag och om date() inte används vet man inte vilken dag villkoret senast var sant. Det kanske kan fungera att bara kolla villkoret och inte när det inträffade. Jag använder sedan tiden/datumet under hela dagen och det kan bli så att kursen inte ändrar sig under vissa perioder, särskilt med i1. För index mindre sannolikt.
Last edited by Henric; 2024-07-28, 22:40.
Comment
-
Du har helt rätt, jag provade att bara kolla på villkoret och då blev det förvisso sant när det öppnade men senare falskt igen under samma dag. Lösningen med att spara datumet då villkoret uppfyllts i en global cell verkar bra!
Det första förslaget ovan fick jag inte till riktigt, då både dagens och gårdagens kurser slog om samtidigt, vet inte om jag missförstod något. Men det behövs nog inte för mig då. Tack!
Comment
-
Bra att du har något som fungerar. Vill du inte använda en cell borde detta fungera med i1. Justera längd med upplösning. Har inget hänt under 15 min kan det vara stopp i feeden, handelstoppad eller allmänt ointressant.
eqv(int(if(hhv(not(and(eqv(h,aref(c,1)),eqv(l,aref(c,1)))),15),d,0)),int(const(d)))
Första förslaget ovan kanske fungerar om databasen samtidigt kollas mot eqv(int(date()),int(d)) ?
Comment
-
Ja, det tackar jag för. Är jättenöjd om jag redan har något som funkar, kan passa på att testa den också imorgon och se hur det faller ut vid öppningen.
Det första förslaget blev aldrig sant när jag testade, så då borde det inte bli det heller om man lägger till fler villkor, men det är möjligt att jag gjorde något fel eller missförstod den.
Comment
Comment