Sunday 8 October 2017

Eksponentiell Bevegelse Gjennomsnittet C # Koden Punkt


Jeg har i hovedsak en rekke verdier som dette: Ovennevnte array er forenklet, jeg samler 1 verdi per millisekund i min ekte kode og jeg må behandle utdataene på en algoritme som jeg skrev for å finne nærmeste topp før et tidspunkt. Min logikk feiler fordi i mitt eksempel over, er 0.36 den virkelige toppen, men min algoritme vil se bakover og se det aller siste nummeret 0,25 som toppen, da det er en reduksjon til 0,24 før den. Målet er å ta disse verdiene og bruke en algoritme til dem som vil glatte dem ut litt, slik at jeg har mer lineære verdier. (dvs.: Jeg synes at resultatene mine skal være svingete, ikke sjokkerende) Jeg har blitt fortalt å bruke et eksponentielt glidende gjennomsnittsfilter til mine verdier. Hvordan kan jeg gjøre dette? Det er veldig vanskelig for meg å lese matematiske ligninger, jeg har mye bedre med kode. Hvordan behandler jeg verdier i mitt utvalg, og bruker en eksponentiell glidende gjennomsnittlig beregning til selv dem ut spurt 8. februar kl 20:27 For å beregne et eksponentielt glidende gjennomsnitt. du trenger å holde noen stat rundt og du trenger en tuning parameter. Dette krever en liten klasse (forutsatt at du bruker Java 5 eller nyere): Instantiate med decay-parameteren du vil ha (kanskje ta tuning skal være mellom 0 og 1) og bruk deretter gjennomsnittlig () for å filtrere. Når du leser en side om matematisk tilbakevending, trenger du bare å vite når du gjør det til kode, at matematikere liker å skrive indekser i arrays og sekvenser med abonnementer. (De har også et par andre notater, noe som ikke hjelper.) EMA er imidlertid ganske enkel, da du bare trenger å huske en gammel verdi, ingen kompliserte tilstandsarrayer kreves. svarte 8. februar kl 12:42 TKKocheran: Ganske mye. Det er ikke bra når ting kan være enkle (Hvis du starter med en ny sekvens, får du en ny gjennomsnittlig.) Vær oppmerksom på at de første betingelsene i gjennomsnittssekvensen 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 avvergeren og eksperimentere uten å forstyrre resten av programmet for mye. ndash Donal Fellows 9 Feb 12 kl 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 (det går alltid opp eller går alltid ned). Med mindre du gjennomsnittlig ALLE dataene dine, er datapunktene dine --- som du presenterer dem --- ikke-lineære. Hvis du virkelig vil finne den maksimale verdien mellom to poeng i tid, skar du matrisen din fra tmin til tmax og finn maksimalt for den subarrayen. 2) Nå er begrepet bevegelige gjennomsnitt veldig enkle: forestill deg 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 første nummer er gjennomsnittet på 1,5 og 1,4 (andre og første tall) den andre (nye listen) er gjennomsnittet på 1,4 og 1,5 (tredje og andre gamle liste) den tredje (nye listen) gjennomsnittet på 1,5 og 1,4 (fjerde og tredje), og så videre. Jeg kunne ha gjort det perioden tre eller fire, eller n. Legg merke til hvordan dataene er mye jevnere. En god måte å se glidende gjennomsnitt på jobben er å gå til Google Finance, velg en aksje (prøv Tesla Motors ganske flyktig (TSLA)) og klikk på technicals nederst i diagrammet. Velg Moving Average med en gitt periode, og eksponentiell glidende gjennomsnitt for å sammenligne forskjellene sine. 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 bevegelige gjennomsnitt i stedet for eksponentiell. Så utgangen du får, vil være de siste x-vilkårene delt med x. Ikke testet pseudokode: Vær oppmerksom på at du må håndtere start - og slutten av dataene, siden du klart ikke kan bruke de siste 5 vilkårene når du er på ditt andre datapunkt. Det er også mer effektive måter å beregne dette glidende gjennomsnittet (sum sum - eldste nyeste), men dette er å få konseptet av hva som skjer over. besvart 8. februar kl 20: 41. Eksponensiell flytende gjennomsnitt - EMA BREAKING DOWN Eksponensiell flytende gjennomsnitt - EMA De 12 og 26-dagers EMA 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. Traders som ansetter teknisk analyse, finner glidende gjennomsnitt veldig nyttige og innsiktige når de brukes riktig, men skaper kaos når de brukes feil eller blir feilfortolket. Alle de bevegelige gjennomsnittene som vanligvis brukes i teknisk analyse, er av sin natur sakende indikatorer. Følgelig bør konklusjonene fra å bruke et glidende gjennomsnitt til et bestemt markedskart være å bekrefte et markedskryss eller for å indikere dets styrke. Svært ofte, etter hvert har en glidende gjennomsnittlig indikatorlinje endret seg for å reflektere et betydelig trekk i markedet, og det optimale punktet for markedsinngang har allerede gått. En EMA tjener til å lette dette dilemmaet til en viss grad. Fordi EMA-beregningen plasserer 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. Tolke EMA Som alle bevegelige gjennomsnittsindikatorer, er de mye bedre egnet for trending markeder. Når markedet er i en sterk og vedvarende opptrinn. EMA-indikatorlinjen vil også vise en uptrend og vice versa for en nedtrend. En årvåken handelsmann vil ikke bare være oppmerksom på retningen til EMA-linjen, men også forholdet mellom endringshastigheten fra en linje til den neste. For eksempel, da prisvirkningen av en sterk opptrend begynner å flate og reversere, vil EMAs endringshastighet fra en linje til den neste begynne å redusere til den tid som indikatorlinjen flater og endringshastigheten er null. På grunn av den slanke 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, kunne seg selv brukes som en indikator som ytterligere kunne motvirke dilemmaet forårsaket av den bølgende effekten av bevegelige gjennomsnitt. Vanlige bruksområder til EMA-EMAer brukes ofte i forbindelse med andre indikatorer for å bekrefte betydelige markedsbevegelser og å måle deres gyldighet. For handelsmenn som handler intradag og rasktflyttende markeder, er EMA mer anvendelig. Ofte bruker handelsmenn EMAer for å bestemme en handelspartiskhet. For eksempel, hvis en EMA på et daglig diagram viser en sterk oppadgående trend, kan en intraday traderstrategi være å handle kun fra den lange siden på en intradag-kart. Hvis denne kodeutførelsen er kritisk, kan det være fornuftig å unngå bunke tildelinger for stearinlys s. Jeg tror den mest fornuftige måten å gjøre det ville være, gjør Candle til en struktur. Selv om mutable verdi typer er onde. så jeg ville også refactor Candle for å være uforanderlig. Dette innebærer også at implementeringen av newestCandle måtte byttes, sannsynligvis til et par doble felt (eller alternativt en separat, omstillbar og resettbar klasse). Jeg ser ikke noe annet potensielt ytelsesproblem i koden din. Men når det gjelder ytelse, bør du alltid stole på profilering, ikke din (eller noen elses) intuisjon. Også, jeg liker ikke noen navn på metodene dine. Spesifikt: ValueUpdated. Metode navn skal vanligvis være i skjemaet gjør noe, ikke noe skjedde. Så jeg tror et bedre navn ville være UpdateValue. Legg til. Endre. Dette er de to grunnleggende operasjonene til MovingAverage, og jeg tror at disse navnene ikke uttrykker meningen godt. Jeg vil kalle dem noe som MoveAndSetCurrent og SetCurrent. henholdsvis. Selv om en slik navngivning indikerer at de grunnleggende operasjonene snarere skal være Move and SetCurrent.

No comments:

Post a Comment