Jeg prøver å hente den siste EMA av et stort datasett (15000 verdier). Det er en veldig ressurs-sulten algoritme siden hver verdi avhenger av den forrige. Her er koden min: Hva jeg allerede gjorde: Isoler k så det ikke beregnes 10000 ganger Bare hold den siste beregnede EMAen, og ikke hold dem alle i en array bruk for () i stedet for foreach () data array har ikke nøkler det er en grunnleggende matrise Dette tillot meg å redusere kjøretid fra 2000m til 500md for 15000 verdier. Hva virket ikke: Bruk SplFixedArray (), dette barberte bare 10ms som utfører 1.000.000 verdier. Bruk PHPTrader-utvidelsen. Dette returnerer en matrise som inneholder alle EMAene i stedet for bare det siste, og dens langsommere Skriver og kjører den samme algoritmen i C og kjører den over 2.000.000 verdier tar bare 13ms. Så åpenbart, å bruke et kompilert språk på lavere nivå ser ut til å hjelpe P Hvor skal jeg gå herfra Koden vil til slutt kjøre på Ubuntu, så hvilket språk skal jeg velge Vil PHP kunne ringe og sende et så stort argument til skriptet som ble spurt 11. juli kl 19:21 Klart å implementere med en utvidelse gir deg en betydelig økning. I tillegg kan kalkulatoren forbedres som seg selv, og den gevinst du kan legge til i hvilket språk du velger. Det er lett å se at lastEMA kan beregnes som følger: Dette kan skrives på nytt for å ta ut av sløyfen så mye som mulig: For å forklare utvinningen av k tror det i den tidligere formuleringen er som om alle originale rådata blir multiplisert med k så praktisk at du i stedet kan multiplisere sluttresultatet. Legg merke til at det er omskrivet på denne måten at du har 2 operasjoner inne i sløyfen i stedet for 3 (for å være nøyaktig inne i sløyfen er det også en økning i sammenligning med sizeata og lastEMA verdi tildeling) slik at du kan forvente å oppnå en ekstra fart i området mellom 16 og 33. Videre er det andre forbedringer som i hvert fall kan vurderes under noen omstendigheter: Overvei bare siste verdier De første verdiene multipliseres flere ganger med k1m 1 - k, slik at deres bidrag kan være lite eller til og med gå under presisjonen for flytpunktet (eller den akseptable feilen). Denne ideen er spesielt nyttig hvis du kan anta at eldre data er av samme størrelsesorden som den nyere fordi hvis du bare anser de siste n-verdiene, er feilen du gjør er feil EMAofdiscardeddata (1-k) n. Så hvis størrelsesorden er stort sett den samme, kan vi fortelle at den relative feilen som er gjort, er gjenopprettet sistEMA EMAofdiscardeddata (1-k) n lastEMA som nesten er lik bare (1-k) n. Under antagelsen at lastEMA nesten lik EMAofdiscardeddata: La oss si at du kan godta en relativ feilreferanse, du kan trygt vurdere bare de siste n-verdiene der (1 - k) n lt relerr. Midler som du kan forhåndsberegne (før løkken) n log (relerr) logg (1-k) og beregne alle bare med tanke på de siste n-verdiene. Hvis datasettet er veldig stort, kan dette gi en fornuftig hastighet. Tenk på at for 64 bit flytende punktnumre har du en relativ presisjon (relatert til mantissaen) som er 2-53 (omtrent 1.1e-16 og bare 2-24 5.96e-8 for 32 bit flytende punktnumre) slik at du ikke kan få bedre enn denne relative feilen så i utgangspunktet burde du aldri ha en fordel ved å beregne mer enn n logg (1.1e-16) logg (1-k) verdier. å gi et eksempel hvis rekkevidde 2000 da n logg (1.1e-16) logg (1-22001) 36746. Jeg synes det er interessant å vite at ekstra beregninger ville gå tapt inne i avrundingene det er ubrukelig er bedre å ikke gjøre. nå et eksempel på tilfellet der du kan godta en relativ feil større enn flytpunkts presisjon relerr 1ppm 1e-6 0.00001 6 signifikante desimaltall du har n logg (1.1e-16) logg (1-22001) 13815 Jeg tror det er ganske en lite tall i forhold til de siste eksemplene dine, så i så fall kan speedupen være tydelig (Im antar at omfanget 2000 er meningsfullt eller høyt for søknaden din, men jeg vet ikke). bare andre få tall fordi jeg ikke vet hva som er typiske figurer: relerr 1e-3 rekkevidde 2000 n 6907 relerr 1e-3 rekkevidde 200 n 691 relerr 1e-3 rekkevidde 20 n 69 relerr 1e-6 rekkevidde 2000 n 13815 relerr 1e - 6 rekkevidde 200 n 1381 relerr 1e-6 rekkevidde 20 n 138 Hvis antagelsen sistEMA nesten lik EMAofdiscardeddata ikke kan tas, er ting mindre enkle, men siden fordelen kameraet er betydelig, kan det være meningsfylt å fortsette: vi må vurdere om full formel: relerr EMAofdiscardeddata (1-k) n sistEMA så n logg (relerr lastEMA EMAofdiscardeddata) logg (1-k) (logg (relerr) logg (lastEMA EMAofdiscardeddata)) logg (1-k) sentralpunktet er å beregne lastEMA EMAofdiscardeddata (uten faktisk beregning av sisteEMA eller EMAofdiscardeddata selvfølgelig) et tilfelle er når vi vet a-priori at for eksempel EMAofdiscardeddata lastEMA lt M (for eksempel M 1000 eller M 1e6) i så fall n lt (log (relerrM)) logg - K) Hvis du ikke kan gi noe M-nummer, må du finne et godt ID ea for å overskatte EMAofdiscardeddata lastEMA En rask måte kan være å ta M max (data) min (data) Parallellisering Beregningen kan skrives om på nytt i et skjema hvor det er et enkelt tillegg til uavhengige vilkår: Så hvis implementeringsspråket støtter parallellisering datasettet kan deles i 4 (eller 8 eller n. i utgangspunktet antall CPU-kjerner tilgjengelig) biter og det kan beregnes summen av termer på hver bit i parallell oppsummering av de enkelte resultatene på slutten. Jeg går ikke i detalj med dette siden dette svaret allerede er veldig lenge, og jeg tror at konseptet allerede er uttrykt. Takk for at denne I39m bruker dette på aksjemarkedsdata, så det faktum at de eldre dataene er i samme størrelsesorden som de nyere data, avhenger av hvilken tidsramme som brukes. Anta et utvalg på 200, det vil bli en mye større variasjon i prisene på en daglig tidsramme (200 dager) enn 5 minutters tidsramme (16 timer). Jeg vil eksperimentere med forskjellige scenarier på ekte og simulerte data. På nye data, med en rekkevidde lt 200, bruker jeg et 1000-datasett. Men jeg har også gjort noen tilbaketesting de siste årene, så jeg må fortsatt laste hele datasettet. Du hjalp for begge situasjoner, takk ndash Lykegenes Jul 16 14 kl 15:11 Bygg din egen forlengelse forbedrer ytelsen definitivt. Heres en god opplæring fra Zend nettsiden. Noen ytelsesfigurer: Maskinvare: Ubuntu 14.04, PHP 5.5.9, 1-kjerne Intel CPU3.3Ghz, 128MB RAM (det er en VPS). Før (kun PHP, 16.000 verdier). 500ms C forlengelse, 16.000 verdier. 0,3ms C forlengelse (100.000 verdier). 3,7 ms C forlengelse (500 000 verdier). 28.0ms Men Im minne begrenset på dette punktet, med 70MB. Jeg vil fikse det og oppdatere tallene tilsvarende. Gjennomsnittlig gjennomsnitt - Enkle og eksponentielle flytende gjennomsnitt - Enkel og eksponentiell introduksjon Flytte gjennomsnitt øker prisdataene for å danne en trend-indikator. De forutsier ikke prisretning, men definerer snarere den nåværende retningen med et lag. Flytte gjennomsnittlig forsinkelse fordi de er basert på tidligere priser. Til tross for denne tøysen, beveger bevegelige gjennomsnitt en jevn prishandling og filtrerer ut støyen. De danner også byggesteinene for mange andre tekniske indikatorer og overlegg, for eksempel Bollinger Bands. MACD og McClellan Oscillator. De to mest populære typene av bevegelige gjennomsnittsverdier er Simple Moving Average (SMA) og Exponentential Moving Average (EMA). Disse bevegelige gjennomsnittsverdiene kan brukes til å identifisere retningen til trenden eller definere potensielle støtte - og motstandsnivåer. Here039s et diagram med både en SMA og en EMA på den: Simple Moving Average Calculation Et enkelt bevegelige gjennomsnitt er dannet ved å beregne gjennomsnittsprisen på en sikkerhet over et bestemt antall perioder. De fleste bevegelige gjennomsnitt er basert på sluttkurs. Et 5-dagers enkelt glidende gjennomsnitt er den fem dagers summen av sluttkurs dividert med fem. Som navnet antyder, er et glidende gjennomsnitt et gjennomsnitt som beveger seg. Gamle data blir droppet da nye data kommer til rådighet. Dette får gjennomsnittet til å bevege seg langs tidsskalaen. Nedenfor er et eksempel på et 5-dagers glidende gjennomsnitt som utvikler seg over tre dager. Den første dagen i det bevegelige gjennomsnittet dekker de siste fem dagene. Den andre dagen i glidende gjennomsnitt dråper det første datapunktet (11) og legger til det nye datapunktet (16). Den tredje dagen i det bevegelige gjennomsnittet fortsetter ved å slippe det første datapunktet (12) og legge til det nye datapunktet (17). I eksemplet ovenfor øker prisene gradvis fra 11 til 17 over totalt syv dager. Legg merke til at det bevegelige gjennomsnittet også stiger fra 13 til 15 over en tre-dagers beregningsperiode. Legg også merke til at hver glidende gjennomsnittsverdi ligger like under siste pris. For eksempel er det bevegelige gjennomsnittet for første dag 13 og siste pris 15. Prisene de foregående fire dagene var lavere, og dette medfører at det bevegelige gjennomsnittet går til lag. Eksponentiell Flytende Gjennomsnittlig Beregning Eksponentielle glidende gjennomsnitt reduserer forsinkelsen ved å bruke mer vekt til de siste prisene. Vektingen som brukes på den siste prisen, avhenger av antall perioder i glidende gjennomsnitt. Det er tre trinn for å beregne et eksponentielt glidende gjennomsnitt. Først beregner du det enkle glidende gjennomsnittet. Et eksponentielt glidende gjennomsnitt (EMA) må starte et sted slik at et enkelt glidende gjennomsnitt blir brukt som forrige periode039s EMA i den første beregningen. For det andre, beregne vektingsmultiplikatoren. Tredje, beregne eksponentielt glidende gjennomsnitt. Formelen nedenfor er for en 10-dagers EMA. Et 10-års eksponentielt glidende gjennomsnitt bruker en 18,18 vekting til den siste prisen. En 10-årig EMA kan også kalles en 18.18 EMA. En 20-årig EMA gjelder en vei på 9,52 til den siste prisen (2 (201) .0952). Legg merke til at vektingen for kortere tidsperiode er mer enn vektingen for lengre tidsperiode. Faktisk faller vekten halvparten hver gang den bevegelige gjennomsnittlige perioden fordobles. Hvis du vil ha en bestemt prosentandel for en EMA, kan du bruke denne formelen til å konvertere den til tidsperioder, og deretter angi verdien som EMA039-parameteren: Nedenfor er et regneark eksempel på et 10-dagers enkelt glidende gjennomsnitt og en 10- dag eksponentiell glidende gjennomsnitt for Intel. Enkle bevegelige gjennomsnitt er rett frem og krever liten forklaring. 10-dagers gjennomsnittet beveger seg ganske enkelt som nye priser blir tilgjengelige og gamle priser faller av. Det eksponentielle glidende gjennomsnittet begynner med den enkle glidende gjennomsnittsverdien (22,22) i den første beregningen. Etter den første beregningen tar den normale formelen over. Fordi en EMA begynner med et enkelt bevegelig gjennomsnittsmål, blir dens virkelige verdi ikke realisert før 20 eller så perioder senere. Med andre ord kan verdien på Excel-regnearket avvike fra diagramverdien på grunn av den korte tilbakekallingsperioden. Dette regnearket går bare tilbake 30 perioder, noe som betyr at påvirkning av det enkle glidende gjennomsnittet har hatt 20 perioder å forsvinne. StockCharts går tilbake minst 250 perioder (vanligvis mye lenger) for beregningene, slik at effektene av det enkle glidende gjennomsnittet i den første beregningen er fullstendig forsvunnet. Lagfaktoren Jo lengre det bevegelige gjennomsnittet, desto mer lagret. Et 10-dagers eksponensielt glidende gjennomsnitt vil krame prisene ganske tett og ta kort tid etter at prisene svinger. Kortflytende gjennomsnitt er som fartbåter - skumle og raske å forandre seg. I motsetning til dette, inneholder et 100-dagers glidende gjennomsnitt mange tidligere data som reduserer det. Lengre bevegelige gjennomsnitt er som havskipskip - sløv og sakte å forandre. Det tar en større og lengre prisbevegelse for et 100-dagers glidende gjennomsnitt for å bytte kurs. Tabellen over viser SampP 500 ETF med en 10-dagers EMA tett følgende priser og en 100-dagers SMA-sliping høyere. Selv med januar-februar-tilbakegangen holdt 100-dagers SMA kurset og gikk ikke ned. 50-dagers SMA passer et sted mellom 10 og 100 dagers glidende gjennomsnitt når det gjelder lagfaktoren. Enkel vs eksponentiell flytende gjennomsnitt Selv om det er klare forskjeller mellom enkle glidende gjennomsnitt og eksponentielle glidende gjennomsnitt, er det ikke nødvendigvis bedre enn det andre. Eksponentielle glidende gjennomsnitt har mindre forsinkelse og er derfor mer følsomme overfor de siste prisene - og de siste prisendringene. Eksponentielle glidende gjennomsnitt vil slå før enkle glidende gjennomsnitt. Enkle bevegelige gjennomsnitt, derimot, representerer et sant gjennomsnitt av priser for hele tidsperioden. Som sådan kan enkle bevegelige gjennomsnitt være bedre egnet til å identifisere støtte - eller motstandsnivåer. Flytte gjennomsnittlig preferanse avhenger av mål, analytisk stil og tidshorisont. Chartister bør eksperimentere med begge typer bevegelige gjennomsnitt samt forskjellige tidsrammer for å finne den beste passformen. Tabellen nedenfor viser IBM med 50-dagers SMA i rødt og 50-dagers EMA i grønt. Begge toppet i slutten av januar, men nedgangen i EMA var skarpere enn nedgangen i SMA. EMA dukket opp i midten av februar, men SMA fortsatte å bli lavere til slutten av mars. Legg merke til at SMA dukket opp over en måned etter EMA. Lengder og tidsrammer Lengden på det bevegelige gjennomsnittet avhenger av de analytiske målene. Kortvarige gjennomsnitt (5-20 perioder) passer best for kortsiktige trender og handel. Chartister interessert i langsiktige trender ville velge lengre bevegelige gjennomsnitt som kan utvide 20-60 perioder. Langsiktig investorer vil foretrekke å flytte gjennomsnitt med 100 eller flere perioder. Noen bevegelige gjennomsnittlige lengder er mer populære enn andre. 200-dagers glidende gjennomsnitt er kanskje den mest populære. På grunn av lengden er dette klart et langsiktig glidende gjennomsnitt. Deretter er det 50-dagers glidende gjennomsnittet ganske populært for den langsiktige trenden. Mange diagrammer bruker de 50-dagers og 200-dagers glidende gjennomsnittene sammen. Kortsiktig, et 10-dagers glidende gjennomsnitt var ganske populært tidligere, fordi det var lett å beregne. Man lagde bare tallene og flyttet desimaltegnet. Trend Identification De samme signalene kan genereres ved hjelp av enkle eller eksponentielle glidende gjennomsnitt. Som nevnt ovenfor er preferansen avhengig av hver enkelt person. Disse eksemplene nedenfor vil bruke både enkle og eksponentielle glidende gjennomsnitt. Begrepet glidende gjennomsnitt gjelder både enkle og eksponentielle glidende gjennomsnitt. Retningen av det bevegelige gjennomsnittet gir viktig informasjon om priser. Et stigende glidende gjennomsnitt viser at prisene generelt øker. Et fallende glidende gjennomsnitt indikerer at prisene i gjennomsnitt faller. Et stigende langsiktig glidende gjennomsnitt reflekterer en langsiktig opptrend. Et fallende langsiktig glidende gjennomsnitt reflekterer en langsiktig nedtrend. Tabellen over viser 3M (MMM) med et 150-dagers eksponensielt glidende gjennomsnitt. Dette eksempelet viser hvor godt bevegelige gjennomsnittsverdier fungerer når trenden er sterk. Den 150-dagers EMA avslått i november 2007 og igjen i januar 2008. Legg merke til at det tok 15 tilbakegang å reversere retningen av dette bevegelige gjennomsnittet. Disse forsinkende indikatorene identifiserer trendendringer som de oppstår (i beste fall) eller etter at de oppstår (i verste fall). MMM fortsatte ned til mars 2009 og økte deretter 40-50. Legg merke til at 150-dagers EMA ikke viste seg før etter denne bølgen. Når det gjorde det, fortsatte MMM høyere de neste 12 månedene. Flytte gjennomsnitt arbeider briljant i sterke trender. Double Crossovers To bevegelige gjennomsnitt kan brukes sammen for å generere crossover-signaler. I teknisk analyse av finansmarkedene. John Murphy kaller dette den dobbelte crossover-metoden. Dobbeltoverganger innebærer et relativt kort glidende gjennomsnitt og et relativt langt bevegelige gjennomsnitt. Som med alle bevegelige gjennomsnitt, definerer den generelle lengden på det bevegelige gjennomsnittet tidsrammen for systemet. Et system som bruker en 5-dagers EMA og 35-dagers EMA, vil bli ansett som kortsiktige. Et system som bruker en 50-dagers SMA og 200-dagers SMA, vil bli ansett på mellomlang sikt, kanskje til og med på lang sikt. Et kystovergang skjer når kortere bevegelige gjennomsnittsværdier krysser over lengre bevegelige gjennomsnitt. Dette er også kjent som et gyldent kors. Et bearish crossover oppstår når kortere bevegelige gjennomsnitt krysser under lengre bevegelige gjennomsnitt. Dette er kjent som et dødt kryss. Flytte gjennomsnittsoverganger gir relativt sent signaler. Tross alt har systemet to forsinkende indikatorer. Jo lengre bevegelige gjennomsnittsperioder, desto større er lagringen i signalene. Disse signalene fungerer bra når en god trend tar tak. Imidlertid vil et glidende gjennombruddssystem produsere mange whipsaws i fravær av en sterk trend. Det er også en trippel crossover metode som involverer tre bevegelige gjennomsnitt. Igjen genereres et signal når det korteste bevegelige gjennomsnittet krysser de to lengre bevegelige gjennomsnittene. Et enkelt tredelt crossover-system kan innebære 5-dagers, 10-dagers og 20-dagers glidende gjennomsnitt. Tabellen over viser Home Depot (HD) med en 10-dagers EMA (grønn prikket linje) og 50-dagers EMA (rød linje). Den svarte linjen er den daglige lukkingen. Å bruke en glidende gjennomsnittsovergang ville ha resultert i tre whipsaws før du fikk en god handel. Den 10-dagers EMA brøt under 50-dagers EMA i slutten av oktober (1), men dette var ikke lenge da 10-dagene flyttet tilbake over midten av november (2). Dette krysset varet lengre, men neste bearish crossover i januar (3) skjedde nær prisnivået i slutten av november, noe som resulterte i en annen whipsaw. Dette bearish krysset varede ikke lenge da 10-dagers EMA flyttet tilbake over 50-dagen noen dager senere (4). Etter tre dårlige signaler forløste det fjerde signalet et sterkt trekk når aksjene økte over 20. Det er to takeaways her. For det første er crossovers utsatt for whipsaw. Et pris - eller tidsfilter kan brukes for å forhindre whipsaws. Traders kan kreve crossover til siste 3 dager før du handler eller krever at 10-dagers EMA skal flytte over 50-dagers EMA med en viss mengde før du handler. For det andre kan MACD brukes til å identifisere og kvantifisere disse kryssene. MACD (10,50,1) viser en linje som representerer forskjellen mellom de to eksponentielle glidende gjennomsnittene. MACD blir positiv under et gyldent kors og negativt under et dødt kryss. Prosentpris Oscillatoren (PPO) kan brukes på samme måte som prosentandeler. Vær oppmerksom på at MACD og PPO er basert på eksponentielle glidende gjennomsnitt og stemmer ikke overens med enkle glidende gjennomsnitt. Dette diagrammet viser Oracle (ORCL) med 50-dagers EMA, 200-dagers EMA og MACD (50,200,1). Det var fire bevegelige gjennomsnittsoverskridelser over en 12-årig periode. De første tre resulterte i whipsaws eller dårlige handler. En vedvarende trend begynte med fjerde crossover som ORCL avansert til midten av 20-tallet. Nok en gang jobber glidende gjennomsnittsoverganger godt når trenden er sterk, men produserer tap i fravær av en trend. Prisoverskridelser Flytte gjennomsnitt kan også brukes til å generere signaler med enkle prisoverskridelser. Et bullish signal genereres når prisene går over det bevegelige gjennomsnittet. Et bearish signal genereres når prisene flytter under det bevegelige gjennomsnittet. Prisoverskridelser kan kombineres for å handle innenfor den større trenden. Det lengre bevegelige gjennomsnittet setter tonen for den større trenden, og det kortere glidende gjennomsnittet brukes til å generere signalene. Man vil se etter bullish prisoverganger bare når prisene allerede er over det lengre bevegelige gjennomsnittet. Dette ville være handel i harmoni med den større trenden. For eksempel, hvis prisen ligger over 200-dagers glidende gjennomsnitt, vil kartleggere bare fokusere på signaler når prisen beveger seg over 50-dagers glidende gjennomsnitt. Åpenbart vil et trekk under 50-dagers glidende gjennomsnitt forutse et slikt signal, men slike bearish kryss vil bli ignorert fordi den større trenden er oppe. Et bearish kryss ville bare foreslå en tilbaketrekking i en større opptrinn. Et kryss tilbake over 50-dagers glidende gjennomsnitt ville signalere en oppgang i prisene og fortsettelsen av den store opptrenden. Neste diagram viser Emerson Electric (EMR) med 50-dagers EMA og 200-dagers EMA. Aksjen flyttet over og holdt over 200-dagers glidende gjennomsnitt i august. Det var dips under 50-dagers EMA tidlig i november og igjen tidlig i februar. Prisene flyttet raskt over 50-dagers EMA for å gi bullish signaler (grønne piler) i harmoni med større opptrinn. MACD (1,50,1) vises i indikatorvinduet for å bekrefte priskryss over eller under 50-dagers EMA. Den 1-dagers EMA er lik sluttkurs. MACD (1,50,1) er positiv når lukkingen er over 50-dagers EMA og negativ når lukkingen er under 50-dagers EMA. Støtte og motstand Flytte gjennomsnitt kan også fungere som støtte i en uptrend og motstand i en downtrend. En kortsiktig opptrend kan finne støtte nær 20-dagers enkeltflytende gjennomsnitt, som også brukes i Bollinger Bands. Et langsiktig opptrend kan finne støtte nær det 200-dagers enkle glidende gjennomsnittet, som er det mest populære langsiktige glidende gjennomsnittet. Faktisk kan 200-dagers glidende gjennomsnitt gi støtte eller motstand bare fordi den er så mye brukt. Det er nesten som en selvoppfyllende profeti. Figuren over viser NY Composite med det 200-dagers enkle glidende gjennomsnittet fra midten av 2004 til slutten av 2008. 200-dagene ga støtte mange ganger under forskudd. Når trenden reverserte med en dobbel toppstøt, virket det 200-dagers glidende gjennomsnittet som motstand rundt 9500. Forvent ikke eksakte støtte - og motstandsnivåer fra bevegelige gjennomsnitt, spesielt lengre bevegelige gjennomsnitt. Markeder er drevet av følelser, noe som gjør dem utsatt for overskudd. I stedet for eksakte nivåer kan bevegelige gjennomsnittsverdier brukes til å identifisere støtte - eller motstandssoner. Konklusjoner Fordelene ved å bruke bevegelige gjennomsnitt må veies mot ulempene. Flytte gjennomsnitt er trenden som følger eller forsinker, indikatorer som alltid vil være et skritt bakover. Dette er ikke nødvendigvis en dårlig ting skjønt. Tross alt er trenden din venn, og det er best å handle i retning av trenden. Flytte gjennomsnitt sikrer at en næringsdrivende er i tråd med den nåværende trenden. Selv om trenden er din venn, legger verdipapirer mye tid i handelsområder, noe som gjør flytteverdier ineffektive. En gang i en trend vil glidende gjennomsnitt holde deg i, men også gi sent signal. Don039t forventer å selge på toppen og kjøpe på bunnen ved hjelp av bevegelige gjennomsnitt. Som med de fleste tekniske analyseverktøy, bør bevegelige gjennomsnitt ikke brukes alene, men i forbindelse med andre komplementære verktøy. Chartister kan bruke bevegelige gjennomsnitt for å definere den overordnede trenden og deretter bruke RSI til å definere overkjøpte eller oversolgte nivåer. Legge til bevegelige gjennomsnitt til StockCharts-diagrammer Flytte gjennomsnitt er tilgjengelig som en prisoverleggsfunksjon på SharpCharts arbeidsbenk. Med rullegardinmenyen Overlays kan brukerne velge enten et enkelt glidende gjennomsnitt eller et eksponentielt glidende gjennomsnitt. Den første parameteren brukes til å angi antall tidsperioder. En valgfri parameter kan legges til for å spesifisere hvilket prisfelt som skal brukes i beregningene - O for Åpen, H for Høy, L for Lav og C for Lukk. Et komma brukes til å skille mellom parametere. En annen valgfri parameter kan legges til for å skifte de bevegelige gjennomsnittene til venstre (tidligere) eller høyre (fremtidige). Et negativt tall (-10) ville skifte det bevegelige gjennomsnittet til venstre 10 perioder. Et positivt tall (10) ville skifte det bevegelige gjennomsnittet til høyre 10 perioder. Flere bevegelige gjennomsnitt kan overlappes prisplottet ved ganske enkelt å legge til en annen overleggslinje til arbeidsbenken. StockCharts medlemmer kan endre farger og stil for å skille mellom flere bevegelige gjennomsnitt. Når du har valgt en indikator, åpner du Avanserte alternativer ved å klikke på den lille grønne trekant. Avanserte alternativer kan også brukes til å legge til et glidende gjennomsnittlig overlegg til andre tekniske indikatorer som RSI, CCI og Volume. Klikk her for et live diagram med flere forskjellige bevegelige gjennomsnitt. Bruke Flytte Gjennomsnitt med StockCharts-skanninger Her er noen prøve-skanninger som StockCharts-medlemmer kan bruke til å skanne etter ulike bevegelige gjennomsnittlige situasjoner: Bullish Moving Average Cross: Denne skanningen ser etter aksjer med et stigende 150-dagers enkelt glidende gjennomsnitt og et bullish kryss av 5 - dag EMA og 35-dagers EMA. Det 150-dagers glidende gjennomsnittet stiger så lenge det handler over nivået for fem dager siden. Et bullish kryss oppstår når 5-dagers EMA beveger seg over 35-dagers EMA på over gjennomsnittet. Bearish Moving Average Cross: Denne skanningen ser etter aksjer med et fallende 150-dagers enkelt glidende gjennomsnitt og et bearish kryss av 5-dagers EMA og 35-dagers EMA. Det 150-dagers glidende gjennomsnittet faller så lenge det handler under nivået for fem dager siden. Et bearish kryss oppstår når 5-dagers EMA beveger seg under 35-dagers EMA på over gjennomsnittet. Videre studie John Murphy039s bok har et kapittel viet til bevegelige gjennomsnitt og deres ulike bruksområder. Murphy dekker fordeler og ulemper ved å flytte gjennomsnitt. I tillegg viser Murphy hvordan bevegelige gjennomsnitt arbeider med Bollinger Bands og kanalbaserte handelssystemer. Teknisk analyse av finansmarkedene John MurphyHva lærte du Quiz: Python Handler Funksjoner i Blender Quiz It8217s nå tid for en seriøs handlerfunksjon I denne videoen skal vi bruke noe som heter lta href8221en. wikipedia. orgwikiMovingaverage0388221 target8221blank8221gtmoving averageltagt, som vanligvis brukes i aksjemarkedet, for å dempe bevegelsen av sprø flytte aksjekurser. I stedet for å dempe lagre, tilpasser vi det til bruk i Blender som en måte å dempe bevegelsen av en vill kube og få kameraet til å følge det på en veldig naturlig, avslappet måte. Leksjons Spørsmål og svar Still et spørsmål og få svar Takk, Richard. Det var veldig lærerikt. Jeg ville bare tenke på hvorfor du måtte bruke Vector (target. location) i samtalen til append-funksjonen. Jeg tror det er fordi når du legger til target. location, er det vedlagt som en referanse (ikke vale). Så når objektets plassering endres, vil alle elementene i listen peke til gjeldende posisjon. Velkommen til LinuxQuestions. org. et vennlig og aktivt Linux-fellesskap. Du ser for øyeblikket LQ som gjest. Ved å bli med i fellesskapet ditt, vil du kunne legge inn emner, motta nyhetsbrevet, bruke avansert søk, abonnere på tråder og få tilgang til mange andre spesielle funksjoner. Registrering er rask, enkel og helt gratis. Bli med i fellesskapet vårt i dag Merk at registrerte medlemmer ser færre annonser, og ContentLink er helt deaktivert når du logger inn. Hvis du har problemer med registreringsprosessen eller kontoinnlogging, vennligst kontakt oss. Hvis du trenger å tilbakestille passordet ditt, klikk her. Har problemer med å logge inn Vennligst besøk denne siden for å fjerne alle LQ-relaterte informasjonskapsler. Introduksjon til Linux - En hånd på veiledning Denne veiledningen ble opprettet som en oversikt over Linux operativsystemet, rettet mot nye brukere som en letetur og begynner veiledning, med øvelser på slutten av hvert kapittel. For mer avanserte praktikanter kan det være en desktop-referanse, og en samling av grunnkunnskapen som trengs for å fortsette med system - og nettverksadministrasjon. Denne boken inneholder mange virkelige eksempler avledet av forfatterne som Linux-system og nettverksadministrator, trener og konsulent. De håper disse eksemplene vil hjelpe deg å få bedre forståelse av Linux-systemet, og at du føler deg oppfordret til å prøve ut ting på egen hånd. Klikk her for å motta denne komplett guide helt gratis. Start med å lese dataene i en matrise, indeksert av f. eks. år 12 måneder for å få dem i riktig rekkefølge, dvs. månedlig matrise (24109 gt 260. 24110 gt 220. 24111 gt 270. 24112 gt 300. 24113 gt 269. 24114 gt 271.) Hvis du bruker ÅÅÅÅM som nøkkel, vil du Finn nytt år veldig vanskelig, du vil ha nøklene til å være i ettertid. Et vektet gjennomsnitt kan da beregnes ved bruk av f. eks. funksjonen vektverdien (array. nøkkel, vektordiagram) 1 sum 0 div 0 nøkkel intval (nøkkel) foreach (vekt som w) hvis (arraykeyexists (key array)) sum w array 91 nøkkel 93 div w key hvis ) returnere FALSE der dataene er i den første parameteren, den andre parameteren er nøkkelen for den første måneden av vinduet, og den tredje parameteren inneholder ønsket vekt for ønsket vindu, som standard bare en måned. For et glidende kvartår kan du bruke array (1,1,1). For et halvt år, array (1,1,1,1,1,1). For en Gauss-distribusjon sentrert på den fjerde måneden med en måned varians bruk rekkefølge (0.006.0.061,0.242.0.383,0.242.0.061.0.006). Gjennomsnittlig funksjon ovenfor vil riktig ignorere måneder med manglende data. Vektene er relative, de trenger ikke å oppsummere til en. Hvis det ikke er noen data i det hele tatt, returnerer funksjonen FALSK. Du bør være i stand til å finjustere ovenstående for å passe dine formål. For eksempel kan det være enklere å definere separate funksjoner for glidende gjennomsnittet du skal bruke, og definere vektarmenyen i funksjonen (eller som en global variabel) i stedet. 1 medlemmer fant dette innlegget nyttig. nøkkelen er et heltall, år 12 måneder. hvor år er året inkludert århundre, og måneden er mellom 1 og 12, inkludert. Her er et komplett eksempel. Bare i tilfelle dette er lekser - Jeg skriver ikke leksene dine for deg - Jeg bruker kommandolinjens PHP-tolk for dette: funksjon ÅrMonth (yyyymm) str strval (yyyymm) hvis (strlen (str) 6 ampamp strspn (str. 0123456789) 6) tilbakegangsinngang (substr (str. 0. 4), 10) 12 intval (substr (str. 4 2), 10) str strolower (str) str pregreplace (910-9a-z93. 0 måned 0 foreach (eksplodere (. Str.) Som vare) vareinnstilling (vare nr. 10) hvis (vare gt 1000 ampamp vare lt 9999) årsmodell annet hvis (vare gt 1 ampamp item lt 12) månedspost hvis måned) returnere 12 år måned hvis (år) returnere FALSE str pregreplace (910-993. str) foreach (eksplodere (str.) som element) bytte (substr. returnere 1 12 år tilfelle feb. returnere 2 12 år tilfelle feb. returnere 2 12 år tilfelle mar. returnere 3 12 år tilfelle apr. returnere 4 12 år tilfelle mai. returnere 5 12 år tilfelle juni. returnere 6 12 år tilfelle jul. returnere 7 12 år tilfelle aug. returnere 8 12 år tilfelle sep. returnere 9 12 år tilfelle oktober. returnere 10 12 år tilfelle nov. retur 11 12 år tilfelle des. returnere 12 12 års funksjon Kvartal (data. nøkkel) sum 0 div 0 nøkkel Årsmontert (nøkkel) hvis (nøkkel) returnerer FALSE hvis (isarray (data)) returnerer FALSE for (offset 0 offset lt 3 offset) hvis (arraykeyexists data)) sum floatval (data 91 nøkkel offset 93) div 1 hvis (div lt 1) returnere FALSE retur sum floatval (div) data array (24109 gt 260. 24110 gt 220. 24111 gt 270. 24112 gt 300. 24113 gt 269. 24114 gt 271. 24115 gt 240. 24116 gt 234. 24117 gt 220. 24118 gt 240. 24119 gt 262. 24120 gt 255. 24121 gt 270. 24122 gt 210. 24123 gt 260. 24124 gt 280. 24125 gt 259. 24126 gt 280. 24127 gt 220. 24128 gt 240. 24129 gt 240. 24130 gt 250. 24131 gt 271. 24132 gt 260. 24133 gt 240. 24134 gt 250. 24135 gt 250. 24136 gt 260. 24137 gt 225. 24138 gt 257. 24139 gt 230. 24140 gt 250. 24141 gt 230. 24142 gt 244. 24143 gt 257. 24144 gt 250.) for (arg 1 arg lt argc arg) resultat Kvartal (data argv 91 arg 93) hvis (resultat FALSE ) echo argv 91 arg 93,: Ingen data for slike qu arter. n else echo argv 91 arg 93,: Kvartals gjennomsnitt er. resultat..n Funksjonen YearMonth tar et hvilket som helst år og månedspar (eller ÅÅÅÅMM som et enkelt nummer eller en streng), og returnerer den som en passende nøkkel. Det er ganske smart, ved hjelp av strengmanipulasjons triks, slik at du kan bruke f. eks. 2009jan eller quotFeb-2010quot eller quotAugust, 2011quot eller til og med 022010 eller 20118 og alle vil bare fungere. Hvis du lagrer det ovenfor som quarter. php. du kan kjøre den (etter markering av det kjørbare, chmod ux quarter. php) ved bruk av f. eks. Svarene det rapporterer er 250 ((260220270) 3), 250 ((210260280) 3) og 241.333 ((250230244) 3). Siden du er så opptatt av å bare bruke et glidende kvartårsvindu, forenklet jeg gjennomsnittsfunksjonen til å gjøre det, og det alene heter det kvartalet her. Jeg anbefaler at du sammenligner den med vektreduksjonsfunksjonen. Matematisk er kvartalslogikken trivial: gjennomsnittet er summen av elementer delt på antall elementer. Et kvartal er tre måneder (12 måneder 4 kvartaler 3 måneder kvart). Igjen, hvis du ikke har data for en bestemt måned, vil funksjonen hoppe over det hvis det ikke er noen data for perioden, det returnerer FALSK. Merk at du ikke trenger å transkribere dataene til en matrise for hånd. Hvis du leser linjene ved hjelp av fgets (). komprimere alt hvitt mellomrom (f. eks. ved hjelp av line trim (pregreplace (tnvfr, line)), kan du eksplodere linjen inn i en matrise ved å eksplodere felt (linje) Lengden på arrayet (teller (felter)) vil være en mer enn antall år du har. Det første feltet, felt0. vil inneholde Måned på topplinjen og månedens navn i de andre feltene. På topplinjen angir resten av feltene årene de inneholder verdiene for andre linjer. Siden du kan fylle ut en assosiativ array i hvilken som helst rekkefølge du vil, bør det være veldig enkelt å lese datarammingen fra en fil ved hjelp av tabellformatet fra ditt første innlegg i denne tråden.
No comments:
Post a Comment