Allmänt meddelande

Collapse
No announcement yet.

Radera S med script

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

  • Radera S med script

    Jag har ett problem med avslut på skickade ordrar ibland. Scriptet skickar en order S som inte leder till ett avslut T som man kan se i loggade lokala ordertransaktioner. Problemet gäller skickade ordrar som inte ger något avslut alls, dvs inte säljer en enda aktie hos nordnet. Att S finns kvar i loggade lokala ordertransaktioner utan något avslut leder till problem för mitt script då nästa skickade order nu bygger på en falsk signal.
    Jag kan manuellt radera S i loggade lokala ordertransaktioner när en order S inte leder till något avslut T. Då undrar jag om det finns det någon möjlighet att radera S som inte leder till avslut genom script? Och om S inte leder till något avslut inom 1 minut vill jag att S raderas. Jag kan inte hitta någon info om detta någonstans. Mvh Robert


  • #2
    Precis som du skriver så går det att radera rader i Loggade lokala ordertransar manuellt, men tyvärr inte via script. En skickad order bokförs i databasen så fort den är skickad. Om den leder till avslut bokförs även det som en T-trans. Räcker det inte att dölja S-transar genom att bocka ur S i Loggade lokala?

    Comment


    • #3
      Skulle det kunna funka som alternativ till att radera S-transar genom script menar du? Att S-transar "inte loggas" om man bockar ur S och att scriptet därför inte triggas av falska S-transar som inte går till avslut T, utan att scriptet agerar på T-transar istället?

      Comment


      • #4
        Hm, njae inte som jag tolkar hur du menar. Scriptet vet inte om det är en S- eller T-trans. Går modellen ut på att lägga ordrar i marknaden som "fiskar" avslut?

        Comment


        • #5
          Nä jag vill ha avslut direkt och lägger ordrar därefter. Men priset vänder ibland innan jag får nåt avslut. Händer inte så ofta dock. Jag tänkter lägga in dessa rader i scriptet så att antalet aktier i föregående transaktion jämförs med senaste transaktion och på så sätt se om det blivit en riktig transaktion. Tror du detta funkar? Mvh Robert

          setgvarIf(700,701,1)
          setgvarif(portfolio(v),700,1)
          not(eqv(getgvar(701),getgvar(700))

          Comment


          • #6
            Ah, men då skulle jag helt enkelt bara ta till lite bättre i pris så blir risken nästan noll att du inte får avslut direkt. Betydligt enklare än celler etc.

            Annars kan man göra så här:

            retval(köpantal,2)
            retval(portfolio(v),3)

            som läggs i slutet av triggerscriptet. Det läggs i Loggade lokala ordertransaktioner i cell 2. När ordern är skickad vet vi alltså hur många andelar du ville köpa. Det aktuella innehavet har också sparats, i cell 3.
            För att se om det stämmer kan man läsa av efter orden skickas och jämföra portfolio(v) med summan av antalet i cell 2 och 3:

            aktuellt_innehav=portfolio(v)
            önskat_innehav=add(lasttrade(b,2),lasttrade(b,3))

            Dessa båda ska ju vara samma om allt gått igenom. Fördelen att använda Retval() och lokala celler istället för globala är att det blir instrument- och kontounikt.

            Comment


            • #7
              Tack för hjälpen! Jag testade att lägga lite bättre pris men då försvann för mycket av vinsten per trade tyvärr, då jag kör en scalpingstrategi.

              Och jag vet inte exakt hur många aktier jag köper eller säljer då jag handlar i 30000 kr block och denna info ligger i antalskriptet, så retval(köpantal,2) blir lite svår om jag förstått det rätt.

              Sedan undrar jag lite om funktionen lasttrade(b,2). Hämtar den innehåll i cell 2 oavsett om det varit en försäljning eller köp av aktier? Alltså jag kan lika gärna använda Lasttrade(s,2) när jag hämtar innehållet i cell 2, värdet blir ändå det samma?

              Och sista frågan: tror du min kodsnutt fungerar? Även om det inte är bra att använda globala celler, så blir det enklare att förstå koden för mig när man arbetar med den denna:

              setgvarIf(700,701,1)
              setgvarif(portfolio(v),700,1)
              not(eqv(getgvar(701),getgvar(700))​

              Sry för många frågor! Tack för hjälpen! Mvh Robert​

              Comment


              • #8
                Fast du kan ju duplicera koden från antalscriptet till triggerscriptet så att det beräknas även där. Kommer inte ihåg exakt, men testa att köra retval i antalscriptet - det kanske sparas i Loggade lokala ordertransar också. När du simulerar blir priset det som scriptet postar, det tas ingen hänsyn till marknadspriserna. När du kör live på skarpt konto däremot får du alltid marknadspriserna även om du tar till lite extra för att säkra avslut.

                Jag är inte riktigt med på vad kodsnutten ska göra, men som det är skrivet nu händer följande:

                Värdet 700 skrivs till cell 701.
                Antal innehav skrivs till celln700.
                Sista raden returnerar sant om cellerna inte är lika med varandra, dvs om innehavet är 700 blir det falskt, annars sant. Så det är nog inte riktigt vad du hade tänkt.

                Comment


                • #9
                  Så här tänker jag mig att det fungerar


                  KOD
                  Rad 1: setgvarIf(700,701,1)
                  Rad 2: setgvarif(portfolio(v),700,1)
                  Rad 3: not(eqv(getgvar(700),getgvar(701))​​


                  SIMULERING
                  Script körs. (Köp på 100 aktier har gått igenom):

                  Rad 1 = 700 (100 aktier) är innehav före transaktion som skrivs över till 701 (100 aktier)
                  Rad 2= Aktuellt innehav skrivs till 700 (200 aktier)
                  Rad 3= Om 700 (200 aktier) och 701 (100 aktier) är olika så har transaktion skett och då denna rad sann.

                  Nästa gång script körs (Köp på 100 aktier har gått igenom):

                  Rad 1 = 700 (200 aktier) är innehav före transaktion som skrivs över till 701 (200 aktier)
                  Rad 2 = Aktuellt innehav skrivs till 700 (300 aktier)
                  Rad 3= Om 700 (300 aktier) och 701 (200 aktier) är olika så har transaktion skett och då denna rad sann.

                  Nästa gång script körs (Köp har INTE gått igenom):

                  Rad 1 = 700 (300 aktier) är innehav före transaktion som skrivs över till 701 (300 aktier)
                  Rad 2 = Aktuellt innehav skrivs till 700 (300 aktier)
                  Rad 3= Om 700 (300 aktier) och 701 (300 aktier) är LIKA så har transaktion INTE skett och då denna rad falsk.

                  MVH Robert

                  Comment


                  • #10
                    Hm, låter onödigt komplicerat i mina öron.

                    Och som scriptet är skrivet nu skrivs värdet 700 till cell 701 varje gång scriptet körs. Dessutom skrivs aktuellt innehav varje gång till cell 700 varje gång scriptet körs, så det måste villkoras.

                    Jag tror det blir mycket enklare att räkna ut önskat målantal och skriva in i lokal cell som sparas med transen, och sen bara jämföra med aktuellt innehav och justera om nödvändigt. Då blir det bara 1 cell som används och den blir dessutom instrumentunik, samtidigt som skrivningen bara sker vid orderläggning. Dvs, färre villkor i scriptet.

                    önskat_målantal=bla bla
                    retval(önskat_målantal,1)
                    ej_genomfört=not(eqv(portfolio(v),lasttrade(b,1)))

                    Comment


                    • #11
                      Ok ska använda detta! Tack så mycket för hjälpen! Mvh Robert

                      Comment

                      Working...
                      X