Allmänt meddelande

Collapse
No announcement yet.

OMX Tracker

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

  • FredTrader, det är riktigt att buy7-uttrycket tar bort fladder, dvs att om sälj blivit sant under nämda period blir inte heller buy7 sant. Vill man inte ha det så, utan man vill istället att timern helt och hållet ska ta hand om detta samtidigt som man förlänger Buy6-signalen att vara längre kan man istället skriva:
    Buy7=Hhv(Buy6,2)



    EDIT: För att vara säker på att scripten inte ligger i säljläge om man använder ovanstående måste man nog ha Buy6 istället för Buy7 i Buy8-villkoret.
    Last edited by LillWicke; 2013-06-29, 17:17.

    Comment


    • LillWicke, så här blev skriptet på köpsidan till slut
      Använder signal7 istället för buy7 och parameter 501 sparar kursen.
      Fungerar fint i bänken och visar att det går att krama ut några extra punkter i vinst..
      Nu är det bara en fråga om att hitta optimala värden på signal_delay tiden och pris.


      signal7=....

      {tillägg att lägga inom intraday-parantesen sist i scriptet (efter signal7) }

      {Nolla cell innan handel}
      nollvillkor1=And(innan_position,gt(Getgvar(500,N),0))
      SetGvarIf(0,501,and(nollvillkor1,block_diag_skriv),T)
      SetGvarIf(0,500,and(nollvillkor1,block_diag_skriv),T) { Nollställer cell 500 innan handeln börjar }


      {Skriv tid i cell}
      nysignal=And(signal7,eqv(GetGvar(500,N),0))
      SetGvarIf(minut_nu,500,and(nysignal,block_diag_skriv),T)

      nyttpris=And(signal7,eqv(GetGvar(501,N),0))
      SetGvarIf(c,501,and(nyttpris,block_diag_skriv),T)

      signal8=Gt(GetGvar(501,N),0)

      minsedan_signal=if(gt(GetGvar(500,N),0),sub(minut_nu,GetGvar(500,N)),0)
      tid_ok=if(and(ge(minsedan_signal,signal_delay),le(minsedan_signal,add(signal_delay,signal_lock))),1,0) { tiden är inom intervallet }
      tid_slut=Gt(minsedan_signal,Add(signal_delay,signal_lock))

      Lägre_pris=Lt(C,Sub(GetGvar(501),0))

      signal9=And(And(signal8,Or(Or(tid_ok,stängning1),Lägre_pris)),ej_innehav)

      {Nolla cell}
      nollvillkor2=And(tid_slut,Gt(GetGvar(500,N),0))
      SetGvarIf(0,501,And(nollvillkor2,block_diag_skriv),T)
      SetGvarIf(0,500,And(nollvillkor2,block_diag_skriv),T)

      mult(signal9,10)

      Comment


      • Ursprungligen postat av FredTrader Visa inlägg
        LillWicke, så här blev skriptet på köpsidan till slut
        Använder signal7 istället för buy7 och parameter 501 sparar kursen.
        Fungerar fint i bänken och visar att det går att krama ut några extra punkter i vinst..
        Nu är det bara en fråga om att hitta optimala värden på signal_delay tiden och pris.
        Hej,

        hur testkör du ändringen?
        jag har försökt testköra men får i bästa fall ut en signal i bänken med detta tillägg.
        Innan jag lade till koden mellan signal 7 och slutparentes så provade jag OMX Tracker original och den gav signaler. Fungerar globala celler i Bänken, har för mig Rikard sagt att det inte fungerar?

        Har letat efter "b"/"s" villkor då jag testkör på OMXS30 index och brukar få ändra till "c". Men inte hittat något sådan som spökar.

        När ni testkör i bänken, använder ni ordermodeller eller bara skript?
        Jag har kört bara skript tidigare men provade med ordermodeller nu.

        Upptäckte att jag fick ändra va) prisskriptet till "c" för OMX30S index, då inte sälj/köp kurs finns. Är det så ni också gör?


        Det som blev konstigt när jag gjorde ändra till closekurs är att vinstkurvan ser mycket konstig ut jämför med innan. Den ser väldigt "vollatil ut"

        Comment


        • Globala celler fungerar, men ev villkor som styr skrivning till celler kan behöva kopplas förbi, tex:

          eqv(cum(1),1)

          som inte blir sant i bänken. Ersätt med en 1:a bara så fungerar den biten.


          Har inte följt resonemanget så noga här, men en ide för Tracker är att kanske att lagra ner Close just i signalögonblicket men låta order triggas när kursen skär det lagrade värdet - 1-2 punkter eller liknande. Det kanske kan vässa resultaten mer, eftersom snittvinsten på en trade för Tracker är relativt liten.


          Comment


          • Globala variabler fungerar fint vad jag sett.

            Timern fungerar bra nu vad jag kan se, har dock inte hittat parametrar ännu som ger ett bättre medelresultat på lång sikt.

            Jag kör bara skript i bänken

            Har gjort lite små justeringar sen sist...

            Köp sida:

            ------------------------------
            {nya tillägg innan intraday-parantesen}

            {Fladdervariabler }
            signal_delay:=30 {att labba med}
            signal_lock:=3
            punkter_ner:=0.25 {att labba med}

            {Säkerställer blockering av cellskrivning under diagramkörningen }
            block_diag_skriv:=1 {för bänken}

            {Tidslucka innan första positionen tas efter öppning}
            innan_position:=and(ge(minut_nu,540),le(minut_nu,add(540,start_delay)))



            {tillägg att lägga inom intraday-parantesen sist i scriptet (efter signal7) }

            {Nolla cell innan handel}
            nollvillkor1=And(innan_position,gt(Getgvar(500,N),0))
            SetGvarIf(0,501,and(nollvillkor1,block_diag_skriv),T)
            SetGvarIf(0,500,and(nollvillkor1,block_diag_skriv),T) { Nollställer cell 500 innan handeln börjar }


            {Skriv tid i cell}
            nysignal=And(signal7,eqv(GetGvar(500,N),0))
            SetGvarIf(minut_nu,500,and(nysignal,block_diag_skriv),T)

            nyttpris=And(signal7,eqv(GetGvar(501,N),0))
            SetGvarIf(c,501,and(nyttpris,block_diag_skriv),T)

            signal8=And(Gt(GetGvar(500,N),0),eqv(GetGvar(502,N),0))

            minsedan_signal=if(gt(GetGvar(500,N),0),sub(minut_nu,GetGvar(500,N)),0)
            tid_ok=if(and(ge(minsedan_signal,signal_delay),le(minsedan_signal,add(signal_delay,signal_lock))),1,0) { tiden är inom intervallet }
            tid_slut=Gt(minsedan_signal,Add(signal_delay,signal_lock))

            Lägre_pris=Lt(C,Sub(GetGvar(501),punkter_ner))

            signal9=And(And(signal8,Or(Or(tid_ok,stängning1),Lägre_pris)),ej_innehav)

            {Nolla cell}
            nollvillkor2=And(tid_slut,Gt(GetGvar(500,N),0))
            SetGvarIf(0,501,And(nollvillkor2,block_diag_skriv),T)
            SetGvarIf(0,500,And(nollvillkor2,block_diag_skriv),T)

            mult(signal9,10)


            sälj sida:
            ---------------------------------

            {nya tillägg innan intraday-parantesen}

            {Fladdervariabler }
            signal_delay:=30 {att labba med}
            signal_lock:=3
            punkter_upp:=0.25 {att labba med}

            {Säkerställer blockering av cellskrivning under diagramkörningen }
            block_diag_skriv:=1 {för bänken}

            {Tidslucka innan första positionen tas efter öppning}
            innan_position:=and(ge(minut_nu,540),le(minut_nu,add(540,start_delay)))



            {tillägg att lägga inom intraday-parantesen sist i scriptet (efter signal7) }

            {Nolla cell innan handel}
            nollvillkor1=And(innan_position,gt(Getgvar(502,N),0))
            SetGvarIf(0,503,and(nollvillkor1,block_diag_skriv),T)
            SetGvarIf(0,502,and(nollvillkor1,block_diag_skriv),T)

            {Skriv tid i cell}
            nysignal=And(signal7,eqv(GetGvar(502,N),0))
            SetGvarIf(minut_nu,502,and(nysignal,block_diag_skriv),T)

            nyttpris=And(signal7,eqv(GetGvar(503,N),0))
            SetGvarIf(c,503,and(nyttpris,block_diag_skriv),T)

            signal8=And(Gt(GetGvar(502,N),0),eqv(GetGvar(500,N),0))

            minsedan_signal=if(gt(GetGvar(502,N),0),sub(minut_nu,GetGvar(502,N)),0)
            tid_ok=if(and(ge(minsedan_signal,signal_delay),le(minsedan_signal,add(signal_delay,signal_lock))),1,0)
            tid_slut=Gt(minsedan_signal,Add(signal_delay,signal_lock))

            Högre_pris=Gt(C,Add(GetGvar(503),punkter_upp))

            signal9=And(And(signal8,Or(Or(tid_ok,stängning1),Högre_pris)),ej_innehav)

            {Nolla cell}
            nollvillkor2=And(tid_slut,Gt(GetGvar(502,N),0))
            SetGvarIf(0,503,And(nollvillkor2,block_diag_skriv),T)
            SetGvarIf(0,502,And(nollvillkor2,block_diag_skriv),T)

            mult(signal9,10)
            Last edited by FredTrader; 2013-06-30, 15:24.

            Comment


            • FredTrader,
              Du kan ju inte bara helt sonika ta bort villkor/definitioner ur orginal-fladderscripten som gör att det du lagt upp inte går att köra live. Om någon dessutom skulle få för sig att bara kopiera scripten du lagt upp rakt av, kommer de ju inte fungera i bänken heller eftersom nödvändiga definitioner är borttagna. (Jag tänker på Jimmy här exempelvis, som fick problem direkt).
              .

              Comment


              • Tar mig friheten att lägga till några småsaker som FredTrader missade i sitt inlägg så att scripten blir körbara för de som skulle vilja prova.
                Det är definitionerna för datum_ok, inpådagen, minut_nu, block_diag_skriv och växlingen mellan live och bänk som saknas.



                Köp sida:
                ------------------------------
                { Villkor att ha med om de inte redan finns i ursprungsscriptet }

                datum_ok:=eqv(int(d),int(date()))

                { säkerställa att inga positioner tas innan start_delay passerats }
                start_delay:=12
                minut_nu:=mult(frac(date()),1440)
                inpådagen:=gt(minut_nu,add(540,start_delay)) { 540 är kl 9.00 }


                {nya tillägg innan intraday-parantesen}

                {Fladdervariabler }
                signal_delay:=30 {att labba med}
                signal_lock:=3
                punkter_ner:=0.25 {att labba med}

                {Säkerställer blockering av cellskrivning under diagramkörningen }
                {block_diag_skriv:=and(datum_ok,eqv(cum(1),1))} {Detta villkor ska vara aktivt vid live-körning}
                block_diag_skriv:=1 {Detta villkor ska vara aktivt vid bänk-körning}

                {Tidslucka innan första positionen tas efter öppning}
                innan_position:=and(ge(minut_nu,540),le(minut_nu,add(540,start_delay)))



                {tillägg att lägga inom intraday-parantesen sist i scriptet (efter signal7) }

                {Nolla cell innan handel}
                nollvillkor1=And(innan_position,gt(Getgvar(500,N),0))
                SetGvarIf(0,501,and(nollvillkor1,block_diag_skriv),T)
                SetGvarIf(0,500,and(nollvillkor1,block_diag_skriv),T) { Nollställer cell 500 innan handeln börjar }


                {Skriv tid i cell}
                nysignal=And(signal7,eqv(GetGvar(500,N),0))
                SetGvarIf(minut_nu,500,and(nysignal,block_diag_skriv),T)

                nyttpris=And(signal7,eqv(GetGvar(501,N),0))
                SetGvarIf(c,501,and(nyttpris,block_diag_skriv),T)

                signal8=And(Gt(GetGvar(500,N),0),eqv(GetGvar(502,N),0))

                minsedan_signal=if(gt(GetGvar(500,N),0),sub(minut_nu,GetGvar(500,N)),0)
                tid_ok=if(and(ge(minsedan_signal,signal_delay),le(minsedan_signal,add(signal_delay,signal_lock))),1,0) { tiden är inom intervallet }
                tid_slut=Gt(minsedan_signal,Add(signal_delay,signal_lock))

                Lägre_pris=Lt(C,Sub(GetGvar(501),punkter_ner))

                signal9=AndAnd(And(signal8,Or(Or(tid_ok,stängning1),Lägre_pris)),ej_innehav),inpådagen)

                {Nolla cell}
                nollvillkor2=And(tid_slut,Gt(GetGvar(500,N),0))
                SetGvarIf(0,501,And(nollvillkor2,block_diag_skriv),T)
                SetGvarIf(0,500,And(nollvillkor2,block_diag_skriv),T)

                mult(signal9,10)


                sälj sida:
                ---------------------------------
                { Villkor att ha med om de inte redan finns i ursprungsscriptet }

                datum_ok:=eqv(int(d),int(date()))

                { säkerställa att inga positioner tas innan start_delay passerats }
                start_delay:=12
                minut_nu:=mult(frac(date()),1440)
                inpådagen:=gt(minut_nu,add(540,start_delay)) { 540 är kl 9.00 }


                {nya tillägg innan intraday-parantesen}

                {Fladdervariabler }
                signal_delay:=30 {att labba med}
                signal_lock:=3
                punkter_upp:=0.25 {att labba med}

                {Säkerställer blockering av cellskrivning under diagramkörningen }
                {block_diag_skriv:=and(datum_ok,eqv(cum(1),1))} {Detta villkor ska vara aktivt vid live-körning}
                block_diag_skriv:=1 {Detta villkor ska vara aktivt vid bänk-körning}

                {Tidslucka innan första positionen tas efter öppning}
                innan_position:=and(ge(minut_nu,540),le(minut_nu,add(540,start_delay)))



                {tillägg att lägga inom intraday-parantesen sist i scriptet (efter signal7) }

                {Nolla cell innan handel}
                nollvillkor1=And(innan_position,gt(Getgvar(502,N),0))
                SetGvarIf(0,503,and(nollvillkor1,block_diag_skriv),T)
                SetGvarIf(0,502,and(nollvillkor1,block_diag_skriv),T)

                {Skriv tid i cell}
                nysignal=And(signal7,eqv(GetGvar(502,N),0))
                SetGvarIf(minut_nu,502,and(nysignal,block_diag_skriv),T)

                nyttpris=And(signal7,eqv(GetGvar(503,N),0))
                SetGvarIf(c,503,and(nyttpris,block_diag_skriv),T)

                signal8=And(Gt(GetGvar(502,N),0),eqv(GetGvar(500,N),0))

                minsedan_signal=if(gt(GetGvar(502,N),0),sub(minut_nu,GetGvar(502,N)),0)
                tid_ok=if(and(ge(minsedan_signal,signal_delay),le(minsedan_signal,add(signal_delay,signal_lock))),1,0)
                tid_slut=Gt(minsedan_signal,Add(signal_delay,signal_lock))

                Högre_pris=Gt(C,Add(GetGvar(503),punkter_upp))

                signal9=And(And(And(signal8,Or(Or(tid_ok,stängning1),Högre_pris)),ej_innehav),inpådagen)

                {Nolla cell}
                nollvillkor2=And(tid_slut,Gt(GetGvar(502,N),0))
                SetGvarIf(0,503,And(nollvillkor2,block_diag_skriv),T)
                SetGvarIf(0,502,And(nollvillkor2,block_diag_skriv),T)

                mult(signal9,10)
                Last edited by LillWicke; 2013-07-01, 20:22.

                Comment


                • Ursprungligen postat av LillWicke Visa inlägg
                  Tar mig friheten att lägga till några småsaker som FredTrader missade i sitt inlägg så att scripten blir körbara för de som skulle vilja prova.
                  Det är definitionerna för datum_ok, inpådagen, minut_nu, block_diag_skriv och växlingen mellan live och bänk som saknas.
                  .....................
                  Hej, tack LillWicke, mycket uppskattat!

                  Jag har under tiden också labbat en del. men mestadels av tiden går till trial & error kring skripten att försöka få ut det man önskar. :-)

                  Har labbat med stop-loss som endast är aktiv under tiden reg. kurvan pekar ned, för att minska vissa stora förlust-trades av falska signaler (long). Det verkar hjälpa att minska förlust-resultatet en del (ska överväga sedan när fladder åtgärdat om det ska ingå eller om man istället ska ändra villkoren som gör att felsignalerna blir möjliga).

                  Har också några hypoteser för en extra take profit signal, som är tänkt att försöka gå ur tidigare (long) om priset är avvikande högt.

                  Har dock inte kommit framåt tillräckligt för att dela något användbart ännu, jag får väldigt mycket fladder (köp och sälj i kluster), så mitt nästa mål är att studera dina fladder-skript och försöka få bort "falska" fladder signler och se om jag kan få några kvalitativa skriptdelar som kan ingå i att förbättra Tracker.

                  Ett tips/hypotes som jag vill dela och som jag tänker utforska vidare själv. Jag råkade (med fel konfig och bug) få till köp (long) med stort position, dvs 5 kontrakt som sedan såldes av 1 kontrakt i taget med det buggiga TP skriptet. det fick väldigt bra resultat (dock inte räknat på courtage, blir blev många trades med små vinster). det visar på att trackers Entry har bra edge i början och att om man säljer tidigt vid påvisad vinst så blir resultatet bättre.

                  Comment


                  • Hej Jimmy,
                    Roligt att det funkar och att du hittat nya hypoteser som du börjat utforska. Dela gärna med dig av vad du kommer fram till.

                    Det här med "Money management" som du är inne på är en viktig del av en strategi, dvs ska man exempelvis stega sig in i marknaden och sedan gå ur med allt, eller ska man gå in med allt och sedan stega sig ur?
                    Det finns många olika system man kan använda sig av, ett kallas 3-2-1 metoden. Den går ut på att man går in med full styrka och genast därefter man har vinst så säljer man 2/3 av innehavet och låter därefter en tredjedel ligga kvar. Tanken med strategin är att den första försäljningen skall täcka alla kostnader plus att ta en liten vinst, varefter den sista tredjedelen är "helt gratis" och friare kan följa med i marknaden.

                    Comment


                    • Intressant med scaling. Har precis läst en artikel i ämnet. Slutsaten var att det i "teorin" är bäst att handla all in. Antingen är det bäst att handla direkt vid signal, delay med bättre pris eller delay med sämare(bekräfta signal) pris. Annat gäller vid obegränsat kapital. Fördelen med att gå in hårt och sedan lätta på position är att man därefter spelar med husets pengar. Nackdelen är då man får förluster direkt utan upparbetad vinst. Fördelen med att stega in är tvärtom. Lägre initial risk, men kan lätt förlora upparbetad vinst. Det blir mer komplicerat med SL och TP. Dessutom kan scaling skapa jämnare resultat, även om totalen blir lägre och att det skiljer mellan perioder. Men det är ju där simulatorn kommer in.

                      Comment


                      • Ursprungligen postat av jimmy Visa inlägg
                        Hej, tack LillWicke, mycket uppskattat!

                        Jag har under tiden också labbat en del. men mestadels av tiden går till trial & error kring skripten att försöka få ut det man önskar. :-)

                        Har labbat med stop-loss som endast är aktiv under tiden reg. kurvan pekar ned, för att minska vissa stora förlust-trades av falska signaler (long). Det verkar hjälpa att minska förlust-resultatet en del (ska överväga sedan när fladder åtgärdat om det ska ingå eller om man istället ska ändra villkoren som gör att felsignalerna blir möjliga).

                        Har också några hypoteser för en extra take profit signal, som är tänkt att försöka gå ur tidigare (long) om priset är avvikande högt.

                        Har dock inte kommit framåt tillräckligt för att dela något användbart ännu, jag får väldigt mycket fladder (köp och sälj i kluster), så mitt nästa mål är att studera dina fladder-skript och försöka få bort "falska" fladder signler och se om jag kan få några kvalitativa skriptdelar som kan ingå i att förbättra Tracker.

                        Ett tips/hypotes som jag vill dela och som jag tänker utforska vidare själv. Jag råkade (med fel konfig och bug) få till köp (long) med stort position, dvs 5 kontrakt som sedan såldes av 1 kontrakt i taget med det buggiga TP skriptet. det fick väldigt bra resultat (dock inte räknat på courtage, blir blev många trades med små vinster). det visar på att trackers Entry har bra edge i början och att om man säljer tidigt vid påvisad vinst så blir resultatet bättre.

                        Hej Jimmy,

                        Vad är det för falska säljsignaler som du vill filtrera bort? När uppkommer de? Är det när det kommer en snabb men djup dip som efter en kort stund kommer tillbaka upp och fortsätter uppåt?

                        Comment


                        • Ursprungligen postat av LillWicke Visa inlägg
                          Hej Jimmy,
                          Roligt att det funkar och att du hittat nya hypoteser som du börjat utforska. Dela gärna med dig av vad du kommer fram till.

                          Det här med "Money management" som du är inne på är en viktig del av en strategi, dvs ska man exempelvis stega sig in i marknaden och sedan gå ur med allt, eller ska man gå in med allt och sedan stega sig ur?
                          Det finns många olika system man kan använda sig av, ett kallas 3-2-1 metoden. Den går ut på att man går in med full styrka och genast därefter man har vinst så säljer man 2/3 av innehavet och låter därefter en tredjedel ligga kvar. Tanken med strategin är att den första försäljningen skall täcka alla kostnader plus att ta en liten vinst, varefter den sista tredjedelen är "helt gratis" och friare kan följa med i marknaden.


                          Hej Lillvicke,
                          Det där 3-2-1 systemet kan ju funka bra om man får en tidig vinst... Annars kan köra tvärtom, 1-2-3. Lite som att känna efter med tån om det är kallt och sedan bygga upp en position för att avveckla den när man har en vinst. Jag såg ett inslag av en respekterad trader(ska kolla upp vad han heter. Inslaget finns på youtube) som var med och utvecklade de första HFT algoritmerna. Det han jobbade med nu var trading med låg risk. Det systemet var mer som 1-2-3-2-1 och konstant insats dvs ingen återinvestering just för att riskera så lite som möjligt.

                          Comment


                          • Ursprungligen postat av Henric Visa inlägg
                            Intressant med scaling. Har precis läst en artikel i ämnet. Slutsaten var att det i "teorin" är bäst att handla all in. Antingen är det bäst att handla direkt vid signal, delay med bättre pris eller delay med sämare(bekräfta signal) pris. Annat gäller vid obegränsat kapital. Fördelen med att gå in hårt och sedan lätta på position är att man därefter spelar med husets pengar. Nackdelen är då man får förluster direkt utan upparbetad vinst. Fördelen med att stega in är tvärtom. Lägre initial risk, men kan lätt förlora upparbetad vinst. Det blir mer komplicerat med SL och TP. Dessutom kan scaling skapa jämnare resultat, även om totalen blir lägre och att det skiljer mellan perioder. Men det är ju där simulatorn kommer in.
                            Det som är viktigt är att hålla fokus på att minimera risken men utan att tumma allt för mycket på avkastningen. Det är en svår knut att lösa, men uppenbarligen så finns det sådana lösningar. Jag kan rekommendera en LinkedIn grupp som heter Automated Trading Strategies.

                            Comment


                            • Roligt att ämnet "Mony Managemet", eller som Henric kallar det "Scaling", uppmärksammats.
                              Det finns mycket intressant att skriva om detta och ämnet kanske även förtjänar en egen tråd? Vad säger ni, vi kanske ska be Rikard bryta ut inläggen om detta skapa en ny tråd?

                              En sak är i alla fall säker, det har visat sig att en dålig modell men med bra Money Managenent trots allt kan bli vinstrik, medans en bra modell men med dålig Money Management i slutändan kan ge ett sämre resultat än den dåliga modellen med bra Money Management.

                              Comment


                              • Ursprungligen postat av LillWicke Visa inlägg
                                Roligt att ämnet "Mony Managemet", eller som Henric kallar det "Scaling", uppmärksammats.
                                Det finns mycket intressant att skriva om detta och ämnet kanske även förtjänar en egen tråd? Vad säger ni, vi kanske ska be Rikard bryta ut inläggen om detta skapa en ny tråd?

                                En sak är i alla fall säker, det har visat sig att en dålig modell men med bra Money Managenent trots allt kan bli vinstrik, medans en bra modell men med dålig Money Management i slutändan kan ge ett sämre resultat än den dåliga modellen med bra Money Management.

                                Hear Hear !!! Eftersom vi alla har lite halvbra strategier utan Money Management så är det nog där vi ska satsa lite tid.

                                Comment

                                Working...
                                X