Wednesday, October 19, 2016

Bewegende gemiddelde byvoorbeeld in c

Bewegende gemiddelde Hierdie voorbeeld leer jy hoe om die bewegende gemiddelde van 'n tydreeks in Excel te bereken. 'N bewegende avearge gebruik te stryk onreëlmatighede (pieke en dale) om maklik tendense herken. 1. In die eerste plek kan 'n blik op ons tyd reeks. 2. Klik op die blad Data, kliek Data-analise. Nota: cant vind die Data-analise knoppie Klik hier om die analise ToolPak add-in te laai. 3. Kies bewegende gemiddelde en klik op OK. 4. Klik op die insette Range boks en kies die reeks B2: M2. 5. Klik op die boks interval en tik 6. 6. Klik in die uitset Range boks en kies sel B3. 8. Teken 'n grafiek van hierdie waardes. Verduideliking: omdat ons die interval stel om 6, die bewegende gemiddelde is die gemiddeld van die vorige 5 datapunte en die huidige data punt. As gevolg hiervan, is pieke en dale stryk uit. Die grafiek toon 'n toenemende tendens. Excel kan nie bereken die bewegende gemiddelde vir die eerste 5 datapunte, want daar is nie genoeg vorige datapunte. 9. Herhaal stappe 2 tot 8 vir interval 2 en interval 4. Gevolgtrekking: Hoe groter die interval, hoe meer die pieke en dale is glad nie. Hoe kleiner die interval, hoe nader die bewegende gemiddeldes is om die werklike data punte. Hou jy van hierdie gratis webwerf Deel asseblief hierdie bladsy op GoogleTaking n bewegende gemiddelde is 'smoothing proses 'n Alternatiewe manier om die verlede data op te som is om die gemiddelde van opeenvolgende kleiner stelle nommers van vorige data soos volg bereken. Onthou die versameling getalle 9, 8, 9, 12, 9, 12, 11, 7, 13, 9, 11, 10, wat die dollar bedrag van 12 verskaffers lukraak gekies was. Kom ons stel (M), die grootte van die kleiner stel gelyk aan 3. Dan is die gemiddeld van die eerste 3 nommers: (9 8 9) / 3 8,667. Dit staan ​​bekend as glad (dit wil sê een of ander vorm van gemiddelde). Dit glad proses word voortgesit deur die bevordering van 'n tydperk en die berekening van die volgende gemiddelde van drie getalle, die weglating van die eerste getal. Bewegende gemiddelde voorbeeld Die volgende tabel som die proses, wat verwys na die verskuiwing Berekening van gemiddelde. Die algemene uitdrukking vir die bewegende gemiddelde is Mt frac cdots X. Resultate van Moving AverageMoving Gemiddeld - MA afbreek bewegende gemiddelde - MA As SMA voorbeeld, kyk na 'n sekuriteit met die volgende sluitingsdatum pryse meer as 15 dae: Week 1 (5 dae) 20, 22, 24, 25, 23 Week 2 (5 dae ) 26, 28, 26, 29, 27 Week 3 (5 dae) 28, 30, 27, 29, 28 A 10-dag MA sou gemiddeld uit die sluitingsdatum pryse vir die eerste 10 dae as die eerste data punt. Die volgende data punt sal daal die vroegste prys, voeg die prys op dag 11 en neem die gemiddelde, en so aan, soos hieronder getoon. Soos voorheen verduidelik, MA lag huidige prys aksie omdat dit gebaseer is op vorige pryse hoe langer die tydperk vir die MA, hoe groter is die lag. So sal 'n 200-dag MA 'n veel groter mate van lag as 'n 20-dag MA het omdat dit pryse vir die afgelope 200 dae bevat. Die lengte van die MA om te gebruik, hang af van die handel doelwitte, met korter MA gebruik vir 'n kort termyn handel en langer termyn MA meer geskik vir 'n lang termyn beleggers. Die 200-dag MA word wyd gevolg deur beleggers en handelaars, met onderbrekings bo en onder hierdie bewegende gemiddelde beskou as belangrike handel seine wees. MA ook mee belangrik handel seine op hul eie, of wanneer twee gemiddeldes kruis. 'N stygende MA dui daarop dat die sekuriteit is in 'n uptrend. terwyl 'n dalende MA dui daarop dat dit in 'n verslechtering neiging. Net so, is opwaartse momentum bevestig met 'n lomp crossover. wat gebeur wanneer 'n korttermyn-MA kruisies bo 'n langer termyn MA. Afwaartse momentum bevestig met 'n lomp crossover, wat plaasvind wanneer 'n kort termyn MA kruisies onder 'n langer termyn MA. I wil berekening vir aandele prys bewegende gemiddelde ontwikkel. Maar baie komplekse berekeninge het later beplan. My eerste stap om te weet hoe om te bereken bewegende gemiddelde doeltreffend. Ek moet weet hoe om die insette te neem en uitvoer doeltreffend terugkeer. deurdagte insette Datum en prys. consudered uitset Datum, Prys en bewegende gemiddelde. As ek 500 rekords en ek wil Moving gemiddelde te bereken vir 5 dae wat die effient manier in plaas van heen en weer in die skikking van Datum en prys gaan weer asseblief suggereert wat is die beste manier om insette (Array List, Table, verskeidenheid ontvang ens) en terug te keer uitset. Nota: Vandag se MA van 5 dae sal gemiddeld van Laaste 5 Dae insluitend vandag prys. Gister MA sal gemiddeld van laaste 5 dae van gister wees. Ek wil die dae hou buigsaam in plaas van 5 te wees dit kan 9, 14, 20 wees ens Donderdag, April 10, 2008 15:21 As jy eenvoudige berekening moet sonder jou moeite as jy TA-Lib kan gebruik. Maar as jy wil hê dat jou berekening om meer doeltreffend as TA-Lib wees, dan kan jy jou eie tegniese aanwyser skep. TA-Lib is groot, maar die probleem is dat hierdie biblioteek het net statiese metodes. Dit beteken dat wanneer jy dit nodig om SMA verskeidenheid waardes te bereken gebaseer op 500 prys bars, dan sal jy die hele spektrum van bars stuur en dit sal n verskeidenheid van SMA waardes terugkeer. Maar as jy 'n nuwe 501-ste waarde ontvang dan moet jy weer stuur die hele reeks en TA-Lib sal weer bereken en terugkeer SMA verskeidenheid van waardes. Nou dink jy so aanwyser op werklike prys voer nodig het, en vir elke prysverandering jy nuwe aanwyser waarde nodig het. As jy een het aanwyser is nie 'n groot probleem, maar as jy honderde aanwysers werk, kan dit 'n prestasie probleem wees. Ek was in so 'n situasie en begin met die ontwikkeling realtime aanwysers wat doeltreffende is en om addisionele berekeninge vir nuwe prys bar of slegs veranderde prys bar. Unfortunatelly ek nooit SMA aanwyser wat nodig is vir my handel stelsels, maar ek het so vir EMO, WMA, AD, en ander. Een so 'n aanwyser nC gepubliseer op my blog en jy kan sien van daar af wat is die basiese struktuur van my realtime aanwyser klas. Ek hoop jy sal klein veranderinge moet implementeer SMA aanwyser, want een van die eenvoudigste een. Die logika is eenvoudig. Om SMA bereken alles wat jy nodig het is 'n laaste prys waardes. So klas geval sal versameling van pryse, wat sal slaan hou net verlede N aantal pryse as SMA gedefinieer (in jou geval 5) het. So wanneer jy 'n nuwe bar, jy sal oudste een verwyder en voeg nuwe een en skep berekening. Donderdag, 10 April, 2008 16:04 Alle antwoorde Daar is 'n biblioteek genoem TA-Lib dat alles wat vir jou doen en dit is open source. Dit het sowat 50 aanwysers ek dink. Weve gebruik dit in produksie-omgewing en dit is baie effektief en realible. Jy kan dit gebruik in C, Java, C, ens As jy eenvoudige berekening moet sonder jou moeite as wat jy TA-Lib kan gebruik. Maar as jy wil hê dat jou berekening om meer doeltreffend as TA-Lib wees, dan kan jy jou eie tegniese aanwyser skep. TA-Lib is groot, maar die probleem is dat hierdie biblioteek het net statiese metodes. Dit beteken dat wanneer jy dit nodig om SMA verskeidenheid waardes te bereken gebaseer op 500 prys bars, dan sal jy die hele spektrum van bars stuur en dit sal n verskeidenheid van SMA waardes terugkeer. Maar as jy 'n nuwe 501-ste waarde ontvang dan moet jy weer stuur die hele reeks en TA-Lib sal weer bereken en terugkeer SMA verskeidenheid van waardes. Nou dink jy so aanwyser op werklike prys voer nodig het, en vir elke prysverandering jy nuwe aanwyser waarde nodig het. As jy een het aanwyser is nie 'n groot probleem, maar as jy honderde aanwysers werk, kan dit 'n prestasie probleem wees. Ek was in so 'n situasie en begin met die ontwikkeling realtime aanwysers wat doeltreffende is en om addisionele berekeninge vir nuwe prys bar of slegs veranderde prys bar. Unfortunatelly ek nooit SMA aanwyser wat nodig is vir my handel stelsels, maar ek het so vir EMO, WMA, AD, en ander. Een so 'n aanwyser nC gepubliseer op my blog en jy kan sien van daar af wat is die basiese struktuur van my realtime aanwyser klas. Ek hoop jy sal klein veranderinge moet implementeer SMA aanwyser, want een van die eenvoudigste een. Die logika is eenvoudig. Om SMA bereken alles wat jy nodig het is 'n laaste prys waardes. So klas geval sal versameling van pryse, wat sal slaan hou net verlede N aantal pryse as SMA gedefinieer (in jou geval 5) het. So wanneer jy 'n nuwe bar, jy sal oudste een verwyder en voeg nuwe een en skep berekening. Donderdag, 10 April, 2008 16:04 Ek sou die bewegende gemiddelde in die databasis bereken deur 'n gestoor proses of in 'n kubus. Het jy al gekyk na Analysis Services, dit het die vermoë om bewegende gemiddeldes te bereken. Donderdag, 10 April, 2008 04:05 Ja. TA-LIB is goed, maar kan nie geskik wees vir my. Toe ek nuwe waarde of opgedateer waarde toe te voeg vir die geskiedenis van rekords sal ek die berekening in 'n aparte funksie doen net vir daardie nuwe kwotasie en bêre dit in die databasis. Ek is van plan om die kwotasie te werk elke uur. Ek nodig het om te doen oor 25 tot 30 tegniese aanwysers vir 2200 aandele. Donderdag, 10 April, 2008 17:51 Uitvoering tyd van 'n TA-Lib oproep op 'n verskeidenheid van 10000 elemente duur ongeveer 15 millisekondes (op 'n Intel Core Duo 2.13 Ghz). Dit is die gemiddeld van al die funksies. Onder die vinnigste, SMA neem minder as 2,5 millisekondes. Die stadigste, HTTRENDMODE, neem 450 millisekondes. Met minder elemente is dit vinniger. SMA duur ongeveer 0,22 millisekondes vir 1000 insette elemente. Die spoed gewin is byna lineêre (die oorhoofse van die funksie oproep is weglaatbaar). In die konteks van jou aansoek, TA-Lib is baie onwaarskynlik dat jou bottelnek vir spoed prestasie wees. Ook het ek oor die algemeen nie so quotlast nquot oplossing beveel. Lees hieronder vir meer inligting. In die eerste plek 'n regstelling te Boban. s verklaring Alle funksies in TA-Lib kan ook 'n enkele laaste waarde te bereken deur die gebruik van 'n minimum van quotlast nquot elemente. Jy kan 'n verskeidenheid van grootte 10000 het, het data inisialiseer net vir die eerste 500 elemente, voeg 'n element en noem TA-Lib om die SMA bereken slegs vir die nuwe element. TA-Lib sal agtertoe nie meer as wat nodig is kyk (as SMA van 5, dan TA-Lib sal 'n enkele SMA met behulp van die afgelope 5 waardes te bereken). Dit word moontlik gemaak met die parameter startIdx en endIdx. Jy kan spesifiseer 'n reeks te bereken, of 'n enkele waarde. In hierdie scenario sal jy startIdx endIdx 500 maak om die 501 element te bereken. Hoekom is so quotlast nquot oplossing potensieel gevaarlik vir 'n paar Ongeag kies Boban. s oplossing of TA-Lib van mening dat die gebruik van 'n klein beperkte aantal afgelope data gewoond goed te werk met die meeste TA funksies. Met SMA, is dit duidelik dat jy hoef net n element om 'n gemiddelde oor N element te bereken. Dit is nie so eenvoudig met EMO (en baie ander TA funksies). Die algo dikwels afhang van die vorige waarde aan die nuwe waarde te bereken. Die funksie is rekursiewe. Dit beteken dat al die afgelope waardes het 'n invloed op toekomstige waardes. As jy besluit om jou algo quotlimitquot om slegs 'n klein hoeveelheid van die afgelope N waarde gebruik, sal jy nie dieselfde resultaat as iemand wat oor 'n groot aantal van die verlede waardes bereken kry. Die oplossing is 'n kompromie tussen spoed en akkuraatheid. Ek het al dikwels bespreek dit in die konteks van TA-Lib (Ek noem dit die quotunstable periodquot in die dokumentasie en forum). Om dit eenvoudig te hou, my algemene Aanbeveling is as jy die verskil tussen 'n algo cant maak met 'n eindige impulsrespons (FIR) van 'n algo met 'n oneindige impulsrespons (IIR), jy sal veiliger wees om te bereken oor al die inligting wat jy het beskikbaar. TA-Lib spesifiseer in die kode wat van sy werksaamhede het 'n onstabiele tydperk (IIR). Geredigeer deur mfortier Vrydag, 15 Augustus, 2008 04:25 korrekte Engelse sin Vrydag, 15 Augustus, 2008 04:20 AMI weet dit is haalbaar met hupstoot volgens: Maar ek wil graag om te verhoed dat die gebruik van hupstoot. Ek het googled en nie gevind nie enige geskikte of leesbare voorbeelde. Eintlik wil ek die bewegende gemiddelde van 'n deurlopende stroom van 'n stroom van drywende punt getalle met behulp van die mees onlangse 1000 getalle as 'n data monster op te spoor. Wat is die maklikste manier om dit wat ek eksperimenteer met die gebruik van 'n omsendbrief skikking, eksponensiële bewegende gemiddelde en 'n meer eenvoudige bewegende gemiddelde en bevind dat die resultate van die omsendbrief array geskik my behoeftes beste te bereik. gevra 12 Junie 12 aan 04:38 As jou behoeftes is eenvoudig, kan jy net probeer om met behulp van 'n eksponensiële bewegende gemiddelde. Eenvoudig gestel, jy maak 'n akkumulator veranderlike, en as jou kode kyk na elke monster, die kode updates die akkumulator met die nuwe waarde. Jy kies 'n konstante alfa wat tussen 0 en 1, en bereken die volgende: Jy hoef net 'n waarde van alfa vind waar die effek van 'n gegewe voorbeeld net duur vir ongeveer 1000 monsters. Hmm, Ek is nie eintlik seker dit is geskik vir jou, noudat Ive het dit hier. Die probleem is dat 1000 is 'n mooi lang venster vir 'n eksponensiële bewegende gemiddelde Ek is nie seker daar is 'n alfa dat die gemiddelde van die afgelope 1000 getalle sou versprei, sonder onderloop in die drywende punt berekening. Maar as jy 'n kleiner gemiddelde, wou soos 30 nommers of so, dit is 'n baie maklike en vinnige manier om dit te doen. antwoord 12 Junie 12 by 04:44 1 op jou post. Die eksponensiële bewegende gemiddelde kan nie toelaat dat die alfa tot wisselvallig wees. So dit kan dit gebruik word om tyd basis gemiddeldes bereken (bv grepe per sekonde). As die tyd sedert die laaste akkumulator update is meer as 1 sekonde, jy laat Alpha wees 1.0. Anders, kan jy laat Alpha wees (usecs sedert verlede update / 1000000). â € jxh 12 Junie 12 aan 06:21 Eintlik wil ek die bewegende gemiddelde van 'n deurlopende stroom van 'n stroom van drywende punt getalle met behulp van die mees onlangse 1000 getalle as 'n data monster op te spoor. Let daarop dat die onderstaande updates die totale soos elemente soos bygevoeg / vervang, vermy duur O (N) traversal om die som te bereken - wat nodig is vir die gemiddelde - op aanvraag. Totaal gemaak 'n ander parameter van T te ondersteun bv met behulp van 'n lang lang wanneer altesaam 1000 lank s, 'n int vir char s, of 'n dubbel totale float s. Dit is 'n bietjie gebrekkig deurdat numsamples kon verby INTMAX - as jy omgee wat jy kan gebruik om 'n unsigned long lank. of gebruik 'n ekstra Bool data lid aan te teken wanneer die houer eerste gevul terwyl fietsry numsamples rondom die skikking (beste herdoop dan iets onskuldig soos POS). antwoord 12 Junie 12 aan 05:19 aanvaar word dat quotvoid operateur (T monster) quot is eintlik quotvoid operatorltlt (T monster) quot. â € oPless 8 Junie 14 by 11:52 oPless ahhh. goed raakgesien. eintlik het ek bedoel dat dit nietig operateur () (T monster), maar natuurlik jy kan gebruik wat ook al notasie jy graag. Sal los, te danke. â € Tony D 8 Junie 14 by 14:27


No comments:

Post a Comment