Allmänt meddelande

Collapse
No announcement yet.

Skriva till globala variabler

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

  • Skriva till globala variabler

    Hej.

    Jag har lite funderingar på globala script, min fundering är om man kan tex köra ett script till ett instrument tex Swed A, som går hela tiden och skriver variabler utan att ha en ordermodell kopplad.

    Jag har påbörjat ett script där tanken är att skriva globalt 1 eller 0 utifrån MFI går över eller under 20.

    MFIa1:=MFI(28)
    Sant1:=LT(MFIa1,20)
    OM01:=If(LT(MFIa1,20),1,0)
    Skriv1:=SetIniIf(OM01,32600,Sant1)

    i1(
    SetIniIf(OM01,32600,Sant1)
    )

    Hur vet jag om scriptet fungerar?
    Jag har kört "Testa syntax" utan felmeddelande.

  • #2
    Jag skulle skriva en komplett dummyordermodell.

    i1(
    MFIa1=MFIEX(28,A)
    Sant1=LT(MFIa1,20)
    SetGVarIf(Sant1,3260,1)

    mult(0,0)
    )

    {@A(1,SWED A )}
    ...............................................
    Kommentarer.
    1) Skall man skriva till globala variabler använd funktionen SetGVarIf.
    2) Tror att det är maximalt 10000 celler som reserverats för globala variabler.
    3) Funktionerna LT, LE, GT, GE, EQV är boolska dvs ger alltid värdet 1 om villkoret är sant och 0 om villkoret är falskt.
    4) Om man tar in instrumentet som cmpref (använder funktionen EX) så får du beräkningen för Swed A även om du kopplar ordermodellen till ett annat instrument. Detta är användbart om man tex vill analysera index men handla ett annat instrument.

    mvh
    Bertil

    Comment


    • #3
      Setiniif() skriver till globala celler som ligger i inifilen ScriptVariables.ini

      Den ligger på disk och kan läsas i vanliga Anteckningar. Enkelt att se att värdet hamnat där också.

      Comment


      • #4
        Ovster,
        Om du har AutoTrader Pro dvs även Analysaatorn så kan du även göra ett g) script. Välj ett befintligt G) script. Kopiera och ge tex namnet Global 3260
        g) Global 3260

        Ändra det kopierade scriptet till:

        i1(
        GetGvar(3260)
        )
        --------------

        Nu kan du välja in scriptet som en extrakolumn då du simulerar. Vid varje avslut så kan du då se i extrakolumnen om värdet är 0 eller 1.

        mvh
        Bertil

        Comment


        • #5
          Tack för tipsen.

          Jag ska testa lite, återkommer hur det går.

          mvh Ovster

          Comment


          • #6
            Jag tror också han vill veta hur man kopplar på scriptet utan ordermodell. Det kan man göra direkt från diagrammet. Välj aktuell script som är kopplat till diagramet. Välj sedan visa i diagram eller larmbevakat så körs scriptet i realtid. Då kan man även rita värdet i diagrammet.

            För att undvika larm eller signaler skulle jag avsluta scriptet med ett uttryck som blir falskt, tex and(0,0)

            Lite förenklat:
            SetIniIf(lt(mfi(28),20),100,1)
            eller
            SetGvarIf(lt(mfi(28),20),100,1)

            Comment


            • #7
              Jag har provat att använda SetIniIf() och sedan letat efter ScriptVariables.ini för att se att den skriver variabeln, men den filen verkar inte finnas.
              Kan man göra ett .txt och döpa om till .ini och vart ska den vara isåfall?

              mvh Ovster

              Comment


              • #8
                Labbade lite i diagrmmet. Scriptet visar röd markering när mfi är under gränsvärdet. Ritar även Mfi-kurvan. Egentligen behövs inte cellen, men jag vet ju inte vad du vill göra. I diagrmmet använd området Analys1 och skalning 0-100. Titta upp SetGvarIfGui i scriptreferensen.

                i1(
                SetGvarIfGui(lt(mfi(28),20),100,1)
                draw(mfi(28),4,gsa)
                draw(20,5,bsa)
                draw(mult(GetGvar(100),5),3,rsbF)
                and(0,0)
                )
                .?
                Edit: Till din fråga ovan. Jag tror värdet bara sparas vid körning live. Om du vill prova får köra på ett instrument som får in kurser nu. Filen finns normalt under c>ProgramData>AutoTraderBas
                Last edited by Henric; 2018-11-22, 19:21.

                Comment


                • #9
                  Tanken är att scriptet ska kunna kopplas till flera valfria instrument (tex i omx30) och att kunna skapa ett eget MFI för att se om det kan användes som komplement för analys av omx30 index.

                  Comment


                  • #10
                    Det blir mer komplicerat eftersom att mfi för olika instrument behöver olika celler. Det finns olika sätt beroende på om det ska köras i tillsammans med andra ordemodeller i simulering eller live. Alternativt som underlag för semi-automatiskt / diskretionärt.

                    Extraobjekt(max tre stycken per script), dynamiska celler, etc. Lite svårt att avgöra nu.
                    Enklast nu i början är nog att hårdkoda en cell för varje instrument, med SetIniIf eller SetGvarIf. Sedan köra din sammanräknande funktion i ett script.

                    Edit: Ett alternativ skulle kunna vara att köra mfi på omx-terminen. Det blir lite bökigare med backtesting och lite konstiga värden runt terminsbyte(men verkar dock vara snabb då du använder i1 och det påverkar inte så mycket).

                    Ett snabbt uppslagför att hårdkoda:
                    SetGvarIf(lt(mfi(28),20),100,eqv(crcid(),xxxxxxx)
                    SetGvarIf(lt(mfi(28),20),101,eqv(crcid(),xxxxxxy)
                    SetGvarIf(lt(mfi(28),20),102,eqv(crcid(),xxxxxyy)
                    osv...

                    Varje gång en cell körs på rätt instrument skrivs villkoret. Om scriptet avslutas med and(0,0) kan scriptet kopplas till flera instrument i en ordermodell som bara beräknar och inte triggar. Alternativt till aktuella instrument i diagram.
                    crcid() för varje instrument får du ta fram själv i simulatorn eller med Setiniif.
                    Last edited by Henric; 2018-11-22, 19:50.

                    Comment


                    • #11
                      Nackdelen med varianten att använda crcid enligt Henriks exempel är.
                      1) Man måste själv koppla alla instrument till scriptet
                      2) Då man kör analysatorn så kopplas ju automatiskt alla valda instrument till alla ordermodeller därför måste man i alla övriga ordermodellers triggerscript ange att de bara gäller för ett instrument genom crcid filtrering.

                      mvh
                      Bertil

                      Comment


                      • #12
                        Absolut, men det är enkelt att filtrera signal med crcid(). Dessutom kommer det blir lika tungt att ta in en massa extraobjekt så länge det inte är färre än fyra. Det går att göra slikare med tex dynamiska celler, men hjälper inte antal instrument i simulering. Jag visar bara ett labbförslag innan han kan själv avgöra hur upplägget ska se ut.
                        Last edited by Henric; 2018-11-22, 20:34.

                        Comment


                        • #13
                          Nu har jag moddat scriptet för test och anslutit det till SWED A, larmbevakat, om jag uppfattat någorlunda rätt så bör scriptet vid MFI under 20 skriva värdet för MFI till cell 3260 och detta sker då SWED A får löpande kurser.

                          i1(
                          MFIa1=MFI(28)
                          Sant1=LT(MFIa1,20)
                          SetIniIf(MFIa1,3260,Sant1)
                          mult(0,0)
                          )

                          Comment


                          • #14
                            "bör scriptet vid MFI under 20 skriva värdet för MFI till cell 3260"
                            Japp detta är korrekt, MEN då värdet går över 20 händer inget utan cell 3260 behåller det senaste värdet som är under 20 ända tills nästa tillfälle värdet går under 20. Detta vill du väl inte?

                            mvh
                            Bertil

                            Comment


                            • #15
                              En enkel förklaring av modellen, det kanske finns andra bättre lösningar.

                              Genom att ansluta alla omx30 instrument till tex MFI, RSI, etc och låta instrumenten var för sig skriva till globala variabler löpande så kan man i den skarpa ordermodellen selektera ut de instrument man tror på och hämta värdena och skapa egna MFI, RSI, etc för att sen kunna jämföra med omx30, kanske hittar man någon avvikelse som år att använda och leder till ett bra köp. ��
                              Last edited by Ovster; 2018-11-22, 21:07. Anledning: Svar till Bertil, Nä, det var inte tänkt så, det bör ska vara noll då.

                              Comment

                              Working...
                              X