Skip to main content

Enkel Glidande Medelvärde Algoritm Java


En enkel rörlig genomsnittsimplementering i Java. Vid flera tillfällen vill jag beräkna enkla mätvärden i mina Java-applikationer, till exempel antalet träffar per timme eller fel under en tidsperiod. Det är inte så svårt att beräkna enkla mätvärden extra arbete och jag vill hellre spendera den tiden på problemområdet Jag blev förvånad över att inte hitta några allmänt accepterade lösningar för metrics i Java. Jag hittade Metrics men det verkade lite för komplicerat och inte väl dokumenterat. Allt jag verkligen ville var att beräkna ett glidande medelvärde Jag tänkte på problemet lite mer och bestämde mig för att det inte är ett svårt problem. Här är min lösning. Det här fungerar genom att skapa en rad fönsteruppdateringsfrekvensstorlek, och en tråd anger räkningen till nästa index i matrisen på uppdateringsfrekvensen Räkningen för intervallet är helt enkelt array i - array i 1, vilket är det senaste räkningen minus det äldsta räkningen. För ett 10 minuters intervall är det äldsta räknet i 1 exakt 10 minuter gammalt. För att lägga till en rörelse genomsnittet till vår kod först behöver vi en räknare med AtomicLong. Denna räknare bör ökas baserat på händelserna du är intresserad av att använda, t. ex. POST-förfrågningar om en REST-tjänst. Vi måste tillhandahålla implementeringen med tillgång till räknaren och det är uppnås via GetCount-gränssnittet Här skapar jag ett glidande medelvärde med ett 5 minuters fönster som uppdaterar varje sekund. För att få det aktuella genomsnittet kallar vi bara getAverage-metoden. En viktig implementeringsdetalj är hur arraystorleken bestäms genom att dela fönstret av uppdateringsfrekvensen Så ett stort fönster med en frekvent uppdateringsfrekvens kan förbruka en betydande mängd minne I det här exemplet är arraystorleken rimlig 300. Om vi ​​skapade ett 24-timmars glidande medelvärde med ett intervall på 1 sekund skulle storleken vara 86400 A mer rimlig uppdateringsfrekvens för en 24-timmarsperiod kan vara varje 5 minuters arraystorlek på 288. En annan övervägning att välja fönstret och uppdateringsfrekvensen är att fönstret måste vara di synlig med frekvensen Till exempel är ett 2-minuters fönster med en 6 sekunders uppdateringsfrekvens ok, men en 7 sekunders uppdateringsfrekvens är inte, eftersom den inte är delbar med 120 En olagligArgumentException kastas om fönstermodulens uppdateringsfrekvens inte är noll. Detta genomförandet kräver en tråd per glidande medelvärde som inte är mycket effektiv En bättre lösning skulle vara att dela en tråd över många medeltal Uppdatering Jag har uppdaterat koden för att dela en tråd här. Det är senast ett första tillståndsproblem som vi inte har data ändå för hela fönstret Till exempel om du har ett 5 minuters fönster och bara 15 sekunder data Denna implementering returnerar null tills vi har 5 minuters data Ett annat tillvägagångssätt är att uppskatta genomsnittet. Antag att vi har ett räkning på 10 i 30 sekunder, då vi kan uppskatta genomsnittet som 40 på 2 minuter Men det finns risk för signifikant fel genom att extrapolera ofullständiga data. Om vi ​​hade en brast på 20 träffar på 2 sekunder, beräknar vi 1200 per 2 minuter, whic H är med all sannolikhet långt borta. Jag behöver hålla reda på de senaste 7 dagarna arbetstimmar i en platt filavläsningsledning. Det används för att mäta utmattningsbarhet hos 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 andra 6 för en vecka 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 blindingly uppenbart och enkelt att göra den här uppgiften Tack killar. asked Aug 30 11 på 14 33. Tacka många killar Jag har fått meddelandet använda ett objekt på högre nivå och utnyttja relevanta metoder eller en cirkulär buffert. Bra svar, alla av dem När du tänker på det behöver du alltid tillgång till hela matrisen så du kan bli av med den första insatsen - som jag inte var säker på jag själv lät mig lita på att jag inte hade missat något liner och var i grunden på en rimlig, om inte effektiv och tät 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 till deras sh t. Pete855217 Aug 30 11 på 15 05. Varför initierar du runningTotal till null Vad är dess typ Var det deklareras Det skulle vara bra om du sätter några kodprover som liknar den faktiska Java-koden. När det gäller min kritik skulle följande vara din funktion också 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 runTotal 6 till runTotal 5 men då har du två kopior av samma värde vid position 5 och 6. I din design blandar din funktion. moves objekten i din array. calculates total. prints saker till standard error. returns total. It gör för mycket. My första förslag är att inte flytta saker runt i matrisen istället implementera en cirkulär Ar buffert och använd den istället för arrayen 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 gör att du kan lägga till den och som släpper den äldsta posten när den har sin kapacitet. har datastrukturen implementerar en interator. har en funktion som beräknar totalvärdet på iteratorn, bryr du dig inte om du beräknar summan av en array, lista eller cirkulär bufer. don t call it summa Call it sum , 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 den perfekt Du är tekniskt korrekt, och jag förstår min kod gör för mycket men samtidigt är det bättre att fel på sidan av mindre, tydligare kod än att gå till perfektion Med tanke på mina Java-färdigheter skulle även den pseudokod du beskriver kompilera ha jag blåser min budget på detta men tack för den tydliga beskrivningen Pete855217 31 aug 11 på 2 23.Hmmm det handlar inte om perfektion, utan om etablerade industripraxis som vi har känt de senaste 3 decennierna. Ren kod är alltid en som är partitionerad. Vi har årtionden av bevis som indikerar detta är vägen att gå i det allmänna fallet med avseende på kostnadseffektivitet, defektminskning, förståelse etc., såvida 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, varken overkill eller svårt 31 aug 11 på 15 55. Din uppgift är för enkel och den missnöje du har antagit är verkligen bra för jobbet. , om du vill använda en bättre design, måste du bli av med den numrerade rörelsen, du använder bättre en FIFO-kö och använder dig av push - och popmetoder så att koden inte speglar någon datarörelse, bara de två logiska åtgärderna av Nya data och ta bort data olde r än 7 days. answered aug 30 11 vid 14 49.Simple Moving Average - SMA. BREAKING DOWN Enkelt rörligt medelvärde - SMA. A enkelt glidande medelvärde är anpassningsbart genom att det kan beräknas för ett annat antal tidsperioder, helt enkelt genom att lägga till slutkursen för säkerheten under ett antal tidsperioder och sedan dela denna summa med antalet tidsperioder vilket ger det genomsnittliga priset på säkerheten över tidsperioden. Ett enkelt glidande medel ökar volatiliteten och gör det lättare att se Prisutvecklingen för en säkerhet Om det enkla rörliga genomsnittet pekar upp betyder det att säkerhetspriset ökar Om det pekar ner betyder det att säkerhetspriset sänks. Ju längre tidsramen för glidande medel är, desto smidigare är det enkla glidande medelvärde Ett kortare glidande medelvärde är mer volatilt, men läsningen är närmare källdata. Analytisk betydelse. Medelvärdena är ett viktigt analysverktyg som används för att identifiera nuvarande prisutvecklingar och po Tential för en förändring i en etablerad trend Den enklaste formen av att använda ett enkelt rörligt medelvärde i analys använder det för att snabbt identifiera om en säkerhet är i en uptrend eller downtrend Ett annat populärt, om än något mer komplext analysverktyg, är att jämföra ett par enkla glidande medelvärden med varje täckande olika tidsramar Om ett kortfristigt enkelt glidande medelvärde överstiger ett längre siktvärde förväntas en uppåtgående å andra sidan en långsiktig genomsnittsnivå över ett kortare medelvärde signalerar en nedåtgående rörelse i trend. Popular Trading Patterns. Two populära handelsmönster som använder enkla glidande medelvärden inkluderar dödsövergången och ett gyllene kors Ett dödskors uppstår när 50-dagars enkla glidande medelvärdet korsar 200-dagars glidande medelvärde. Detta betraktas som en baisse signal , att ytterligare förluster finns i lager Guldkorset uppstår när ett kortsiktig glidande medel bryter över ett långsiktigt glidande medelvärde. Förstärkt av höga handelsvolymer kan detta signalera ytterligare vinster finns i butik.

Comments

Popular posts from this blog

Forex Trading Tools Och Citat

Forex Trading Tools. Premier Forex Trading News site. Founded 2008, är den främsta Forex trading nyhetssajt som erbjuder intressant kommentar, åsikt och analys för sanna valutahandelspersonal Få den senaste bryta valutahandelsnyheter och aktuella uppdateringar från aktiva handlare dagliga blogginlägg Presentera avancerad teknisk analys kartläggning tips, Forex analys och valutahandelshandledning handledning Få reda på hur du kan dra nytta av swings på globala valutamarknader och se vår realtid forex nyhetsanalys och reaktioner på centralbank nyheter, ekonomiska indikatorer och världshändelser .2017 - Live Analytics Inc v 0 8 2659. HÖG RISK VARNING Valutahandling har en hög risknivå som kanske inte är lämplig för alla investerare. Hävstångseffekt skapar ytterligare risk - och förlustexponering Innan du bestämmer dig för handel med utländsk valuta, överväga noga din investering Mål, erfarenhetsnivå och risk tolerans Du kan förlora några eller alla dina initiala investeringar inte inve St...

Si Es Confiable Forex

Iforex - Alerta, iforex estafa o verdad. iForex es conocida och todo el mundo como un juego de suerte y azar Sin embargo, många människor som är professionella och professionella och har mycket att uppleva, men det är inte så mycket som du kan göra med dig själv. Aquellos con cerebro y agallas. iForex är en viktig kombination av de främsta Forex-affärsmännen och de gör det möjligt att se till att det är ett internationellt företag, men det är bara möjligt att arbeta med produktionen och hanteringen av löpande problem. Un sinnmero de beneficios y ganancias Det finns många fördelar, iForex är en av de ledande kunderna och de som arbetar med sig själv. Förbättringar är en avgörande faktor, och det finns många fördelar med att lösa fördelarna med att se till att de upplever att de har erfarenhet av att finansiera sina finanser. sistema de financiacin de transacciones, una sala de operaciones, funciones automatizadas en la transparencia de precios de clientes y usuarios de todo el mu ndo. i...

Fmrl Forex Handel

Fmrl Forex Market. Bakom kulisserna väntar bankerna på ett mindre antal finansiella företag som är kända som återförsäljare. De är aktivt involverade i stora mängder av valutahandelshandel. Handel mellan valutahandeln kan vara mycket stor och involverar hundratals miljoner dollar. Fmrl Forex Market Strategier i binära alternativ Handel Hej killar jag hörde av användaren knäckt pivot beräkning som säljs 2000 dollar i en webiste Bra gjort På grund av suveränitetsproblemet när man involverar två valutor, har forex lite om någon tillsynsmyndighet reglerar sina åtgärder. Detta inkluderar alla aspekter Av köp, försäljning och utbyte av valutor till nuvarande eller bestämda priser Valutamarknaden fungerar genom finansiella institutioner och den verkar på flera nivåer. De viktigaste deltagarna på denna marknad är de större internationella bankerna. Finanscentra runt om i världen fungerar som ankare för handel mellan Ett brett utbud av flera typer av köpare och säljare dygnet runt med e Xceptio...