Allmänt meddelande

Collapse
No announcement yet.

Försvunnen köpsignal

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

  • Försvunnen köpsignal

    Jag har noterat att köpsignaler ibland försvinner. Just idag sitter jag hemma och har då möjlighet att följa hur programmet jobbar. För sådär en halvtimme sedan fick jag en grön fin köpsignal på skärmen. Men nu är den borta.

    Jag läser in data var femte minut, medan däremot scriptet går på 30-minutersdata.

    Hur kommer det här sig?

    Konsekvensen blir ju att mina ordermodeller handlar på signaler som inte längre finns kvar när jag kommer hem och tittar.
    Ingemar Bergdahl

  • #2
    Villkoren är väl inte uppfyllda när väl slutkursen för sista perioden kommit.

    Var 5:e minut blir det ju en ny slutkurs i en 30-minuters period.

    Den är ju live som man säger.

    Samma sak gäller en dagskursstapel som lever hela dagen och förändras vad gäller close och högst och lägst osv.

    Högst naturligt fenomen beroende på metoderna och villkoren som används.

    Comment


    • #3
      Lasse, kan man på nåt sätt simulera fram när detta skett? Det skulle ju vara bra när man kör mot vinsttesten bakåt.
      Mvh Emil

      Comment


      • #4
        Delvis kan man säga.

        Det är därför jag tryckt på i ett antal sammanhang bl.a på ScriptGalleriet att man testar nivå med Low eller High som utgångspunkt istället för Close när man skall testa under eller över en nivå.

        Det finns ju idag en animerafunktion gentemot dagskurserna som du vet. Och det man kan tänkas sig är att man möjliggör animering även i annan upplösning per intraday.

        Men det ligger längre fram i tiden såsom juletid eller så.

        Comment


        • #5
          Finns det då något sätt att parera för detta?

          Min köpmodell ser ut så här:

          {Kolla om oscillatorn är under noll}

          minus:=LT(Osc(C,5,20,s),0)
          ag11:=Macd(B)

          i60(AND(ag11,minus))

          Med den seghet som det innebär att vänta en timme på signalen så vet jag att jag får bra signaler (sällan men bra). Så egentligen vill jag inte att Friendly ska hitta på något förrän den fått in alla inläsningarna som ingår i stapeln.

          Det är ju inget vidare om den får in ett tick (fem minuter) och tycker att det är en höjdarköpsignal. Jag vill att den väntar elva tick till, dvs en timme, innan signalen kommer.

          Jag vore glad om jag kunde få en beskrivning av hur Friendly egentligen jobbar när den sätter ihop staplarna. Går den framifrån och buntar ihop dem 12 i taget (12 x 5 minuter = i60) eller hur går det till?

          Och vad kan man göra? Kan jag skriva om scriptet så att den kollar om föregående stapel uppfyllde villkoren?

          Kommentar
          En och annan här kanske höjer på ögonbrynet. Jag är alltså en kille som inte vill ha realtid och sekundsnabba inläsningar, eftersom jag vet att programmet tjänar pengar åt mig när det går lite lugnare. Sug på den ni!
          Ingemar Bergdahl

          Comment


          • #6
            Per intraday ger konstanten 'D' tidstämpeln för innevarande periods början.

            Men anropet DATE() ger systemtiden just nu.


            Mult(SUB(DATE(),D),1440)

            ger alltså antalet minuter in på stapeln man är.

            Bara att använda i kombination med annat.

            OBS! Allt med DATE() ger systemtid just nu och kan ej backtestas.

            Comment


            • #7
              Det där verkar vara vad jag vill ha. Vad jag borde se till är helt enkelt något ungefär så här:


              { Kolla om oscillatorn är under noll}

              minus:=LT(Osc(C,5,20,s),0)
              ag11:=Macd(B)
              kopsignal:=i60(AND(ag11,minus))

              { Kolla om stapeln är minst 50 minuter gammal }

              tidistapel:==Mult(SUB(DATE(),D),1440)
              stapelklar:=GT(tidistapel, 50)

              { Sätt ihop köpsignalen av de två villkoren}

              AND(kopsignal, stapelklar)


              Har jag förstått och gjort rätt?
              Ingemar Bergdahl

              Comment


              • #8
                Ja, det ser riktigt ut, förutom att intradayprefix ligger kvar på fel ställe och ett extra likhetstecken i 'tidistapel' då. Men det var väl bara tjocka fingrar.

                Så intradayprefix enbart sist så är det nog OK. Och ta bort i60() högre upp.

                Comment


                • #9
                  Tack för svaret, Lasse.

                  Det var inte bara lite tjocka fingrar där, utan kanske en liten tankevurpa också. Så här borde det ha varit om jag förstår dig rätt:

                  { Kolla om oscillatorn är under noll}

                  minus:=LT(Osc(C,5,20,s),0)
                  ag11:=Macd(B)
                  kopsignal:=AND(ag11,minus)

                  { Kolla om stapeln är minst 50 minuter gammal }

                  tidistapel:=Mult(SUB(DATE(),D),1440)
                  stapelklar:=GT(tidistapel, 50)

                  { Sätt ihop köpsignalen av de två villkoren}

                  i60(AND(kopsignal, stapelklar))


                  Nya frågor
                  Det här ger lite nya frågor. "Vet" Friendly hur långa mina staplar är? Jag vill ju att variabeln tidistapel ska mäta en 60-minutersstapel, men i60 står ju först på sista raden. Jag kanske är för påverkad av traditionella programmeringsspråk som är sekventiella, men jag får inte ihop det riktigt.
                  Ingemar Bergdahl

                  Comment


                  • #10
                    Scriptet ser klockrent ut.

                    Kompilatorn letar först efter upplösningen kan man säga. Maskar bort den koden och fortsätter med egentliga scriptet så det blir körbart.

                    I verkligheten så blir det en enda rad på slutet som kompileras. Alla tilldelade namn blir ju sök och ersätt rakt igenom hela textmassan först.

                    Lite kuriosa
                    -------------
                    Det är först när man använder sig av minnesreferenser som koden består av flera rader. När man slår i taket med 10 parentesenivåer så kan man ju i ActiveTrader bara skicka den koden till minnet och fortsätta scriptet. 32 st sådana minnesreferenser om 10 nivåers djup kan man skriva.

                    Comment


                    • #11
                      Kontrollskript?

                      I stället för att modifiera det ursprungliga skriptet som beskrivits ovan kan man väl använda ett kontrollskript som ansluts till en sekvens som triggas av det ursprungliga skriptet? Kontrollskriptet kan se ut så här:

                      tid:=50
                      v1:=gt(mult(sub(date(),d),1440),tid)
                      i1(v1)

                      Comment


                      • #12
                        Det går utmärkt att göra så med detta scriptet som kontrollscript istället.

                        Comment


                        • #13
                          Fast jag använder scriptet för att trigga SMS-larm, inte i första hand för att trigga ordermodeller. Så för mig personligen passar det mycket bättre att lägga in koden direkt i scriptet, istället för att göra ett extra kontrollscript.

                          Jag kör inte automatik på ordermodellerna längre, av den enkla anledningen att man ibland får säljsignaler när börsen rasar ner 20 punkter på morgonen. Är man inte redan ur då så säljer man antagligen på botten. I sådana fall är det bättre att inte göra något alternativt avvakta. Så SMS-larm och en manuell bedömning är i många fall att föredra framför automatik, tycker jag.
                          Ingemar Bergdahl

                          Comment


                          • #14
                            En liten nackdel med att bygga in tidsfördröjningen i skriptet med hjälp av date() är att det tydligen inte går att backtesta ett sådant skript. Du måste därför använda två skript, ett utan tidsfördröjning för backtestning och ett likadant fast med tidsfördröjning som ger signaler "live". Om du ändrar det ena måste du ändra det andra på samma sätt etc.

                            Går det förresten inte att få enbart GSM-larm från ordermodeller om man använder alternativet "larm + simulera orderläggning"? Jag har inte själv använt GSM-larm, så jag är osäker.

                            Comment


                            • #15
                              SMS-larm, menade jag.

                              Comment

                              Working...
                              X