Saturday, 28 October 2017

Glidande medelvärde algoritm java


Jag har i huvudsak en mängd värden som denna. Den ovanstående matrisen är översimplifierad, jag m samlar 1 värde per millisekund i min riktiga kod och jag måste bearbeta utmatningen på en algoritm som jag skrev för att hitta den närmaste toppen före en tidpunkt Logiken misslyckas eftersom i mitt exempel ovan är 0 36 den riktiga toppen, men min algoritm skulle se bakåt och se det sista numret 0 25 som toppen eftersom det sänker till 0 24 före det. Målet är att ta dessa värden Och tillämpa en algoritm för dem som släpper ut dem lite så att jag har mer linjära värden, dvs jag tycker att mina resultat är kurva, inte jaggedy. Jag har fått höra att använda ett exponentiellt glidande medelfilter till mina värden. Hur kan jag gör det här Det är verkligen svårt för mig att läsa matematiska ekvationer. Jag hanterar mycket bättre med kod. Hur bearbetar jag värden i min array och tillämpar en exponentiell glidande genomsnittlig beräkning för att till och med utföra dem. Skal den 8 februari 12 på 20 27. För att beräkna ett exponentiellt glidande medelvärde behöver du hålla någon stat runt och du behöver en inställningsparameter Detta kräver en liten klass om du antar att du använder Java 5 eller senare. Inställning med sönderfallsparametern du vill kan ta tuning ska vara mellan 0 och 1 och använd sedan genomsnittet för att filtrera. När du läser en sida på några matematiska Återkommande, allt du verkligen behöver veta när du gör det till kod är att matematiker gillar att skriva index i arrayer och sekvenser med prenumerationer. De har några andra noteringar också, vilket hjälper inte Emellertid är EMA ganska enkel eftersom du bara behöver att komma ihåg ett gammalt värde, inga komplicerade tillståndsuppställningar krävs. svarade den 8 februari 12 på 20 42. TKKocheran Ganska mycket Det är inte trevligt när saker kan vara enkla Om du börjar med en ny sekvens får du en ny medelvärde Observera att de första villkoren i Den genomsnittliga sekvensen hoppar runt lite på grund av gränseffekter, men du får de med andra glidande medelvärder. En bra fördel är dock att du kan linda den glidande genomsnittliga logiken in i medelvärdet och experimentera utan att störa t han vilar på ditt program för mycket Donal Fellows 9 februari 12 på 0 06. Jag har svårt att förstå dina frågor, men jag kommer att försöka svara ändå.1 Om din algoritm hittat 0 25 istället för 0 36, då är det fel Det är fel eftersom det förutsätter en monotonisk ökning eller minskning som alltid går upp eller alltid går ner, Om du inte vill ha det maximala, om du inte är genomsnittlig ALLA dina data, är dina datapunkter --- som du presenterar dem --- olinjära. värdet mellan två punkter i tid, skära sedan din matris från tmin till tmax och hitta max av den subarray.2 Nu är konceptet för glidande medelvärden mycket enkelt. Föreställ dig att jag har följande lista 1 4, 1 5, 1 4, 1 5, 1 5 Jag kan släpa ut det genom att ta medeltalet av två nummer 1 45, 1 45, 1 45, 1 5 Observera att det första numret är genomsnittet av 1 5 och 1 4 sekund och första siffrorna är den andra nya listan är genomsnittet av 1 4 och 1 5 tredje och andra gamla listan den tredje nya listan i genomsnitt 1 5 och 1 4 fjärde och tredje, och så vidare kunde jag har gjort det period tre eller fyra eller n Observera hur dataen är mycket jämnare Ett bra sätt att se glidande medelvärden på jobbet är att gå till Google Finance, välj ett lager försök Tesla Motors ganska flyktiga TSLA och klicka på technicals längst ner på diagrammet Välj Flyttande medelvärde med en given period och Exponentiell glidande medelvärde för att jämföra deras skillnader. Exponentialt glidande medelvärde är bara en annan utarbetande av detta men viktar de äldre data mindre än de nya data så är det ett sätt att förspänna utjämningen mot baksidan Vänligen läs Wikipedia-posten. Så det här är mer en kommentar än ett svar, men den lilla kommentarrutan var bara för liten lycka till. Om du har problem med matte kan du gå med ett enkelt glidande medel istället för exponentiella Så utgången du får skulle vara de sista x-termerna dividerad med x Otestad pseudokod. Notera att du måste hantera start - och slutdelarna av data eftersom det tydligt är att du inte kan räkna med de senaste 5 termerna när du befinner dig på din andra datapunkt , den Re är effektivare sätt att beräkna denna rörliga genomsnittliga summan summan - äldsta nyaste, men det här är att få konceptet av vad som händer across. answered 8 februari 12 på 20 41. Jag behöver hålla reda på de senaste 7 dagarna arbetstimmar i En platt filavläsningsling Det används för att mäta utmattning av arbetsroster. Rätt nu har jag något som fungerar, men det verkar ganska ordentligt och jag är inte säker på om det finns ett mönster som är mer kortfattat. För närvarande har jag en Java-klass med en statisk matris för att hålla de senaste x-dagarna data, då jag läser igenom filen, hugger jag av det första elementet och flyttar de andra 6 i en veckas rullande summa tillbaka av en. Bearbetningen av denna statiska matris görs i sin egen Metod, dvs. My fråga är detta ett rimligt design-tillvägagångssätt, eller är det något bländande självklart och enkelt att göra den här uppgiften Tack killar. asked 30 Aug 11 kl 14 33. Tack många killar Jag har fått meddelandet att använda ett objekt på högre nivå och Utnyttja relevanta metoder eller en cirkulär buffert Bra svar, alla o F dem När du funderar på det, behöver du alltid tillgång till hela matrisen så att du kan bli av med den första inmatningen - som jag själv inte var säker på, jag är ledsen att jag inte hade missat en liner och var i grunden På ett rimligt, om inte effektivt och sparsamt spår Det här är vad jag älskar om den här webbplatsen av högkvalitativa, relevanta svar från personer som känner deras sh t. Pete855217 Aug 30 11 på 15 05. Varför startar du runningTotal till null Vad är dess typ Där det deklareras skulle det vara bra om du lägger till några kodprover som liknar den faktiska Java-koden. På grund av min kritik skulle följande vara att din funktion gör för mycket. En funktion eller metod ska vara sammanhängande. Mer lämpligt bör de göra en Sak och en sak only. Worse fortfarande, vad händer i din för loop när x 5 Du kopierar runningTotal 6 till runTotal 5 men då har du två kopior av samma värde i position 5 och 6. I din design, din funktion. moves shuffles objekten i din array. calculates the total. prints saker Till standard error. returns total. Det gör för mycket. My första förslaget är att inte flytta saker runt i matrisen istället implementera en cirkulär buffert och använd den istället för matrisen det kommer att förenkla din design mitt andra förslag är att bryta ner Saker i funktioner som är sammanhängande. Har en datastruktur en cirkulär buffert som låter dig lägga till den och den släpper den äldsta posten när den når sin kapacitet. Har datastrukturen implementerat en interator. har en funktion som beräknar totalvärdet på Iterator du inte bryr dig om du beräknar summan av en array, lista eller cirkulär bufer. don t kalla det totalt Ring det summa, vilket är vad du beräknar. Det är vad jag gör. Det är bra info luis, men kom ihåg att den här funktionen är en liten del av klassens funktionalitet, och det skulle vara overkill att lägga till för mycket kod för att göra det perfekt. Du är tekniskt korrekt, och jag förstår min kod gör för mycket, men ibland är det s bättre att fel på si De av mindre, tydligare kod än att gå till perfektion Med tanke på mina Java-färdigheter kan även jag pseudokoden du beskriver kompilera få mig att blåsa min budget på detta, men tack för den tydliga beskrivningen Pete855217 31 aug 11 på 2 23.Hmmm det är inte Om perfektion, men om etablerade industripraxis som vi har känt för de senaste tre decennierna. Ren kod är alltid en som är partitionerad. Vi har årtionden av bevis som visar att det här är sättet att gå i det allmänna fallet när det gäller kostnadseffektivitet, defekt Minskning, förståelse etc. om det inte är kasta bort koden för en engångsartad sak Det är aldrig dyrt att göra detta när man startar någon problemanalys på detta sätt kodning 101, bryter ner problemet och koden följer, inte heller överkill inte svårt 31 aug 11 på 15 55. Din uppgift är för enkel och det som du har antagit är säkert bra för jobbet. Men om du vill använda en bättre design måste du bli av med den där antalet rörelser du bättre använder en FIFO kö och gör God användning av push - och popmetoder så att koden inte speglar någon datarörelse, bara de två logiska åtgärderna för nya data och ta bort data som är äldre än 7 days. answered aug 30 11 vid 14 49. Medelvärde - MA. BREAKING DOWN Moving Average - MA. Som ett SMA-exempel, överväga en säkerhet med följande stängningskurser ö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-dagars 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 tidigare noterat, lagrar MAs nuvarande prisåtgärd eftersom de är baserade på tidigare priser, ju längre tid 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 för de senaste 200 dagarna. MA-rens längd som ska användas beror på handelsmålen, med kortare MA som används för shor Tidsbegränsad handel och långsiktig MAs mer lämpad för långsiktiga investerare 200-dagars MA följs i stor utsträckning av investerare och handlare, med raster över och under detta glidande medel anses vara viktiga handelssignaler. MAs ger också viktiga handelssignaler På egen hand eller när två medelvärden passerar över 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 kortvarig MA Korsar över en längre sikt MA Nedåtgående momentum bekräftas med en bearish crossover, som uppstår när en kortsiktig MA korsar en längre sikt MA.

No comments:

Post a Comment