Wednesday 18 October 2017

Flytte Gjennomsnittet Pseudo Kode


Jeg har i hovedsak en rekke verdier som dette. Ovenstående matrise er oversimplified, jeg samler 1 verdi per millisekund i min ekte kode og jeg må behandle utdataene på en algoritme jeg skrev for å finne nærmeste topp før et tidspunkt logikken feiler fordi i mitt eksempel ovenfor er 0 36 den virkelige toppen, men min algoritme vil se bakover og se det siste tallet 0 25 som toppen, da det er en reduksjon til 0 24 før det. Målet er å ta disse verdiene og bruk en algoritme til dem som vil glatte dem ut litt, slik at jeg har mer lineære verdier, det vil si at resultatene mine skal være svingete, ikke ekgedy. Jeg har blitt fortalt å bruke et eksponentielt glidende gjennomsnittsfilter til mine verdier. Hvordan kan jeg gjør dette Det er veldig vanskelig for meg å lese matematiske ligninger. Jeg behandler mye bedre med kode. Hvordan behandler jeg verdier i mitt array, og bruker en eksponentiell glidende gjennomsnittlig beregning for å utjevne dem ut. Skrevet 8. februar 12 kl 20 27. For å beregne et eksponentielt glidende gjennomsnitt må du holde noen tilstand rundt og du trenger en innstillingsparameter Dette krever en liten klasse forutsatt at du bruker Java 5 eller nyere. Installer med nedbrytingsparameteren du vil ha, må innstille skal være mellom 0 og 1 og bruk deretter gjennomsnitt for å filtrere. Når du leser en side på noen matematiske gjentagelse, alt du virkelig trenger å vite når du setter det i kode er at matematikere liker å skrive indekser i arrays og sekvenser med abonnementer. De har også noen andre notasjoner, men det hjelper ikke. EMA er ganske enkelt som du bare trenger å huske en gammel verdi ingen kompliserte statlige arrays required. answered 8 februar 12 på 20 42. TKKocheran Ganske mye Er det ikke fint når ting kan være enkelt Hvis du starter med en ny sekvens, får du en ny gjennomsnittlig bemerker at de første betingelsene i gjennomsnittlig sekvens vil hoppe rundt litt på grunn av grenseeffekter, men du får de med andre bevegelige gjennomsnitt også. En god fordel er imidlertid at du kan pakke den bevegelige gjennomsnittlige logikken inn i gjennombrukeren og eksperimentere uten å forstyrre t han hviler på programmet for mye Donal Fellows 9. februar 12 på 0 06. Jeg har det vanskelig å forstå dine spørsmål, men jeg vil prøve å svare uansett.1 Hvis algoritmen din fant 0 25 i stedet for 0 36, så er det feil Det er feil fordi det forutsetter en monotonisk økning eller reduksjon som alltid går opp eller alltid går ned, med mindre du gjennomsnittlig ALLE dine data, dine datapunkter --- som du presenterer dem --- er ikke-lineære Hvis du virkelig vil finne maksimum verdi mellom to poeng i tid, så skjær din rekkefølge fra tmin til tmax og finn maksimum for det subarray.2 Nå er begrepet bevegelige gjennomsnitt veldig enkle å forestille at jeg har følgende liste 1 4, 1 5, 1 4, 1 5, 1 5 Jeg kan glatte det ut ved å ta gjennomsnittet av to tall 1 45, 1 45, 1 45, 1 5 Legg merke til at det første tallet er gjennomsnittet av 1 5 og 1 4 sekund og første nummer den andre nye listen er gjennomsnittet av 1 4 og 1 5 tredje og andre gamle liste den tredje nye listen gjennomsnittet 1 5 og 1 4 fjerde og tredje, og så videre kunne jeg har gjort det perioden tre eller fire, eller n Legg merke til hvordan dataene er mye glattere En god måte å se glidende gjennomsnitt på jobben er å gå til Google Finance, velg et lager prøve Tesla Motors ganske flyktige TSLA og klikk på technicals nederst på diagrammet Velg Moving Average med en gitt periode, og eksponentiell glidende gjennomsnitt for å sammenligne forskjellene deres. Eksponentielt glidende gjennomsnitt er bare en annen utbygging av dette, men veier de eldre dataene mindre enn de nye dataene, dette er en måte å forvirre utjevningen mot baksiden Vennligst les Wikipedia-oppføringen. Så dette er mer en kommentar enn et svar, men den lille kommentarboksen var bare for liten Lykke til. Hvis du har problemer med matematikken, kan du gå med et enkelt glidende gjennomsnitt i stedet for eksponentiell. Så utdataene du får vil være de siste x-vilkårene delt med x Ikke-testet pseudokode. Merk at du må håndtere start - og sluttdelene av dataene, siden du tydeligvis ikke kan t gjennomsnitts de siste 5 vilkårene når du er på ditt andre datapunkt. , den re er mer effektive måter å beregne denne glidende gjennomsnittlige sum sum - eldste nyeste, men dette er for å få konseptet om hva som skjer over. answered 8 februar 12 på 20 41. Jeg prøver å beregne det bevegelige gjennomsnittet av et signal Signalet verdi en dobbel er oppdatert i tilfeldige tider Jeg ser etter en effektiv måte å beregne det s tidsvektet gjennomsnitt over et tidsvindu, i sanntid kunne jeg gjøre det selv, men det er mer utfordrende enn jeg trodde. De fleste ressursene Jeg har funnet over internett er å beregne bevegelige gjennomsnitt av periodisk signal, men mine oppdateringer på tilfeldig tid. Noen vet gode ressurser for det. Tricket er følgende Du får oppdateringer i tilfeldige tider via tomt oppdatering int tid, flyteverdi Men du må også spore når en oppdatering faller av tidsvinduet, så du stiller en alarm som kalles på tidspunktet N som fjerner den forrige oppdateringen, fra å bli vurdert igjen i beregningen. Hvis dette skjer i sanntid, kan du be om operasjonen system for å ringe til en metode for å slippe avbruddstidspunktet int tid som skal ringes på tid N. Hvis dette er en simulering, kan du ikke få hjelp fra operativsystemet, og du må gjøre det manuelt. I en simulering vil du ringe metoder med tiden som følger med som et argument som ikke korrelerer med sanntid. En rimelig forutsetning er at anropene er garantert slik at tidsargumentene øker. I dette tilfellet må du opprettholde en sortert liste over alarmtidverdier, og for hver oppdatering og les samtale, kontroller om tidsargumentet er større enn hodet til alarmlisten. Mens det er større, slipper den alarmrelaterte behandlingen av den eldste oppdateringen. Fjern hodet og kontroller igjen til alle alarmer før den angitte tiden behandles. gjør oppdateringssamtalen. Jeg har så langt antatt at det er åpenbart hva du ville gjøre for den faktiske beregningen, men jeg vil utarbeide bare dersom jeg antar at du har en metodeflate leser intid som du bruker til å lese verdiene. Målet er for å gjøre denne anrop så effektiv som mulig Så du beregner ikke det bevegelige gjennomsnittet hver gang lesemetoden kalles. I stedet forkalkulerer du verdien som for den siste oppdateringen eller den siste alarmen, og justerer denne verdien ved hjelp av et par flytende punktoperasjoner til redegjør for tidens gang siden siste oppdatering, dvs. et konstant antall operasjoner, med unntak av kanskje å behandle en liste over stablet alarm. Helt klart er dette klart - dette bør være en ganske enkel algoritme og ganske effektiv. Ytterligere optimalisering av en av de gjenværende problemene er det et stort antall oppdateringer som skjer i tidsvinduet, så er det en lang tid som det ikke finnes leser eller oppdateringer, og deretter kommer en lesing eller oppdatering i dette tilfellet. Ovennevnte algoritme vil være ineffektiv i trinnvis oppdatering av verdi for hver oppdatering som faller av Dette er ikke nødvendig fordi vi bare bryr oss om den siste oppdateringen utover tidsvinduet, så hvis det er en måte å effektivt slippe av alle eldre upda tes, det ville hjelpe. For å gjøre dette kan vi endre algoritmen for å gjøre et binært søk på oppdateringer for å finne den nyeste oppdateringen før tidsvinduet. Hvis det er relativt få oppdateringer som må slettes, kan man trinnvis oppdatere verdien for hver oppdatert oppdatering Men hvis det er mange oppdateringer som må slettes, kan man rekomputere verdien fra grunnen etter å ha slått av de gamle oppdateringene. Vedlegg om inkrementell beregning Jeg bør klargjøre hva jeg mener med inkrementell beregning over i setningen justere denne verdien ved hjelp av et par flytende punktoperasjoner for å regne for tidspassering siden den siste oppdateringen. Initial ikke-inkrementell beregning. Det overlater over relevante oppdateringer i rekkefølge av økende time. movingaverage sum siste oppdaterte timesincelastupdate windowlength. Now hvis akkurat en oppdatering faller utenfor vinduet, men ingen nye oppdateringer ankommer, juster summen som. Legg merke til at det er forhåndsoppdatert som har sin tidsstempel endret til begynnelsen av det siste vinduet begynnelsen. Og hvis akkurat en oppdatering kommer inn i vinduet, men ingen nye oppdateringer faller av, juster summen som. Som det skal være klart, er dette en grov skisse, men forhåpentligvis viser den hvordan du kan opprettholde gjennomsnittet slik at det er O 1 operasjoner per oppdatering på amortisert basis. Men vær oppmerksom på ytterligere optimalisering i forrige avsnitt. Legg også merke til stabilitetsproblemer referert til i et eldre svar, noe som betyr at flytpunktsfeil kan akkumulere over et stort antall inkrementelle operasjoner slik at det er en avvik fra resultatet av den fullstendige beregningen som er vesentlig for applikasjonen. Hvis en tilnærming er OK, og det er en minimal tid mellom prøver, kan du prøve superprøving. Har en matrise som representerer jevnt fordelte tidsintervaller som er kortere enn minimumet, og i hvert tidsrom lagre den siste prøven som ble mottatt. Jo kortere intervallet, jo nærmere gjennomsnittet blir den sanne verdien e Perioden skal ikke være større enn halvparten av minimumet eller det er en sjanse til å mangle en prøve. ansvaret 15. desember kl. 18. 12. Takk for svaret En forbedring som ville være nødvendig for å faktisk cache verdien av det totale gjennomsnittet slik at Vi kan ikke løse hele tiden. Det kan også være et mindre punkt, men det ville ikke være mer effektivt å bruke en dekk eller en liste for å lagre verdien, siden vi antar at oppdateringen kommer i riktig rekkefølge. Innsetting ville være raskere enn i kartet Arthur Des 16 11 på 8 55.Ja, du kan cache verdien av summen Trekke verdiene av prøvene du sletter, legg til verdiene av prøvene du legger inn. Også, ja, et deque par Eksempel, Dato kan være mer effektivt Jeg valgte kartet for lesbarhet og det enkle å påkalle kartet overgående. Som alltid, skriv riktig kode først, og profil og måle trinnvise endringer. Rob Dec 16 11 på 15 00. Merknad, dette er ikke veien å nærme seg. for referanse om hva som er galt med denne tilnærmingen Sjekk kommentarene. OPP DATED - basert på Oli s kommentar ikke sikker på ustabiliteten han snakker om though. Use et sortert kart over ankomsttider mot verdier. Ved ankomst av en verdi legg til ankomsttid til det sorterte kartet sammen med det s verdi og oppdatere flyttingen average. warning dette er pseudo-kode. Det er ikke fullt fleshed ut, men du får ideen. Ting å notere Som jeg sa ovenfor er pseudokoden Du må velge et passende kart Ikke ta parene som du gjennomfører som du vil ugyldiggjøre iteratoren og må starte igjen Se Oli s kommentar nedenfor also. answered Dec 15 11 på 12 22. Dette virker ikke, det tar ikke hensyn til hvilken andel av vinduslengden hver verdi eksisterer. Også denne tilnærmingen av å legge til og deretter subtrahere er bare stabil for heltalltyper, ikke flyter Oliver Charlesworth 15. desember kl. 12 på 12. 29. OliCharlesworth - beklager jeg savnet noen viktige punkter i beskrivelsen dobbelt og tidsvektet Jeg vil oppdatere Takk Dennis 15. desember kl 12.Tidvekten er dere et annet problem Men det er ikke det jeg snakker om, jeg refererte til det faktum at når en ny verdi først kommer inn i tidsvinduet, er bidraget til gjennomsnittsverdien minimal. Dens bidrag fortsetter å øke til en ny verdi går inn i Oliver Charlesworth 15. desember 11 på 12 35. Eksponensiell flytende gjennomsnitt - EMA. BREAKING DOWN Eksponensiell flytende gjennomsnitt - EMA. De 12 og 26-dagers EMAene er de mest populære kortsiktige gjennomsnittene, og de brukes til å skape indikatorer som den bevegelige gjennomsnittlige konvergensdivergensen MACD og prosentvis pris oscillator PPO Generelt brukes 50 og 200-dagers EMAer som signaler for langsiktige trender. Tradere som benytter teknisk analyse, finner glidende gjennomsnitt veldig nyttige og innsiktsfulle når de brukes riktig, men skaper kaos når de brukes feil eller er feiltolket Alle de bevegelige gjennomsnittene som vanligvis brukes i teknisk analyse, er av sin natur sakte indikatorer. Følgelig er konklusjonene trukket fra å anvende et glidende gjennomsnitt til et bestemt marked Diagrammet bør være å bekrefte et markedskryss eller for å indikere dets styrke. Svært ofte, da en glidende gjennomsnittlig indikatorlinje har endret seg for å reflektere et betydelig trekk i markedet, har det optimale punktet for markedsinngang allerede passert. En EMA tjener for å lindre dette dilemmaet til en viss grad Fordi EMA-beregningen legger mer vekt på de nyeste dataene, klemmer prishandlingen litt strammere og reagerer derfor raskere. Dette er ønskelig når en EMA brukes til å utlede et handelsinngangssignal. Interpretering av EMA. Som alle flytende gjennomsnittlige indikatorer, er de mye bedre egnet for trending markeder Når markedet er i en sterk og vedvarende opptrinn, vil EMA-indikatorlinjen også vise en uptrend og vice versa for en nedtreden. En årvåken handelsmann vil ikke bare være oppmerksom på retningen for EMA-linjen, men også forholdet til endringshastigheten fra en linje til den neste. For eksempel, da prisvirkningen av en sterk opptrend begynner å flate og reversere, er EMAs hastighet på cha nge fra en linje til den neste vil begynne å redusere til det tidspunktet som indikatorlinjen flater og endringshastigheten er null. På grunn av den sakte effekten, ved dette punktet eller til og med noen få barer før, bør prishandlingen allerede ha reversert Det følger derfor at observere en konsistent reduksjon i endringshastigheten til EMA, kan seg selv brukes som en indikator som ytterligere kunne motvirke dilemmaet forårsaket av forsinkende effekt av å flytte gjennomsnittlig bruk av EMA. EMA er ofte brukt i forbindelse med andre indikatorer for å bekrefte vesentlige markedsbevegelser og å måle deres gyldighet For handelsmenn som handler i dag og fastflytende markeder, er EMA mer anvendelig. Slike handlere bruker ofte EMAer til å bestemme handelspartnere. For eksempel hvis en EMA på et daglig diagram viser en sterk oppadgående trend, en intraday trader s strategi kan være å handle bare fra den lange siden på en intradag diagram.

No comments:

Post a Comment