Allmänt meddelande

Collapse
No announcement yet.

Krontroll av att hela innehavet sålts.

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

  • Krontroll av att hela innehavet sålts.

    En ordermodell innehåller köpsekvens 9A och säljsekvens 9B. Jag vill nu bygga på med ytterligare en sekvens som skall kontrollera och eventuellt se till att hela innehavet är/blir sålt.

    Sekvensen skall alltså göra följande:
    Om det fortfarande finns innehav >0 skall de omedelbart säljas annars skall sekvensen släckas eller möjligen åter ställa sig på 9A. Misstänker att användning av stegascript skall användas men jag är osäker på exakt hur?

    Har läst vad som tidigar skrivits om odokumenterat i AT men får inte riktigt ihop det.
    Första frågan som infnner sig, skall köpsekvens 9A endast heta (1), 9B heta (2) och 9C heta (3) eller skall man kalla dem för sina namn ”Köp, Sälj, Kontroll”? Går det bra vilket som?

    Var någon stans i triggerscriptet skall stegascriptet skrivas typ: if(innehav,3,1).

  • #2
    Stegascript skall ha signatur st) så har du dessa att välja på på sista sidan i ordermodellen.

    Ser du inte alla alternativen där så gå till Preferenser->Handel och aktivera att dessa alternativ för stega och synk kan användas.

    Så om du aktiverar att du kör stega script alltid på sekvensen du står på, så har du möjlighet att flytta till annan sekvens för nästa kursinsamling utan att göra något alls. Ingen bök med nollorder etc.

    st) Gå till 9A

    Add(1,0)

    Stegascriptet ovan körs efter att triggern slagit till och verkställt ordern, eller körs ändå, och resultatet blir alltid att man flyttar sig till 9A. Detta under förutsättning att du står på 9C då som antingen skall sälja resten eller bara flytta sig.


    Här ett som kanske passar på 9B-sekvensen.

    st) Om inget innehav gå till 9A, annars 9C
    antal:=Portfolio(v)
    if(antal,3,1)

    Men märk att antalet kanske inte slagit igenom då stegascriptet körs på 9B. Så att alltid ställa sig på 9C först och styra där är säkrare eftersom en kursinsamling till görs emellan.


    va) Sälj/Nolla innehav om sådant
    antal:=Portfolio(v)
    if(antal,abs(antal),0)



    Är i princip klar med multiscripthanteringen och i version 6.9.9.14 och senare finns det infört.

    Det innebär att du kan skriva alla scripten för en sekvens i samma script. Inte så många script att hålla reda på.

    Tekniken blir följande

    -----------start script---------------
    alltid:................
    allt utanför taggar kommer alltid med

    sl)++
    triggerscript här
    sl)--

    va)++
    antalscript här
    va)--

    vl)++
    limitscript här
    vl)--

    sl)++
    ännu mer triggerscript om du vill
    Samma tagg kan finnas på flera ställen.
    Alla av samma typ kommer med tillsammans med det utanför taggar
    sl)--

    vö)++
    öppen volym här
    vö)--

    st)++
    stegscript här
    st)--

    sy)++
    synkascript här
    sy)--

    xk)++
    kontrollscript här
    xk)--

    alt utanför, även här kommer alltid med.

    ------------slut script----------------
    I en ordermodellsekvens lägger man då samma script i alla positioner när man arbetar med ordermodellen.

    Comment


    • #3
      Åke, det finns en mycket enklare väg!

      Jag har byggt om mina egna modeller så att de bara innehåller en sekvens 9A som är loopad mot sig själv.

      Istället har jag byggt en ordermodell för varje triggerscript, så att det alltså ligger flera modeller parallellt.

      Tänk dig att du har en ordermodell för Köp:

      Ordermodell Köp
      Sekvens 9A loop

      Triggerscriptet i denna modell kollar med Portfolio(v) om det finns nåt innehav, om inte så köps x antal vid signal.

      Om ordern tex av nån anledning inte "tar" så har inget ändrats, man har inte stegat vidare nånstans utan modellen står fortfarande kvar på 9A och försöker igen.


      Steg 2:

      En annan modell som stänger positionen, oxå den med en enda sekvens:

      Ordermodell Sälj
      Sekvens 9A loop

      Här kollar triggerscriptet om det FINNS ett innehav, i så fall kan scriptet lösa ut vid behov, annars spärras säljsignalerna.

      Skulle inte hela innehavet säljas på en gång så försöker modellen helt enkelt igen vid nästa säljsignal, troligen nästa minut om man bara kör vanlig insamling.

      Vid realtid går det dock undan, så där får man lägga till en AND-sats i slutet som kollar att det har gått tex 15-30 sekunder från förra tidpunkten då säljorder postades.

      På så vis slipper man att sekvensen "toksäljer" innan svaret om avslut har returnerats från Nordnet.


      Därefter kan man ju plocka på ytterligare modeller för funktioner som tex delsäkring av vinster osv.

      LastTrade returnerar alltid korrekt värde med den här metoden dessutom, man slipper konstigheter som uppstår om man postar nollorder (vilket jag pysslade med förr) för att stega runt i modellen och "reparera" missade order osv.

      Comment


      • #4
        Ser verkligen fram emot att få prova multiscriptsystemet. Smidigt att ha kanske 6 kompletta parallella ordermodeller i en enda txt-fil!

        Comment


        • #5
          Ser mycket intressant ut! Ska tydligen fortsätta labba.

          Men Lasse du svarade inte på hur jag måste namnge sekvenserna.

          Comment


          • #6
            Rikard...

            Till en början blir en ett script per sekvens, men det blir ju en per modell i ditt fall.

            Men har också funderat på hur man enklare skulle kunna styra flera sekvenser i samma script.

            Typ en tagg

            seq1)++
            allt som berör sekvens 1 inom dessa.

            seq1)--

            Det finns ett anrop som håller redan på vilken sekvens man är på SEQ() som ger 1 vid 9A, 2 vid 9B osv.

            Något skall jag hitta på.

            Comment


            • #7
              Åke...

              Jag förstod nog inte frågan, är jag rädd.

              Vad menar du med att namnge sekvenserna?

              Menar du bara namnet där i ordermodelldialogen?

              Det är bara för din egen info, så att du kommer ihåg.

              Annars om sekvensnumren och att 01 visas som 9A i annat sammanhang i orderkölistan och för bevakningen där, det är bara miss av mig egentligen att det inte blivit enhetligt.

              Så här gjorde jag en med 4a sekvenser med köp innehav, säljstopp, blanka, köpstopp.
              Attached Files

              Comment


              • #8
                Rikard...

                Som jag ser det nu lite hastigt bör man i ditt exempel ha 4 modeller anslutna för att ta hand om alla fall.

                Köper vid signal - om inget innehav. Loop.
                Säljer vid signal – om innehav. Loop.
                Blankar (sälj) vid signal – om inget innehav. Loop.
                Avsluta (köp) vid signal – om innehav <0. Loop.

                Ha du kollat din mail?

                Comment


                • #9
                  Japp, det stämmer. Själv kör jag 6 parallella modeller, de två extra är för att delsäkra vinster utan att påverka det ursprungliga inköpspriset man får från LastTrade.

                  Om tex köpmodellen har köp x antal kontrakt på 780 punkter, och kursen stiger till 785 pkt, då kanske delsäkringsmodellen har lust att sälja hälften.
                  Det fina är då att värdet från LastTrade(B,P) är intakt.
                  Man har alltså fortfarande koll på var man ursprungligen betalade.
                  Vinsttester och likn funkar utan problem.

                  Har du mailat mig? Vilken adress? Har inte fått nåt nämligen.

                  Prova på "rn@euromail.se"

                  Comment


                  • #10
                    Lasse...

                    Eftersom jag har broblem med aktiveringen av loopen som jag inte hunnit reda ut ännu gjorde jag ett nytt försök.

                    En köpsekvens med Lasses enkla stegascript aktiverat sist i modellen st) Gå till 9A Add(1,0).
                    Då trodde jag att detta i princip skulle bli det samma som loop. Men så funkar det tydligen inte. Det blir bara en order och sedan stannar det där och ingen ny 9A blir aktiverad.

                    Kan man använda stegascript för att få samma funktion som Rikard beskrev tidigare?

                    Comment


                    • #11
                      Lasse...

                      Loopenfunktionen har löst sig, (man måste bocka bort skrivskyddet innan man kan ändra sökväg), men min fråga i förra inlägget kvarstår!

                      Ny fråga.
                      Om loopenfunktionen fungerar men tycks hopp över extra kontrollscriptet vad kan det tyda på. Kontrollscriptet ifråga är det jag skissat tidigare här och då funkade det helt perfekt.

                      Det är inte underligt att man blir ganska förvirrad om vad som gäller.

                      Comment


                      • #12
                        Loopen hoppar INTE över kontrollscriptet. Gör man rätt funkar det. Jag får väl skylla på den mänskliga faktorn!

                        Comment


                        • #13
                          Tack för feedback.

                          Jag har suttit nu under förmiddagen och kollat på det också det bör funka. Det ser ut som att det inte går att landa på samma sekvens igen om det blivit order i samma sekvens precis nu, men annars ser det ok ut.

                          Tror jag skall göra det möjligt att även stanna på samma sekvens även efter order ifall man nu skulle vilja göra det.

                          Så med ett retval(1) i stegascript så blir det relativ förflyttning. Returvärdet från scriptet kan då vara både negativt eller positivt och gör relativ förflyttning i antal sekvenser.

                          Ex.

                          retval(1)
                          add(2,0)

                          som stegascript flyttar alltid två sekvenser framåt från där man är.

                          Ex.

                          retval(1)
                          Sub(0,2)

                          som stegascript flyttar alltid två sekvenser bakåt från där man är.


                          Annars tolkas returvärdet från stegascript som absolut värde där 1 ställer den på 9A, 2 på 9B osv. Allt mellan 9A->9J alltså 10 sekvenser kan hanteras av en ordermodell.

                          Samma sak gäller i synkascript som körs bara vid anslutning av ordermodellen, och ställer den på rätt sekvens.

                          Comment


                          • #14
                            Tar åter upp denna tråd.

                            Bygger en ordermodell med 3 sekvenser som hela tiden skall ha följande förlopp. Köp – Sälj sedan åter till Köp osv. Sekvens 1 (Köp) har ”stega till nästa sekvens” som stega script. Sekvens 2 (Sälj) har samma stegascript.
                            Sekvens 3 har enbart ett stegascript som skall förflytta modellen till sek1 för att börja om på nytt. Detta stegascript har jag kallat st) Åter till 9A och endast skrivit ”add(1,0)” som beskrivits tidigare i denna tråd. Allt körs nu i simulerat läge.

                            Problemet är att sek3 gör ingen förflyttning till sek1. Allt annat verkar funka. Jag måste troligen ha missat någon detalj. Vad kan det vara?

                            Därefter har jag tankar på att låta ”om önskat antal” är uppfyllt tillåta förflyttning till nästa sekvens.

                            Comment


                            • #15
                              Du måste ha ett triggerscript som alltid är sant också alá

                              add(1,0)

                              annars kommer det aldrig dit att stegascript körs.

                              Dock så måste en order genereras då.

                              Då är synkascript det du borde använda där, och bocka för att du köra Synka varje kursinsamling. Det gör du i Preferenser fliken Handel.

                              Stega-script: Körs då order genereras och bestämmer nästa sekvens.

                              Synka-script: Körs då man ansluter ordermodellen (och läggs på första sekvensen då), och som tillval att det alltid körs om inte triggern är sann, dvs du kan flytta aktiv sekvens utan att order behöver genereras.

                              Returvärde=0 Inget händer, man står kvar där man är.

                              Vill man ha info i ett script vilken sekvens man är på, för att skriva ett generellt script som används på flera sekvenser, så finns en scriptfunktion för detta:

                              OMinfo(s)

                              (står i scriptreferensen).

                              Comment

                              Working...
                              X