Allmänt meddelande

Collapse
No announcement yet.

Problem med globala variabler

Collapse
X
 
  • Filter
  • Klockan
  • Show
Clear All
new posts

  • Problem med globala variabler

    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????
    Last edited by niclas_gbg; 2010-04-06, 19:17.
    NiclasGBG

  • #2
    Jag får gräva ner mig i detta när jag är tillbaka på fredag. Är bortrest den här veckan, så jag hinner bara kolla allt som hastigast. Det ser aningen komplicerat ut!

    Comment


    • #3
      Problemen består...

      Jag ändrade från D till Date...

      Då gör den bara 1 felaktig affär åt gången...

      Varje dag ger systemet 1 köp Bull resp köp Bear ungefär 1 halvtimme emellan fast bakomvarande triggerscript inte signalerat... Tror att de är någon globalt data som havererar allt...

      Finns det några globala data som inte får användas????

      Jag vet genom forumet att du Rickard prenumererar på vissa globaler genom ditt system som man kan leasa månad för månad, men finns även de reserverade för oss som tar den extremt låååånga omvägen för att göra ett eget system?
      NiclasGBG

      Comment


      • #4
        Vilka variabler använder du? Hur högt ligger den högsta?

        Comment


        • #5
          Jag använder i princip alla

          Globala data: Hela arrayen med båda element...Alltså 0 - 899 + datumdelen...

          Jag vill bara säkerställa att inget yttre påverkar och om Ni abbonerar på vissa globala data så kan jag programmera runt dessa nummer...

          Beträffande lokala data: 0,1,2,3 går dessa att använda hur som helst?
          Eller kan dessa "krocka" med någon annan funktion, har för mig att jag läste något om ordertransaktioner som sparas i dessa lokala data?

          Jag använder bl.a. lokal 3 för triggerscript i ordermodellen (se översta inlägget i denna tråd)... Kan även detta vara en felkälla?
          NiclasGBG

          Comment


          • #6
            Vi använder endast cell 20 och 21 till Raptor, annars inget. Och det gäller bara de som kör Raptor.

            Cell 0 och 1 används av Analysbänken så dessa bör man inte använda till annat. Lokala celler har bara livslängd inom scriptkörningscykeln så de skiljer sig från de globala som skrivs ner på disk.

            Comment


            • #7
              Cell 0 och 1

              Cellerna för analysbänken var dessa lokala eller globala?
              NiclasGBG

              Comment


              • #8
                De är lokala.

                Comment

                Working...
                X