Efter diverse dagars test, felsökning och framförallt irritation så ber jag om lite hjälp...
Jag har ett antal script som kommunicerar med varandra genom globala variabler.
4 script ligger och snurrar på OMXS30.
4 script ligger och snurrar på Terminen.
Problemet med scripten på OMXS30 är att jag vill ha en 40 dagars vy på OMXS30 (för att samla in information sen 40 dagar bakåt).
- Ett problem är att datorn blir trög och visst det kan jag leva med...
- Ett annat problem är att varje gång diagrammet uppdateras (t.ex. vid inloggning på datorn) så börjar scripten från dag 1,
som är 40 dagar tillbaka. Under denna period fås flertalet köp- resp. säljsignaler.
* Detta korrigeras genom att jag använder följande funktion (argumenten för köp är att "RealLastPeriod" & "nBuyFlag" blir 1):
-------------------Del av script i OMXS30----------------------
PeriodTime=Int(Mult(frac(d),1400))
SystemTime=Int(Mult(frac(Date()),1400))
RealLastPeriod=If(Eqv(PeriodTime,SystemTime),1,0)
{----Här emellan kommer en massa irrelevant kod----}
nStoreB53X1=SetGvarIf(D,53,And(Eqv(RealLastPeriod,1),Eqv(nBuyFlag,1)),P)
nStoreB53X2=SetGvarIf(nOneX,53,And(Eqv(RealLastPeriod,1),Eqv(nBuyFlag,1)),P)
-------------------------------------------
Vid köpsignal ändras värdet på "Global 53" till "1".
Jag hanterar själva "nollandet" av globala variabler i ett annat script kopplat till Terminen (se nedan).
Nedan är 1 av de 4 scripten i Terminen och i princip är det samma script.
Informationen till de globala variablerna fås från scripten kopplade till OMXS30:
Global51=1 Köp lång/köp bull
Global52=1 Sälj lång/sälj bull
Global53=1 Köp kort/köp bear (sälj blir det igentligen ju)
Global54=1 Sälj lång/sälj bear (köp/täck position)
-------------------Exempelscript i TERMINEN för att gå kort----------------------
{++++Short Buy++++}
nZeroX:=0
nOneX:=1
{Tider start for nolla global}
StOverH:=09
StOverM:=01
StOverTime:=ADD(MULT(StOverH,60),StOverM)
EdOverH:=17
EdOverM:=26
EdOverTime:=ADD(MULT(EdOverH,60),EdOverM)
{Agera inte}
EndH:=16
EndM:=44
EndTime:=ADD(MULT(EndH,60),EndM)
{Nuvarande tid}
nNowTime:=MULT(frac(d),1440)
i1(
nLastTrade=If(LT(nNowTime,EndTime),nOneX,nZeroX)
nGet51=GetGvar(51)
nDate51=GetGvar(51,D)
nGet52=GetGvar(52)
nDate52=GetGvar(52,D)
nGet53=GetGvar(53)
nDate53=GetGvar(53,D)
nGet54=GetGvar(54)
nDate54=GetGvar(54,D)
{----Set Signals----}
nBullBuy=If(And(And(And(Eqv(getval(3),nZeroX),Eqv(getval(4),nZeroX)),Eqv(nGet51,nOneX)),Eqv(nLastTrade,nOneX)),nOneX,nZeroX)
nBearBuy=If(And(And(And(Eqv(getval(3),nZeroX),Eqv(getval(4),nZeroX)),Eqv(nGet53,nOneX)),Eqv(nLastTrade,nOneX)),nOneX,nZeroX)
nBullSell=If(Or(And(And(Eqv(getval(3),nOneX),Eqv(getval(4),nZeroX)),Eqv(nGet52,nOneX)),And(And(Eqv(getval(3),nOneX),Eqv(getval(4),nZeroX)),Eqv(nGet53, nOneX))),nOneX,nZeroX)
nBearSell=If(Or(And(And(Eqv(getval(4),nOneX),Eqv(getval(3),nZeroX)),Eqv(nGet54,nOneX)),And(And(Eqv(getval(4),nOneX),Eqv(getval(3),nZeroX)),Eqv(nGet51, nOneX))),nOneX,nZeroX)
{----Set signals to locals----}
nStore31=retval(if(Eqv(nBullBuy,nOneX),nOneX,getval(3)),3)
nStore32=retval(if(Eqv(nBearBuy,nOneX),nOneX,getval(4)),4)
nStore41=retval(if(Eqv(nBullSell,nOneX),nZeroX,getval(3)),3)
nStore42=retval(if(Eqv(nBearSell,nOneX),nZeroX,getval(4)),4)
{----Set globals to Zero----}
nOverTime=If(Or(GT(nNowTime,EdOverTime),LT(nNowTime,StOverTime)),nOneX,nZeroX)
nStore51=SetGvarIf(nZeroX,51,Eqv(nOverTime,nOneX))
nStore52=SetGvarIf(nZeroX,52,Eqv(nOverTime,nOneX))
nStore53=SetGvarIf(nZeroX,53,Eqv(nOverTime,nOneX))
nStore54=SetGvarIf(nZeroX,54,Eqv(nOverTime,nOneX))
{----Set locals to Zero----}
nZeroLoc3=retval(if(Eqv(nOverTime,nOneX),nZeroX,getval(3)),3)
nZeroLoc4=retval(if(Eqv(nOverTime,nOneX),nZeroX,getval(4)),4)
{Mult(nBullBuy,5)}
{Mult(nBullSell,5)}
{Mult(nBearSell,5)}
Mult(nBearBuy,5)
)
-------------------------------------------
Så här ser dagens skörd ut och det är ingen vacker läsning... Jag simulerar bara... Inga pengar förlorade
--------------------------
100406
09:11 ANALYS "sl) Termin Short Buy OMXS300D" kurs 1037.5000
09:11 ORDER "sl) Termin Short Buy OMXS300D" kurs 1037.5000
09:30 ANALYS "sl) Termin Long Buy OMXS300D" kurs 1038.5000
09:30 ORDER "sl) Termin Long Buy OMXS300D" kurs 1038.5000
09:48 ANALYS "sl) Termin Long Buy OMXS300D" kurs 1037.7500
09:52 ANALYS "sl) Termin Short Buy OMXS300D" kurs 1037.2500
10:11 ANALYS "sl) Termin Short Buy OMXS300D" kurs 1037.2500
10:15 ANALYS "sl) Termin Long Buy OMXS300D" kurs 1037.2500
10:55 ANALYS "sl) Termin Long Buy OMXS300D" kurs 1036.0000
11:19 ANALYS "sl) Termin Short Buy OMXS300D" kurs 1035.7500
13:23 ANALYS "sl) Termin Long Buy OMXS300D" kurs 1036.7500
13:29 ANALYS "sl) Termin Short Buy OMXS300D" kurs 1036.5000
13:42 ANALYS "sl) Termin Short Buy OMXS300D" kurs 1036.7500
15:57 ANALYS "sl) Termin Short Buy OMXS300D" kurs 1033.2500
-----------------------------
Till att börja med så köper den respektive går kort utan att scripten på OMXS30 signalerat detta... Detta är ofattbart...
Dessutom har så köper den flera gånger efter varandra trots att jag har vissa preventilmedel mot detta i scriptet ovan...
Enda sättet skulle vara att lokala variab. 3 resp. 4 blir noll och då måste tiden bli 09.00 eller 17.27...
Detta kan jag nog lösa genom att använda "Date()" i stället för "D" för nuvarande tid... Men det förklarar ändå inte att de globala variablerna blir "1" utan att signal fås...
1) Ser du något som är fel i scripten?
2) Används global 51, 52, 53, 54 till något eller finns det några globala variabler som inte får användas????
3) Finns det något annat sätt att kontrollera (förutom min tidsfunktion) att scriptet är på sista stapeln????
Jag har ett antal script som kommunicerar med varandra genom globala variabler.
4 script ligger och snurrar på OMXS30.
4 script ligger och snurrar på Terminen.
Problemet med scripten på OMXS30 är att jag vill ha en 40 dagars vy på OMXS30 (för att samla in information sen 40 dagar bakåt).
- Ett problem är att datorn blir trög och visst det kan jag leva med...
- Ett annat problem är att varje gång diagrammet uppdateras (t.ex. vid inloggning på datorn) så börjar scripten från dag 1,
som är 40 dagar tillbaka. Under denna period fås flertalet köp- resp. säljsignaler.
* Detta korrigeras genom att jag använder följande funktion (argumenten för köp är att "RealLastPeriod" & "nBuyFlag" blir 1):
-------------------Del av script i OMXS30----------------------
PeriodTime=Int(Mult(frac(d),1400))
SystemTime=Int(Mult(frac(Date()),1400))
RealLastPeriod=If(Eqv(PeriodTime,SystemTime),1,0)
{----Här emellan kommer en massa irrelevant kod----}
nStoreB53X1=SetGvarIf(D,53,And(Eqv(RealLastPeriod,1),Eqv(nBuyFlag,1)),P)
nStoreB53X2=SetGvarIf(nOneX,53,And(Eqv(RealLastPeriod,1),Eqv(nBuyFlag,1)),P)
-------------------------------------------
Vid köpsignal ändras värdet på "Global 53" till "1".
Jag hanterar själva "nollandet" av globala variabler i ett annat script kopplat till Terminen (se nedan).
Nedan är 1 av de 4 scripten i Terminen och i princip är det samma script.
Informationen till de globala variablerna fås från scripten kopplade till OMXS30:
Global51=1 Köp lång/köp bull
Global52=1 Sälj lång/sälj bull
Global53=1 Köp kort/köp bear (sälj blir det igentligen ju)
Global54=1 Sälj lång/sälj bear (köp/täck position)
-------------------Exempelscript i TERMINEN för att gå kort----------------------
{++++Short Buy++++}
nZeroX:=0
nOneX:=1
{Tider start for nolla global}
StOverH:=09
StOverM:=01
StOverTime:=ADD(MULT(StOverH,60),StOverM)
EdOverH:=17
EdOverM:=26
EdOverTime:=ADD(MULT(EdOverH,60),EdOverM)
{Agera inte}
EndH:=16
EndM:=44
EndTime:=ADD(MULT(EndH,60),EndM)
{Nuvarande tid}
nNowTime:=MULT(frac(d),1440)
i1(
nLastTrade=If(LT(nNowTime,EndTime),nOneX,nZeroX)
nGet51=GetGvar(51)
nDate51=GetGvar(51,D)
nGet52=GetGvar(52)
nDate52=GetGvar(52,D)
nGet53=GetGvar(53)
nDate53=GetGvar(53,D)
nGet54=GetGvar(54)
nDate54=GetGvar(54,D)
{----Set Signals----}
nBullBuy=If(And(And(And(Eqv(getval(3),nZeroX),Eqv(getval(4),nZeroX)),Eqv(nGet51,nOneX)),Eqv(nLastTrade,nOneX)),nOneX,nZeroX)
nBearBuy=If(And(And(And(Eqv(getval(3),nZeroX),Eqv(getval(4),nZeroX)),Eqv(nGet53,nOneX)),Eqv(nLastTrade,nOneX)),nOneX,nZeroX)
nBullSell=If(Or(And(And(Eqv(getval(3),nOneX),Eqv(getval(4),nZeroX)),Eqv(nGet52,nOneX)),And(And(Eqv(getval(3),nOneX),Eqv(getval(4),nZeroX)),Eqv(nGet53, nOneX))),nOneX,nZeroX)
nBearSell=If(Or(And(And(Eqv(getval(4),nOneX),Eqv(getval(3),nZeroX)),Eqv(nGet54,nOneX)),And(And(Eqv(getval(4),nOneX),Eqv(getval(3),nZeroX)),Eqv(nGet51, nOneX))),nOneX,nZeroX)
{----Set signals to locals----}
nStore31=retval(if(Eqv(nBullBuy,nOneX),nOneX,getval(3)),3)
nStore32=retval(if(Eqv(nBearBuy,nOneX),nOneX,getval(4)),4)
nStore41=retval(if(Eqv(nBullSell,nOneX),nZeroX,getval(3)),3)
nStore42=retval(if(Eqv(nBearSell,nOneX),nZeroX,getval(4)),4)
{----Set globals to Zero----}
nOverTime=If(Or(GT(nNowTime,EdOverTime),LT(nNowTime,StOverTime)),nOneX,nZeroX)
nStore51=SetGvarIf(nZeroX,51,Eqv(nOverTime,nOneX))
nStore52=SetGvarIf(nZeroX,52,Eqv(nOverTime,nOneX))
nStore53=SetGvarIf(nZeroX,53,Eqv(nOverTime,nOneX))
nStore54=SetGvarIf(nZeroX,54,Eqv(nOverTime,nOneX))
{----Set locals to Zero----}
nZeroLoc3=retval(if(Eqv(nOverTime,nOneX),nZeroX,getval(3)),3)
nZeroLoc4=retval(if(Eqv(nOverTime,nOneX),nZeroX,getval(4)),4)
{Mult(nBullBuy,5)}
{Mult(nBullSell,5)}
{Mult(nBearSell,5)}
Mult(nBearBuy,5)
)
-------------------------------------------
Så här ser dagens skörd ut och det är ingen vacker läsning... Jag simulerar bara... Inga pengar förlorade
--------------------------
100406
09:11 ANALYS "sl) Termin Short Buy OMXS300D" kurs 1037.5000
09:11 ORDER "sl) Termin Short Buy OMXS300D" kurs 1037.5000
09:30 ANALYS "sl) Termin Long Buy OMXS300D" kurs 1038.5000
09:30 ORDER "sl) Termin Long Buy OMXS300D" kurs 1038.5000
09:48 ANALYS "sl) Termin Long Buy OMXS300D" kurs 1037.7500
09:52 ANALYS "sl) Termin Short Buy OMXS300D" kurs 1037.2500
10:11 ANALYS "sl) Termin Short Buy OMXS300D" kurs 1037.2500
10:15 ANALYS "sl) Termin Long Buy OMXS300D" kurs 1037.2500
10:55 ANALYS "sl) Termin Long Buy OMXS300D" kurs 1036.0000
11:19 ANALYS "sl) Termin Short Buy OMXS300D" kurs 1035.7500
13:23 ANALYS "sl) Termin Long Buy OMXS300D" kurs 1036.7500
13:29 ANALYS "sl) Termin Short Buy OMXS300D" kurs 1036.5000
13:42 ANALYS "sl) Termin Short Buy OMXS300D" kurs 1036.7500
15:57 ANALYS "sl) Termin Short Buy OMXS300D" kurs 1033.2500
-----------------------------
Till att börja med så köper den respektive går kort utan att scripten på OMXS30 signalerat detta... Detta är ofattbart...
Dessutom har så köper den flera gånger efter varandra trots att jag har vissa preventilmedel mot detta i scriptet ovan...
Enda sättet skulle vara att lokala variab. 3 resp. 4 blir noll och då måste tiden bli 09.00 eller 17.27...
Detta kan jag nog lösa genom att använda "Date()" i stället för "D" för nuvarande tid... Men det förklarar ändå inte att de globala variablerna blir "1" utan att signal fås...
1) Ser du något som är fel i scripten?
2) Används global 51, 52, 53, 54 till något eller finns det några globala variabler som inte får användas????
3) Finns det något annat sätt att kontrollera (förutom min tidsfunktion) att scriptet är på sista stapeln????
Comment