Allmänt meddelande

Collapse
No announcement yet.

Signaler i rätt ordning?

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

  • Signaler i rätt ordning?

    Kämpar med ett script i vilket jag behöver släcka signaler. Vilket är bästa sättet att släcka dessa? Efter säljsignal vill jag ha signaltyp 1 innan signaltyp 2 tillåts bli sant. För att signaltyp 3 ska bli sann måste signaltyp 2 finnas osv. Varje typ av signal ska trigga köp och scriptet ska bara visa sanna flaggor, dvs. det ska inte finnas synliga flaggor i chartet som inte innebär köp för att man t.ex. tittar på lasttrade eller styr undan signaler mha ordermodellen och kontrollscript eller liknande. Jag vill ha ett script som visar allt 100% sant. Jag vill inte behöva använda globala celler eller annat utan sköta hela logiken inom scriptet.

    Försöker med HHVBARS för att hitta senaste sanna föregående signal (typ HHVBARS(köp1,150)... men det går bara delvis bra... Finns det bättre sätt eller är jag på rätt spår och behöver "bara" hitta buggarna??

  • #2
    Jag kanske inte uppfattar din fråga korrekt, men jag tolkar det som att du vill att flera villkor skall vara uppfyllda efter varandra och att endast en flagga skall indikera detta. Själv använder jag ju minutupplösning så att alla villkoren kan ju vara sanna under flera minuter, men det gör ju inget om man har flera köpflaggor efter varandra då man vet att handel kommer att ske på den första.

    Jag undvek ju att använda globala variabler under mina första år som scriptare, men nu kör jag med flera hundra.
    Fast för att verifiera sina ordermodeller krävs ju då att man har Pro och kan simulera.

    Om man absolut inte vill använda globala variabler så får man ju använda aref och sätta in önskat villkor och under de perioder som det måste vara sant, tex

    Villkor01=Or(Or(signaltyp1,aref(signaltyp1,1)),aref(signaltyp1,2))
    Villkor02=Or(signaltyp2,aref(signaltyp2,1))
    Villkor03=signaltyp3
    Köpa=and(and(villkor01,villkor02),villkor03)

    Med vänlig hälsning
    Bertil

    Comment


    • #3
      Ursprungligen postat av swedtraders Visa inlägg
      Kämpar med ett script i vilket jag behöver släcka signaler. Vilket är bästa sättet att släcka dessa? Efter säljsignal vill jag ha signaltyp 1 innan signaltyp 2 tillåts bli sant. För att signaltyp 3 ska bli sann måste signaltyp 2 finnas osv. Varje typ av signal ska trigga köp och scriptet ska bara visa sanna flaggor, dvs. det ska inte finnas synliga flaggor i chartet som inte innebär köp för att man t.ex. tittar på lasttrade eller styr undan signaler mha ordermodellen och kontrollscript eller liknande. Jag vill ha ett script som visar allt 100% sant. Jag vill inte behöva använda globala celler eller annat utan sköta hela logiken inom scriptet.

      Försöker med HHVBARS för att hitta senaste sanna föregående signal (typ HHVBARS(köp1,150)... men det går bara delvis bra... Finns det bättre sätt eller är jag på rätt spår och behöver "bara" hitta buggarna??

      Allt beror på vad du gör, men hhvbars bör fungera. Tänk på att första villkoret måste finnas inom periodantalet. Tex att säljvillkoret finns inom 150 perioder, kanbörja=hhv(sell,150).

      Comment


      • #4
        -Bertil, jag vill inte se flera köpflaggor utan bara den som kom först. Det kan bli komplicerat men förenklat så vill jag att det ska fungera såhär:

        Jag tänker mig att lägga till säljsidan i köpscriptet och med HHVBARS och titta bakåt för att kolla att signalerna kommer i rätt ordning för att det ska bli en flagga. Om t.ex. säljflagga varit i stapel 1 så får initialt köp bli sant i stapel 2, men inte utökat köp. När initialt köp skett i stapel 2 och jag har ett innehav så får utökat köp av typ 1 ske i stapel 3. Efter utökat köp typ 1 får utökat köp av typ 2 ske i stapel 4. Nu är detta bara ett exempel, det är nog bara i undantagsfall som dessa signaler kommer i staplarna 1, 2, 3, 4. Det vanligaste är att det efter sälj dröjer ett antal staplar innan det blir initialt köp och sen dröjer det några staplar innan utökat köp eller sälj osv. Hoppas det framgår vad jag är ute efter! :-D

        Jag vill på detta sätt släcka de flaggor som är falska men som i nuläget finns i chartet. Det är inte så svårt att styra vilka signaler som får ageras på mha LASTTRADE, globala celler osv. när man handlar skarpt eller simulerar i bänken, men jag vill bara se sanna flaggor i chartet för att underlätta modellbygget. Ser man bara de sanna flaggorna så lurar man sig inte på en massa falska signaler under tiden man utvecklar modellen och inte heller när man sjösatt modellen och tittar efter flaggor i chartet.

        -Henrik, det bör alltså gå att få ordning på scriptet mha HHVBARS, skönt att veta. jag har en bit kvar nämligen och tid är ju dyrbart. Nackdelen med HHVBARS är att scriptet blir segt har jag märkt. Istället för att en simulering tar några minuter så tar det istället en timme eller ett par. Finns det nåt annat enklare sätt att åstadkomma det jag är ute efter så lyssnar jag mer än gärna!

        Comment


        • #5
          Det finns ett lite "Dirty" sätt. Helt enkelt spara tiden för de olika villkoren i globala celler eller retval. Sedan jämföra tiderna. Jag har gjort det någon gång då scriptet blev mycket segt med find. hhvbars,find, etc hittar värden vid utgången av perioderna. Använder du globala celler måste du avväga om även signaler inne i stapeln ska användas eller aref. Ritning med aref kommer då att bli förskjutet en period, medan verklig signal kommer första ticket i perioden istället för sista ticket i föregående period.

          Någon annan kanske har ett bättre knep. Tex loopa, men det tar också kraft.

          Comment


          • #6
            Retval() och Getval() borde kunna funka för att simulera ett innehav under diagramritningen.

            Comment


            • #7
              Jag scriptade i över ett år och tittade på flaggor innan Analyzern blev klar. Efter det är det Analyzern som gäller vid testning och modifiering av strategier. Jag tittar knappt på flaggor längre. Jag använder ju flera hundra globala celler och de fungerar ju inte alls med flaggindikering, inte heller last trade som du själv påpekar.

              Mitt råd: Lägg inte mer tid på att få bort falska flaggor utan lägg den tiden på att hitta bättre edge mha analyzern och optimering!

              Med vänlig hälsning
              Bertil

              Comment


              • #8
                Sant. Särskilt om det är komplexa script. För mer enkla och tydliga script kan det visuella vara mycket värdetfullt.

                Comment


                • #9
                  Analysern ritar ju ut signaltillfällena utan falska signaler, men visst - det tar ju kanske längre tid att simulera än att labba med villkor och bara titta i diagrammet efter signalerna. Det kan nog finnas en vits med det också.

                  Comment


                  • #10
                    Mycket labbande senare...

                    Mycket frustrerande det här!! Jag lyckas rita ut flaggor på rätt ställen nu mha draw, men får bara orderskurar i bänken vid simulering... Det här borde väl funka i bänken eller?

                    ---

                    {Definiera öppning/stängning, definiera innehav/ej innehav, ej köpt/sålt idag}
                    ej_innehav=le(portfolio(v),0)
                    innehav_finns=gt(portfolio(v),0)

                    före_börsstäng1=ge(mult(1440,sub(market(c),frac(date()))),6)
                    före_börsstäng2=le(mult(1440,sub(market(c),frac(date()))),9)
                    före_börsstäng3=and(före_börsstäng1,före_börsstäng2)

                    ej_köpt_idag=gt(int(d),int(lasttrade(b,d)))
                    ej_sålt_idag=gt(int(d),int(lasttrade(s,d)))

                    (div. köpvillkor... bl.a köp9 och utöka2 som kan ritas ut korrekt mha draw)

                    köpinit1=and(and(and(and(köp9,före_börsstäng3),ej_innehav),ej_köpt_idag),ej_sålt_idag)
                    utöka3=and(and(and(and(utöka2,före_börsstäng3),innehav_finns),ej_köpt_idag),ej_sålt_idag)
                    slut1=or(köpinit1,utöka3)
                    mult(slut1,10)

                    ---

                    Jag vill ha köp/sälj max en gång per dag. Scriptet löper utan intradayupplösning mot OMXS30-index som extraobjekt. Har flera ställen i scriptet (5?) där jag använder HHVBARS och tittar 200 perioder (dagar) bakåt... Kan det ställa till problem...? Jag får som sagt ordeskurar i bänken och det blir många köp både fel tid på dagen och samma dag...

                    Någon som det vad felet kan vara? Nåt trivialt som vanligt antar jag men nu har jag nog blivit blind för mina egna scriptfel igen...

                    Comment


                    • #11
                      Kör du bara triggerscript eller ordermodeller i bänken?

                      Comment


                      • #12
                        Jag kör bara ordermodeller.

                        Comment


                        • #13
                          Ok, och alternativet Strategi "Styrs helt enligt valda ordermodeller" är valt i bänken?

                          Villkoren:

                          ej_köpt_idag=gt(int(d),int(lasttrade(b,d)))
                          ej_sålt_idag=gt(int(d),int(lasttrade(s,d)))

                          borde absolut stoppa order samma dag. Jag tittar gärna på hela scriptet om det kan vara något annat fel som välter det hela. En longshot kan ju vara att ändra till:

                          ej_köpt_idag=gt(int(d),lasttrade(b,d))
                          ej_sålt_idag=gt(int(d),lasttrade(s,d))

                          Comment


                          • #14
                            Styrs helt enligt valda ordermodeller är valt ja. Ska prova din longshot... annars får det kanske bli ett supportsamtal inom kort.

                            Comment


                            • #15
                              Vad säger egentligen följande om scriptet?

                              Kompilerad scriptlängd: 6123

                              Antal anrop (500) : 236
                              Använda minnesreferenser : 123
                              Använda tilldelade namn (20) : 24

                              Max parentesdjup (10) : 5
                              Utnyttjad datastack (600000) : 72737
                              Källdata perioder: 3880

                              Test: OK

                              Comment

                              Working...
                              X