Monday 28 August 2017

Moving Average Pseudokode


Tony Finch in 2009 verskaf 'n metode vir 'n eksponensiële bewegende gemiddelde en standaardafwyking: Bogenoemde blyk te wees wat gebaseer is op B. P. Welfords aanlyn algoritme vir standaardafwyking wat ook bereken die gemiddelde. Skeefheid is die verhouding van die 3 oomblik en die standaard deviation3 soos so: Die derde oomblik word gedefinieer as: Wat is so soortgelyk aan die tweede oomblik of afwyking So kyk na Tony Finchs pseudo-kode, sou ek verstaan ​​dat m3 sal wees: Maar toe Ek hierdie toets, die skewe is verkeerd. Uitset, merk dat die bevolking sd is dieselfde, maar die skeefheid is ver van dit. Enige voorstelle om die kode te los hierbo vir die toets, ek laat die alfa waarde effektief 1 / n wees vir die toets bekragtiging. As ons kyk na John Cooks aanlyn-kode hier en omgeskakel word na R. Ek sien nie 'n geredelik gemaak metode om te skakel na 'n eksponensiële bewegende skeef weens die 1 / n in die finale skewe funksie. Finch, Tony. (2009) Inkrementele berekening van geweegde gemiddelde en variansie. nfs-uxsup. csx. cam. ac. uk/I ek probeer om die bewegende gemiddelde van 'n sein te bereken. Die sein waarde ( 'n dubbel) is opgedateer na willekeur keer. Ek is op soek na 'n doeltreffende manier om sy tyd geweegde gemiddelde oor 'n tyd venster te bereken, in real time. Ek kon dit doen my self, maar dit is meer uitdagend as wat ek gedink het. Die meeste van die hulpbronne Ive gevind oor die internet is die berekening van bewegende gemiddelde van periodieke sein, maar my updates na willekeur tyd. Is daar iemand weet goed hulpbronne vir daardie Die truuk is die volgende: Jy kry updates na willekeur keer per leemte update (int tyd, float waarde). Maar jy moet ook ook dop wanneer 'n update val af die tyd venster, sodat jy 'n alarm wat genoem ten tye N wat die vorige update van wat ooit in die berekening weer oorweeg verwyder gestel. As dit gebeur in real-time kan jy die bedryfstelsel versoek om 'n oproep om 'n metode leemte dropoffoldestupdate (int tyd) genoem te word ten tye N As dit 'n simulasie, kan jy nie die hulp van die bedryfstelsel te kry en wat jy nodig het om die hand te doen nie. In 'n simulasie sal jy metodes met die verskaf as 'n argument (wat nie ooreenstem met die werklike tyd) tyd bel. Maar 'n redelike aanname is dat die oproepe is gewaarborg sodanig dat die tyd argumente is aan die toeneem is. In hierdie geval moet jy 'n gesorteerde lys van alarm tyd waardes te handhaaf, en vir elke werk en lees noem jy kyk of die tyd argument is groter as die hoof van die alarm lys. Terwyl dit is 'n groter doen jy die alarm verwante verwerking (drop off die oudste update), verwyder die kop en kyk weer totdat al alarms voor die gegewe tyd verwerk. Doen dan die update oproep. Ek het tot dusver aanvaar is dit duidelik wat jy vir die werklike berekening sou doen, maar ek sal uitbrei net in geval. Ek neem aan jy het 'n metode float lees (int tyd) wat jy gebruik om die waardes te lees. Die doel is hierdie oproep so doeltreffend as moontlik te maak. So jy hoef nie te bereken die bewegende gemiddelde elke keer as die lees metode genoem. In plaas jy precompute die waarde soos op die laaste update of die laaste alarm, en tweak die waarde van 'n paar drywende punt bedrywighede om rekenskap te gee van die verloop van tyd sedert die laaste update. (I. E. 'N konstante aantal operasies behalwe miskien die verwerking van 'n lys van opgestapel alarms). Hopelik is dit duidelik - dit moet 'n baie eenvoudige algoritme en baie doeltreffend wees. Verdere optimalisering. een van die oorblywende probleme is as 'n groot aantal updates binne die venster gebeur, dan is daar 'n lang tyd waarvoor daar nie lees of updates, en dan 'n lees of werk kom saam. In hierdie geval, sal die bogenoemde algoritme ondoeltreffende in inkrementeel opdatering van die waarde vir elk van die updates wat val af wees. Dit is nie nodig nie, want ons het net omgee vir die laaste update oor die tyd venster so as daar 'n manier om al ouer updates doeltreffend af te laai, sal dit help. Om dit te doen, kan ons die algoritme om te doen 'n binêre soek na updates vir die mees onlangse update voor die tyd venster vind verander. As daar relatief min updates wat gevolg moet word laat val dan kan 'n mens geleidelik werk die waarde vir elke gedaal update. Maar as daar is baie opgraderings wat aangespreek moet word laat val dan kan 'n mens die waarde recompute van nuuts af na die val van die ou updates. Addendum op Inkrementele Berekening: Ek moet verduidelik wat ek bedoel met inkrementele berekening hierbo in die sin aanpas hierdie waarde met 'n paar drywende punt bedrywighede om rekenskap te gee van die verloop van tyd sedert die laaste update. Aanvanklike nie-inkrementele berekening Toe Itereer oor relevantupdates in volgorde van toenemende tyd: movingaverage (som lastupdate timesincelastupdate) / windowlength. Nou as presies een update val af by die venster uit, maar geen nuwe updates kom, pas som as: (let op dit priorupdate wat sy tyd stempel het verander om te begin van verlede venster begin). En as presies een werk gaan by die venster uit, maar geen nuwe updates afval, pas som as: Soos duidelik behoort te wees, dit is 'n rowwe skets, maar hopelik sal dit wys hoe jy die gemiddelde sodanig dat dit O (1) operasies per update kan handhaaf op 'n geamortiseerdekostebasis. Maar let op verdere optimalisering is in die vorige paragraaf. Let ook op stabiliteit kwessies verwys na in 'n ouer antwoord, wat beteken dat drywende punt foute kan versamel oor 'n groot aantal van sulke inkrementele bedrywighede soos dat daar 'n afwyking van die uitslag van die volle berekening wat wesenlik tot die aansoek. As 'n benadering is OK en Theres 'n minimum tyd tussen monsters, kan jy probeer super-steekproefneming. Het jy 'n skikking wat eweredig gespasieer tydintervalle wat korter as die minimum is verteenwoordig, en by elke tydperk winkel die nuutste monster wat ontvang is. Hoe korter die interval, sal die nader die gemiddelde wees om die werklike waarde. Die tydperk moet nie groter as die helfte van die minimum wees of daar is 'n kans van die vermiste 'n monster. antwoord 15 Desember 11 van die 18:12 beantwoord 15 Desember 11 van die 22:38 Dankie vir die antwoord. Een verbetering wat dit nodig sou wees om werklik quotcachequot die waarde van die totale gemiddelde sodat ons don39t lus al die tyd. Ook, kan dit 'n geringe punt nie, maar sal dit nie meer doeltreffend om 'n deque of 'n lys te gebruik om die waarde te stoor, aangesien ons aanvaar dat werk sal in die korrekte volgorde te kom. Invoeging sal vinniger as in die kaart wees. â € Arthur 16 Desember 11 van die 08:55 Ja, jy kan die waarde van som kas. Trek die waardes van die monsters wat jy vee, voeg die waardes van die monsters wat jy voeg. Ook, ja, 'n dequeltpairltSample, Dategtgt kan meer doeltreffend wees. Ek verkies kaart vir leesbaarheid, en die gemak van beroep kaart :: Maximum. Soos altyd, skryf die korrekte kode eerste, dan profiel en inkrementele veranderinge meet. uitvoering maak Rob 16 Desember 11 om 15:00 Nota: Blykbaar is dit nie die manier om dit te benader. Verlaat dit hier vir verwysing op wat fout is met hierdie benadering is. Kyk op die kommentaar. UPDATED - gebaseer op Olis kommentaar. nie seker oor die onstabiliteit wat hy al praat. Gebruik 'n gesorteer kaart van aankoms tye teen waardes. By aankoms van 'n waarde toe te voeg die aankoms tyd om die gesorteerde kaart saam met die waarde daarvan en werk die bewegende gemiddelde. waarsku dit is pseudo-kode: Daar. Nie ten volle aangevul maar jy kry die idee. Dinge om daarop te let. Soos ek gesê het die bogenoemde is pseudo-kode. Jy moet 'n geskikte kaart te kies. Moenie verwyder die pare as jy Itereer deur as jy die iterator sal ongeldig en moet weer begin. Sien Olis kommentaar hieronder ook. antwoord 15 Desember 11 van die 12:22 Dit doesn39t werk: dit doesn39t in ag neem watter gedeelte van die venster-lengte elke waarde bestaan ​​vir. Ook hierdie benadering van die toevoeging en dan trek net stabiel vir heelgetal tipes, nie dryf. uitvoering maak Oliver Charles 15 Desember 11 by 00:29 OliCharlesworth - jammer ek gemis 'n paar belangrike punte in die beskrywing (dubbel en-time geweeg). Ek sal werk. Dankie. â € Dennis 15 Desember 11 by 12:33 Die tydbeswaringsfaktor is nog 'n probleem. Maar that39s nie wat I39m praat. Ek het verwys na die feit dat wanneer 'n nuwe waarde eers die tyd venster binnekom, sy bydrae tot die gemiddelde is minimaal. Sy bydrae gaan voort om te verhoog tot 'n nuwe waarde betree. uitvoering maak Oliver Charles 15 Desember 11 by 12: 35I ek probeer om die bewegende gemiddelde van 'n sein te bereken. Die sein waarde ( 'n dubbel) is opgedateer na willekeur keer. Ek is op soek na 'n doeltreffende manier om sy tyd geweegde gemiddelde oor 'n tyd venster te bereken, in real time. Ek kon dit doen my self, maar dit is meer uitdagend as wat ek gedink het. Die meeste van die hulpbronne Ive gevind oor die internet is die berekening van bewegende gemiddelde van periodieke sein, maar my updates na willekeur tyd. Is daar iemand weet goed hulpbronne vir daardie Die truuk is die volgende: Jy kry updates na willekeur keer per leemte update (int tyd, float waarde). Maar jy moet ook ook dop wanneer 'n update val af die tyd venster, sodat jy 'n alarm wat genoem ten tye N wat die vorige update van wat ooit in die berekening weer oorweeg verwyder gestel. As dit gebeur in real-time kan jy die bedryfstelsel versoek om 'n oproep om 'n metode leemte dropoffoldestupdate (int tyd) genoem te word ten tye N As dit 'n simulasie, kan jy nie die hulp van die bedryfstelsel te kry en wat jy nodig het om die hand te doen nie. In 'n simulasie sal jy metodes met die verskaf as 'n argument (wat nie ooreenstem met die werklike tyd) tyd bel. Maar 'n redelike aanname is dat die oproepe is gewaarborg sodanig dat die tyd argumente is aan die toeneem is. In hierdie geval moet jy 'n gesorteerde lys van alarm tyd waardes te handhaaf, en vir elke werk en lees noem jy kyk of die tyd argument is groter as die hoof van die alarm lys. Terwyl dit is 'n groter doen jy die alarm verwante verwerking (drop off die oudste update), verwyder die kop en kyk weer totdat al alarms voor die gegewe tyd verwerk. Doen dan die update oproep. Ek het tot dusver aanvaar is dit duidelik wat jy vir die werklike berekening sou doen, maar ek sal uitbrei net in geval. Ek neem aan jy het 'n metode float lees (int tyd) wat jy gebruik om die waardes te lees. Die doel is hierdie oproep so doeltreffend as moontlik te maak. So jy hoef nie te bereken die bewegende gemiddelde elke keer as die lees metode genoem. In plaas jy precompute die waarde soos op die laaste update of die laaste alarm, en tweak die waarde van 'n paar drywende punt bedrywighede om rekenskap te gee van die verloop van tyd sedert die laaste update. (I. E. 'N konstante aantal operasies behalwe miskien die verwerking van 'n lys van opgestapel alarms). Hopelik is dit duidelik - dit moet 'n baie eenvoudige algoritme en baie doeltreffend wees. Verdere optimalisering. een van die oorblywende probleme is as 'n groot aantal updates binne die venster gebeur, dan is daar 'n lang tyd waarvoor daar nie lees of updates, en dan 'n lees of werk kom saam. In hierdie geval, sal die bogenoemde algoritme ondoeltreffende in inkrementeel opdatering van die waarde vir elk van die updates wat val af wees. Dit is nie nodig nie, want ons het net omgee vir die laaste update oor die tyd venster so as daar 'n manier om al ouer updates doeltreffend af te laai, sal dit help. Om dit te doen, kan ons die algoritme om te doen 'n binêre soek na updates vir die mees onlangse update voor die tyd venster vind verander. As daar relatief min updates wat gevolg moet word laat val dan kan 'n mens geleidelik werk die waarde vir elke gedaal update. Maar as daar is baie opgraderings wat aangespreek moet word laat val dan kan 'n mens die waarde recompute van nuuts af na die val van die ou updates. Addendum op Inkrementele Berekening: Ek moet verduidelik wat ek bedoel met inkrementele berekening hierbo in die sin aanpas hierdie waarde met 'n paar drywende punt bedrywighede om rekenskap te gee van die verloop van tyd sedert die laaste update. Aanvanklike nie-inkrementele berekening Toe Itereer oor relevantupdates in volgorde van toenemende tyd: movingaverage (som lastupdate timesincelastupdate) / windowlength. Nou as presies een update val af by die venster uit, maar geen nuwe updates kom, pas som as: (let op dit priorupdate wat sy tyd stempel het verander om te begin van verlede venster begin). En as presies een werk gaan by die venster uit, maar geen nuwe updates afval, pas som as: Soos duidelik behoort te wees, dit is 'n rowwe skets, maar hopelik sal dit wys hoe jy die gemiddelde sodanig dat dit O (1) operasies per update kan handhaaf op 'n geamortiseerdekostebasis. Maar let op verdere optimalisering is in die vorige paragraaf. Let ook op stabiliteit kwessies verwys na in 'n ouer antwoord, wat beteken dat drywende punt foute kan versamel oor 'n groot aantal van sulke inkrementele bedrywighede soos dat daar 'n afwyking van die uitslag van die volle berekening wat wesenlik tot die aansoek. As 'n benadering is OK en Theres 'n minimum tyd tussen monsters, kan jy probeer super-steekproefneming. Het jy 'n skikking wat eweredig gespasieer tydintervalle wat korter as die minimum is verteenwoordig, en by elke tydperk winkel die nuutste monster wat ontvang is. Hoe korter die interval, sal die nader die gemiddelde wees om die werklike waarde. Die tydperk moet nie groter as die helfte van die minimum wees of daar is 'n kans van die vermiste 'n monster. antwoord 15 Desember 11 van die 18:12 beantwoord 15 Desember 11 van die 22:38 Dankie vir die antwoord. Een verbetering wat dit nodig sou wees om werklik quotcachequot die waarde van die totale gemiddelde sodat ons don39t lus al die tyd. Ook, kan dit 'n geringe punt nie, maar sal dit nie meer doeltreffend om 'n deque of 'n lys te gebruik om die waarde te stoor, aangesien ons aanvaar dat werk sal in die korrekte volgorde te kom. Invoeging sal vinniger as in die kaart wees. â € Arthur 16 Desember 11 van die 08:55 Ja, jy kan die waarde van som kas. Trek die waardes van die monsters wat jy vee, voeg die waardes van die monsters wat jy voeg. Ook, ja, 'n dequeltpairltSample, Dategtgt kan meer doeltreffend wees. Ek verkies kaart vir leesbaarheid, en die gemak van beroep kaart :: Maximum. Soos altyd, skryf die korrekte kode eerste, dan profiel en inkrementele veranderinge meet. uitvoering maak Rob 16 Desember 11 om 15:00 Nota: Blykbaar is dit nie die manier om dit te benader. Verlaat dit hier vir verwysing op wat fout is met hierdie benadering is. Kyk op die kommentaar. UPDATED - gebaseer op Olis kommentaar. nie seker oor die onstabiliteit wat hy al praat. Gebruik 'n gesorteer kaart van aankoms tye teen waardes. By aankoms van 'n waarde toe te voeg die aankoms tyd om die gesorteerde kaart saam met die waarde daarvan en werk die bewegende gemiddelde. waarsku dit is pseudo-kode: Daar. Nie ten volle aangevul maar jy kry die idee. Dinge om daarop te let. Soos ek gesê het die bogenoemde is pseudo-kode. Jy moet 'n geskikte kaart te kies. Moenie verwyder die pare as jy Itereer deur as jy die iterator sal ongeldig en moet weer begin. Sien Olis kommentaar hieronder ook. antwoord 15 Desember 11 van die 12:22 Dit doesn39t werk: dit doesn39t in ag neem watter gedeelte van die venster-lengte elke waarde bestaan ​​vir. Ook hierdie benadering van die toevoeging en dan trek net stabiel vir heelgetal tipes, nie dryf. uitvoering maak Oliver Charles 15 Desember 11 by 00:29 OliCharlesworth - jammer ek gemis 'n paar belangrike punte in die beskrywing (dubbel en-time geweeg). Ek sal werk. Dankie. â € Dennis 15 Desember 11 by 12:33 Die tydbeswaringsfaktor is nog 'n probleem. Maar that39s nie wat I39m praat. Ek het verwys na die feit dat wanneer 'n nuwe waarde eers die tyd venster binnekom, sy bydrae tot die gemiddelde is minimaal. Sy bydrae gaan voort om te verhoog tot 'n nuwe waarde betree. uitvoering maak Oliver Charles 15 Desember 11 by 12: 35Im nie certainn van die korrekte oplossing al sedert die WHALM gemiddeld van elke monster sou 'n billike bedrag van afronding fout te stel. Hmm. Ek wonder of verskil tussen Dobby die breukdeel van die hele gedeelte sal help. Verdeel die hele deel van elke getal met die telling. Hou drie hardloop somme: 1) Die gemiddelde van die hele dele, 2) Die res van elke afdeling, en 3) Die breukdeel van elke nommer. Elke keer as die hele deel van 'n aantal verdeeld is, word die hele deel gevolg by die gemiddelde hardloop som en die res word bygevoeg om die res loop som. Wanneer die res loop som verkry 'n waarde groter as of gelyk aan die telling, sy gedeel deur die telling met die hele deel gevolg by die gemiddelde hardloop som en die res by die res loop som. Ook by elke berekening, die breukdeel word by die fraksionele hardloop som. Wanneer die gemiddelde klaar is, is die res loop som gedeel deur die telling en die gevolg is bygevoeg om die gemiddelde hardloop bedrag as 'n drywende nommer. Byvoorbeeld: Nou wat om te doen met die fraksionele hardloop som. Die gevaar van oorloop is baie minder geneig hier, al is steeds moontlik, so 'n manier om dit te hanteer sou wees om die fraksionele hardloop som deur die telling te verdeel aan die einde en voeg dit by ons gevolg: 'n alternatief sou wees om die fraksionele loop kyk som op elke berekening om te sien of dit is groter as of gelyk aan tel. Wanneer dit gebeur, net doen dieselfde ding wat ons doen met die res loop som. Uitstekende Jomit Vaghela 6-Maart-07 20:00 ek hou van wat jy gesê het klein werk vinnig draai in 'n groot werk. Dink van optimalisering terwyl kodering is 'n goeie praktyk. Groot moeite en verduideliking, Renko outomatiese handel met bewegende gemiddelde op kandelaars grafiek Hierdie outomatiese handel strategie is gebou op pseudo Renko grafiek op gewone kandelaars Een. Oorspronklik gekodeer deur versoek op Franse forums, hierdie strategie gebruik 'n kombinasie van die Renko op grafiek aanwyser hier beskikbaar. www. prorealcode / prorealtime-aanwysers / Renko-bokse-on-prys-grafiek / en 'n bewegende gemiddelde gebou in die einde van elke Renko baksteen. Die strategie bestaan ​​uit 'n eenvoudige kruis oor die Renko naby en die bewegende gemiddelde. Hierdie kode lyk om goed te werk op DAX op 'n 15 minute tydperk. Ek weet Renko hoef te gaan met die tyd, maar my eenvoudige toets toon dat toestande wat net een keer getoets per maat gee goeie resultate op hierdie tyd. Ek hoef nie toets veel op enige ander instrument of ander tydperk though. Maar dit sou beslis winsgewend met enige ander mense, want daar is net 2 parameters te stel nie. die baksteen grootte (20 punte verstek grootte) en die bewegende gemiddelde tydperk (20 periodes by verstek), wat stil algemeen en mag nie so kurwe toegerus .. Toets gemaak met 1 punt versprei. Geen inligting op hierdie webtuiste is beleggingsadvies of 'n uitnodiging om 'n finansiële instrument te koop of te verkoop. Vorige prestasie is nie 'n aanduiding van toekomstige resultate. Trading kan blootstel jy risiko van verlies groter as jou deposito en is slegs geskik vir ervare beleggers wat voldoende finansiële middele om sodanige risiko dra. ProRealTime ITF lêers en ander aanhangsels: Nuwe PRC is ook nou op YouTube, inteken op ons kanaal vir eksklusiewe inhoud en tutoriale Nice Kode. Ek was net op soek na my eie Renko stelsel te maak, want ek dink Renko werklik winsgewend op die lang termyn. My handleiding backtests op Renko wys baie winsgewend toetse met aanvaarbare drawdown, maar ek haven8217t toets voldoende data. Ek het my eie handel reëls vir Renko, miskien sal ek my eie kode te plaas as ek dit geskep. Beste groete, dankie. Grafiese voorstellings wat net staatmaak op prys en nie tyd is altyd meer akkurate (Renko, verskeidenheid, merk bars). Ek moedig jou navorsing op hierdie manier Hierdie stelsel is net 'n eenvoudige prys oor bewegende gemiddelde. Die manier wat ek verander die bewegende gemiddelde berekening om nie tyd in ag neem sal aangepas word om enige ander aanwysers, soos Supertrend, RSI en so aan .. beste aandele kurwe in die webwerf. en met verspreiding ingesluit 8230 .. Nicolas. penses tu que les posisies du backtest korrespondent n Celles qui auraient ete prys af reel Ja ek dink dit sal dieselfde wees as in reële tyd handel, is dit nie 'n soort van takeprofit gebruik, stoploss of sleep stop, net stop en omkeer bestellings en handel oop en toe kan nie in dieselfde kers. Die ergste ding in hierdie strategie is dat jy altyd in die mark en jy het om te gaan met oornag fooie wat nie ingesluit is. Verspreiding is ook groter in die aand op DAX. Maar hierdie strategie is gemaak op versoek op die forum, ek het dit gesien kan goeie resultate gegee, so hier is dit. DAX was die oop grafiek toe ek hierdie strategie gekodeer, enigiemand kan dit toets met enige ander instrument met verskillende stene grootte en bewegende gemiddelde tydperk, kan dit sekerlik 'n voorsprong op fyn gelykheid gee elders of wees deel van 'n outomatiese handel strategieë portefeulje.

No comments:

Post a Comment