Allmänt meddelande

Collapse
No announcement yet.

Gå från simulering till Live

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

  • Gå från simulering till Live

    Hej!
    Jag var på väg att ringa Rikard men tänkte att det kanske skulle vara bättre att lägga ut min fråga i forumet eftersom andra NAT ägare kanske kan ha nytta av min utmaning.

    Jag har under sommaren simulerat och testat en strategi som består av två script som är knutna till vardera Oder modeller för köp resp sälj och nu skull jag vilja komma vidare med att gå live. Varför jag behöver hjälp med att knyta ihop säcken.

    Ordermodellerna köp/sälj fungerar så att när köpsignal triggas ska XactBull köpas för hela depåvärdet och när säljsignal sedan triggas ska alla XactBull kontrakt säljas och när det är gjort ska XactBear för hela depåväder köpas osv, vilket innebär att man alltid är i marknaden.

    Jag antar att jag behöver ha ett skript som räknar ut hur många andelar som orden ska placera på marknaden samt att pris sätt med ett viss diff så att man är säker på att ordern går igenom. Likaledes gäller då innehavet ska säljas, dvs att allt ska sälja till ett visst pris med en viss diff och sedan ska orderläggas för XactBull andelar.osv

    Mina script ser ut som följer:

    KÖP SCRIPT
    {SLUTLIGSIGNAL KÖP}
    T_S_M_Köpsignal=or(and(Mköp_buk,bivillkor),and(Mköp_bek,bivillkor))
    innehav=Portfolio(v)
    ok_att_handla=lt(innehav,1)
    köpsignal=and(T_S_M_Köpsignal,ok_att_handla)

    {Nollställning av Globala Variabler}

    SetGVarif(0,110,köpsignal)
    SetGVarif(0,111,köpsignal)
    SetGVarif(0,210,köpsignal)
    SetGVarif(0,211,köpsignal)
    Mult(köpsignal,10)
    )

    {@A(0,OMX Stock )}

    SÄLJ SCRIPT
    {SLUTLIGSIGNAL SÄLJ}
    T_S_M_Säljsignal=or(and(Msälj_bes,bivillkor),and(Msälj_bus,bivillkor))
    innehav=Portfolio(v)
    ok_att_handla=gt(innehav,0)
    säljsignal=and(T_S_M_Säljsignal,ok_att_handla)

    {Nollställning av Globala Variabler}
    SetGVarif(0,110,säljsignal)
    SetGVarif(0,111,säljsignal)
    SetGVarif(0,210,säljsignal)
    SetGVarif(0,211,säljsignal)

    Mult(säljsignal,10)
    )
    {@A(0,OMX Stock )}

  • #2
    Jag har gjort en liknande strategi för Bull och Bear silver.
    Jag har ett köpscript som verkar med samma villkor på Bull och Bear samt ett säljscript som också verkar på både Bull och Bear.
    Båda scripten måste vara inställda på procent.
    Jag kan enkelt göra en simulering genom att koppla båda scripten till Bull och Bear. Jag handlar för hela depåvärdet.
    Däremot ligger jag inte hela tiden i marknaden och har ingen koll på om jag äger det andra instrumentet, men det löser man enkelt med globala variabler.
    Vad jag menar är att du kan simulera med både Bull och Bear samtidigt. När du fått det att fungera kan du gå live.
    Med vänlig hälsning
    Bertil

    Comment


    • #3
      Lägg till villkor för att testa om pengar finns på kontot, tex med Cash(t) så vet du om "det motsatta" innehavet finns eller är sålt. Dvs, finns det mer pengar än den gräns du satt som köpbelopp är det andra innehavet sålt och det är "ok" att köpa det nya.

      Scripten som räknar ut antal finns redan en del färdiga, tex någon av standardmodellernas script kan användas. Även prisscripten finns färdiga att välja, tex vl) Säljkurs +0,25%

      och liknande. Tänk på att live får du oftast det bästa pris marknaden har att erbjuda, men i bänken får du alltid exakt det pris du skickar ordern på. Det gör att man enkelt kan simulera slippage osv.

      Comment


      • #4
        Hej Bertil och tack för snabbt svar.
        Mitt problem är att jag har svårt att förstå hur jag ska få ihop det hela.

        Dvs, jag har två script som ligger i varsina ordermodeller (köp/sälj). Scriptet i Ordermodell-köp triggar för köptrigger och detsamma för säljsidan.
        Scripten får sina trigger med indata från OMX30 cash. Jag skulle behöva få guidning för hur jag kan få XactBULL/BEAR för OMX30 att koppla till instrument inställningar och hur alla de andra delscripten ska kopplas så att det kommer i rätt logisk ordning.

        Har du möjlighet att hjälpa mig med detta?

        Med vänlig hälsning
        Benjamin

        Comment


        • #5
          Det görs per automatik om du använder Cash()-villkoret, även om modellerna körs i princip samtidigt så kan man ha ett villkor som känner om det finns pengar innan köp görs. Då får man effekten att det motsatta innehavet säljs först och några sekunder senare görs det nya köpet när pengarna är tillbaka på depån. I analysbänken går det i samma sekund eftersom ingen kommunikation med Nordnet görs där.

          Comment


          • #6
            Det kan bli problem om signalen bara varar i en insamling och att allt sedan nollställs. Vet ej om det är frågeställningen. Det går att lösa genom att spara signalen i en global cell och ha innehavskontroll, etc efter. Köp/Bull SetGvarIf(1,500,signal). Själva handelvillkoret blir då gt(GetGvar(500),0) + innehavskontroll, etc. -1 används för short/Bear. Exit Bear blir då endast ge(GetGvar(500) + innehavskontroll, etc.
            Vill du vara säker att tex Exit Bear körs före köp/Bull så kan du sätta villkoret till 2. Om värdet i cellen är 1 sätter Exit Bear värdet till 2. Hoppas att jag inte snurrade till det.

            Annars kör enligt Rikards beskrivning.

            Comment


            • #7
              Hej Benjamin!
              Hur långt har du kommit i din simulering? Om man först koncentrerar sig på endast ett instrument t.ex Bull och glömmer de globala variablerna för en stund. Hur ser din simulering ut? Jag antar att du har Pro.
              Med vänlig hälsning
              Bertil

              Comment


              • #8
                Hej,
                Jag har simulerat i Analysbänken (många olika analysprojekt med olika parametersättningar för att testa fram en stabil strategi). Jag anser att simuleringen är klar och den har körts i NAT Pro i alla upplösningsalternativ. Simuleringen körd med indata från OMX 30 cash och det är OMX30 som också ska ligga till grund för köp/sälj trigger, dock ska köp/sälj andelar göras med Xact bull/bear för omx30.

                Med vänlig hälsning
                Benjamin

                Comment


                • #9
                  Hej Rikard, Bertil och Henric, tack för er återkoppling.
                  Jag ska ta mig en funderare och se om jag förstår hur det hela ska "fixas till". Det borde vara en standard set-up. Det finns färdiga script att använda men vet bara inte hur jag ska göra det. T.ex. ska jag skriva in i köpscriptet de standard script som finns färdiga eller ska de aktiveras i ordermodellen? Och hur adresserar/kopplar jag Xact bull/bear för OMX till ordermodellerna?

                  Hälsn
                  Benjamin

                  Comment


                  • #10
                    Du ska nog inte skriva direkt i standardscripten. Om du kör en uppdatering kommer dessa att ändras. Det går att kopiera hela ordermodeller med färdiga knappar och även script i en ordermodell.

                    Eftersom analysen görs på ett instrument och handeln sker i två instrument behövs minst 4 ordermodeller, Bull Entry, Bull Exit, Bear Entry och Bear Exit(det går dock att bygga en ordermodell med flera sekvenser, men är i detta fall nog mer komplicerat).Varje gång Bull signalerar måste Bear Exit kolla om det finns ett innehav och eventuellt sälja. Tvärtom när Bear signalerar.

                    Är inte scripten allt för komplicerade är det enklast köra analysen med extraobjekt. Alternativ direkt på OMX i en ordermodell som aldrig triggar. Vi förutsätter här extraobjekt. Sedan kopplas ordermodellerna live till de instrument som handlas.

                    Jag själv tycker det är enklast att lagra signalerna(inte signatrigger för själva modellen) i en global cell. Då kan även exitmodellerna använda signalen, särskilt då en modell bara går mellan long/short. Tex long=1, short=-1 och exit=0. Själva ordermodellerna signalerar på värdet i cellen och om det finns eller inte finns innehav.

                    Comment


                    • #11
                      Ursprungligen postat av Benji Visa inlägg
                      Hej,
                      Jag har simulerat i Analysbänken (många olika analysprojekt med olika parametersättningar för att testa fram en stabil strategi). Jag anser att simuleringen är klar och den har körts i NAT Pro i alla upplösningsalternativ. Simuleringen körd med indata från OMX 30 cash och det är OMX30 som också ska ligga till grund för köp/sälj trigger, dock ska köp/sälj andelar göras med Xact bull/bear för omx30.

                      Med vänlig hälsning
                      Benjamin
                      Du säger att simuleringen är klar, men har du simulerat köp och sälj på bull/bear med omxs30 som utgångspunkt med korrekt hantering av cash?

                      Har du vid simuleringen valt "Flera parallella singelsekvens ordermodeller på resp köp och sälj" ?

                      Har du även testat att simulera med färdiga ordermodeller som finns i NAT?
                      Med vänlig hälsning
                      Bertil

                      Comment


                      • #12
                        Vi har öppnat upp ett tiotal scriptkommandon för användning med extra objekt som dataserie, så nu är det mycket enklare eftersom man slipper koda funktioner som tex MACD, MOM och MFI i script. Det finns färdiga kommandon, de som slutar på Ex i scriptreferensen:

                        http://www.autostock.se/NATscriptref...st_llning.html

                        Så jag skulle också förorda lösningen med extra objekt som läser in OMXS30-data direkt i ordermodeller kopplade till de instrument man vill handla. Då blir det exakt samma lösning i verkligheten som man simulerar i analysbänken.

                        Comment


                        • #13
                          Är det detta som är enklare?

                          ATREx(20,B)

                          istället för:

                          ATR(20,cmpref(C,1,B))

                          Comment


                          • #14
                            Ja, ATR(p) kan bara ta en parameter och använder C som dataserie. När man vill beräkna ATR på någon annan dataserie är det tänkt att man kan använda ATREx(p,ABC) som syftar på extra objekt. Det blir mycket enklare än att scripta ATR-funktionen.

                            Comment


                            • #15
                              Hej igen
                              Jag har försökt hela helgen med att få ihop logiken för att få detta att fungera. Jag fick hjälp av Rikard i fredags med att förstå arkitekturen kring koppling av Script till de 4 olika ordermodellerna och hur XactBull/Bear kopplas till ordermodellerna. Tack Rikard!! Dock får jag det inte att fungera. Nedan är ett urklipp från resp. script som vardera har en egen ordermodell, dvs BUY BULL, SELL BULL, BUY BEAR och SELL BEAR. I scripten använder jag Globala Cellerna 110,111(lagrar köp triggers för ett köp), 210 och 211 (lagrar sälj triggers för ett villkor). Därefter triggas t.ex. BULL BUY alt BULL SELL osv. När BULL BUY är exekverad söker scripten en säljsignal varför 210-211 behöver nollställas 110 och 111 behöver också nollställas för att inte få ev. felaktiga signaler. Är osäker på hur detta ska hanteras eftersom BULL SELL ordermodellen använder lika script som BEAR BUY odermodell. Dvs om BULL SELL scriptet nollställer de globala variablerna så nollställs även trigger för Stoch i BEAR BUY, likaledes för BEAR SELL och BULL BUY.


                              Scripten ligger i ordermodeller med inställning för köp/sälj enligt Standardmodell insatts.
                              För XactBull är har fält 26 vädet "1" i och för XactBear är det "2".

                              Ordermodellerna och dess script:

                              {TSM v6.2 BULL BUY}
                              {---------------------------------------KÖP TRIGGER BULL--------------------------------------}
                              TSM_Köpsignal_Bull=or(and(Mköp_buk,bivillkor),and(Mköp_bek,bivillkor))
                              {---------------------------------------ORDERLÄGGNING OCH KONTROLL AV INNEHAV-----------------}
                              innehav=Portfolio(v)
                              ok_att_handla=lt(innehav,1)
                              köpsignal_bull=and(TSM_Köpsignal_Bull,ok_att_handla)
                              paper_ok=eqv(scrpar(26),1)
                              Mult(and(paper_ok,köpsignal_bull),10)
                              {---------------------------------------NOLLSTÄLLNING AV GV Triggers för STOCH-----------------}
                              SetGVarif(0,110,köpsignal_bull)
                              SetGVarif(0,111,köpsignal_bull)
                              SetGVarif(0,210,köpsignal_bull)
                              SetGVarif(0,211,köpsignal_bull)
                              )
                              {@A(0,OMX Stock )@B(60,OMX Stock )}

                              _____________________________________________________________


                              {TSM v6.2 BULL SELL}
                              {---------------------------------------SÄLJ TRIGGER BULL-------------------------------------}
                              TSM_Säljsignal_bull=or(and(Msälj_bes,bivillkor),and(Msälj_bus,bivillkor))
                              {---------------------------------------ORDERLÄGGNING OCH KONTROLL AV INNEHAV-----------------}
                              innehav=Portfolio(v)
                              ok_att_handla=gt(innehav,0)
                              säljsignal_bull=and(TSM_Säljsignal_bull,ok_att_handla)
                              paper_ok=(eqv(scrpar(26),1)
                              Mult(and(paper_ok,säljsignal_bull),10)
                              {---------------------------------------NOLLSTÄLLNING AV GV Triggers för STOCH-----------------}
                              SetGVarif(0,210,säljsignal_bull)
                              SetGVarif(0,211,säljsignal_bull)
                              SetGVarif(0,110,säljsignal_bull)
                              SetGVarif(0,111,säljsignal_bull)
                              )
                              {@A(0,OMX Stock )@B(60,OMX Stock )}

                              _____________________________________________________________


                              {TSM v6.2 BEAR BUY}
                              {---------------------------------------KÖP TRIGGER BEAR---------------------------------------}
                              TSM_Köpsignal_Bear=or(and(MKöp_bes,bivillkor),and(Mköp_bus,bivillkor))
                              {---------------------------------------ORDERLÄGGNING OCH KONTROLL AV INNEHAV------------------}
                              innehav=Portfolio(v)
                              ok_att_handla=le(innehav,0)
                              köpsignal_bear=and(TSM_Köpsignal_Bear,ok_att_handla)
                              paper_ok=eqv(scrpar(26),2)
                              Mult(and(paper_ok,köpsignal_bear),10)
                              {---------------------------------------NOLLSTÄLLNING AV GV Triggers för STOCH-----------------}
                              SetGVarif(0,210,köpsignal_bear)
                              SetGVarif(0,211,köpsignal_bear)
                              SetGVarif(0,110,köpsignal_bear)
                              SetGVarif(0,111,köpsignal_bear)
                              )
                              {@A(0,OMX Stock )@B(60,OMX Stock )}

                              _____________________________________________________________


                              {TSM v6.2 BEAR SELL}
                              {---------------------------------------SÄLJ TRIGGER BEAR--------------------------------------}
                              TSM_Säljsignal_bear=or(and(MSälj_buk,bivillkor),and(MSälj_bek,bivillkor))
                              {---------------------------------------ORDERLÄGGNING OCH KONTROLL AV INNEHAV------------------}
                              innehav=Portfolio(v)
                              ok_att_handla=gt(innehav,0)
                              säljsignal_bear=and(TSM_Säljsignal_bear,ok_att_handla)
                              paper_ok=(eqv(scrpas(26),2)
                              Mult(and(paper_ok,säljsignal_bear),10)
                              {---------------------------------------NOLLSTÄLLNING AV GV Triggers för STOCH-----------------}
                              SetGVarif(0,110,säljsignal_bear)
                              SetGVarif(0,111,säljsignal_bear)
                              SetGVarif(0,210,säljsignal_bear)
                              SetGVarif(0,211,säljsignal_bear)
                              )
                              {@A(0,OMX Stock )@B(60,OMX Stock )}

                              Tacksam för all hjälp/tisp om hur detta kan fulboras till en fungerande modell i NAT.

                              Last edited by Benji; 2014-08-11, 14:18.

                              Comment

                              Working...
                              X