Allmänt meddelande

Collapse
No announcement yet.

Global variabel spökar

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

  • Global variabel spökar

    Hej,

    Har ett problem med global variabel som sätts när den inte
    har aktiverats. Det jag vill göra är att använda variabeln
    för att indikera att senaste kursen är högre än öppningskursen.

    När det är sant ska en etta sättas i variablen, annars ska en nolla
    sättas.

    Jag har identifierat att funktionen seq1 som sätter värdet i den globala
    variabeln verkar köras även när funktionerna later och mpa har värdet noll (falskt).

    Provar jag med att sätta seq1:=if(price,1,0) istället när jag testar
    både funktionen later och funktionen mpa så förblir dock den globala
    variabeln noll.

    Jag har en funktion som nollställer mellan testen så att jag vet att
    den globala variablen är noll när jag börjar testet.

    Har bifogat screenshots.

    Någon som vet varför detta inte fungerar ? Som jag förstår det
    så ska inte seq1 köras före later eller mpa, men det kanske är
    något med ordningen av hur man placerar respektive funktion
    i scriptet som påverkar ?

    /Robban

    Script för nollställning:

    setgvarif(0,110,1)


    Script för test:

    Testa funktionen mpa
    --------------------

    open:=997
    end:=add(open,2)
    minute:=int(mult(frac(date()),1440))
    price:=gt(c,o)
    time:=eqv(minute,open)
    time2:=eqv(minute,end)
    seq1:=if(price,setgvarif(1,110,1),setgvarif(0,110,1))
    later:=if(time2,seq1,0)
    mpa:=if(time,seq1,later)
    mpa

    Testa funktionen later
    ----------------------

    open:=997
    end:=add(open,2)
    minute:=int(mult(frac(date()),1440))
    price:=gt(c,o)
    seq1:=if(price,setgvarif(1,110,1),setgvarif(0,110,1))
    time2:=eqv(minute,end)
    later:=if(time2,seq1,0)
    later
    Attached Files
    Handelsstrategi

    Typ: Swing trading
    Marknad: Trendföljande
    Tidshorisont: 2 dagar och uppåt
    Entry: Baserad på candlestickformationer och bekräftad rörelse i ”min” riktning hos OMXSPI + instrumentet
    Indikatorer: Stochastics
    Profit targets: MA20/50/200, konsolideringsområden, trendlinjer, gap och Fibonaccinivåer
    Monitorering: Automatisk med larm när köp, profit target och sälj skett
    Exit: Baserat på candlestickformationer, initial stop, tidsstopp eller trailing stop baserat på 2*ATR(21)

  • #2
    Hmm, prova minnesreferenser istället. Sedan kan du skriva setgvarif lite enklare också:

    Sedan kan man också undra vad du ska ha en global variabel till i det här exemplet.
    Är det andra script som ska kunna läsa den? Om inte, kan du skippa raden med seq1 helt och ersätta seq1 med price i later och mpa.

    open:=997

    end=add(open,2)
    minute=int(mult(frac(date()),1440))
    price=gt(c,o)
    time=eqv(minute,open)
    time2=eqv(minute,end)
    seq1=setgvarif(price,110,1))
    later=if(time2,seq1,0)
    mpa=if(time,seq1,later)
    mpa

    Comment


    • #3
      Tanken är att köra detta scriptet kl 9.01 för att kolla om OMXSPI går upp eller ned.
      Det ska vara ett fristående script, så jag vill att det petar in 1 eller 0 i den globala
      variabeln.

      Efter det vill jag köra ett köpscript som triggas kl 9.02. Detta scriptet ska
      kopplas mot de fem aktier som jag bedömt har bäst potential för dagen.
      Det är tvådelat.
      Det första som triggas kl 9.02 kollar om priset öppnar maximalt 25% under
      skillnaden mellan maxvärdet hos gårdagens öppnings -och stängningskurs
      och absolutvärdet av öppnings -och stängningskurs för gårdagen.
      Så här menar jag matematiskt:
      if((C1>O1)AND(O>=(max(C1,O1)-0.25(abs(C1-O1)))))

      Om det gör det så är är det kl 9.03 dags för nästa del som gör samma koll
      som det fristående scriptet, dvs. om kursen går över öppningskursen så
      ska köpsignal triggas. Denna delen behöver veta om OMXSPI går i rätt riktning,
      så om globala variabeln är noll gör den inget, annars ska den köra på med sitt.

      Om inget är sant så görs hela proceduren om kl 9.30 och kl 9.31, förutom
      kollen på om priset är maximalt 25% under.

      Har inte provat minnesreferenser ännu. Är det retval och getval funktionerna ?
      Last edited by shadowtwister; 2014-01-15, 19:03. Anledning: Lade till mer beskriving
      Handelsstrategi

      Typ: Swing trading
      Marknad: Trendföljande
      Tidshorisont: 2 dagar och uppåt
      Entry: Baserad på candlestickformationer och bekräftad rörelse i ”min” riktning hos OMXSPI + instrumentet
      Indikatorer: Stochastics
      Profit targets: MA20/50/200, konsolideringsområden, trendlinjer, gap och Fibonaccinivåer
      Monitorering: Automatisk med larm när köp, profit target och sälj skett
      Exit: Baserat på candlestickformationer, initial stop, tidsstopp eller trailing stop baserat på 2*ATR(21)

      Comment


      • #4
        Det finns ett annat (enklare tror jag) sätt, med extra objekt i dagsupplösning:

        omx_open_idag=cmpref(o,0,a)
        omx_close_igår=cmpref(c,1,a)
        stiger=gt(omx_open_idag,omx_close_igår)


        {@A(0,SX All-Sha)}


        Det här är konstant hela dagen eftersom gårdagens stängningskurs och öppningskursen i dagsupplösning idag jämförs. Det behövs inga globala celler för att ta reda på det, så i princip tror jag du kan förenkla en del av "schemat" innan köp.

        Minnesreferenser är i praktiken bara att man tar bort kolon-tecken framför likhetstecken, samlar ihop alla minnesreferenser i en klunga sist i scriptet och innanför eventuellt intradayprefix. Det gör dels att scriptet exekveras snabbare, samt att du får plats med många fler parentesdjupsnivåer totalt sett.

        Tänk på att en minnesreferens alltid måste vara returvärde från en funktion:

        villkor=and(xx,yy)

        Det går inte att tilldela numeriska värden:

        FEL: värde=100

        RÄTT: värde=add(0,100)


        Lite mer om minnesreferenser:

        http://www.autostock.se/NATscriptref/Lektion9.html


        Comment


        • #5
          Ursprungligen postat av shadowtwister Visa inlägg
          Har inte provat minnesreferenser ännu. Är det retval och getval funktionerna ?
          Nej det är att du skriver "=" istället för":="
          I mitt inlägg la in "=" i ditt script så det ska egentligen bara vara att tuta och köra. Du får ju förstås redigera ditt andra skript på samma sätt.

          Comment


          • #6
            Tack Rikard.
            Jag har testat med och utan kolon, men däremot har jag nog inte tänkt
            på att minnesreferens ska tilldelas returvärde och inte numeriskt värde.
            Kan vara det som spökar.

            I scriptet så undrar jag om det funkar med

            omx_open_idag=cmpref(o,0,a)
            omx_latest=cmpref(c,0,a)
            stiger=gt(omx_latest,omx_open_idag)


            {@A(0,SX All-Sha)}

            då det jag vill kolla är om priset går upp sedan öppningen.
            Sedan vet jag inte om funkar att koppla det scriptet mot OMXSPI.
            Blir det inte att extra objektet då jämför mot sig själv ?
            Handelsstrategi

            Typ: Swing trading
            Marknad: Trendföljande
            Tidshorisont: 2 dagar och uppåt
            Entry: Baserad på candlestickformationer och bekräftad rörelse i ”min” riktning hos OMXSPI + instrumentet
            Indikatorer: Stochastics
            Profit targets: MA20/50/200, konsolideringsområden, trendlinjer, gap och Fibonaccinivåer
            Monitorering: Automatisk med larm när köp, profit target och sälj skett
            Exit: Baserat på candlestickformationer, initial stop, tidsstopp eller trailing stop baserat på 2*ATR(21)

            Comment


            • #7
              Ursprungligen postat av LillWicke Visa inlägg
              Nej det är att du skriver "=" istället för":="
              I mitt inlägg la in "=" i ditt script så det ska egentligen bara vara att tuta och köra. Du får ju förstås redigera ditt andra skript på samma sätt.

              Japp, jag ska köra med minnesreferenser. Tror det kan vara numeriskt värde
              för minnesreferens som kanske gör något dumt.
              Handelsstrategi

              Typ: Swing trading
              Marknad: Trendföljande
              Tidshorisont: 2 dagar och uppåt
              Entry: Baserad på candlestickformationer och bekräftad rörelse i ”min” riktning hos OMXSPI + instrumentet
              Indikatorer: Stochastics
              Profit targets: MA20/50/200, konsolideringsområden, trendlinjer, gap och Fibonaccinivåer
              Monitorering: Automatisk med larm när köp, profit target och sälj skett
              Exit: Baserat på candlestickformationer, initial stop, tidsstopp eller trailing stop baserat på 2*ATR(21)

              Comment


              • #8
                Ursprungligen postat av shadowtwister Visa inlägg

                I scriptet så undrar jag om det funkar med

                omx_open_idag=cmpref(o,0,a)
                omx_latest=cmpref(c,0,a)
                stiger=gt(omx_latest,omx_open_idag)


                {@A(0,SX All-Sha)}

                då det jag vill kolla är om priset går upp sedan öppningen.
                Sedan vet jag inte om funkar att koppla det scriptet mot OMXSPI.
                Blir det inte att extra objektet då jämför mot sig själv ?
                Sytaxmässigt fungerar det du skrivit. Du ska tänka på några saker bara.

                1) {@A(0,SX All-Sha)} betyder att du kör i dagsupplösning. Om du ska köra intraday tex 15min får du skriva {@A(15,SX All-Sha)}

                2) Eftersom du skrivit {@A(0,SX All-Sha)} hämtas enbart kursen för "SX All-Sha" in. Vill du istället att kursen från godtyckligt anslutet instrument ska hämtas in får du skriva: {@A(0,)} för dagsupplösning och {@A(15,)} för 15min upplösning.

                Comment


                • #9
                  Det går fint att jämföra C direkt med cmpref(o,0,a), eller cmpref(o,0,a) också eftersom C alltid uppdateras oavsett upplösning. Däremot blir det väl fel om man kör 15-minuters upplösning på extra objektet eftersom man då får nytt Open-värde varje kvart. Det var väl dagens öppningskurs som skulle testas?

                  Comment


                  • #10
                    Ja, det verkar kanske funka. Jag körde med detta:

                    i1(
                    omx_open_idag=cmpref(o,0,a)
                    omx_latest=cmpref(c,0,a)
                    stiger=gt(omx_latest,omx_open_idag)
                    )

                    {@A(1,SX All-Sha)}

                    och kryssade i intraday, visa i kursstaplar, och visa graf som flagga.
                    Då dök en liten fnutt upp (se screenshot) så den verkar trigga.

                    Frågan är ju då om den triggar varenda minut nu. Räcker ju med en gång.

                    Sedan är ju nästa utmaning att se till att köpscriptet förstår att något har hänt.
                    Attached Files
                    Handelsstrategi

                    Typ: Swing trading
                    Marknad: Trendföljande
                    Tidshorisont: 2 dagar och uppåt
                    Entry: Baserad på candlestickformationer och bekräftad rörelse i ”min” riktning hos OMXSPI + instrumentet
                    Indikatorer: Stochastics
                    Profit targets: MA20/50/200, konsolideringsområden, trendlinjer, gap och Fibonaccinivåer
                    Monitorering: Automatisk med larm när köp, profit target och sälj skett
                    Exit: Baserat på candlestickformationer, initial stop, tidsstopp eller trailing stop baserat på 2*ATR(21)

                    Comment


                    • #11
                      Det borde trigga varje minut, villkoret testar bara om Close är högre än Open för innevarande 1-minutsperiod. Jag skulle ändra till dagsupplösning i extra objektet för att testa senast betalt mot dagens öppning. I praktiken att man har en grön dagsstapel.

                      När du har villkoret klart är det bara att lägga in "stiger" som ett av villkoren i ditt köpscript.



                      Comment


                      • #12
                        Ok, jag testade med att kolla vid två tidpunkter efter öppningen:

                        minute:=int(mult(frac(date()),1440))

                        start=eqv(minute,920)
                        end=eqv(minute,add(start,2))

                        omx_open_idag=cmpref(o,0,a)
                        omx_latest=cmpref(c,0,a)

                        stiger1=and(start,gt(omx_latest,omx_open_idag))
                        stiger2=and(end,gt(omx_latest,omx_open_idag))
                        stiger3=or(stiger1,stiger2)
                        stiger3


                        {@A(0,SX All-Sha)}

                        Det skrivs dock inte ut något. Har provat med bara intraday,
                        dag+intraday och endast dag men inget visas.
                        Handelsstrategi

                        Typ: Swing trading
                        Marknad: Trendföljande
                        Tidshorisont: 2 dagar och uppåt
                        Entry: Baserad på candlestickformationer och bekräftad rörelse i ”min” riktning hos OMXSPI + instrumentet
                        Indikatorer: Stochastics
                        Profit targets: MA20/50/200, konsolideringsområden, trendlinjer, gap och Fibonaccinivåer
                        Monitorering: Automatisk med larm när köp, profit target och sälj skett
                        Exit: Baserat på candlestickformationer, initial stop, tidsstopp eller trailing stop baserat på 2*ATR(21)

                        Comment


                        • #13
                          Det går på systemtiden eftersom du använder Date(). Det visas i diagrammet endast under de båda minuterna du testar.

                          Comment


                          • #14
                            Ah, lurigt.
                            Det gäller att ha tungan rätt i mun.

                            Däremot så tror jag att jag knäckt nöten nu m.h.a. globala variabler.
                            Envishet verkar kunna betala sig, såvida det inte finns fler hemligheter
                            hos globala variabler.

                            Script:

                            { First check at open time + 1 minute. Change to 541 for 9.01 a.m. }
                            open:=1255

                            { Minutes in system time. Change to frac(d) for market time. }
                            minute:=int(mult(frac(date()),1440))

                            { Initialize global variable 110 to zero. }
                            setgvarif(0,110,1)

                            { Second check at open time + 30 minutes. Change to add(open,30) for 9.30 a.m. }
                            end=add(open,2)

                            { Check if current price is higher than opening price. }
                            price=gt(c,o)

                            { Check if we are at opening time + 1 minute. }
                            time1=eqv(minute,open)

                            { Check if we are at opening time + 30 minutes. }
                            time2=eqv(minute,end)

                            { If current price is higher than opening price and if we are at }
                            { opening time + 1 minute or at opening time + 30 minutes }
                            { then set global variable 110 to 1, else do nothing. }
                            seq1=setgvarif(price,110,or(time1,time2))

                            { Test the resulting value in global variable 110. Remove when testing is done. }
                            getgvar(110)

                            Tog med ett screenshot på testresultat i kalkylforskaren också.
                            Inringat i rött betyder tidpunkt där scriptet ska sätta den globala variabeln
                            till noll, och blått när det ska sätta den till ett.

                            Det jag behöver ändra på när det är live-kurser är då alltså frac(date) till frac(d)
                            när jag testar igen imorron.

                            Om ni ser något felaktigt eller förbättring som kan göras är det så
                            klart välkommet.

                            Tack för all hjälp så här långt !
                            Attached Files
                            Handelsstrategi

                            Typ: Swing trading
                            Marknad: Trendföljande
                            Tidshorisont: 2 dagar och uppåt
                            Entry: Baserad på candlestickformationer och bekräftad rörelse i ”min” riktning hos OMXSPI + instrumentet
                            Indikatorer: Stochastics
                            Profit targets: MA20/50/200, konsolideringsområden, trendlinjer, gap och Fibonaccinivåer
                            Monitorering: Automatisk med larm när köp, profit target och sälj skett
                            Exit: Baserat på candlestickformationer, initial stop, tidsstopp eller trailing stop baserat på 2*ATR(21)

                            Comment


                            • #15
                              Ursprungligen postat av shadowtwister Visa inlägg
                              Envishet verkar kunna betala sig, såvida det inte finns fler hemligheter
                              hos globala variabler. Om ni ser något felaktigt eller förbättring som kan göras är det så
                              klart välkommet.

                              Tack för all hjälp så här långt !
                              Något felaktigt ser jag inte, men en hemlighet till kan du få lära dig.
                              När du anväder setgevarif i scriptet på det här sättet behöver du inte ha något variabelnamn framför funktionen.

                              Dvs. du kan lika gärna skriva så här:
                              setgvarif(price,110,or(time1,time2))

                              Last edited by LillWicke; 2014-01-16, 22:09.

                              Comment

                              Working...
                              X