Allmänt meddelande

Collapse
No announcement yet.

Felaktiga signaler vid simulering.

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

  • Felaktiga signaler vid simulering.

    Hej.
    Har ett störande problem. Jag kopplar ett script till ett chart som visar med flagga när det ger signal. Dessa flaggor är exakt de dagarna jag vill att scriptet ska ge signal.
    Däremot när jag simulerar så ger scriptet signal två dagar som det inte borde ge signal på dessutom missar det att ge signal på en dag. Har tagit bort och laddat om hela databasen. Har också gått igenom och sparat om samtliga script/ordermodeller som har med denna delen att göra men ändå funkar det inte.

    Svårt att förklara när man inte har helheten. Men det är verkligen ett skumt problem. Jag låter det scriptet enbart handla vid stängning men det ska inte vara problemet eftersom de två felaktiga signalerna ges vid dagar där felet har att göra med öppning på dagen.

    /Erik

  • #2
    Staplar i diagram är alltid signaler baserade på hela stapelns information. Eftersom det inte går att handla efter en fullbildad dagsstapel blir det alltid viss diff mellan det du ser i diagrammet och signaler triggade ett par minuter före stängning.

    Comment


    • #3
      Jo, vet. Men det stämmer ändå inte. För det är inte kring stängning som dessa felaktigheterna uppstår. Det är ju lite konstigt att scriptet inte ritar ut en flagga för en dagsstapel men när jag simulerar så gör han affär 2 minuter före stängning och säger att värdet var sant. Men det som händer därefter påverkar inte villkoret. Det som gör att den dagen inte är "sann" är att öppningen var för låg och det påverkas ju inte på slutet? Exempel (ej komplett kod):
      hammer_längdkrav:=1.7
      dagshögsta=cmpref(h,0,a)
      dagslägsta=cmpref(l,0,a)
      hammer_higho=gt(cmpref(o,0,a),sub(dagshögsta,div(sub(dagshögsta,dagslägsta),2)))
      hammer_highc=gt(cmpref(c,0,a),sub(dagshögsta,div(sub(dagshögsta,dagslägsta),3.1)))
      hammer_ok=and(hammer_higho,and(hammer_highc,gt(div(sub(dagshögsta,dagslägsta),dagshögsta),div(hammer_längdkrav,100))))
      SETGvarIF(hammer_ok,119,1)
      draw(mult(hammer_ok,30),8,bsbf)
      {@A(0,OMX Stock )}
      Sedan har jag ett signalscript som hämtar värdet i Gvar119 och kollar så att vi är vid stängning. Denna sommaren enligt analyzern så köper han två dagar där det inte ritas ut en flagga och det är inte stängningen som är bekymret. Dessutom missar han en entry i januari som flaggas men där han inte gör affär. Inte heller där ändras stängningskursen nämnvärt sista minutrarna.

      Riktigt störigt nu när jag är så nära att sjösätta en första version.

      /Erik

      Comment


      • #4
        Öppningen kan skilja om du kör 5 sek eller 1minut. Vet ej i ditt fall, men värt att prova?

        Edit: Du kan även prova att spara värden i cellen efter viss tid från öppningen. Kolla även att databasen är synkad: eqv(int(d),int(date()))
        Last edited by Henric; 2015-07-29, 14:16.

        Comment


        • #5
          Du är nog på rätt spår Henric eftersom det känns som det kan vara öppningsvärdet som ställer till det. Skulle när jag orkar, tänka ut en algoritm som hämtar c-värdet typ direkt efter nio och lagrar det i en global cell som sedan hämtas för beräkningen. /Erik

          Finns det enklare sätt att göra något enbart vid en tidpunkt på dagen. (fast denna kommer ju göras flera gånger under en minut). Vill verkligen kolla av kursen så nära öppning som möjligt.

          vid_öppning=and(ge(mult(1440,add(market(o),frac(date()))),1),le(mult(1440,add(market(o),frac(date()))),2)
          SETGvarIF(cmpref(c,0,a),133,vid_öppning)
          {@A(0,OMX Stock )}
          Last edited by e-Rik; 2015-07-29, 14:56.

          Comment


          • #6
            Precis, eqv(int(d),int(date())) är väldigt bra att använda för att vara säker på att databastid och systemtid ligger på samma dag.

            Ett sätt är att spara värdet i en cell några sekunder efter öppning:

            samma_dag=eqv(int(d),int(date()))
            första_min=lt(date(),0.3757)
            setgvarif(c,100,and(samma_dag,första_min))

            Sen kan du läsa av din "syntetiska" open med

            open=getgvar(100)

            Comment


            • #7
              Jag har tidigare haft liknande problem med öppningskursen och använde en cell som i inlägget ovan. Det borde fungera bra i längden, även om värdet kan bli slumpartat då kursen kan fladdra runt öppningen. Det blir ju i och för sig även den riktiga öppningskursen. Mest rättvis är kanske något medelvärde eller viktat värde.

              Varför kan det skilja då man simulerar med 5 sek resp. 1 minut (en dag skiljer det 29 punkter).
              1. Ligger inte dagsdata i en egen databas(hist.dbt) oavsett animerad upplösning?
              2. Kan det vara så att 5 sek är den mest korrekta och att diagrammet använder 1 minutsupplösning?

              Comment


              • #8
                Ursprungligen postat av Henric Visa inlägg
                Jag har tidigare haft liknande problem med öppningskursen och använde en cell som i inlägget ovan. Det borde fungera bra i längden, även om värdet kan bli slumpartat då kursen kan fladdra runt öppningen. Det blir ju i och för sig även den riktiga öppningskursen. Mest rättvis är kanske något medelvärde eller viktat värde.

                Varför kan det skilja då man simulerar med 5 sek resp. 1 minut (en dag skiljer det 29 punkter).
                1. Ligger inte dagsdata i en egen databas(hist.dbt) oavsett animerad upplösning?
                2. Kan det vara så att 5 sek är den mest korrekta och att diagrammet använder 1 minutsupplösning?
                En minut är en låång tid. Under den kan mycket hända. Jag använder dessa rader för att detektera högsta nivån under de första minuterna.

                i1(
                tid1=gt(int(mult(frac(d),1440)),540)
                tid2=lt(int(mult(frac(d),1440)),546)
                tid3=eqv(int(mult(frac(d),1440)),546)

                perioder01=Sub(int(mult(frac(d),1440)),540)
                maxhittills=hhv(h,perioder01)

                Om man önskar så kan man ju lagra maxhittills i en global variabel tex då tid3 är sann.

                Med vänlig hälsning
                Bertil

                Comment


                • #9
                  Ursprungligen postat av Bertil Visa inlägg
                  En minut är en låång tid. Under den kan mycket hända. Jag använder dessa rader för att detektera högsta nivån under de första minuterna.

                  i1(
                  tid1=gt(int(mult(frac(d),1440)),540)
                  tid2=lt(int(mult(frac(d),1440)),546)
                  tid3=eqv(int(mult(frac(d),1440)),546)

                  perioder01=Sub(int(mult(frac(d),1440)),540)
                  maxhittills=hhv(h,perioder01)

                  Om man önskar så kan man ju lagra maxhittills i en global variabel tex då tid3 är sann.

                  Med vänlig hälsning
                  Bertil
                  Ursprungligen postat av Henric Visa inlägg
                  Jag har tidigare haft liknande problem med öppningskursen och använde en cell som i inlägget ovan. Det borde fungera bra i längden, även om värdet kan bli slumpartat då kursen kan fladdra runt öppningen. Det blir ju i och för sig även den riktiga öppningskursen. Mest rättvis är kanske något medelvärde eller viktat värde.

                  Varför kan det skilja då man simulerar med 5 sek resp. 1 minut (en dag skiljer det 29 punkter).
                  1. Ligger inte dagsdata i en egen databas(hist.dbt) oavsett animerad upplösning?
                  2. Kan det vara så att 5 sek är den mest korrekta och att diagrammet använder 1 minutsupplösning?
                  Skillnaden är att öppningskursen är ett specifikt värde och kan få stor påverkan. Maxhittills förstår jag inte, kanske medelvärde under x-minuter som öppning. Får man bättre resultat med någon egen beräkning så kan man strunta i öppningskursen. Frågan är ändå hur det kan skilja så mycket och är 5sek animering den mest korrekta och använder diagram 1 minut?

                  Comment


                  • #10
                    Om så önskas, se min kommentar om dagstaplar i Trading-filosofi.
                    Med vänlig hälsning
                    Bertil

                    Comment


                    • #11
                      Ursprungligen postat av Henric Visa inlägg
                      Jag har tidigare haft liknande problem med öppningskursen och använde en cell som i inlägget ovan. Det borde fungera bra i längden, även om värdet kan bli slumpartat då kursen kan fladdra runt öppningen. Det blir ju i och för sig även den riktiga öppningskursen. Mest rättvis är kanske något medelvärde eller viktat värde.

                      Varför kan det skilja då man simulerar med 5 sek resp. 1 minut (en dag skiljer det 29 punkter).
                      1. Ligger inte dagsdata i en egen databas(hist.dbt) oavsett animerad upplösning?
                      2. Kan det vara så att 5 sek är den mest korrekta och att diagrammet använder 1 minutsupplösning?
                      Då man tittar i 1 min upplösning under dagens första sekunder så kan man av misstag istället få föregående dags sista minuts closekurs. På samma sätt så kan man kanske få föregående dags sista minuts öppningskurs istället för dagens öppningskurs. Henric, du gjorde ju ett filter för detta.

                      Med vänlig hälsning
                      Bertil

                      Comment


                      • #12
                        Det räcker att kolla att databasen är synkad. Sedan om man vill ha en beräkning över flera minuteter kollar man att första perioden är idag. Det fungerar som du gör, förutom att tex använda medelvärde istället för hhv. Du hävdar att öppningskursen inte spelar någon roll. Det har den kanske inte i det korta perspektivet. Inte heller för varje enskild dag i dagsstaplar. Vi ska inte snöa in oss i om det är rätt eller fel, ändå intressant.Tex vill e-rik vill kunna förstå varför modellen gjort si eller så i simulering, samt att fungerar över tid.

                        Edit: Förtydligande så att det inte uppstår en missuppfattning i diskussionen. Då jag tidigare skrev att det skiljer 29 punkter mellan animering i 5 sek respektive 1 minut menar jag öppningskurs i dagsstapel och inte någon uppskattning med egen beräkning, etc.
                        Last edited by Henric; 2015-07-29, 18:32.

                        Comment


                        • #13
                          Man kan använda öppningskursen på olika sätt.
                          Tidigare använde jag en ordermodell där jag kl 17.20 lagrade terminens värde samt värdet på DOW. Sedan lagrade jag i en annan cell värdet på DOW kl 22.00 Därefter räknade jag ut procentuell förändring på DOW mellan kl 17.20 och 22.00 samt multiplicerade med terminens kurs kl 17.20
                          Detta ger en indikativ öppningskurs för nästkommande handelsdag.

                          Om öppningskursen låg mer än 1 punkt lägre än min indikation så köpte jag. Sedan fick man ha en tight Dynamisk Take Profit på 0.7 punkter eller så.

                          Numera handlar jag med lite större TP, så jag har inte använt denna strategi på ett tag.

                          Med vänlig hälsning
                          Bertil

                          Comment


                          • #14
                            En del av min modell handlar om att hitta vändningar i trend i dagupplösning. Då visar det sig att en Hammer eller Key Reversal ofta är att lita på. För dessa formationer är även öppningskursen intressant - dagar som öppnar för lågt i stapeln kvalar inte in. Den koden jag har för att räkna ut dessa är helt perfekt när jag kollar flaggorna i charten som scriptet ritar ut. Men när jag simulerar så görs inte affärerna enligt dessa, utan helt plötsligt handlar scriptet på dagar som inte flaggas och låter bli att handla på dagar som flaggas. Därav diskussionen. Men nu har jag en hel del uppslag att gå på och ska göra några tester för att se om något löser mitt problem - Troligen är det öppningskursen som spökar. Samtidigt är det viktigt med såna här diskussioner, för det gäller att kunna lita på grejerna när de hanterar hundratusentals kronor. /Erik

                            Comment


                            • #15
                              Ursprungligen postat av Rikard Nilsson Visa inlägg
                              Precis, eqv(int(d),int(date())) är väldigt bra att använda för att vara säker på att databastid och systemtid ligger på samma dag.

                              Ett sätt är att spara värdet i en cell några sekunder efter öppning:

                              samma_dag=eqv(int(d),int(date()))
                              första_min=lt(date(),0.3757)
                              setgvarif(c,100,and(samma_dag,första_min))

                              Sen kan du läsa av din "syntetiska" open med

                              open=getgvar(100)

                              Tyckte denna lösningen verkade enklast. Däremot får jag det inte att fungera. date() returnerar väl alldeles för mycket för att rätt av jämföra med 0.3757? Borde man inte ta frac() eller någonting för att få decimaldelen? Testat lite men får inget värde att registreras. Har jag lt ett så stort tal som 12345678 så skriver den ett värde för då ritas det ut lite flaggor, visserligen felaktiga men ändå.

                              /Erik

                              Comment

                              Working...
                              X