Allmänt meddelande

Collapse
No announcement yet.

Olika typer av variabler

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

  • Olika typer av variabler

    Hej!

    När skall man använda olika typer av variabler:

    Minnesceller 0-9
    - är dessa per instrument?

    Globala variabler

    Ini-fil variabler

    Var finns dokumentation om dessa?
    Finns det andra typer av variabler?

    Det är lite svårt att sätta sig in i detta genom att läsa Scriptreferensen.

  • #2
    Lokala celler 0-9 används tex i samband med Draw() eller när man bygger loopar med LOOP() för att lagra tillfällig information som räknare osv.

    Globala celler 10-899 används för det mesta egentligen, en viktig egenskap är att de är just globala och andra script kan läsa och skriva till dem. Väldigt praktiskt när man bygger portföljstrategier, eller vill skicka värden mellan olika script kopplade till olika instrument.

    Ini-filsvariablerna fungerar på exakt samma sätt, men med skillnaden att de är läsbara i ini-filen AutostockTrader.ini

    Scriptreferensen under SetGVarIf() och RetVal/Getval samt SetiniIf() förklarar hur de fungerar, men det skadar inte att läsa igenom scriptlektionerna 1-14 samt videoklippen del 1 och 2 om scriptkursen.

    Allra bäst tror jag egentligen forumet är! Bara att ställa en fråga så svarar någon. Är det något specifikt problem du vill ha hjälp med?

    Comment


    • #3
      Tack för svar!

      Jag får passa på att ge lite feedback från en nybörjare i systemet:

      Jag tycker scriptreferensen är ganska så bra, men jag saknar en komplett förteckning av t.ex. olika typer av variabler, vad de olika standard-talserierna innehåller. Det är svårt att få svar genom att söka på forumet.

      Det hade varit grymt bra om era standardscript och modeller är kommenterade - hade varit mycket lättare att sätta sig in i produkten genom att kolla på dessa exempel.

      Jag kan ta ett exempel:
      nu försöker jag ta reda på hur jag ser till att modellen inte agerar på första 15 minuterna.
      1) Jag kollar då på scriptet "xk) Agera inte på dagens första 5 minuter"
      Och fastnar då direkt på vad betyder talserie D, och får söka i scriptmanualen och på forumet. Hittar tillslut att det verkar vara ett flyttal som innehåller datum och tid. Sedan verkar det som om den ger en signal på den första 5 minuters perioden genom i5. Men skall jag då ändra i5 till i15 för att få det att fungera på 15 minuter?
      Hade det scriptet varit kommenterat så hade det varit mkt snabbare att sätta sig in i det.

      Jag har utvecklarbakgrund och utvecklat i de flesta språken, men måste erkänna att jag har väldigt svårt att sätta mig in i denna miljön.
      Och jag tror att det hade varit mycket enklare om scriptreferensen hade haft dokumentation på alla talserier, variabeltyper osv.

      Det verkar som om miljön är väldigt flexibelt och kraftfullt, men tröskeln att komma igång är lite för hög. Det tar lite för lång tid att får själva syntaxen rätt och miljön att lira. Och den tiden skulle jag vilja lägga på köp och säljalgoritmerna istället för det är ju dem som man vill ha hjälp att köra i programmet.

      M

      Comment


      • #4
        Tackar för feedback! Jo, vi har fått samma synpunkt på just standarddataserierna. Vi tog upp dessa i Scriptwebinariet del 1, men ska lägga dit dem även under Sammanställningen i scriptreferensen.

        En del script är kommenterade men det är bara att erkänna att vi varit lite för dåliga på att göra det konsekvent.

        Som du säger vad gäller xk)-scriptet, så är det bara att ändra till i15 för att varje period ska bli 15 minuter istället och därmed spärra dagens första 15 minuter.

        En tredje scriptkurs-del är planerad, och där kan vi gärna ta upp saker som dessa, best practice, vanliga frågor om script, syntax osv.

        Comment


        • #5
          Hej igen,

          en följdfråga:

          Jag har en ordermodell med ett säljscript som bygger på glidande ATR stopp. Jag har implementerat det med en global variabel för att lagra undan ATR värdet (se nedan).

          Nu vill jag köra denna ordermodell mot många instrument samtidigt, men då måste jag alltså ha olika globala variabler per instrument?
          Har du något tips på hur jag skulle kunna lösa det på ett alternativt sätt?`
          Använda mig av en lokal cell istället kanske?

          haveStocks=GT(PORTFOLIO(v), 0)

          minsBeforeMarketClose=MULT(1440, SUB(MARKET(c), FRAC(DATE())))
          timeToTrade=AND(GE(minsBeforeMarketClose, 8), LT(minsBeforeMarketClose, 9))

          lastATRstop=GETGVAR(800)
          thisATRstop=SUB(C, MULT(ATR(20), 1.5))
          underATRstop=LT(C, lastATRstop)
          newATRstop=IF(AND(NOT(underATRstop), GT(thisATRstop, lastATRstop)), thisATRstop, lastATRstop)

          sell=AND(underATRstop, AND(haveStocks, timeToTrade))

          { Nollställ ATR trailing stoploss värdet i cell 800 om säljer }
          SETGVARIF(0, 800, sell)

          { Sätt ATR trailing stoploss värdet till nytt högre om inte säljer och har innehav }
          SETGVARIF(thisATRstop, 800, AND(NOT(sell), AND(GT(thisATRstop, lastATRstop), haveStocks)))

          MULT(sell, 10)

          Comment


          • #6
            Hej!

            Om du lagrar värdet i en global cell så behövs det en unik cell för varje instrument. Det blir en bökig lösning om man vill köra många olika instrument. Då är det bättre att lagra stoppens värde som en dataserie i scriptet.

            Comment


            • #7
              I sina triggerscript så kan man lägga en if sats med test på instrumentid på de instrument som man skall handla. Till varje instrument så kopplar man en global variabel. Gör man på detta sätt så fungerar det även vid körning i Analysbänken om man vill simulera mot flera instrument samtidigt.

              mvh
              Bertil

              Comment


              • #8
                En liten luring på temat.

                Har ett sl script som har som uppgift att hitta bottnar. När han hittat en sån och genomför köpet så vill jag lagra i en global variabel hur djup bottnen var som djupast, vilket jag inbillar mig att jag kan göra på något sätt genom att kolla lowest low senaste 3 dagarna. Nu har jag ju dagsupplösning men jag vill ju veta hur djupt det var som djupast även under dagen - alltså svansen. Nåja, det blev en sidofråga.
                Den egentliga frågan var att när jag väl lagrat värdet genom setgvar så vill jag bara att det ska vara giltigt visst många börsdagar. Hur kan jag kolla det? Jag kan ju lagra ett datum i en annan gvar men hur vet jag vilka dagar därefter som är öppna? Eller kan jag lösa detta på annat sätt? Tanken är att jag ska gå ur positionen helt om kursen går under bottnen.

                /Erik

                Comment


                • #9
                  botten=le(l,llv(l,7)) {7 dagars intraday låg}
                  värde=if(hhv(botten,5),find(botten,5,l,0),0) {värde för botten giltig 4 staplar efter}
                  draw(värde,3,yqb)

                  Comment


                  • #10
                    Tack Henrik. Oj vad tid såna svar sparar

                    Använder en modifiering av standardmodellen RSI toppar ur.... som ett av mina säljscript. Vill att den enbart ska vara giltig en gång per dag. Jag har skrivit eget va)-script för att räkna ut hur mycket som ska säljas och har ett xk)-script som delays nästa affär med 20 minuter men jag vill hellre lägga till ett xk)-script för att kolla så att just denna modellen bara släpper igenom en försäljning en gång per dag. Däremot kan ju något annat säljscript ge signal samma dag och därmed få sälja.

                    Borde gå att kolla D för lasttrade och plocka ut datum därifrån och sedan jämföra med dagens datum.

                    EDIT: Eller egentligen inte. För jag ska ju inte bry mig om andra affärer som görs den dagen, det är ju bara just RSI toppar ur scriptet som enbart får sälja en gång per dag. Kanske dags för setgvar nu igen?

                    /Erik
                    Last edited by e-Rik; 2015-05-25, 21:07.

                    Comment


                    • #11
                      Eventuell kan retval i samband en säljtopp användas. Då kan villkoret bara bli sant en gång per dag. Ex. i egen ordermodell. Om flera triggers i en ordermodell får datum sparas endast då säljtopp är sant.

                      ....
                      villkorsäljtopp1=xxxx
                      villkorsäljtopp2=and(villkorsäljtopp1,gt(int(d),int(lasttrade(s,0))))
                      retval(d,0)
                      mult(villkorsäljtopp2,10)

                      Comment


                      • #12
                        Ja jusst det. Du puttar in dagens datum genom retval(d,0) sedan nästa gång allt prövas så hämtas det värdet genom int(lasttrade(S,0)) och detta jämförs med innevarande datum som då måste vara större för att villkoret ska vara sant.
                        Fast däremot stoppar du in värdet i retval varje gång du kör scriptet? borde man inte villkora skrivningen till retval så att den enbart görs när villkorsäljtopp2 blir sann?

                        Comment


                        • #13
                          Cell 0-4 sparar värden i samband med order. Finns både på köp- och säljsidan.

                          Comment


                          • #14
                            Ursprungligen postat av Henric Visa inlägg
                            botten=le(l,llv(l,7)) {7 dagars intraday låg}
                            värde=if(hhv(botten,5),find(botten,5,l,0),0) {värde för botten giltig 4 staplar efter}
                            draw(värde,3,yqb)

                            Kom på nu när jag skulle använda det att det är ju om man räknar på det instrumentet som man är ansluten till. Detta vill jag räkna på ett extraobjekt. Alltså via cmpref() då blir det ju lite annorlunda. Speciellt eftersom jag kör detta scriptet i minutupplösning men vill kolla dagslägsta x dagar bakåt. Kan iof räkna ut hur många 1 minuters perioder det blir per dag och multiplicera.

                            Någon som har en bättre lösning?

                            /Erik

                            Comment


                            • #15
                              Du kan ju ha upp till 3 st cmpref. Det går ju bra att ha två st cmpref mot samma instrument fast med olika upplösning.
                              mvh
                              Bertil

                              Comment

                              Working...
                              X