Date() Används för att ta reda på datum och klockslag enligt datorns systemklocka.
D är vad jag förstår tiden som är stämplad på instrumentets data.
Problem :
Jag har de senaste månaderna haft stora skillnader mellan simuleringar och skarpa körningar med mina daytradingscript.
Jag använder mig av globala variabler som jag räknar upp för antal avslut för strategin per dag samt ackumulerad dagsvinst.
Jag nollar dessa variabler kl 09.01 varje dag med kommandona
i1(
tid0=eqv(int(mult(frac(d),1440)),541)
SetGVarIf(0,100,tid0,T)
SetGVarIf(0,202,tid0,T)
...
Genom att addera en global variabel till c samt rita ut med draw upptäckte jag att variablerna inte alls var nollade.
Detta var senare på handelsdagen och jag ändrade då nollningen från 541 till 1032 dvs 17.12
Döm om min förvåning då scriptet aktiverades redan 17.10 !
Det verkar alltså som om d går 2 minuter före Date()
Detta betyder att min ordinarie nollning gjordes 08.59 innan scripten rullat igång dvs nollningen gjordes alltså inte.
Min datorklocka går perfekt och synkar med tiden som visas då instrumentet uppdateras i instrumentgruppfönstret.
Jag misstänker att det kommit in något trunkeringsfel eller liknande vid någon programuppdatering av Nat där man tar fram d. Alternativt har det alltid varit så men att mina strategier blivit mer komplexa så att allt inte hinner hoppa igång från 08.57 då allt startas upp till kl 08.59 då min nollning skulle skett med hänsyn till att d går två minuter före.
För att se felet skrev jag följande script:
i1(
skillnad01=add(sub(D,date()),c)
draw(skillnad01,4,rqb0)
Mult(0,25)
)
Resultatet blir då så här dvs felet adderar sig bakåt.
Jag har nu ändrat att nollningen skall göras 09.03 enligt
tid0=eqv(int(mult(frac(d),1440)),543)
I verkligheten kommer det att ske 09.01 vilket är vad jag önskar.
mvh
Bertil
Edit: Jag önskar ingen ändring om det skulle vara en bugg, för då måste jag gå igenom hundratals ordermodeller och justera varje rad d förekommer.
D är vad jag förstår tiden som är stämplad på instrumentets data.
Problem :
Jag har de senaste månaderna haft stora skillnader mellan simuleringar och skarpa körningar med mina daytradingscript.
Jag använder mig av globala variabler som jag räknar upp för antal avslut för strategin per dag samt ackumulerad dagsvinst.
Jag nollar dessa variabler kl 09.01 varje dag med kommandona
i1(
tid0=eqv(int(mult(frac(d),1440)),541)
SetGVarIf(0,100,tid0,T)
SetGVarIf(0,202,tid0,T)
...
Genom att addera en global variabel till c samt rita ut med draw upptäckte jag att variablerna inte alls var nollade.
Detta var senare på handelsdagen och jag ändrade då nollningen från 541 till 1032 dvs 17.12
Döm om min förvåning då scriptet aktiverades redan 17.10 !
Det verkar alltså som om d går 2 minuter före Date()
Detta betyder att min ordinarie nollning gjordes 08.59 innan scripten rullat igång dvs nollningen gjordes alltså inte.
Min datorklocka går perfekt och synkar med tiden som visas då instrumentet uppdateras i instrumentgruppfönstret.
Jag misstänker att det kommit in något trunkeringsfel eller liknande vid någon programuppdatering av Nat där man tar fram d. Alternativt har det alltid varit så men att mina strategier blivit mer komplexa så att allt inte hinner hoppa igång från 08.57 då allt startas upp till kl 08.59 då min nollning skulle skett med hänsyn till att d går två minuter före.
För att se felet skrev jag följande script:
i1(
skillnad01=add(sub(D,date()),c)
draw(skillnad01,4,rqb0)
Mult(0,25)
)
Resultatet blir då så här dvs felet adderar sig bakåt.
Jag har nu ändrat att nollningen skall göras 09.03 enligt
tid0=eqv(int(mult(frac(d),1440)),543)
I verkligheten kommer det att ske 09.01 vilket är vad jag önskar.
mvh
Bertil
Edit: Jag önskar ingen ändring om det skulle vara en bugg, för då måste jag gå igenom hundratals ordermodeller och justera varje rad d förekommer.
Comment