Allmänt meddelande

Collapse
No announcement yet.

Skala in / scaling / utöka position

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

  • Skala in / scaling / utöka position

    Hur går jag till väga rent schematiskt för att utöka min position enl. nedan?

    Säljscriptet ska kunna sälja när som helst då ett innehav finns. Ett första köp ska göras initialt, ett andra köp ska kunna utöka positionen, och ett tredje kunna utöka ytterligare en gång. (Tänk dig t.ex. ett utbrott som triggar köp, bekräftelse på att det går åt rätt håll utökar positionen, ytterligare bekräftelse utökar positionen igen.)

    Antar att det är enklast att skriva till en global cell var i processen man befinner sig och sen ha det som villkor för att köpscriptets villkor ska få trigga sant?! Hur ser en sådan lösning i så fall ut rent schematisk? Var ligger setgvarif som sätter värdet i cellen? I köpscriptet? I ett kontrollscript för att bara faktiska order ska få sätta värden i cellen??

    Tänker mig att när köp 1 görs skrivs värdet 1 i global cell X, när köp 2 görs skrivs värdet 2, köp 3 värdet 3, och sälj sätter värdet till 0.
    För att köp 1 ska tillåtas så måste det stå 0 i den globala cellen, för att köp 2 ska få ske måste det stå 1 i globala cellen, för att köp 3 ska få ske måste det stå 2, för att sälj ska få ske måste det stå 1, 2 eller 3.

    Det ska gå att enkelt styra beloppen för respektive köp (i kr eller % av depå).

    Hjälp mig på traven här... helst schematiskt först så jag förstår. Hur ser den här styrningen ut för att funka på bästa sätt? Ett script? Flera script? Var ligger setgvarif-funktionen som sätter värdet? En ordermodell? Flera ordermodeller? HJÄLP!! ...hjälp...

  • #2
    Det går att lösa ditt problem på flera olika sätt. Stegning genom en global i triggerscriptet som du själv är inne på eller genom stegning i antalsscriptet.

    Ett problem du måste ta itu med innan du sätter igång dock, är att bestämma hur/när nästa instegning ska ske, dvs ett villkor på själva bekräftelsen.

    Tänk dig att du har ett script som triggar, då ligger (oftast) triggern på ända till dess att dess att den slår om till sälj. Om du då enbart går på med villkoret "bekräftelse" att triggern fortfarande är på så kommer du bara att få tre snabba instegningar efter varandra och det var nog inte så du menade.

    Ska det instegningen ske efter viss tid exempelvis eller har du tänkt dig något annat?

    Comment


    • #3
      Hej Swedtraders!
      Det verkar som du tänkt ut väldigt komplexa ordermodeller och sedan bara försöker koda ner dem och ibland stöter på patrull.
      Själv gör jag tvärt om. Börjar att bygga väldigt enkel kod som jag testar och sedan bygger in funktion efter funktion.
      Kanske jobba 80% av tiden med trial and error för att testa funktionalitet mm och 20% av tiden med att skriva skarpa scipt.
      Jag skulle aldrig börja att koda en ordermodell som handlar i tre steg utan först labba med modell som handlar i två steg med lite olika tekniker och då jag fått något som fungerar utöka till tre steg osv.
      Detta förenklar felsökningen avsevärt.

      Just my 10 cents.
      Bertil

      Edit1: Då man håller på med trial and errorordermodeller så studerar man ju samtidigt aktiens kursrörelser och detta ger en del aha upplevelser som man kan använda för att trimma sin edge.
      Last edited by Bertil; 2015-04-23, 00:17.

      Comment


      • #4
        Hej Swedtraders! Om jag förstod ditt upplägg rätt så är det ganska enkelt att låta triggerscriptet skriva ner värden i celler som sparas med transaktionen. Jag skulle nog undvika globala celler i det här fallet eftersom det lätt blir risk för ihopblandning om man kör flera olika instrument. Då är det enklare att skriva till celler som bara hör till det instrumentet.

        Tex om du låter näst sista raden i triggerscriptet på köpsidan vara:

        ditt köpscript=xxxxx
        retval(1,0)
        mult(köpsignal,10)

        så betyderdet att värdet 1 skrivs till cell 0 vid order. Värdet sparas på disk med transaktionen och du kan se det via Starta > Loggade lokala ordertransaktioner till höger där de fem cellernas värden visas.

        Du kan läsa av värdet från vilket annat script som helst med LastTrade(b,0) där B står för Buy-transaktion och 0 är cellnumret. Du har alltså celler 0-4 att lagra olika saker i med transaktionerna. När du vill skala ner vet du vilket vilket antal som köpsidan hade senast, och vid en säljorder kan du på samma sätt låta ett värde sparas i tex en annan cell så har du båda sidor tillgängliga. Säljtransarna läses med LastTrade(s,1) tex där S betyder Sell och 1 är cellen.

        Tänk på att även antalscriptet kan läsa detta och räkna ut antal med någon logik du kommer fram till.

        Comment


        • #5
          -Rikard, retval låter ju klockrent. Måste dubbelkolla bara... Skrivs värdet till cellen då en order läggs eller när ordern går igenom? Det skrivs inget värde var 5:e sekund då scriptet körs då alltså, är det rätt uppfattat?


          -Bertil: Scriptet är väl utarbetat och testat genom många olika versioner så det är allt annat än några hafsiga tankar som jag försöker koda. Jag fattas bara sista pusselbiten för att få det att fungera klockrent med själva skalningen. Den metod jag använder hittills kan eventuellt vara tveksam i vissa fall, därför vill jag ha en säkrare teknisk lösning på just skalningen.

          Comment


          • #6
            Värdet skrivs när ordern läggs, inget var 5:e sekund.

            Comment


            • #7
              Får ett fjärde köp i bänken när det ska stanna vid 3... Vad gör jag för fel?
              .
              .
              .
              kod...

              buy1=and(and(and(ej_innehav,köp6),ej_köpt_idag),ej_sålt_idag)

              {köp om innehav finns och det står 1 eller 2 i cell nr0 efter senaste köp, och utöka köp är sant}
              buy2=if(and(and(and(and(har_innehav,utöka_köp_ok),ej_köpt_idag),ej_sålt_idag),eqv(lasttrade(b,0),1)),1,0)
              buy3=if(and(and(and(and(har_innehav,utöka_köp_ok),ej_köpt_idag),ej_sålt_idag),eqv(lasttrade(b,0),2)),1,0)
              buy4=if(buy1,retval(1,0),if(buy2,retval(2,0),if(buy3,retval(3,0))))
              buy5=if(or(or(buy1,buy2),buy3),retval(omx_stäng,1))
              buy6=and(or(or(buy1,buy2),buy3),före_börsstäng3)

              draw(mult(köp6,7),6,gsbfw)
              mult(buy6,1)

              Comment


              • #8
                Prova att använda retval som eget uttryck utan att nästla med if i en minnesreferens.

                ....
                buy6=..
                retval(if(buy1,1,if(buy2,2,if(buy3,3))),0)
                mult(buy6,1)

                Comment


                • #9
                  Lysande! Tack Henric, nu tror jag det funkar som det var tänkt! Får max tre köp nu på den period jag testat hittills. Förenklade andra retval-raden också som led av samma fel och dessutom var onödigt tillkrånglad. Kanske kan principen hjälpa någon annan som har liknande tankar på att skala in.

                  .
                  .
                  .
                  kod...

                  buy1=and(and(and(ej_innehav,köp6),ej_köpt_idag),ej_sålt_idag)

                  {köp om innehav finns och det står 1 eller 2 i cell nr0 efter senaste köp, och utöka köp är sant}
                  buy2=if(and(and(and(and(har_innehav,utöka_köp_ok),ej_köpt_idag),ej_sålt_idag),eqv(lasttrade(b,0),1)),1,0)
                  buy3=if(and(and(and(and(har_innehav,utöka_köp_ok),ej_köpt_idag),ej_sålt_idag),eqv(lasttrade(b,0),2)),1,0)
                  retval(if(buy1,1,if(buy2,2,if(buy3,3))),0)
                  retval(omx_stäng,1)
                  buy4=and(or(or(buy1,buy2),buy3),före_börsstäng3)

                  draw(mult(köp6,7),6,gsbfw)
                  mult(buy4,1)


                  ...EDIT
                  Ska väl tillägga att jag nollar cellerna enligt nedan varje gång innehavet säljs. (Jag säljer hela innehavet på en gång än så länge.)
                  retval(0,0)
                  retval(0,1)
                  Last edited by swedtraders; 2015-06-11, 12:03. Anledning: Nollar cellerna vid sälj

                  Comment

                  Working...
                  X