Jag vet att detta kan uppnås med boost som per. Men jag vill verkligen undvika att använda boost jag har googled och inte hittat några lämpliga eller läsbara exempel. I grund och botten vill jag spåra det rörliga genomsnittet av en pågående ström av en ström av flytande punktnummer Använder de senaste 1000 siffrorna som ett dataprov. Vilket är det enklaste sättet att uppnå detta. Jag experimenterade med att använda ett cirkulärt array, exponentiellt glidande medelvärde och ett enklare glidande medelvärde och fann att resultaten från den cirkulära gruppen passade mina behov bäst. asked jun 12 12 på 4 38. Om dina behov är enkla kan du bara försöka använda ett exponentiellt rörligt medelvärde. Du gör bara en ackumulatorvariabel, och när din kod tittar på varje prov uppdaterar koden ackumulatorn med nytt värde Du väljer en konstant alfa som är mellan 0 och 1 och beräknar detta. Du behöver bara hitta ett värde av alfa där effekten av ett visst prov endast varar för cirka 1000 prov. Hmm, jag är inte säker på att det här är Lämplig för dig, nu t Hat jag har lagt den här Problemet är att 1000 är ett ganska långt fönster för ett exponentiellt rörligt medelvärde. Jag är inte säker på att det finns en alfa som skulle sprida genomsnittet över de senaste 1000 talen utan underflöde i flytpunktsberäkningen. Men om du ville ha ett mindre medelvärde, som 30 nummer eller så, det här är ett mycket enkelt och snabbt sätt att göra det. svarade den 12 juni 12 på 4 44. 1 på ditt inlägg Det exponentiella glidande medlet kan låta alfabetet vara variabelt Så det tillåter det Används för att beräkna tidsbasen medelvärden, t. ex. bytes per sekund Om tiden sedan den senaste ackumulatoruppdateringen är mer än 1 sekund, låter du alpha vara 1 0 Annars kan du låta alfa vara usecs sedan senaste uppdateringen 1000000 jxh jun 12 12 vid 6 21.Basiskt vill jag spåra det rörliga genomsnittet av en pågående ström av en ström med flytande punktnummer med de senaste 1000 siffrorna som ett dataprov. Notera att nedanstående uppdaterar summan som element som tillsatt ersatt, så att kostsamma ON-traverser beräknas Summan - behövs för th e genomsnitt - on demand. Total görs en annan parameter från T för att stödja t. ex. genom att använda en lång lång när totalt 1000 lång s, en int för char s eller en dubbel till total float s. This är lite felaktig i att nummpples kunde gå förbi INTMAX - om du bryr dig att du kan använda en unsigned long long eller använda en extra bool data medlem att spela in när behållaren fylls först medan cykel nummor runt arrayen bäst sedan bytt namn på något oskadd som pos. answered 12 juni 12 på 5 19.an antar att tomrumsoperatören T-provet är faktiskt tomt operatör T-prov oPlats den 8 juni 14 på 11 52. oPless ahhh väl spotted egentligen menade jag att det skulle vara tomt operatör T-prov men självklart kan du använda vilken anteckning du helst vill fixa, tack Tony D Jun 8 14 på 14 27. Det är möjligt att genomföra ett glidande medelvärde i C utan att det behövs ett fönster på prov. Jag har funnit att jag kan optimera lite, genom att välja en fönsterstorlek som motsvarar två till två tillåta bitskiftning istället för att dela men inte behöva en buf Fer skulle vara trevligt Finns det ett sätt att uttrycka ett nytt glidande medelresultat endast som en funktion av det gamla resultatet och det nya provet. Ange ett exempel på glidande medelvärde, över ett fönster med 4 prov att vara. Lägg till nytt prov eA glidande medelburk Implementeras rekursivt men för en exakt beräkning av det rörliga genomsnittsvärdet måste du komma ihåg det äldsta inmatningsexemplet i summan, dvs a i ditt exempel. För ett längd N glidande medelvärde beräknar du. Där yn är utsignalen och xn är ingången Signalen Eq 1 kan skrivas rekursivt som. Därför behöver du alltid komma ihåg provet x nN för att beräkna 2. Som påpekat av Conrad Turner kan du använda ett oändligt långt exponentialfönster istället, vilket gör det möjligt att beräkna endast utgången Från tidigare utdata och nuvarande input. but detta är inte ett vanligt obetydligt glidande medelvärde, men ett exponentiellt vägt glidmedel, där proverna tidigare har en mindre vikt, men åtminstone teoretiskt glömmer du aldrig någonting vikterna jus t bli mindre och mindre för prover långt tidigare. Jag implementerade ett glidande medelvärde utan individuellt objektminne för ett GPS-spårprogram som jag skrev. Jag börjar med 1 prov och dela med 1 för att få nuvarande avg. I lägger sedan till ett exempel och Dela med 2 till den nuvarande avg. This fortsätter tills jag kommer till längden av genomsnittet. Varje gång efteråt lägger jag till i det nya provet, får medelvärdet och tar bort det genomsnittet från summan. Jag är inte en matematiker men det här verkade som ett bra sätt att göra det Jag tänkte att det skulle vända på en riktig matte kille, men det visar sig att det är ett av de accepterade sätten att göra det Och det fungerar bra Kom bara ihåg att ju högre längden desto långsammare är det Följer vad du vill följa Det kan inte ha betydelse för det mesta, men när du följer satelliter, om du är långsam, kan spåret vara långt ifrån den verkliga positionen och det kommer att se dåligt ut. Du kan ha ett mellanrum mellan mitten och de efterföljande punkterna Jag valde en längd på 15 uppdaterad 6 gånger per minut för att få ade quate utjämning och inte komma för långt från den faktiska lätta positionen med de släta spårpunkterna. svarade 16 november 16 vid 23 03.initialisera totalt 0, räkna 0 varje gång vi ser ett nytt värde. Då en inmatningsscannf, lägger man till totalt nyttValue, en inkrement räkna, en dela genomsnittlig totalräkning. Detta skulle vara ett glidande medelvärde över alla inmatningar. För att beräkna genomsnittet över endast de senaste 4 ingångarna, skulle kräva 4 inputvariables, kanske kopiering varje ingång till en äldre ingångsvariabel och sedan beräkna det nya glidande medeltalet som summa av de 4 ingångsvariablerna dividerat med 4 högerskift 2 skulle vara bra om alla ingångar var positiva för att göra den genomsnittliga beräkningen. svarade 3 februari kl. 04 06. Det kommer faktiskt att beräkna det totala genomsnittet och INTE det glidande medeltalet Som räknas blir större påverkan av något nytt insamlingsprov blir försvinnande liten Hilmar 3 feb kl 15 på 13 53. Ditt svar.2017 Stack Exchange, Inc. Moving Average - MA. BREAKING DOWN Moving Average - MA. Som ett SMA-exempel, överväga en säkerhet med Följande c förlora priserna över 15 dagar. Vecka 1 5 dagar 20, 22, 24, 25, 23.Veek 2 5 dagar 26, 28, 26, 29, 27.Veek 3 5 dagar 28, 30, 27, 29, 28.A 10 - dag MA skulle genomsnittliga slutkurserna för de första 10 dagarna som första datapunkt. Nästa datapunkt skulle släppa det tidigaste priset, lägga till priset på dag 11 och ta medeltalet och så vidare som visas nedan. Som noterat tidigare , MAs lagrar nuvarande prisåtgärd eftersom de är baserade på tidigare priser, ju längre tidsperioden för MA, desto större är fördröjningen. Således kommer en 200-dagars MA att ha en mycket större grad av fördröjning än en 20-dagars MA eftersom den innehåller priser Under de senaste 200 dagarna MA: s längd som ska användas beror på handelsmålen, med kortare MAs som används för kortfristig handel och mer långsiktiga marknadsandelar som är mer lämpade för långsiktiga investerare. Den 200-dagars MA följs i stor utsträckning av investerare och handlare, med raster över och under detta glidande medelvärde anses vara viktiga handelssignaler. MAs ger också viktiga handelssignaler på egen hand eller när två genomsnitt s cross over En stigande MA indikerar att säkerheten är i en uptrend medan en minskande MA indikerar att den är i en downtrend På liknande sätt är uppåtgående momentum bekräftat med en haussead crossover som uppstår när en kortsiktig MA passerar över en längre termisk MA Nedåtgående momentum bekräftas med en bearish crossover, som uppstår när en kortsiktig MA passerar under en längre termisk MA.
No comments:
Post a Comment