Allmänt meddelande

Collapse
No announcement yet.

Fråga om HHV

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

  • Fråga om HHV

    Hej!
    HHV (D,P) Highest High Value

    Det högsta värdet i dataserien d inom p perioder.

    Stoploss Mini Long änvänder denna funktion:
    ..
    start=if(ge(d,LastTrade(b,d)),mv1,0)
    maxhittills=hhv(start,5000)
    ..
    Nu kommer min fråga. Om man under samma dag säljer och köper samma instrument flera gånger hur vet hhv att det skall nollas efter varje köp/sälj?
    Om inte hhv nollas automatiskt, hur kan man scripta för att få denna funktion?
    mvh
    Bertil

  • #2
    Lasttrade håller reda på senaste köpet. Oavsett när traden gjordes så används alltid senaste köpet. Samtidigt måste det finnas ett innheav och därför behövs ingen nollställning.

    Det förutsätter att du inte handlar i steg. Då kanske det skulle kunna gå att använda portfolio(p) istället. Funktionen anger genomsnittilgt pris för ett innehav.

    Comment


    • #3
      Tack för svar. Start får ju alltid värdet av mv1:=Mov(s,2,s) förutsatt aktuell tid är senare är tiden för senaste köp.
      Detta blir ju en tidsserie och HHV lagrar det högsta värdet av de 5000 senaste värdena.
      Men då jag köper, sedan säljer och så köper samma instrument igen under samma dag, vill jag ju inte att tidsserien som bildades då jag köpte instrumentet första gången på dagen skall blandas in då jag handlar instrumentet på nytt. Jag vill ju att tidsserien nollas då jag köper instrumentet för andra gången samma dag. Om den redan gör det så så begriper jag inte hur. Eller menar du då innehavet försvinner så resetar sig HHV automatiskt och har inget spår av vad som hänt tidigare då man köper igen?
      mvh
      Bertil
      Last edited by Bertil; 2012-07-06, 18:01.

      Comment


      • #4
        Ursprungligen postat av Bertil Visa inlägg
        Hej!
        HHV (D,P) Highest High Value

        Det högsta värdet i dataserien d inom p perioder.

        Stoploss Mini Long änvänder denna funktion:
        ..
        start=if(ge(d,LastTrade(b,d)),mv1,0)
        maxhittills=hhv(start,5000)
        ..
        Nu kommer min fråga. Om man under samma dag säljer och köper samma instrument flera gånger hur vet hhv att det skall nollas efter varje köp/sälj?
        Om inte hhv nollas automatiskt, hur kan man scripta för att få denna funktion?
        mvh
        Bertil

        Jo, if-satsen är till för att isolera bort allt som händer "tidigare" än senaste köp. Det som testas är om D (databastid) är senare än LastTrade(b,D) som är tidpunkt för senaste köp. I så fall får "start" värdet mv1, annars noll.

        På så vis tillåts stoppen endast räkna på värdet av mv1 som är senare än senaste köp.

        Ett litet tillägg kan vara värt att nämnas, det går att "lura" LastTrade(b,d) genom att posta en order som hamnar i marknaden men som inte går till avslut. Kan vara användbart om man tex gjorde köpet medan NAT var avstängt. Då är det bara att posta en köporder på några kr under aktuell köpkurs, och makulera den så fort den hamnat i marknaden. Då returnerar LastTrade(b,p) tidpunkten för den orden.

        Comment


        • #5
          Jo jag förstår att värdet på start blir 0 annars. Så som jag tolkar det så går HHV igenom de 5000 senaste värdena i serien vid varje loop och kollar om start är högre, samt ger ut det högsta värdet. Fungerar det så att om HHV får värdet 0 i sin buffert så resetas alla 5000 värden i HHV:s buffert ? Annars så ligger ju värdena kvar i bufferten från mitt tidigare köp på dagen. 5000 värden gånger 5 sekunder är ju nästan 7 timmar och under den tiden så kan jag ha köpt och sålt instrumentet flera gånger och HHV måste ju reseta hela bufferten på 5000 värden vid varje nytt köp annars fungerar det inte.
          mvh
          Bertil
          Last edited by Bertil; 2012-07-06, 18:37.

          Comment


          • #6
            Jo, Hhv går igenom samtliga perioder 5000 bakåt och jämför med LastTrade(b,d). Alla som är tidigare får värdet noll.

            Comment


            • #7
              Hej igen!
              Ursäkta att jag är tjatig, men det är ju så man lär sig. HHV vet ju inget om LastTrade. HHV får ju bara ett värde till sin dataserie som ibland är 0. Antingen så lagrar HHV då värdet 0 i sin 5000 värden stora buffert som då får några hundra perioder med värdet 0 tills jag handlar instrumentet igen, i så fall blir det fel. Eller så finns det en specialfunktion i HHV:s konstruktion som är allergisk mot värdet 0 och resetar alla sina 5000 värden på grund av det.
              mvh
              Bertil

              Comment


              • #8
                Jo, i villkoret som HHV testar ingår LastTrade.

                Comment


                • #9
                  Ursäkta, jag måste vara dum. Jag förstår ju att det finns ett villkor och att detta villkor genererar 0 till HHV:s dataserie. HHV är ju dum och får antingen 0 eller ett värde till sin buffert. Då jag inte har ett innehav i instrumentet så skrivs ju 0 i bufferten. Sedan köper jag instrumentet och bufferten får värden. Sedan säljer jag instrumentet och bufferten får 0 till sin indata i några hundra perioder tills jag köper instrumentet igen. Då ligger ju värdena från det första tillfället jag ägde instrumentet kvar i bufferten, det är ju detta som inte får hända.
                  Eller så är det så att HHV resetar hela sin buffert då första bästa nolla hamnar i bufferten.
                  mvh
                  Bertil

                  Comment


                  • #10
                    Nja, när du köper instrumentet andra gången blir ju villkoret ge(d,LastTrade(b,d)) sant "senare" än första gången, och HHV-satsen mäter får noll på varje period tills vi kommer till den period få D är lika med eller större än LastTrade(b,d). Då får den högsta värdet på start sedan senaste köp. Detta testas vid varje scriptkörning.

                    Comment


                    • #11
                      Hej igen!
                      Vi kanske pratar förbi varandra. Men om du läser mitt förra inlägg igen. Antingen gäller ju
                      1) HHV vet ju inte om jag äger instrumentet eller inte, får bara nollor då jag inte äger instrumentet. Om dessa nollor bara lagras i bufferten så kommer ju bufferten att omväxlande innehålla värden då jag äger instrumentet och nollor då jag inte äger instrumentet. Om jag då har ägt intrumentet vid två tillfällen under de 5000 perioder som bufferten sparar så blir det fel.
                      2) HHV resetar sin buffert då den upptäcker att den sparat en nolla.

                      Vilket alternativ gäller?
                      MVH
                      Bertil

                      Comment


                      • #12
                        Jag tror jag förstår vad din frustration bottnar i Bertil.

                        Du utgår ifrån att hhv lagrar värden i en dataserie permanent, och att det vid varje körning av scripet kommer till nya värden till denna serie. Så är inte fallet.

                        HHV lagrar värden i en minnescell som i sin tur lagrar värden endast under den tid som scriptet kör. När scriptet är färdigkört nollas cellen.

                        Comment


                        • #13
                          Du menar att det inte finns en rullande buffert med 5000 värden eller vad som anges för HHV utan att HHV tar sina värden från NAT:s databas för 5000 perioder bakåt eller ända till den tidpunkt då instrumentet köptes vid varje tillfälle som man kör scriptet.
                          Men dataserien är ju start som antingen har ett värde eller en nolla. HHV vet ju inte på annat sätt när instrumentet köptes. Då menar du att HHV tittar på perioder bakåt i tiden ända tills den träffar på en nolla alternativt 5000 perioder.
                          På samma sätt måste LLV titta bakåt ända tills den hittar 9999 alternativt 5000 perioder.
                          Är det verkligen så?
                          mvh
                          Bertil

                          Comment


                          • #14
                            Ja, det är så det funkar. LastTrade(b,p) är ingen dataserie utan returnerar bara "senaste" värdet, och därför blir det samma för HHV-satsen som LastTrade-villkoret ingår i. Det blir noll på alla perioder from 5000 tillbaka fram tills den period då tidpunkten för senaste köp skedde.

                            Comment


                            • #15
                              Detta måste ju ta väldigt mycket processorkraft. HHV innehåller ju i detta fall medelvärden. Antag att medelvärdena går 5 perioder bakåt.
                              Då man räknar HHV för en period bakåt så måste man beräkna medelvärden från ytterligare 5 perioder. Det behövs då kanske 10 räkneoperationer per period i HHV. Att gå 5000 perioder bakåt tar då 50000 räkneoperationer. Antag att man har 10 instrument som har stoploss det blir 500000 räkneoperationer per period. Klarar verkligen processorn detta då man sedan skall hantera tickdata?
                              undrar
                              Bertil

                              Comment

                              Working...
                              X