Allmänt meddelande

Collapse
No announcement yet.

Indata Script

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

  • Indata Script

    Jag tänkte koppla mitt trigger-script till flera aktier samtidigt, och för att skicka signaler mellan köpscript och säljscript kan man då använda globala minnesceller. Dock stöter man på problemet att flera papper kanske får signal samtidigt och försöker skriva viktiga saker till samma minnesceller.

    Jag tänkte mig då att man skulle kunna använda Indata Script och sätta vilka minnesceller som det pappret får använda sig av. Detta funkar fint och jag kan göra tex:

    {Skriva variabler}
    *************************
    //Räknar ut vilka index denna aktien får ha. Har satt att varje aktie kan ha 10 parametrar, och får börja skriva från plats 200 och uppåt. Vilken siffra som aktien får använda bestäms av ScrPar(21), där jag skriver in 0,1,2,3 osv för de aktier jag har anslutna


    numberOfVariables:=10
    indexBase:=200
    stockIndexMultiplier:=ScrPar(21)
    startIndex:=ADD(indexBase,MULT(numberOfVariables,stockIndexMultiplier))
    indexIsLong:=ADD(startIndex,0)
    indexStopLoss:=ADD(startIndex,1)
    indexBuyTime:=ADD(startIndex,2)
    indexNumberOfStocks:=ADD(startIndex,3)

    //Kod till beräkning


    {Write to global variables}
    SetGVarIf(1,indexIsLong,1) {Long is +1, short is -1}
    SetGVarIf(mStopLossLevel,indexStopLoss,1)
    SetGVarIf(Date(),indexBuyTime,1) {Now()}
    SetGVarIf(mAntalToBuy,indexNumberOfStocks,1)

    *************************

    {Läsa variabler}

    {NumberOfStocks}
    numberOfVariables:=10
    indexBase:=200
    stockIndexMultiplier:=ScrPar(21)
    startIndex:=ADD(indexBase,MULT(numberOfVariables,stockIndexMultiplier))
    indexIsLong:=ADD(startIndex,0)
    indexStopLoss:=ADD(startIndex,1)
    indexBuyTime:=ADD(startIndex,2)
    indexNumberOfStocks:=ADD(startIndex,3)
    GetGVar(indexNumberOfStocks)
    ******************************

    För att ha en överblick av vilka värden som olika aktier har, så har jag kommit på att Kalkylutforskaren är bra. Där radar jag upp en kolumn för varje variabel jag vill läsa av.

    Problemet är dock att ScrPar(21) inte verkar läsas in i Kalkylutforskaren mer än för första kolumnen!?

    Så om jag har skrivit data till platserna [210,211,212,213]
    så får första kolumnen i kalkylutforskren mycket riktigt fram [210], men sedan blir det [201,202,203] om jag kör följande kod på fyra olika kolumner:

    numberOfVariables:=10
    indexBase:=200
    stockIndexMultiplier=ScrPar(21)
    startIndex=ADD(indexBase,MULT(numberOfVariables,stockIndexMultiplier))
    indexToUse=ADD(startIndex,0)
    MULT(indexToUse,1)

    Jag antar att jag förvirrat bort er för länge sedan, men frågan är alltså om där är en bugg i mitt script eller i NAT, som gör att ScrPar() inte funkar så bra i Kalkylutforskaren

  • #2
    Hm, kan inte se något direkt fel. Men jag skulle nog prova att ändra stockIndexMultiplier=ScrPar(21) till vanligt tilldelat namn, alternativt returvärde från funktion på samma sätt som du gjort med indexToUse.

    stockIndexMultiplier:=ScrPar(21)


    PS. Måste säga att jag är imponerad av dina snabba scriptframsteg!!

    Comment


    • #3
      Tack, det tar ett tag att lära sig vad som är tillåtet/möjligt att göra eller inte, men jag lär mig lite för varje gång jag sitter med det.

      Jag gjorde ett test och skrev in följande på varje kolumn i kalylutforskaren:
      ********
      ScrPar(21)
      ********

      Då borde varje kolumn bli lika, men så är inte fallet. Endast första kolumnen visar rätt, medan de andra visar nollor. (Se screenshot). Det verkar således som en bugg (eller feature?)

      Nu är det helg!
      Attached Files

      Comment


      • #4
        Nja, ScrPar(21) returnerar ju värdet från fält 21 för aktuell aktie. När du kör den som en kalkyl på flera aktier blir det olika värden för varje aktie såvida du inte matat in samma värde i fält 21 för samtliga aktier.

        Comment


        • #5
          Det borde jag kanske ha förtydligat.
          På position 21 har jag har alltså matat in värde 1 för ABB, 2 för ALFA, 3 ALIV, etc.

          Detta ger således värdena 1,2,3...10 i kolumn "Long/S..." som jag visade i screenshoten. Däremot för nästa kolumn "StopLo..." så borde det även där stå 1,2,3...10 (Samma aktie, samma värde på indata position 21). Dock får jag bara nollor där.

          Vad jag menar är att indata script endast verkar räcka till första kolumnen

          Comment


          • #6
            Se där! En bugg siktad! Det ska fungera så som du gjort, jag provade själv precis med värden i tre fält och tre kolumner men fick bara ut värdet i första kolumnen. Vi tittar på det på måndag.

            Comment


            • #7
              Jag är glad att jag kan hålla er sysselsatta
              En bugg mindre!

              Comment

              Working...
              X