Allmänt meddelande

Collapse
No announcement yet.

OMX Tracker

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

  • Ursprungligen postat av petersi Visa inlägg
    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?
    Hej,

    Två saker, i mitt labbande med nya triggers får jag mycket fladder.
    Det jag pratar om i OMX Tracker och kallar falska signaler är när position tagits i ny riktning (long/short) men "trenden" fortsätter i den befintliga.
    (falskt utbrott bättre benämning kanske).

    Hypotes:

    Med trend menar jag det håll reg.kurvan pekar åt, upp eller ned. I bilden visas uppgående kurva i blått och nedåtgående i rött..
    När priset skär kurvan ges signal (reversal), det tar ett tag innan kurvan ändrar riktning och vi vet om det är en ny trend, det är under den tiden man inte vet om det är falskt utbrott eller riktigt (enligt mitt sett att se det). Så tanken här är att begränsa förlusten för falska utbrott igenom att tillåta en stop loss så länge kurvan pekar ned (fel ritktning). När kurvan slagit om och blivit blå är chansen stor att ny intradags-trend/swing inletts och jag tycker man kan vara utan stop för att inte stoppa ur i onödan. Istället bör man där arbeta med TP (money management).

    Jag labbar också med att ha en extra signal när kurvan slår om (trenden bekräftad enligt mitt sett att se), dvs föregående stapel trend nedåt, nuvarande trend uppåt eller tvärt om. Detta verkar ge sämre pris ibland, men täpper till en del dåliga exits/entry om signal inte givits alls tidigare av någon anledning (något av villkoren inte uppfyllda). Hypotesen är att Tracker kommer in bra med befintlig trigger men ibland missas trigger när trenden slagit om och då bra med en extra senare trigger vid trend skifte. Har man redan position så blir det ingen skillnad (om man inte arbetar med scaling). Om ni studerar bilderna så ser ni att signalen skulle hjälpa att byta position på ett behagligare sätt just i de tillfällena, visar några extremfall.. :-)
    Attached Files
    Last edited by jimmy; 2013-07-04, 15:27.

    Comment


    • Jimmy,
      Du verkar sätta likhetstecken mellan Money Mangement och take-profit samt beteckna scaling som något annat.

      Vad jag har lärt mig, så står Money Management som ett samlingsbegrepp för allt vad som har med kontots penningmängdshantering att göra, dvs begreppet inbegriper take-profit, stopp-loss, scaling och allt annat som har med detta och positionsstrategihantering att göra.

      Tycker det kan vara bra om vi använder samma terminologi. Någon som har synpunkter på försök till definition jag gjorde ovan?

      Comment


      • Hej,

        Bara slarvigt uttryckt av mig, instämmer med dig, "TP" råkar vara det jag satt med, skrev inom parentes MM för att vara öppen för andra metoder var inte menat som likhetstecken. Den TP jag har i åtanke går inte ur position helt utan är tänkt att skala ur.

        Last edited by jimmy; 2013-07-04, 20:27.

        Comment


        • Gott, Money Management handlar ju också om sådana saker som hur många kontrakt/aktier man ska handla med i förhållande till kontoinehavet, om man ska syssla med återinvestering osv. Dvs ganska många saker som en automatiserad handel ska ta hand om.

          Personligen tycker jag scaling och take-proffit är väldigt intressanta områden i detta sammanhang då denna hantering kan vara helt avgörande för hur en modell går och något som inte tagits upp så mycket i andra sammanhang. Diskussionen har ju också börjat med att dryfta dessa frågor. Det ska bli intressant att följa utvecklingen.


          Comment


          • Hej,

            EDIT:
            Tidigare förslag att skapa egen tråd för pengar/portfölj hantering låter bra.

            Tråd: http://www.autostock.se/vbulletin/showthread.php?t=3244


            /jimmy
            Last edited by jimmy; 2013-07-04, 21:38.

            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.



              ......
              Uppdaterad.

              Hej LillWicke,

              jag har börjat om från början med labbandet då jag upptäckte att jag inte fick förväntat resultat i bänken körning efter vissa ändringar skript, har en känsla av att resultatet var cachat eller så, fick skapa om modellerna och fick då annat resultat med samma skript. nog om det..

              Tänkte därför börja med en ursprungs OMX Tracker som grund innehållande fladder filter och sedan ändra villkor...

              Först en fråga, löser ditt fladder filter problem med att det kan bli ett kluster av köp och sälj signaler (har läst tidigare tråd)?

              Jag är ute efter ett filter som släpper igenom 1 signal, sedan låser skriptet att inte ta flera signaler under t.ex. 1 period/viss tid. det är när jag lägger till extra villkor att köpa när reg.kurva går från lutande uppåt till nedåt som det blir många olika signaler i bänken. Jag antar att kurvan växlar mellan upp och ned under perioden när den ligger precis på gränsen.. Jag ska kolla vidare, tänker att om det köper och säljer så borde ju det motsatta villkoret också vara sant och det borde kanske också blockeras av samma filter..

              Jag bestämde mig för att testa skriptet du lade upp för att se hur det beter sig, dock får jag extremt många signaler, så det är något tok. Jag rättade ett fel i ditt långskript annars är det nog rak klipp-klistra.
              Kan du se vad som kan vara fel?

              Köp sidan.
              {Tracker long}
              { 121108 }

              { testa att databastid och systemtid är på samma dag }
              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:=0 {att labba med}
              signal_lock:=3
              punkter_ner:=0.0 {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)))


              { definiera variabler }
              o1:=Osc(c,4,20,s)
              rgln1:=Mov(LinReg(c,40),2,s)
              ma2:=Mov(c,3,e)

              { oscillator stiger }
              oupp:=Llv(Lt(HhvBars(o1,2),1),2)

              { definiera villkor för sista signal 12 minuter innan börsstängning }
              stängning1:=le(mult(1440,sub(market(c),frac(date()))),12)

              { testa om innehav är noll eller blankat }
              ej_innehav:=le(portfolio(v),0)

              { testa om datum är 23 i månaden eller senare }
              datum:=ge(DayOfMonth(),23)

              i40(
              { korrigera överskottsinnehav }
              överskott=lt(portfolio(v),scrpar(20))

              { säkerställ att kl är minst 11 på dagen }
              {inpådagen=gt(frac(d),0.46)}

              { testa om regressionskurva är uppåtriktad }
              regupp=Lt(HhvBars(rgln1,2),1)

              { Long-villkor - oscillator upp och regressionskurva upp minst 10 perioder }
              signal1=And(oupp,llv(regupp,10))

              { testa om macd köpsignal inom 5 staplar och ingen macd sälj inom 3 staplar }
              signal2=And(Hhv(Macd(b),5),or(signal1,Not(Hhv(Macd(s),3))))

              { koppla samman villkor - signal2 samt inpådagen, samt macd stigande }
              signal3=and(And(signal2,inpådagen),gt(macd(n),macd(t)))

              { koppla samman villkor - signal3 samt antingen osc lägre än -13 eller regression upp eller kort ma över regression }
              signal5=And(signal3,Or(Lt(o1,Sub(0,13)),or(datum,Or(Hhv(regupp,12),Gt(ma2,rgln1)))))

              { koppla samman villkor - signal 5 samt L och H lägre än L och H förra stapeln }
              signal6=And(signal5,And(Gt(l,Ref(l,1)),Gt(h,Ref(h,1))))

              { koppla samman villkor - signal 6 och en senare än kl 1718 samt tid ok }
              signal7=and(and(And(signal6,Not(stängning1)),datum_ok),not(stängning1))

              {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(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)

              { koppla samman villkor - signal 7 eller överskottsförsäljning }
              {signal8=and(or(signal7,överskott),ej_innehav)}

              { skicka signal till global cell 870 som används för att handla minifutures }
              {setgvarif(signal7,870,eqv(cum(1),1))}

              mult(signal9,10)

              )

              --------------------------------------------------
              Säljsidan:


              { Tracker short }
              { 121108 }

              { 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)))

              datum_ok:=eqv(int(d),int(date()))
              o1:=Osc(c,5,21,s)
              rgln1:=Mov(LinReg(c,40),2,e)
              ma2:=Mov(c,3,e)
              oner:=Llv(Lt(LlvBars(o1,2),1),2)
              stängning1:=le(mult(1440,sub(market(c),frac(date()))),18)
              ej_innehav:=ge(portfolio(v),0)
              i40(
              { korrigera överskottsinnehav }
              överskott=gt(portfolio(v),scrpar(19))
              inpådagen=gt(frac(d),0.42)
              regner=Lt(LlvBars(rgln1,2),1)
              signal1=And(oner,llv(regner,7))
              signal2=And(Hhv(Macd(s),5),or(signal1,Not(Hhv(Macd(b),4))))
              signal3=and(And(signal2,inpådagen),lt(macd(n),macd(t)))
              signal5=And(signal3,Or(Gt(o1,14),Or(Hhv(regner,11),Lt(ma2,rgln1))))
              signal6=And(signal5,And(Lt(l,Ref(l,1)),Lt(h,Ref(h,1))))
              signal7=and(and(And(signal6,Not(stängning1)),datum_ok),not(stängning1))


              {setgvarif(signal7,871,eqv(cum(1),1))}
              {mult(and(signal8,1),10)}

              mult(signal9,10)

              )
              Last edited by jimmy; 2013-07-06, 21:54.

              Comment


              • Hej Jimmy,
                Tänk på att det du nu lagt in är FredTraders variant av mina script, ägnade åt att lösa det han avsåg vara viktigt. Läs först hans och min dialog längre upp i tråden för att se om det är liknande tankar du själv har.

                Mina orginalscript är skrivna på så sätt att de består av två delar (en timer och en sigalblockning) i ett och samma script, samt presenterar en lösning på två stycken ofta förekommande problem.
                Hur upplägget är tänkt hur lösningen ser ut kan läsa mera om här:
                http://www.autostock.se/vbulletin/sh...=fladderscript

                Begrunda de två olika angreppssätten, FredTrader:s eller orginalet, och berätta sedan vad som passar dina syften bäst. Alla script är ju anpassningssbara, samtidigt handlar det om vilka script vi skall anpassa när vi nu ska gå vidare.

                Comment


                • Hej,

                  Edit: Lagt till zip med analyser filer.

                  Någon som kan hjälpa till med detta problem och även gärna ge förslag på om det går att göra på ett bättre/annat sätt?

                  Har suttit hela dagen men tror det är något enkelt för ett vant "skript öga", jag försöker få till master-slav ordermodeller med stöd för skalning, inlägget hör kanske egentligen till allmänna skriptfrågor, NAT Pro

                  Problem är att köp och sälj signalerna i Bänken kommer även ifrån Masterskripten, trots att jag tagit bort avslutsvillkoren, sätter bara globalvariabel. Jag vet inte om skripten är kompatibla med NAT/bänkens egenheter, dvs om jag gör något som inte är tänkt att fungera eller om det är skript eller order modell-buggar

                  Har gjort två slav-modeller och två master modeller. Tanken är att OMX Tracker Master-modellen (nu delar i köp-skalning-sälj) analyserar OMXS30 och ge signal till slavskriptet som ska göra köp/sälj.
                  Skripten har jag anpassat till c (close) så att de ska gå att testa med index. Problemet som jag uppfattar att både master och slav handlar och inte vet hur jag kan se vad som händer (debugging)


                  Vad jag försöker uppnå
                  Jag har tagit ytterligare ett steg bakåt med Tracker då jag redan sett att den har potential om man vässar till signalerna. Jag känner viktigast är att först ha en arkitektur/ramverk på plats för att nå slutmålet med att anpassa insatsen efter olika villkor/signaler. t.ex. 50%-100%-75%-50%-0%. Där de första 50% t.ex. kan vara Tracker. om ytterligare ett villkor blir sant så adderar t.ex. 50%. Sedan skala ur vartefter styrkan gå ur.. Kan likväll bli 50%-0% helt beroende på hur underliggande villkor uppfylls.

                  Så tänkte först sätta ett "programramverk" som ska stödja:
                  • Slav-order-modeller [Köp/sälj för respektive long/short] för att kunna handla t.ex. minifutures med signaler ifrån master skript. Skriptet konfigureras med belopp eller procent av depå (ärvt ifrån befintliga köp/säljskript). Har utgått ifrån OMX Tracker med tillägg ifrån andra modeller.
                  • Master ordermodell för köp och sälj för respektive Long/Short.
                    Ska hanterar underliggande signalstrategiers signaler och räkna upp/ned positionsstorlek. Tanken är att man kan knyta in delsignaler hit som sedan skickas vidare till slavskript för exekvering.
                    Jag antar att denna lösning med slav-master (kontrol) modeller samt underliggande modeller behövs för att kunna köra olika delstrategier i olika tidsupplösningar osv. T.ex. vissa filter i dagsupplösning, Tracker i 40 minuter, någon uppskalning strategi kanske i 20 min och sedan samla upp signaler/filter via globala variabler till master skripten som får sätta %-vikt på signalerna.
                  • Skalning - Master skriptet styr slavskriptets köp och sälj skript via global cell. Storlek kan vara 0-100% för respektive Long/short sida. Tanken är t.ex. att börja traden med 50% och skala upp eller ned beroende på utvecklingen.
                  • Modellerna behöver ha någon form av fladder-filter förutsätter jag. Vill kunna låsa signalerna så att signal ges under kort stund och sedan blockeras en viss tid då det är troligt att signaler har dött ut. Risken är annars att nytt t.ex. köp slår till direkt när en nedskalning skett.
                  • Målantal. Jag uppfattar att det vanligaste sättet att få en modell att sluta signalera är att ha med villkor som "ej_innehav". När man använder slavskript som ligger ett steg ifrån analysen hur ska man lösa det? Ska man rapportera tillbaka innehavet från slav till master via globalcell och blockera signaler så snart innehav finns. Jag har inte så bra koll på globalaceller, diagramskrivning och allt man kan läsa om och vilka saker man bör tänka på, så tacksam för era erfarenheter.


                  Just nu testar jag med att köra OMX Tracker koden i master skripten för att få det att fungera först. Tänkte sedan ta det ett steg vidare om det inte finns bättre förslag som kommer upp.

                  Jag fokuserar bara på Long köp-(skalning)-exit. När det fungerar så borde det vara enklare att ta vidare förr short.

                  Jag försökte illustrera hur jag tänkt i bifogad bild.

                  EDIT: har lagt till analysprojektet, vet inte vilka filer som var viktigast, men där ligger en xml med innehållande skript.
                  Attached Files
                  Last edited by jimmy; 2013-07-09, 09:18.

                  Comment


                  • Hej Jimmy,

                    Bra att du i första hand fokuserar på long-exitlong
                    Många frågor du har ställt och några har du redan fått besvarade i parallelltråden.
                    Här: http://www.autostock.se/vbulletin/sh...7622#post27622

                    Jag laddar ogärna ned filer i min analysbänk som kan riskera att påverka annat jag har där, men om du känner för det får du gärna pm:a mig själva scripten, så lovar jag att titta på dem. Du behöver inte zippa scripten de tar oftast inte så stor plats.

                    Comment


                    • Hej LillWicke,

                      stort tack, ska titta på vad du och Henrik skrivit och labba lite och återkommer med en uppdatering i veckan.

                      Comment


                      • hej LillWicke,

                        Har efter mycket trial & error fått både long och short skriptet att köra. Har haft mycket problem med båda bänken och mig själv. Så har försökt ändra så lite som möjligt. Varje gång jag gjort lite för många ändringar så har det sluta fungera. I kombination med att jag slumpvis haft problem med att bänken gärna "cachar" tidigare körning så man vet inte om man ser resultatet av sina senaste ändringar med fel i eller om bänken spelar än ett spratt. detta är ialla fall vad jag tror.

                        Postar en uppdatering och skulle uppskatta om du kan titta på om fladder filtret är rätt implementerat (signal 7-9 framförallt, läste din kommentar om handla_ok eller likndande så skulle det bakas ihop i sissta villkoret, jag har gjorde lite annorlunda enligt koden nedan och tänker det borde få samma effekt, dock inte säker på det. Du får gärna kommentera om du ser andra brister, förbättringsförslag

                        Syftet med skripten nu är att få en baseline som fungerar så att själva villkoren och de extra trigger-skripten kan kopplas på och styra slavskripten och att hårdkodningar kan tas bort (antal nu är 100 och 0 i köp respektive sälj). Här har jag också labbat en del och har problem med signaleringen. Jag kommer posta ett separat inlägg om det.

                        Master skripten styr insatsen i cell 350 till köp/sälj-skripten.

                        sl) OMX Tracker 2.0 Beta Long Är OMX Tracker Long skriptet med justeringar för att sätta positionstorlek 0-100% i köpantal skriptet. Detta skript körs i en "summy" ordermodell då modellen inte själv handlar utan bara signalerar..

                        Kod:
                        {Tracker 2.0 Beta Long}
                        { 130712 }
                        {Tracker original + fladder + cell 350 styra positionstorlek 0-100%}
                        
                        { testa att databastid och systemtid är på samma dag }
                        datum_ok:=eqv(int(d),int(date()))
                        
                        { definiera variabler }
                        o1:=Osc(c,4,20,s)
                        rgln1:=Mov(LinReg(c,40),2,s)
                        ma2:=Mov(c,3,e)
                        
                        { oscillator stiger }
                        oupp:=Llv(Lt(HhvBars(o1,2),1),2)
                        
                        { Fladderfilter samt begränsad köpsignal }
                        { köper endast inom intervallet: 5min< intervall <8min efter det att signal triggats, ställbart }
                        { säkerställa att inga positioner tas innan start_delay passerats } 
                        {kl 11 är Tracker original}
                        start_delay:=1
                        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:=1
                        signal_lock:=3
                        { Säkerställer blockering av cellskrivning under diagramkörningen }
                        {block_diag_skriv:=and(datum_ok,eqv(cum(1),1))} {Villkor för live-körning}
                        block_diag_skriv:=1 {Villkor för 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)))
                        
                        { definiera villkor för sista signal 12 minuter innan börsstängning }
                        stängning1:=le(mult(1440,sub(market(c),frac(date()))),12)
                        
                        { testa om innehav är noll eller blankat }
                        ej_innehav:=le(portfolio(v),0)
                        
                        { testa om datum är 23 i månaden eller senare }
                        datum:=ge(DayOfMonth(),23)
                        i40(
                        { korrigera överskottsinnehav }
                        överskott=lt(portfolio(v),scrpar(20))
                        
                        { säkerställ att kl är minst 11 på dagen }
                        {inpådagen=gt(frac(d),0.46)}
                        
                        
                        { testa om regressionskurva är uppåtriktad }
                        regupp=Lt(HhvBars(rgln1,2),1)
                        
                        { Long-villkor - oscillator upp och regressionskurva upp minst 10 perioder }
                        signal1=And(oupp,llv(regupp,10))
                        
                        { testa om macd köpsignal inom 5 staplar och ingen macd sälj inom 3 staplar }
                        signal2=And(Hhv(Macd(b),5),or(signal1,Not(Hhv(Macd(s),3))))
                        
                        { koppla samman villkor - signal2 samt inpådagen, samt macd stigande }
                        signal3=and(And(signal2,inpådagen),gt(macd(n),macd(t)))
                        
                        { koppla samman villkor - signal3 samt antingen osc lägre än -13 eller regression upp eller kort ma över regression }
                        signal5=And(signal3,Or(Lt(o1,Sub(0,13)),or(datum,Or(Hhv(regupp,12),Gt(ma2,rgln1)))))
                        
                        { koppla samman villkor - signal 5 samt L och H lägre än L och H förra stapeln }
                        signal6=And(signal5,And(Gt(l,Ref(l,1)),Gt(h,Ref(h,1))))
                        
                        { koppla samman villkor - signal 6 och en senare än kl 1718 samt tid ok }
                        signal7=and(and(And(signal6,Not(stängning1)),datum_ok),not(stängning1))
                        
                        { Nolla cell innan handel }
                        nollvillkor1=and(innan_position,gt(Getgvar(500,N),0))
                        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)
                        
                        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 }
                        
                        { koppla samman villkor - signal 7 eller överskottsförsäljning }
                        signal8=and(or(and(signal7,tid_ok),överskott),ej_innehav)
                        
                        { Nolla cell }
                        nollvillkor2=and(not(signal7),gt(GetGvar(500,N),0))
                        SetGvarIf(0,500,and(nollvillkor2,block_diag_skriv),T) { nollställer cell 500 om ej signal }
                        
                        
                        {Sett allokering 0-100 motsvarande procent av tilldelat kapital på instrumentet}
                        setgvarif(100,350,signal8)
                        setgvarif(c,311,signal8) {sett pris i cell 311 om köpsignal}
                        { skicka signal till global cell 870 som används för att handla minifutures }
                        {setgvarif(signal7,870,eqv(cum(1),1))} {JP: ändrat från}
                        setgvarif(signal8,870,1) {JP: ändrat till}
                        
                        mult(signal8,1)
                        add(0,0) {JP: ändrat till}
                        )
                        sl) OMX Tracker 2.0 Beta - minilong Buy detta är slav skriptet som köper.
                        Kod:
                        {sl) OMX Tracker 2.0 Beta - minilong Buy}
                        { datum 130712 }
                        max_trades_per_day:=10
                        {                              }
                        count:=lasttrade(b,0)
                        dag1:=lasttrade(b,1)
                        signal:=getgvar(870)
                        målallokering:=getgvar(350)
                        tidigareallokering:=getgvar(355)
                        innehav:=portfolio(v)
                        
                        {värde att jämföra om rätt innehav, antal * allokering}
                        innehavsreferens:=mult(innehav,tidigareallokering)
                        jämförelsereferens:=mult(innehav,målallokering)
                        ej_rätt_innehav:=not(eqv(målallokering,tidigareallokering))
                        
                        
                        {ej_innehav:=lt(portfolio(v),1)}
                        i1(
                        lt1=LastTrade(B,D)
                        minSedanBuy=mult(sub(date(),lt1),1440)
                        timeout=gt(minSedanBuy,2)
                        ej_idag=gt(int(date()),dag1)
                        ok_trade=or(lt(count,max_trades_per_day),ej_idag)
                        tradepower=gt(cash(t),scrpar(21))
                        buy=and(and(and(and(signal,ej_rätt_innehav),ok_trade),timeout),tradepower)
                        
                        {sätt målallokering att jämföra med nästa körning}
                        setgvarif(målallokering,355,buy)
                        
                        retval(if(ej_idag,1,add(count,1)),0)
                        retval(int(date()),1)
                        mult(buy,10)
                        )

                        va) OMX Tracker 2.0 Beta minilong köpantal kopierat från en annan strategi och anpassat till att ta emot antal i cell 350.
                        Köpantalskriptet körs i modellen för sl) OMX Tracker 2.0 Beta - minilong Buy.

                        Kod:
                        {va) OMX Tracker 2.0 Beta minilong köpantal} 
                        
                        i1(
                        signal=getgvar(350) {procentage to trade 0-100 for this signal}
                        insatskonfig=scrpar(21){Configurerad i kr eller -procent t.ex. -30 är 30% av kapitalet i depån}
                        account=sub(add(cash(a),cash(t)),cash(u))
                        procent=mult(div(insatskonfig,-100),account)
                        insats=if(lt(insatskonfig,0),procent,insatskonfig)
                        målantal=int(div(mult(insats,div(signal,100)),c)) {använd s i skarpkörning, c vid test om index}
                        innehav=Portfolio(v)
                        övermål=Ge(innehav,målantal)
                        slutantal1=If(övermål,0,SUB(målantal,innehav))
                        add(0,slutantal1)
                        )
                        Lägger in short sidan i annatinägg pga begrändningen på 10000 tecken per inlägg.
                        Last edited by jimmy; 2013-07-14, 20:55.

                        Comment


                        • Hej,

                          fortsättning med säljskripten relaterat till föregående inlägg. Notera att modeller i sin nuvarande form inte går kort utan long-exit.

                          sl) OMX Tracker 2.0 Beta short kör den som en dummy order modell som signalerar till minilong sälj skriptet nedan för själva handeln. Det som är nytt är att sätta allokeringstorlek för säljantal-skriptet, fladderfilter.

                          Kod:
                          { sl) OMX Tracker 2.0 Beta short }
                          { 130714 }
                          
                          { testa att databastid och systemtid är på samma dag }
                          datum_ok:=eqv(int(d),int(date()))
                          
                          { definiera variabler }
                          o1:=Osc(c,5,21,s)
                          rgln1:=Mov(LinReg(c,40),2,e)
                          ma2:=Mov(c,3,e)
                          
                          { oscillator sjunker }
                          oner:=Llv(Lt(LlvBars(o1,2),1),2)
                          
                          { Fladderfilter samt begränsad köpsignal }
                          { köper endast inom intervallet: 5min< intervall <8min efter det att signal triggats, ställbart }
                          { säkerställa att inga positioner tas innan start_delay passerats } 
                          {kl 11 är Tracker original}
                          start_delay:=1
                          minut_nu:=mult(frac(date()),1440)
                          inpådagen:=gt(minut_nu,add(630,start_delay)) { 540 är kl 9.00 }
                          
                          { nya tillägg innan intraday-parantesen}
                          { Fladdervariabler }
                          signal_delay:=1
                          signal_lock:=3
                          { Säkerställer blockering av cellskrivning under diagramkörningen }
                          {block_diag_skriv:=and(datum_ok,eqv(cum(1),1))} {Villkor för live-körning}
                          block_diag_skriv:=1 {Villkor för 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)))
                          
                          { definiera villkor för sista signal 18 minuter innan börsstängning }
                          stängning1:=le(mult(1440,sub(market(c),frac(date()))),18)
                          
                          { testa om innehav är större än noll }
                          ej_innehav:=ge(portfolio(v),0)
                          
                          
                          
                          i40(
                          { korrigera överskottsinnehav }
                          överskott=gt(portfolio(v),scrpar(19))
                          
                          { säkerställ att kl är minst 11 på dagen }
                          {inpådagen=gt(frac(d),0.42)} {ersatt högre upp}
                          
                          
                          { testa om regressionskurva är nedåtriktad }
                          regner=Lt(LlvBars(rgln1,2),1)
                          
                          { Short-villkor - oscillator ned och regressionskurva ned minst 7 perioder }
                          signal1=And(oner,llv(regner,7))
                          
                          { testa om macd säljsignal inom 5 staplar och ingen macd köp inom 4 staplar }
                          signal2=And(Hhv(Macd(s),5),or(signal1,Not(Hhv(Macd(b),4))))
                          
                          { koppla samman villkor - signal2 samt inpådagen, samt macd sjunkande }
                          signal3=and(And(signal2,inpådagen),lt(macd(n),macd(t)))
                          
                          { koppla samman villkor - signal3 samt antingen osc lägre än 14 eller regression ned eller kort ma under regression }
                          signal5=And(signal3,Or(Gt(o1,14),Or(Hhv(regner,11),Lt(ma2,rgln1))))
                          
                          { koppla samman villkor - signal 5 samt L och H lägre än L och H förra stapeln }
                          signal6=And(signal5,And(Lt(l,Ref(l,1)),Lt(h,Ref(h,1))))
                          
                          { koppla samman villkor - signal 6 och ej stängning och datum ok }
                          signal7=and(and(And(signal6,Not(stängning1)),datum_ok),not(stängning1))
                          
                          { Nolla cell innan handel }
                          nollvillkor1=and(innan_position,gt(Getgvar(501,N),0))
                          SetGvarIf(0,501,and(nollvillkor1,block_diag_skriv),T) { Nollställer cell 500 innan handeln börjar }
                          
                          { Skriv tid i cell }
                          nysignal=and(signal7,eqv(GetGvar(501,N),0))
                          SetGvarIf(minut_nu,501,and(nysignal,block_diag_skriv),T)
                          
                          minsedan_signal=if(gt(GetGvar(501,N),0),sub(minut_nu,GetGvar(501,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 }
                          
                          { För signal via global variabel }
                          signal8=and(signal7,tid_ok)
                          
                          {för direktkopplat skript}
                          signal9=and(or(signal8,överskott),ej_innehav)
                          
                          
                          { Nolla cell }
                          nollvillkor2=and(not(signal7),gt(GetGvar(501,N),0))
                          SetGvarIf(0,501,and(nollvillkor2,block_diag_skriv),T) { nollställer cell 500 om ej signal }
                          
                          
                          
                          {Sett allokering 0-100 motsvarande procent av tilldelat kapital på instrumentet}
                          setgvarif(0,350,signal8)
                          { skicka signal till global cell 871 som används för att handla minifutures }
                          {setgvarif(signal7,871,eqv(cum(1),1))}
                          
                          setgvarif(signal8,871,1)
                          
                          mult(and(signal9,1),10)
                          add(0,0)
                          )
                          sl) OMX Tracker minilong 2.0 beta sell säjskriptet i ordermodellen som säljer. tar emot målvärde i cell 350, jämför med tidigare målvärde i cell 355, om de skiljer tar den position.

                          Kod:
                          {sl) OMX Tracker minilong 2.0 beta sell}
                          signal:=getgvar(871)
                          
                          {kontroll av rätt allokering}
                          målallokering:=getgvar(350)
                          tidigareallokering:=getgvar(355)
                          innehav:=portfolio(v)
                          setgvarif(innehav,356,1)
                          
                          {värde att jämföra om rätt innehav, antal * allokering}
                          innehavsreferens:=mult(innehav,tidigareallokering)
                          jämförelsereferens:=mult(innehav,målallokering)
                          ej_rätt_innehav:=not(eqv(målallokering,tidigareallokering))
                          
                          
                          {innehav:=gt(portfolio(v),0)} {JP: ta bort}
                          
                          
                          {sätt målallokering att jämföra med nästa körning}
                          
                          sell=and(signal,ej_rätt_innehav)
                          setgvarif(målallokering,355,sell)
                          mult(sell,10)
                          va) OMX Tracker 2.0 beta minilong säljantal säljantal skript för minilong tar emot värde i cell 350. skriptet kopierat ifrån annan modell.

                          Kod:
                          {va) OMX Tracker 2.0 beta minilong säljantal}
                          i1(
                          signal=getgvar(350) {trade size in percentage 0-100 e.g. 50 equal 50% of the strategy size}
                          insatskonfig=scrpar(21) {strategy size for connected instrument}
                          account=sub(add(cash(a),cash(t)),cash(u))
                          procent=mult(div(insatskonfig,-100),account)
                          insats=if(lt(insatskonfig,0),procent,insatskonfig)
                          målantal=int(div(mult(insats,div(signal,100)),c)) {använd s i skarpkörning, c vid test om index}
                          innehav=Portfolio(v)
                          övermål=Gt(innehav,målantal)
                          slutantal1=If(övermål,sub(innehav,målantal))
                          add(0,slutantal1)
                          )

                          Comment


                          • Hej Jimmy,
                            När det gäller fladderfiltret har du lagt in det på rätt sätt.

                            Jag kanske har missat något men skulle inte dina script stega sig in till full position? Kan inte se att de gör det idag, men det har du kanske tänkt att lägga in senare?

                            En del av dina setgvarif() saknar "block_diag_skriv" i villkorsdelen, du är medveten om att du då inte kan köra scripten live med diagramritningen påslagen?

                            mult(signal8,1) kan du lika gärna skriva mult(signal8,0) istället för en add(0,0) under.

                            >>I kombination med att jag slumpvis haft problem med att bänken gärna "cachar" tidigare körning så man vet inte om man ser resultatet av >>sina senaste ändringar med fel i eller om bänken spelar än ett spratt. detta är ialla fall vad jag tror.

                            Det där är ett elände när man testar massa olika alternativ och inte riktigt vet om man skrivit rätt. Bänken visar ett resultatet av en gammal körning utan att meddela, om den tycker att något är fel. Jag har påpekat det ett antal gånger för Rikard, vi får se om det löses med senare uppdateringar.

                            Last edited by LillWicke; 2013-07-15, 00:41.

                            Comment


                            • För att lösa "bänken gärna "cachar" tidigare körning" lägger jag in dummy räknare för varje ny köring. Dvs 1, 2, 3 etc.

                              ==> Vore trevligt om det kom en lösning på detta.

                              mvh
                              Ingemar

                              Comment


                              • Det verkar uppstå vid dygnskifte, så ett tips är att starta om både NAT och Analyzer.exe och Förnya från systemet så skapas nya projektfiler.

                                Comment

                                Working...
                                X