Allmänt meddelande

Collapse
No announcement yet.

Gå från simulering till Live

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

  • #31
    Kanon! Ska test och se hur det går.
    Jag använder Globala Celler i Scripten (2 st) för att "komma ihåg" en trigger. Dessa behöver nollställas så BUY/SELL Trigger lagt order/enomfört affärern. Ställer det till problem map ditt förslag ?

    Comment


    • #32
      Tror inte det, men är inte helt säker på vad du menar. Genom att du sparar signalen kan dina script fortsätta som om inget hänt(fejkat avslut). Det riktiga avslutet går igenom med cell-500 och att det finns cash vid köp. Du kan prova då det inte är några större förändringar av dina script. Tänk bara på att innehavskontrollen används i slutet och inte som delvillkor av själva signalen. Om det inte fungerar kan jag titta djupare.

      Comment


      • #33
        Hej Henric,
        Jag är helt med på ditt förslag på att använda Global cell 500 för styrning av Entry/Exit.
        Däremot förstår jag inte hur jag ska lägga upp detta i scripten och sedan ordermodellerna.
        Är det då här du tänker?


        Ordermodell BUY BULL (Köpsida i Analysbänken)
        (konf. enl. KÖP, LOOPAD till första sekvensen, va)Standardmodell insats,vl)Aktuell Säljkurs
        Script kopplat till ordermodellen
        EntryBULL
        i60(
        {diverse beräkningar och villkor. Global Cell 110 och 111 får värdet 1 för att komma ihåg två villkor som checkas för att köptrigger TSMBULLbuy ska bli sant}

        SetGvarIf(-1,500,and(TSMbullbuy,eqv(scrpar(26),2)))
        köp1=and(lt(GetGvar(500),0),le(Portfolio(v),0))
        köp2=and(köp1,eqv(scrpar(26),2))

        SetGvarIf(0,110,köp2){Nollställning av GC 110}
        SetGvarIf(0,111,köp2){Nollställning av GC 111}
        Mult(köp2,10)
        )

        Ordermodell SELL BULL (Säljsida i Analysbänken)
        (konf. enl. SÄLJ, LOOPAD till första sekvensen, va)Allt innehav av aktuell aktie,vl)Aktuell Köpkurs
        Script kopplat till ordermodellen
        ExitBULL
        i60(
        sälj1=and(le(GetGvar(500),0),gt(Portfolio(v),0))
        Mult(and(sälj1,eqv(scrpar(26),1)),10)
        Mult(sälj2,10)
        )

        Ordermodell BUY BEAR (Köpsida i Analysbänken)
        (konf. enl. KÖP, LOOPAD till första sekvensen, va)Standardmodell insats,vl)Aktuell Säljkurs
        Script kopplat till ordermodellen
        EntryBEAR
        i60(
        {diverse beräkningar och villkor. Global Cell 210 och 211 får värdet 1 för att komma ihåg två villkor som checkas för att köptrigger TSMBearbuy ska bli sant}

        SetGvarIf(-1,500,and(TSMbearbuy,eqv(scrpar(26),2)))
        köp1=and(lt(GetGvar(500),0),le(Portfolio(v),0))
        köp2=and(köp1,eqv(scrpar(26),2))
        SetGvarIf(0,210,köp2){Nollställning av GC 210}
        SetGvarIf(0,211,köp2){Nollställning av GC 211}
        Mult(köp2,10)
        )


        Ordermodell SELL BEAR (Säljsida i Analysbänken)
        (konf. enl. SÄLJ, LOOPAD till första sekvensen, va)Allt innehav av aktuell aktie,vl)Aktuell Köpkurs
        Script kopplat till ordermodellen
        ExitBEAR
        i60(
        sälj1=and(ge(GetGvar(500),0),gt(Portfolio(v),0))
        sälj2=and(sälj1,eqv(scrpar(26),2))
        Mult(sälj2,10)


        Analysbänken är inställd på "Flera parallella singelsekvens ordermodeller på respektive köp- och säljsida", "Styrs helt av valda modeller(inga falska signaler) och att instrumenten körs som samtidigt kopplade.

        Hälsn
        Benjamin

        Comment


        • #34
          Ja i princip. Jag tittade snabbt och såg att du använder olika scrpar(26) för köp Bull och Exit Bull? Exit Bull villkoret ser lite konstigt ut med sälj2?
          När buggarna är rättade borde det fungera. Eventuellt kan du nollställa samtidigt som du sätter värdet i cellen. Resten är bara för orderexekvering, men har nog ingen betydelse om modellen inte är snabbt. Glöm inte att sätta värdet i scrpar(26). Dessutom kanske du ska använda ett målantal direkt i köpmodellerna istället för le(portfolio(v),0). Detta då det kan bli delavslut(inga problem vid simulering). Alternativt kan du lägga på lite till säljkursen vid livekörning för att vara säker på avslut och att börshandlade produkter nästa alltid har säljare/köpare på andra sidan.

          Edit: Värdet i cell-500 ska väl vara 1 för Entry Bull och gt(GetGvar(500),0)? Värdet i cell-500 är globalt för alla ordermodeller i projektet.
          Last edited by Henric; 2014-08-12, 16:18.

          Comment


          • #35
            Tack! Helt rätt. Man blir lite trött i både ögon och huvud när man i timmar suttit tittat in i skärmen.

            Allt fungerar. Jag har kollat med test av isolerad BULL Entry/Exit och Bear Enty/Exit och får deras summa av resultat att överenstämma med resultatet när jag simulerar allt sammantaget.

            Tusen tack igen!!!!

            Nu är det bara en liten sak till som jag håller på att försöka få ordning på.
            Jag skulle vilja skapa en återinvesteringsfunktion, dvs att hela depåns värde köps och sälj i alla affärer.

            Det finns ett standard script va)Aktiemodell insats procent av depå. Den tittar på fältet scrpar(4) där man anger procent av depå som ska handlas. Här antar jag att man skriver 100 (för det instrument som man vill handla med) om man vill att hela depåns värde ska användas för köp. För säljsidan antar jag att man använder va) Allt innehav av aktuell aktie. Jag testade detta men får inte någon affär genomförd. Uppenbarligen behöver det ordnas med något mer...men vad?? Vet du hur detta kan fixas?

            Hälsn
            Benjamin

            Comment


            • #36
              Här är scriptet som ligger som va) Standardmodell insats:

              {läs av kontovärde}
              i1(
              insats1=div(abs(scrpar(21)),100)
              insats2=mult(sub(add(cash(a),cash(t)),cash(u))),insats1)
              insats3=if(gt(scrpar(21),0),scrpar(21),insats2)
              köpantal=Int(Div(insats3,s))
              innehav=Portfolio(v)
              övermål=Ge(innehav,köpantal)
              slutantal1=If(övermål,0,SUB(köpantal,innehav))
              add(0,slutantal1)
              )

              Procentsatsen läses av från fält 21, divideras med 100 för att få en multiplikator som depåvärdet gångas med. Tricket i det här scriptet är att positiva tal tolkas som en fast summa medan tal med minus framför tolkas som procentsats. Dvs, om du skriver -100 blir det 100 procent av depåvärdet. Skriver du bara 100 tolkas det som 100 kr, och då kanske det inte blir en enda andel eftersom priset kanske är högre än 100 kr på instrumentet du handlar.




              PS: Tips nu när klockan slår över till ny dag, stäng programmet och även processen analyser.exe och starta om normalt igen, annars fungerar inte simuleringen förrän vid börsöppning imorgon. Det är en liten egenhet som vi inte rättat ännu.

              Comment


              • #37
                Ursprungligen postat av Henric Visa inlägg
                Tror inte det, men är inte helt säker på vad du menar. Genom att du sparar signalen kan dina script fortsätta som om inget hänt(fejkat avslut). Det riktiga avslutet går igenom med cell-500 och att det finns cash vid köp. Du kan prova då det inte är några större förändringar av dina script. Tänk bara på att innehavskontrollen används i slutet och inte som delvillkor av själva signalen. Om det inte fungerar kan jag titta djupare.
                Hej Henric och Rikard

                Jag kör min strategi live men med testkonto för att säkerställa att roboten gör rätt.

                Den 15/8 kl 17:00:03 köpte roboten Xact bear för hela värdet av depån.
                Idag sålde roboten hela innehavet av Xact bear 15:00:09 och köpte xact bull för 15:00:03.
                Testkontoto har fått ett minussaldo på ca 3600 kr.

                Roboten köpte Xact Bull innan innehavet i Xact Bear blivit sålt, vilket inte borde ske. Jag har gått igenom logiken och villkoren för köp/sälj enligt Henrics förslag men kan inte se att det skulle vara något där som orsakar felet. Kan ni se vad jag missat?

                BULL BUY
                ....
                div villkor och uträkningar.....Trigger:v1_bullbuy

                efter0901=gt(frac(date()),0.37569)
                samma_dag=eqv(int(d),int(date()))
                SetGvarIf(1,500,and(v1_bullbuy,eqv(scrpar(26),1)))
                köp1=and(gt(GetGvar(500),0),le(portfolio(v),0))
                köp2=and(köp1,eqv(scrpar(26),1))
                köp3=and(and(köp2,samma_dag),efter0901)
                Mult(köp3,10)

                BULL SELL

                efter0901=gt(frac(date()),0.37569)
                samma_dag=eqv(int(d),int(date()))
                sälj1=and(le(GetGvar(500),0),gt(Portfolio(v),0))
                sälj2=and(and(sälj1,samma_dag),efter0901)
                Mult(and(sälj2,eqv(scrpar(26),1)),10)


                BEAR BUY
                ....
                div villkor och uträkningar.....Trigger:v2_bearbuy

                efter0901=gt(frac(date()),0.37569)
                samma_dag=eqv(int(d),int(date()))
                SetGvarIf(-1,500,and(v2_bearbuy,eqv(scrpar(26),2)))
                köp4=and(lt(GetGvar(500),0),le(portfolio(v),0))
                köp5=and(köp4,eqv(scrpar(26),2))
                köp6=and(and(köp5,samma_dag),efter0901)
                Mult(köp6,10)

                BEAR SELL

                efter0901=gt(frac(date()),0.37569)
                samma_dag=eqv(int(d),int(date()))
                sälj3=and(ge(GetGvar(500),0),gt(Portfolio(v),0))
                sälj4=and(and(sälj3,samma_dag),efter0901)
                Mult(and(sälj4,eqv(scrpar(26),2)),10)

                Tack på förhand!

                Comment


                • #38
                  Jag ögnade igenom lite som hastigast här bara så det kan ju hända att jag missat något.

                  Portfolio(v) kan ju inte skilja på om det är en Bull eller Bear som ligger i depån så någon mer intelligens behövs. Exempelvis kanske du kan reserverar triggercellen 500 till Bull och en ny triggercell 501 till Bear.

                  Comment


                  • #39
                    Det fixar scrpar. Vad får du när du simulerar? Logiken ligger i bull respektive bear. Triggar bull sker ett köp direkt. Det går att styra med cash, värdet i cell 500 eller lägga logiken för bull i exit bear, mm.

                    Comment


                    • #40
                      Cash är ett sätt (ett bra sätt dessutom).

                      Comment


                      • #41
                        Så här ser ett utdrag från min simulering:

                        TimeID Type Price
                        2009-12-09 13:00:00 XACT BULL 2 K 203,55
                        2009-12-15 12:00:00 XACT BEAR 2 K 196,35
                        2009-12-15 12:00:00 XACT BULL 2 S 200,2
                        2009-12-15 16:17:31 XACT BULL 2 K 199,85
                        2009-12-15 16:17:32 XACT BEAR 2 S 196,15
                        2009-12-17 14:00:00 XACT BEAR 2 K 195,6
                        2009-12-17 14:00:00 XACT BULL 2 S 200,8

                        Som ni ser sker köp av Bear/Bull innan innehavet är sålt. Jag förstår att man kan använda cash funktionen men hur kommer det in i mina script ovan?

                        Hälsn
                        Benjamin

                        Comment


                        • #42
                          Det beror på om depån kan hålla flera instrument(förutom strategin) och krediter. Enklast är att bara handla Bull/Bear utan kredit. Då räcker det att kolla saldot vid köp. Lägg till dessa villkor innan du skickar köporder. Givetvis motsvarande för Bear.

                          wait=ge(mult(sub(date(),lasttrade(b,d)),86400),20) {vänta 20s vid fler försök}
                          saldo=gt(mult(sub(cash(t),cash(u)),0.95),3000) {tex handla för 95% av saldo och minst 3000kr}

                          Edit: säljorder bör även ha en tidskoll från senaste försäljning.
                          Last edited by Henric; 2014-09-01, 10:33.

                          Comment


                          • #43
                            Ursprungligen postat av Henric Visa inlägg
                            Det beror på om depån kan hålla flera instrument(förutom strategin) och krediter. Enklast är att bara handla Bull/Bear utan kredit. Då räcker det att kolla saldot vid köp. Lägg till dessa villkor innan du skickar köporder. Givetvis motsvarande för Bear.

                            wait=ge(mult(sub(date(),lasttrade(b,d)),86400),20) {vänta 20s vid fler försök}
                            saldo=gt(mult(sub(cash(t),cash(u)),0.95),3000) {tex handla för 95% av saldo och minst 3000kr}

                            Edit: säljorder bör även ha en tidskoll från senaste försäljning.
                            Tack Henric!
                            Ska testa på direkten

                            Comment

                            Working...
                            X