Eksponentiell Bevegelse Gjennomsnittet Implementering
Hvis ytelsen til denne koden er kritisk, kan det være fornuftig å unngå heapallokeringer for Stearinlys. 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 Flytt og sett. Dobbelte eksponentielle flytende gjennomsnitt Forklart Traders har stått på flytteverdier for å fastslå høye sannsynlighet for handelsinngangspunkter og lønnsomme utganger i mange år. Et godt kjent problem med bevegelige gjennomsnitt er imidlertid det alvorlige forsinket som er tilstede i de fleste typer bevegelige gjennomsnitt. Doble eksponensielle glidende gjennomsnitt (DEMA) gir en løsning ved å beregne en raskere gjennomsnittlig metode. Historien om det dobbelte eksponensielle flytende gjennomsnittet I teknisk analyse. begrepet glidende gjennomsnitt refererer til et gjennomsnitt av prisen for et bestemt handelsinstrument over en angitt tidsperiode. For eksempel beregner et 10-dagers glidende gjennomsnitt gjennomsnittsprisen på et bestemt instrument de siste 10 ti dagene, et 200-dagers glidende gjennomsnitt beregner gjennomsnittsprisen for de siste 200 dagene. Hver dag går utslaget tilbake til basisberegninger på det siste X-antallet dager. Et glidende gjennomsnitt vises som en jevn kurvlinje som gir en visuell fremstilling av den langsiktige trenden til et instrument. Raskere bevegelige gjennomsnitt, med kortere tilbaketrukne perioder, er skarpere langsommere bevegelige gjennomsnitt, med lengre kollapsperioder, er jevnere. Fordi et glidende gjennomsnitt er en bakoverkryssende indikator, går den ned. Det dobbelte eksponentielle glidende gjennomsnittet (DEMA), vist i Figur 1, ble utviklet av Patrick Mulloy i et forsøk på å redusere mengden lagringstid funnet i tradisjonelle bevegelige gjennomsnitt. Det ble først introdusert i februar 1994, Technical Analysis of Stocks amp Commodities magazine i Mulloys artikkel Utjevning av data med raskere bevegelige gjennomsnitt. (For en primer på teknisk analyse, ta en titt på vår tekniske analyseopplæring.) Figur 1: Denne ett minuttdiagrammet for e-mini Russell 2000 futures kontrakt viser to forskjellige dobbelte eksponensielle glidende gjennomsnitt en 55-periode vises i blått, en 21-periode i rosa. Beregning av en DEMA Som Mulloy forklarer i sin opprinnelige artikkel, er DEMA ikke bare en dobbel EMA med to ganger lagringstiden til en enkelt EMA, men er en sammensatt implementering av enkle og doble EMAer som produserer en annen EMA med mindre lag enn noen av originalene to. DEMA er med andre ord ikke bare to EMAer kombinert, eller et glidende gjennomsnitt av et bevegelig gjennomsnitt, men er en beregning av både enkelt - og dobbelt EMA. Nesten alle handelsanalyseplaner har DEMA inkludert som en indikator som kan legges til diagrammer. Derfor kan forhandlere bruke DEMA uten å vite matematikken bak beregningene og uten å skrive eller skrive inn noen kode. Sammenligning av DEMA med tradisjonelle bevegelige gjennomsnittsverdier Flytende gjennomsnitt er en av de mest populære metodene for teknisk analyse. Mange handelsmenn bruker dem til å se trend reverseringer. spesielt i et bevegelige gjennomsnittsovergang, hvor to bevegelige gjennomsnitt av forskjellige lengder er plassert på et diagram. Poeng hvor det bevegelige gjennomsnittet kryss kan bety kjøps - eller salgsmuligheter. DEMA kan hjelpe handelsmenn til å komme tilbake på stedet før det er raskere å svare på endringer i markedsaktiviteten. Figur 2 viser et eksempel på e-mini Russell 2000 futures kontrakt. Denne ett minuttdiagrammet har fire bevegelige gjennomsnitt: 21-DEMA-periode (rosa) 55-DEMA-DEMA (mørkblå) 21-periode MA (lyseblå) 55-periode MA (lysegrønne) Figur 2: Denne et minuttdiagrammet e-mini Russell 2000 futures kontrakt illustrerer raskere responstid for DEMA når den brukes i et crossover. Legg merke til hvordan DEMA-krysset i begge tilfeller vises betydelig raskere enn MA-kryssene. Den første DEMA-krysningen vises kl 12:29, og neste bar åpnes til en pris på 663,20. MA crossover, derimot, danner klokken 12:34 og neste åpningspris er 660,50. I det neste settet av overganger vises DEMA-krysset på 1:33, og neste bar åpnes ved 658. MA, derimot, danner klokken 1:43, med neste åpning ved 662.90. I hvert tilfelle gir DEMA-overgangen en fordel for å komme inn i trenden tidligere enn MA-crossover. (For mer innsikt, les veiledning av Moving Averages.) Handel med en DEMA Ovennevnte gjennomsnittlige crossover-eksempler illustrerer effektiviteten ved å bruke det raskere dobbelte eksponensielle glidende gjennomsnittet. I tillegg til å bruke DEMA som en frittstående indikator eller i et crossover-oppsett, kan DEMA brukes i en rekke indikatorer der logikken er basert på et glidende gjennomsnitt. Tekniske analyseverktøy som Bollinger Bands. Flytende gjennomsnittlig convergencedivergence (MACD) og triple eksponentiell glidende gjennomsnitt (TRIX) er basert på bevegelige gjennomsnittstyper og kan modifiseres for å inkorporere en DEMA i stedet for andre mer tradisjonelle typer bevegelige gjennomsnitt. Bytte av DEMA kan hjelpe handelsfolk til å finne ulike kjøps - og salgsmuligheter som ligger foran de som leveres av MA eller EMA som tradisjonelt brukes i disse indikatorene. Selvfølgelig blir det naturlig å komme inn i en trend snarere enn senere, til en høyere fortjeneste. Figur 2 illustrerer dette prinsippet - hvis vi skulle bruke kryssene som kjøp og salgssignaler. vi ville gå inn i handelen betydelig tidligere når du bruker DEMA-overgangen i motsetning til MA-overgangen. Bottom Line Traders og investorer har lenge brukt flytende gjennomsnitt i markedsanalysen. Flytte gjennomsnitt er et mye brukt teknisk analyse verktøy som gir et middel til raskt å se og tolke langsiktige trenden i et gitt handelsinstrument. Siden bevegelige gjennomsnittsverdier av deres natur er forsinkende indikatorer. Det er nyttig å finjustere det bevegelige gjennomsnittet for å beregne en raskere, mer responsiv indikator. Det dobbelte eksponentielle glidende gjennomsnittet gir forhandlere og investorer et syn på den langsiktige trenden, med den ekstra fordelen av å være et raskere bevegelige gjennomsnitt med mindre lagringstid. (For relatert lesing, ta en titt på Moving Average MACD Combo og Simple Vs. Exponential Moving Averages.) Artikkel 50 er en forhandlings - og oppgjørsklausul i EU-traktaten som skisserer trinnene som skal tas for ethvert land som. Beta er et mål for volatiliteten, eller systematisk risiko, av en sikkerhet eller en portefølje i forhold til markedet som helhet. En type skatt belastet kapitalgevinster pådratt av enkeltpersoner og selskaper. Kapitalgevinst er fortjenesten som en investor. En ordre om å kjøpe en sikkerhet til eller under en spesifisert pris. En kjøpsgrenseordre tillater handelsmenn og investorer å spesifisere. En IRS-regelen (Internal Revenue Service) som tillater straffefri uttak fra en IRA-konto. Regelen krever det. Det første salg av aksjer av et privat selskap til publikum. IPOer utstedes ofte av mindre, yngre selskaper som søker. Jeg har i hovedsak en rekke verdier som dette: Ovennevnte array er forenklet, jeg samler 1 verdi per millisekund i min virkelige kode og jeg må behandle utdataene på en algoritme 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 enkelt, da du bare trenger å huske en gammel verdi, ikke noe komplisert 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 sluttdelene av dataene, siden du klart ikke kan gjennomsnittlig 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. Jeg utvikler en liten handelsrobot som en øvelse. Han mottar aksjekurser dag etter dag (representert som iterasjoner). Heres, hva min handelsklasse ser ut: Som du ser fra mine to siste attributter, ønsker jeg å implementere et eksponentielt flytende gjennomsnitt som en del av en trendendringsalgoritme. Men jeg tror jeg forstod ikke hvordan jeg skal implementere det her, min calcEMA-funksjon som bare beregner EMA: Men når lagerverdiene mine (passert i en fil) er slik: For å sikre at min EMA er fornuftig og vel. det gjør ikke Hvor gikk jeg galt på operasjonen I tillegg, hvilken verdi skal jeg gi lastEMA hvis det er første gang jeg kaller calcEMA Operasjonen er feil, som du la merke til. Ansvarsfraskrivelse Jeg har denne algoritmen fra wikipedia. og som sådan kan ikke være nøyaktig. Her (side 3) kan være en bedre, men jeg kan ikke dømme, jeg har aldri brukt disse algoritmer og så har ingen anelse om hva jeg snakker om :) c (EMA) y (EMA) a (c (pris) - y )) c (EMA) er nåværende EMA y (EMA) er tidligere EMA a er noen tilfeldig verdi mellom 0 og 1 c (pris) er nåværende pris Men du gjorde nesten det samme: c (EMA) y (EMA) b) y (EMA) Jeg vet ikke hvorfor du gjorde 2 daysInTrading 1. men dette vil ikke alltid være en verdi mellom 0 og 1 (faktisk kan det til og med være mesteparten av tiden 0, fordi de er alle intergers ). Du legger en parentes på feil sted (etter b og ikke etter y (EMA)). Så vil operasjonen nå se slik ut: lastEMA 0.5 (currentStock - lastEMA) For den første sistEMA. ifølge Wikipedia: S 1 er udefinert. S 1 kan initialiseres på en rekke forskjellige måter, oftest ved å sette S 11 Første element i listen, selv om andre teknikker eksisterer, for eksempel å sette S 1 til et gjennomsnitt av de første 4 eller 5 observasjonene. Betydningen av S 1 initialiseringseffekten på det resulterende glidende gjennomsnittet avhenger av mindre verdier gjør valget av S 1 relativt viktigere enn større verdier, siden en høyere rabatterer eldre observasjoner raskere. besvart 18. mai kl. 13:30
Comments
Post a Comment