Allmänt meddelande

Collapse
No announcement yet.

Scripting - Best Practices

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

  • Scripting - Best Practices

    Jag har precis snickrat ihop en ordermodell som bygger på den strategi som Vinnarbyrån med Tobbe Rosen utbildar på. Måste säga att den i kombination med en flytande stop har fungerat förvånansvärt bra. I samband med detta så har det varit många utmaningar runt felsökning i scriptingen och det har varit svårt att hitta all dokumentation. Nedan har jag några funderingar som jag vore tacksam om Rickard eller någon annan med längre erfarenhet kunde besvara.

    1) Vilka minnesceller är reserverade för andra funktioner?
    Det finns lite här och där angivet angående reserverade minnesceller för andra program. Använder era strategier några minnesceller och vilka är det som är tillgängliga och ej reserverade? I Scriptet för flytande stop finns en kodrad med koden ”serverok=Gt(GetGVar(999),0)Vad är detta?

    2) Vad är best practises för att scriptet skall signalera?
    Jag tycker mig ha sett att scriptet ibland signalerar innan hela ticket (tex 5min) har gått klart. Dvs att den räknar kontinuerligt medans ticket går klart. Stämmer det – och i så fall vad är bäst practices för att signalera efter det att hela ticket gått klart?

    Tack på förhand!

  • #2
    Kul att du fått till Winning Trading-strategin!

    Otroligt starkt jobbat som nybörjare får jag säga!

    1. Det finns minnesceller som används av tex Raptor och Wampa tror jag. Annars är det nog inget speciellt förutom ATs egna användning av de flyktiga cellerna 0 och 1. Cell 999 som du refererar till är en kvarleva från när vi hade modeller för kunder med serviceavtal. Vi får 1 från cell 999 i så fall.

    2. Det stämmer att scripten körs hela perioder och kan signalera när som helst i en period. Vissa strategier mår bäst av det, medan andra trivs bäst med att räkna på hela perioder endast. Vi har tex själva använt det i många år för Tracker, som har filter för att blockera skräpsignaler i början av perioden.

    Ett ganska enkelt men effektivt sätt att testa vilket som blir bäst i en optimering är:

    tidnu:=Frac(DATE())
    totalt:=Mult(tidnu,1440)
    rest:=Int(Mod(totalt,15)) {här motsvarar 15 antal minuter i en period}
    tidsignal:=Ge(rest,10) {här blir "tidsignal" sant om det gått minst 10 minuter in i perioden}

    Det är klart intressant att optimera den sista parametern och se vad som händer i det långa loppet, tex på den sammansatta terminen.

    Comment


    • #3
      Världsklass

      Tack igen för snabbt svar. måste verkligen understryka att ni är extremt bra på support.
      /J

      Comment


      • #4
        Ytterligare funderingar runt best practices


        1) Ibland så gör man en mängd uträkningar och kombinationer som man slutligen testar med ett uttryck i scriptet. Om det är ett triggerscript så vill man ibland kanske att det enbart skall signalera på första stapeln och inte på de kommande staplarna om de också är true. Detta kan man enkelt lösa med globala variabler men som jag förstått det även med HHV eller LLV. Således funderar jag vilken metod som är en enklaste (best practices) för att testa föregående t.ex. 5 minuterstapel mot samma logik som nuvarande?

        2) I Autostocks skriptspråk som kan man både använda variabler och tilldelade namn när man programmerar. Jag skulle gärna ta del av best practices runt detta om när det är lämpligt att använda det ena eller andra.
        Hälsar JH

        Comment


        • #5
          Jag har på olika script testat detta med HHV och LLV... Jag är nybörjare så jag kan inte ge något uttömmande svar mer än att jag tycker att ibland så försenar det signaleringen om man inte använder det på rätt sätt. Men rätt använt kan det nog funka bra ibland!
          "Nothing noble is done without risk." - André Gide

          Comment


          • #6
            Ursprungligen postat av umejohe Visa inlägg

            1) Ibland så gör man en mängd uträkningar och kombinationer som man slutligen testar med ett uttryck i scriptet. Om det är ett triggerscript så vill man ibland kanske att det enbart skall signalera på första stapeln och inte på de kommande staplarna om de också är true. Detta kan man enkelt lösa med globala variabler men som jag förstått det även med HHV eller LLV. Således funderar jag vilken metod som är en enklaste (best practices) för att testa föregående t.ex. 5 minuterstapel mot samma logik som nuvarande?

            2) I Autostocks skriptspråk som kan man både använda variabler och tilldelade namn när man programmerar. Jag skulle gärna ta del av best practices runt detta om när det är lämpligt att använda det ena eller andra.
            Hälsar JH

            1. Det går att "komma ihåg" signaler x antal staplar bakåt med Hhv. Det gör att man kan blockera innevarande stapels signal om föregående stapel genererade en SANN signal. Alltså:

            signal:=-ditt script-
            blockerad:=And(Not(Hhv(signal,2)),signal)

            här testas om "signal" var sant förra perioden, och i så fall blockeras signal innevarande period. Då får man effekten att endast första stapeln i en kontinuerlig "skur" av signaler släpps igenom. Nackdelen är ju att det bara krävs en enda stapel utan signal för att nästa stapels signal ska släppas igenom. Det går ju att vidareutveckla naturligtvis, men ofta räcker det här för att stoppa hela sjok med signaler.

            2. Man avgör egentligen själv vad man tycker är lämpligast här, men generellt brukar man använda tilldelade namn för att definiera saker, och sk minnesreferenser när något ska exekveras snabbt och förbruka mindre parentesdjup. Man slår ganska snabbt i taket annars med de maximala 10 parentesnivåer som tillåts. Det går att skriva script helt och hållet med minnesreferenser, men vissa funktioner kräver att det är ett tilldelat namn, tex GetGVar(). Andra som tex Draw() måste ligga som minnesreferens för att fungera.

            För backtestning är det klart snabbast att använda minnesreferenser så mycket som möjligt. Det spar mycket tid om man optimerar något.

            Comment


            • #7
              Tack!
              Det har sparat mig massor med tid.
              Glad midsommar!
              JH

              Comment


              • #8
                Script exekvering

                Har ett antal ordermodeller som snurrar samtidigt nu och det gäller att ha koll på globala variabler mm. Har haft en del lustiga resultat och således undrar jag om det är det någon som har koll på hur script exekveras i Autostock?

                Med detta menar jag att om jag har 10 parallella script koppllade till ett instrument så i vilken ordning exekveras de?

                Ponera att du kör de 10 scripten med 10 dagars historik med början 10 dagar bakåt. Exekveras då hela script från dag 1 till dag 10 eller exekveras scripten minut för minut synkront? Som jag förstått det går varje script helt klart innan nästa exekveras. Detta gör en avsevärd skillnad för användandet av globala variabler.
                Någon som har koll på detta?
                MVH
                JH

                Comment


                • #9
                  Simulerad innehav via simulerad orderläggning?

                  Går det att via simulerad orderläggning få simulerat innehav genom att inte samla in den skarpa egna depån? Orsaken är att man tex i ordermodellen som man skapat signalerar olika beroende på om man har innehav eller ej. När man sedan väljer att köra simulerad orderläggning innan man går live så vill man ju kunna simulera detta.
                  /JH
                  Last edited by umejohe; 2009-07-24, 12:21.

                  Comment


                  • #10
                    Det går tyvärr inte att simulera innehav "löpande". Det är en av de saker vi tittar på inför framtida uppdateringar. Det hade varit klart användbart.

                    Comment


                    • #11
                      Simulerad innehav forts...

                      Tack för det. Då får vi använda globala variabler så länge. Lite mer bök men det borde gå att få till.
                      MVH
                      JH

                      Comment


                      • #12
                        Utrymme för förbättring

                        Ursprungligen postat av umejohe Visa inlägg
                        Går det att via simulerad orderläggning få simulerat innehav genom att inte samla in den skarpa egna depån? Orsaken är att man tex i ordermodellen som man skapat signalerar olika beroende på om man har innehav eller ej. När man sedan väljer att köra simulerad orderläggning innan man går live så vill man ju kunna simulera detta.
                        /JH
                        Den simulerade handeln är typ (som jag testat hitintills iallafall) meningslös eftersom det ändå inte funkar att simulera. Det enda sättet (som jag vet) att testa om en strategi verkligen funkar är att köra den skarpt. Har haft konstigt strul nu med att jag inte får till stängning av dagens position rätt ex. Enda sättet att testa är att fortsätta köra skarpt vilken inte känns alls bra för mig! Här finns utrymme för förbättring med andra ord.
                        "Nothing noble is done without risk." - André Gide

                        Comment


                        • #13
                          SaLK
                          Exit strul ?
                          För ca. 14 dar sedan råkade jag ut för detta.
                          Jag låg med en kort position, kl 17:18 köpte exit-scriptet till 0, men 4 sec. senare köpte det 2 k till och du gick säljscriptet in och nollade, 4 sec.senare sålde det ytterligare 2k och så här höll det på till jag stoppade AT och fixade via Wintrade.
                          Uppdateringen är satt till 10 sec.
                          Jag har 2 Exit-script köp/sälj som känner av innehavet och är loopade, detta har fungerat utmärkt länge men den kvällen fick det fnatt.
                          Efter detta har jag lagt in en Delay på 1 min men den har inte gått in någon gång sedan dess.
                          Är ditt problem något liknande ?

                          Comment


                          • #14
                            Mitt problem är följande: Har fått ett exit script av Rikard som används till många modeller, det finns i script galleriet längst ner. Det har funkat problemfritt för Rikard. Jag använde det med exit 17:15 vilket fungerat perfekt både vid backtestning och skarp handel. För några veckor sedan bytte jag till 17:18 och efter detta får jag inte exit scriptet att fungera med 17:18 utan bara 17:15. Otroligt skumt, känns som om det spökar eller att någon skojar med mig. Varken jag eller Rikard har hitintills kunnat lösa det.
                            "Nothing noble is done without risk." - André Gide

                            Comment


                            • #15
                              Prova att lägga följande som ett eget script ansutet till terminen med lokalt larm kryssat. Det intressanta är att se om det här slår till kl 17:18.

                              mt1:=mult(sub(market(c),frac(d)),1440)
                              mt2:=le(mt1,12)

                              Comment

                              Working...
                              X