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 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: 35Weighted Bewegende Gemiddeldes: Die Basics Oor die jare, het tegnici twee probleme met die eenvoudige bewegende gemiddelde gevind. Die eerste probleem lê in die tyd van die bewegende gemiddelde (MA). Die meeste tegniese ontleders glo dat die prys aksie. die opening of sluiting voorraad prys, is nie genoeg om op te hang vir goed voorspel koop of te verkoop seine van die MA crossover aksie. Om hierdie probleem op te los, het ontleders nou meer gewig toeken aan die mees onlangse prys data deur gebruik te maak van die eksponensieel stryk bewegende gemiddelde (EMA). (Meer inligting in die ondersoek van die eksponensieel geweeg bewegende gemiddelde.) 'N voorbeeld Byvoorbeeld, met behulp van 'n 10-dag MA, sou 'n ontleder die sluitingsprys van die 10de dag te neem en vermeerder hierdie getal deur 10, die negende dag van nege, die agtste van dag tot agt en so aan tot die eerste van die MA. Sodra die totale bepaal, sou die ontleder dan verdeel die aantal deur die byvoeging van die vermenigvuldigers. As jy die vermenigvuldigers van die 10-dag MA voorbeeld te voeg, die getal is 55. Hierdie aanwyser is bekend as die lineêr geweeg bewegende gemiddelde. (Vir verwante leesstof, check Eenvoudige bewegende gemiddeldes Maak Trends uitstaan.) Baie tegnici is ferm gelowiges in die eksponensieel stryk bewegende gemiddelde (EMA). Hierdie aanwyser is verduidelik in so baie verskillende maniere waarop dit verwar studente en beleggers sowel. Miskien is die beste verduideliking kom van John J. Murphy tegniese ontleding van die finansiële markte, (uitgegee deur die New York Instituut van Finansies, 1999): Die eksponensieel stryk bewegende gemiddelde adresse beide van die probleme wat verband hou met die eenvoudige bewegende gemiddelde. Eerstens, die eksponensieel stryk gemiddelde ken 'n groter gewig aan die meer onlangse data. Daarom is dit 'n geweegde bewegende gemiddelde. Maar terwyl dit ken mindere belang vir verlede prys data, beteken dit sluit in die berekening al die data in die lewe van die instrument. Daarbenewens het die gebruiker in staat is om die gewig te pas by mindere of meerdere gewig te gee aan die mees onlangse dae prys, wat by 'n persentasie van die vorige dae waarde. Die som van beide persentasie waardes voeg tot 100. Byvoorbeeld, die laaste dae die prys kan 'n gewig van 10 (0,10), wat by die vorige dae gewig van 90 (0,90) opgedra. Dit gee die laaste dag 10 van die totale gewig. Dit sou die ekwivalent van 'n 20-dag gemiddeld deur die laaste dae die prys 'n kleiner waarde van 5 (0,05) wees. Figuur 1: eksponensieel stryk bewegende gemiddelde Bogenoemde grafiek toon die Nasdaq saamgestelde indeks van die eerste week in Augustus 2000 tot 1 Junie 2001 As jy duidelik kan sien, die EMO, wat in hierdie geval is die gebruik van die sluitingsprys data oor 'n tydperk van nege dae, het definitiewe verkoop seine op die 8 September (gekenmerk deur 'n swart afpyltjie). Dit was die dag toe die indeks het onder die vlak 4000. Die tweede swart pyl toon 'n ander af been wat tegnici eintlik verwag het nie. Die Nasdaq kon genoeg volume en belangstelling van die kleinhandel beleggers na die 3000 merk breek nie genereer. Dit dan duif weer af na onder uit by 1619,58 op April 4. Die uptrend van 12 April is gekenmerk deur 'n pyl. Hier is die indeks gesluit 1,961.46, en tegnici begin institusionele fondsbestuurders begin om af te haal 'n paar winskopies soos Cisco, Microsoft en 'n paar van die energie-verwante kwessies te sien. (Lees ons verwante artikels: Moving Gemiddelde Koeverte:. Verfyning 'n gewilde Trading Tool en bewegende gemiddelde Bounce) 'n Persoon wat handel dryf afgeleides, kommoditeite, effekte, aandele of geldeenhede met 'n hoër-as-gemiddelde risiko in ruil vir. quotHINTquot is 'n akroniem wat staan vir vir quothigh inkomste nie taxes. quot Dit is van toepassing op 'n hoë-verdieners wat verhoed dat die betaling federale inkomste. 'N Mark outeur wat koop en verkoop baie kort termyn korporatiewe effekte genoem kommersiële papier. 'N papier handelaar is tipies. Die onbeperkte koop en verkoop van goedere en dienste tussen lande sonder die oplegging van beperkings soos as. Weighted Gemiddeld Wat is Geweegde Gemiddelde Geweegde gemiddelde is 'n gemiddelde bereken deur waardes in 'n datastel meer invloed volgens sommige kenmerk van die data. Dit is 'n gemiddelde waarin elke hoeveelheid wat gemiddeld 'n gewig toegeken, en hierdie gewigte bepaal die relatiewe belangrikheid van elke hoeveelheid op die gemiddelde. Gewigte is die ekwivalent van 'dat baie soos items met dieselfde waarde wat betrokke is by die gemiddelde. VIDEO laai die speler. Afbreek van geweegde gemiddelde A geweegde gemiddelde word meestal bereken ten opsigte van die frekwensie van die waardes in 'n datastel. 'N Geweegde gemiddelde kan bereken word op verskillende maniere, maar indien sekere waardes in 'n datastel is gegee meer belang vir ander doeleindes as die frekwensie van voorkoms redes. Berekening van geweegde gemiddelde Beleggers stel dikwels 'n posisie in 'n voorraad oor 'n paar jaar. Aandele pryse verander elke dag, so dit kan moeilik wees om tred te hou van die basis koste op daardie aandele opgehoopte oor 'n tydperk van jare hou. As 'n belegger wil 'n geweegde gemiddelde van die aandeelprys hy betaal vir die aandele te bereken, moet hy die aantal aandele teen elke prys deur daardie prys te vermenigvuldig, voeg die waardes en dan verdeel die totale waarde van die totale aantal aandele . Byvoorbeeld, sê 'n belegger verkry 100 aandele van 'n maatskappy in die jaar 1 op 10 en 50 aandele van dieselfde maatskappy in jaar 2 by 40. Ten einde die geweegde gemiddelde van die prys wat betaal word, die belegger vermeerder 100 aandele met 10 vir jaar 1, 50 aandele met 40 vir jaar 2, en voeg dan die resultate op 'n totale waarde van 3000 kry. Die belegger verdeel die totale bedrag vir die aandele bedrag, 3000 in hierdie geval, deur die totale aantal aandele oor beide jare, 150, om die geweegde gemiddelde prys betaal van 20. kry die gemiddelde wisselkoers geweeg ten opsigte van die getal aandele verkry by elke prys en nie net die absolute prys. Voorbeelde van geweegde gemiddelde Geweegde gemiddelde toon in baie gebiede van finansies bykomend tot die koopprys van die aandele, insluitend portefeulje opbrengste, inventaris rekeningkundige en waardasie. Wanneer 'n fonds, wat verskeie sekuriteite hou, is tot 10 op die jaar, wat 10 verteenwoordig 'n geweegde gemiddelde van opbrengste vir die fonds ten opsigte van die waarde van elke posisie in die fonds. Vir inventaris rekeningkunde, die geweegde gemiddelde waarde van voorraad verantwoordelik vir skommelinge in kommoditeitspryse, byvoorbeeld, terwyl LIEU of EIEU metode gee meer waarde aan tyd as waarde. By die beoordeling van maatskappye te onderskei of hulle aandele korrek geprys, beleggers gebruik die geweegde gemiddelde koste van kapitaal (GGKK) om 'n maatskappy se kontantvloei te verdiskonteer. GGKK is geweeg op grond van die markwaarde van skuld en ekwiteit in 'n maatskappy se kapitaal structure. Forecasting seasonals en tendense deur eksponensieel geweeg bewegende gemiddeldes Charles C. Holt Graduate School of Business, Universiteit van Texas in Austin, Austin, TX, USA Available online 28 Januarie 2004 Abstract die papier bied 'n sistematiese ontwikkeling van die voorspelling uitdrukkings vir eksponensiële geweegde bewegende gemiddeldes. Metodes vir die reeks met geen tendens, of toevoeging of vermenigvuldiging tendens word ondersoek. Net so, die metodes te dek nie-seisoenale en seisoenale reeks met toevoeging of vermenigvuldiging fout strukture. Die papier is 'n herdruk weergawe van die verslag 1957 aan die Kantoor van Naval Navorsing (ONR 52) en word hier gepubliseer om groter toeganklikheid bied. Sleutelwoorde Eksponensiële glad Vooruitskatting Plaaslike seasonals Plaaslike tendense Vitae Biografie: Charles C. HOLT is professor in Management emeritus aan die Graduate School of Business, Universiteit van Texas in Austin. Sy huidige navorsing is op kwantitatiewe besluit metodes, besluitsteunstelsels, en finansiële vooruitskatting. Voorheen het hy navorsing en onderrig gedoen word by M. I.T. Carnegie Mellon Universiteit, die London School of Economics, die Universiteit van Wisconsin en die Urban Institute. Hy is reeds aktief in rekenaartoepassings sedert 1947, en het navorsing oor outomatiese beheer gedoen, die simulasie van ekonomiese stelsels, skedulering produksie, indiensname en voorrade, en die dinamika van inflasie en werkloosheid. Kopiereg 2004 Uitgegee deur Elsevier BV Met verwysing na artikels () Gemiddeldes / Eenvoudige bewegende gemiddelde Gemiddeldes / Eenvoudige bewegende gemiddelde U word aangemoedig om hierdie taak op te los volgens die taakbeskrywing, die gebruik van enige taal wat jy kan weet. Berekening van die eenvoudige bewegende gemiddelde van 'n reeks van getalle. Skep 'n Stateful funksie / klas / instansie wat 'n tydperk neem en gee 'n roetine dat 'n aantal neem as argument en gee 'n eenvoudige bewegende gemiddelde van sy argumente tot dusver. 'N Eenvoudige bewegende gemiddelde is 'n metode vir die berekening van 'n gemiddelde van 'n stroom van getalle met slegs gemiddeld die afgelope 160 P 160 nommers van die stroom, 160 waar 160 P 160 is bekend as die tydperk. Dit kan toegepas word deur die roeping van 'n parafering roetine met 160 P 160 as argument, 160 I (P), 160 wat dan 'n roetine dat wanneer geroep met individuele, opeenvolgende lede van 'n stroom van getalle, bere die gemiddelde van sou terugkeer (up om), die laaste 160 P 160 van hulle, kan noem dit 160 SMA (). Die woord 160 Stateful 160 in die taak beskrywing verwys na die behoefte aan 160 SMA () 160 om sekere inligting tussen oproepe onthou om dit: 160 Die tydperk, 160 P 160 N bestel houer van ten minste die laaste 160 P 160 nommers uit elk van sy individuele oproepe. Stateful 160 beteken ook dat opeenvolgende oproepe na 160 I (), 160 die initializer, 160 moet afsonderlike roetines wat doen 160 nie 160 aandele gered staat sodat hulle kan gebruik word op twee onafhanklike strome van data terugkeer. Pseudo-kode vir die implementering van 160 SMA 160 is: Hierdie weergawe maak gebruik van 'n aanhoudende tou om die mees onlangse p waardes hou. Elke funksie teruggekeer van init-bewegende-gemiddelde het sy toestand in 'n atoom met 'n tou waarde. Dit implementering gebruik 'n omsendbrief lys om die getalle binne die venster op te slaan aan die begin van elke iterasie wyser verwys na die lys sel wat hou die waarde net beweeg by die venster uit en vervang moet word met die net toegevoegde waarde. Met behulp van 'n afsluiting wysig Tans hierdie SMA cant nogc wees omdat dit 'n sluiting op die wal ken. Sommige ontsnapping analise kan die hoop toekenning te verwyder. Met behulp van 'n struct wysig Hierdie weergawe vermy die hoop toekenning van die sluiting behoud van die data in die stapel raamwerk van die hooffunksie. Dieselfde uitset: Om te verhoed dat die drywende punt benaderings hou opstapel en die groei, kan die kode 'n periodieke som uit te voer op die hele ronde tou skikking. Dit implementering produseer twee (funksie) voorwerpe deel staat. Dit is idiomatiese in E te skei insette van uitset (lees van skryf), eerder as om dit te kombineer in een voorwerp. Die struktuur is dieselfde as die implementering van Standard DeviationE. Die onderstaande elikser program genereer 'n anonieme funksie met 'n ingeboude tydperk p, wat gebruik word as die tydperk van die eenvoudige bewegende gemiddelde. Die aanloop funksie lees numeriese insette en gee dit aan die nuutgeskepte anonieme funksie, en dan inspekteer die resultaat te STDOUT. Die uitset word hieronder getoon, met die gemiddelde, gevolg deur die gegroepeer insette, wat die basis vorm van elke bewegende gemiddelde. Erlang het sluitings, maar onveranderlike veranderlikes. 'N Oplossing is dan om prosesse en 'n eenvoudige boodskap verby gebaseer API te gebruik. Matrix tale roetines om die sweef avarages vir 'n gegewe volgorde van items bereken. Dit is minder doeltreffend te loop as in die volgende opdragte. Voortdurend gevra vir 'n inset ek. wat by die einde van 'n lys T1. T1 kan gevind word deur te druk 2ND / 1, en gemiddelde kan gevind word in Lys / OPS druk op die program te beëindig. Funksie wat 'n lys met die gemiddeld data van die verskaf argument program wat 'n eenvoudige waarde terug by elke aanroeping terug: lys is die lys word gemiddeld: p is die tydperk: 5 opbrengste die gemiddeld lys: Voorbeeld 2: Die gebruik van die program movinav2 (i , 5) - Inisialiseer bewegende gemiddelde berekening, en definieer tydperk van 5 movinav2 (3, x): x - nuwe data in die lys (waarde 3), en gevolg sal word gestoor op veranderlike x, en vertoon movinav2 (4 x) : x - nuwe data (waarde 4), en die nuwe gevolg sal gestoor word op veranderlike x, en vertoon (43) / 2. Beskrywing van die funksie movinavg: veranderlike r - is die gevolg (die gemiddeld lys) wat veranderlike sal teruggestuur word ek - is die indeks veranderlike, en dit dui op die einde van die sub-lys die lys word gemiddeld. veranderlike Z - 'n helper veranderlike Die funksie gebruik wisselende ek om vas te stel watter waardes van die lys sal in die volgende gemiddelde berekening in ag geneem word. By elke iterasie, veranderlike i dui op die laaste waarde in die lys wat gebruik sal word in die gemiddelde berekening. So ons moet net om uit te vind wat die eerste waarde in die lys sal wees. Gewoonlik goed moet p elemente oorweeg, sodat die eerste element sal die een geïndekseer deur (i-P1) te wees. Maar op die eerste iterasies wat berekening gewoonlik negatief sal wees, sodat die volgende vergelyking negatiewe indekse sal vermy: max (i-p1,1) of, reël die vergelyking, Max (i-P, 0) 1. of, reël die vergelyking, (i - (Max (IP, 0) 1) 1), en dan - maar die nommer van elemente op die eerste iterasies sal ook kleiner wees, sal die korrekte waarde (begin indeks 1 einde indeks) wees , (i-Max (IP, 0)). Veranderlike Z hou die algemene waarde (maksimum (IP), 0) sodat die beginindex sal wees (Z1) en die numberofelements sal wees (iz) die middel (lys, Z1, iz) sal die lys van waarde wat sal gemiddeld som terugkeer ( .) sal hulle som som (.) / (iz) ri sal hulle gemiddeld en stoor die resultaat in die toepaslike plek in die lys gevolg behulp van 'n sluiting en die skep van 'n funksie
No comments:
Post a Comment