Allmänt meddelande

Collapse
No announcement yet.

Villkor för att se vinst

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

  • Villkor för att se vinst

    Jag skriver ett script som skall visa när man har en viss vinst i en köpaffär.

    inkpris:=LastTrade(b,p)
    sebakåt:=20
    start:=IF(ge(d,LastTrade(b,d)),H,0)
    MaxFrånKöp:=hhv(start,sebakåt)
    Vinst3:=ge(sub(MaxFrånKöp,inkpris),3)
    IF(Vinst3,ADD(H,3),sub(L,3))

    Detta fungerar perfekt och rita en kurva över kursen när Vinst3 är uppfyllt annars ritas kurvan under.

    Om man vill använda detta i ett script för att se vinsten i en blankningsaffär blir det inte rätt!

    Blpris:=LastTrade(s,p) {Blankningspris alltså sälj}
    sebakåt:=20
    start:=IF(ge(d,LastTrade(s,d)),L,0)
    MinFrånBl:=llv(start,sebakåt) {Lägsta L sedan blankningen börjat}
    Vinst3:=ge(sub(Blpris,MinFrånBl),3) {3 punkters vinst}
    IF(Vinst3,ADD(H,3),sub(L,3))

    Det hjälper heller inte att byta ut Blpris mot priset som finns i lokala ordertransaktioner.
    Kurvan ritas hela tiden över staplarna som om det alltid vore vinst. Vad kan det vara för fel?

    Tacksam för svar!
    Åke

  • #2
    Det enda jag ser som behöver ändras är att vid blankning och du söker lägsta, så behöver if-satsen producera ett värde som inte kan vara lägst när du scannar förbi blankningstillfället.

    Ändra raden
    start:=IF(ge(d,LastTrade(s,d)),L,0)

    till
    start:=IF(ge(d,LastTrade(s,d)),L,9999)

    Bara ett värde som är högre än något som kan förekomma naturligt duger.

    Comment


    • #3
      LastTrade(b,p) eller Portfolio(P)

      Först, tack för förra svaret, jag letade efter svaret på fel ställe tydligen! Nu till nya problem.

      Jag kör i simulerat läge. Väljer in en ordermodell som köper 2% ÖVER säljkurs. Vid ordertillfället är säljkursen 653,50. I lokala ordertransaktioner noteras köpet då på 666,75 alltså c:a 2% över 635,5. Högst betalda vid aktuell tidpunkt var 653,75.

      Slutsatsen blir att hade affären gjorts på riktigt hade priset blivit c:a 563,5.

      Min fråga är: Om affären gjorts i verkligheten hade då värdet 666,75 noterats i lokala ordertransaktioner ändå eller hade det verkliga köppriset noterats?

      Om det är så att inte det ”verkliga handelspriset” noteras, hur kan man då använda LastTrade(b,p)? För jag antar att LastTrade hämtar sitt värde från lokala ordertransar? Om jag i exemplet ovan önskar sälja med 2 pkt vinst och följaktligen skriver Add(LastTrade(b,p),2) kommer inte detta att lösa ut förrän på 668,75 vilket ju inte är vad jag önskade.

      Kanske är lösningen att använda Portfolio(P). Vet inte om den fungerar nu. (Den gjord inte det för något år sedan.) Skulle vilja veta vilket värde den hämtar, hela affärens värde eller per aktie / termin? Varifrån hämtas värdet till Portfolio(P)?

      Detta borde vara bättre belyst under kommentarer för formler i hjälpen. Man måste veta exakt vad som händer för att kunna skriva korrekta script.

      Med vänlig hälsning
      Åke

      Comment


      • #4
        I lokala ordertransar är senast listade värde på t.ex limit det som LastTrade() tar fram.(Översta för respektive papper).

        Så snart affären gått igenom så skannas avsluten på depån igenom och nya poster läggs till transarna.

        De som genereras av programmet brukar få 'k' eller 'kop.x' som indikator för köpt, eller 's' eller 'salj.x' för sålda.

        När avsluten skannats från depån står det lite annan text typ Buy, Sell eller liknande och det står inte lika mycket uppgifter i de övriga kolumnerna som vid programmets genererade ordertransar.

        När den senaste posten skannats från avslut på depån så är det gällande priset för avslutet som står i translistan det som LastTrade() levererar.

        Så ett litet övergångsskede finns då din angivna limit levereras av LastTrade() tills det riktiga avslutet gjorts på börsen och skannats in i Friendly. Sedan levereras det verkliga priset det slog igenom på.(Alltid enligt översta posten alltså).

        Märk att jobben med kursinsamling görs först, och skanning av depån sist i varje insamlingsomgång.

        Portfolio() tar fram värdet som finns i antal-fältet i grunduppgiften på pappret. Detta värde underhålls av programmet genom att skanna av Nordnet-portföljen på depån. När hela innehavet sålts och det försvinner från Nordnets portfölj underhåller man värdet genom att skanna av avsluten och räkna ned innehavet. Det skall ju bli noll slutligen då beroende på hur mycket delavslut det blir.

        Priset som hämtas av Portfolio() styrs också av vad som levereras från Nordnet där. Är det enskilt pris per aktie, är det detta du får. OM jag minns rätt är det detta priset.

        Skanning av Nordnet-depån skall ske oavsett om du lägger ordern via Friendly eller inte. Samma sak med avsluten. Så med dessa saker förkryssade i Friendly skall det spegla verkligheten på depån.

        Comment


        • #5
          Bra, då vet jag att simulerad köning med LastTrade i vissa fall INTE KAN bli rätt för att någon senare scanning från depån görs ju inte.

          Men med tanke på övergångsskedet som du beskriver då LastTrade ”visar fel” under en liten tid, vad är det då för vits med att använda LastTrade i stället för Portfolio. Använder man Portfolio antar jag att man får ”rätt värde” så fort det finns något att visa? Och om kommande order bygger på förra affärens pris måste man ju vara säker på att rätt pris används.

          Comment


          • #6
            Man kan mycket väl använda Portfolio() om man vill.

            Kanske gör man en test av antal för att veta att det finns innehav innan man förlitar sig på priset.

            Sedan kan du skilja på köp och sälj med LastTrade().

            En sak som kan vara användbar är

            Retval(d,01234) returnerar värde från triggerscripten.

            Dessa minnesvariabler lagras nämligen undan med varje trans som görs. Dessa kan sedan hämtas med

            LastTrade(BS,01234)

            Så du kan t.ex själv lagra undan Säljkursen med

            Retval(s,3) vid orderns triggerscript, även om du kört Limit Säljkurs-något i antalscriptet.

            och sedan hämtas det av likväl antalscript som andra script med Lasttrade(). Så man kan föra över information mellan transar på det sättet.

            Comment

            Working...
            X