Monday, 2 October 2017

Vba Enkel Moving Average


Flytende gjennomsnitt Dette eksemplet lærer deg hvordan du beregner det bevegelige gjennomsnittet av en tidsserie i Excel. Et glidende gjennomsnitt brukes til å utjevne uregelmessigheter (topper og daler) for enkelt å gjenkjenne trender. 1. Først, ta en titt på vår tidsserie. 2. På Data-fanen klikker du Dataanalyse. Merk: kan ikke finne dataanalyseknappen Klikk her for å laste inn add-in for Analysis ToolPak. 3. Velg Flytt gjennomsnitt og klikk OK. 4. Klikk i feltet Inngangsområde og velg området B2: M2. 5. Klikk i intervallboksen og skriv inn 6. 6. Klikk i feltet Utmatingsområde og velg celle B3. 8. Skriv en graf av disse verdiene. Forklaring: fordi vi angir intervallet til 6, er glidende gjennomsnitt gjennomsnittet for de forrige 5 datapunktene og det nåværende datapunktet. Som et resultat blir tinder og daler utjevnet. Grafen viser en økende trend. Excel kan ikke beregne det bevegelige gjennomsnittet for de første 5 datapunktene fordi det ikke er nok tidligere datapunkter. 9. Gjenta trinn 2 til 8 for intervall 2 og intervall 4. Konklusjon: Jo større intervallet jo flere tinder og daler utjevnes. Jo mindre intervallet, desto nærmere er de bevegelige gjennomsnittene til de faktiske datapunktene. Slik beregner du Flytte gjennomsnitt i Excel Excel Dataanalyse for dummier, 2. utgave Kommandoen Dataanalyse gir et verktøy for å beregne flytende og eksponensielt glatte gjennomsnitt i Excel. Anta, for illustrasjons skyld, at du har samlet inn daglig temperaturinformasjon. Du vil beregne tre-dagers glidende gjennomsnitt 8212 gjennomsnittet for de siste tre dagene 8212 som en del av noen enkle værprognoser. For å beregne bevegelige gjennomsnitt for dette datasettet, gjør du følgende trinn. For å beregne et bevegelige gjennomsnittsnivå, klikker du først på kommandoknappen Data tab8217s Data Analyse. Når Excel viser dialogboksen Dataanalyse, velger du elementet Flytende gjennomsnitt fra listen, og klikker deretter OK. Excel viser dialogboksen Moving Average. Identifiser dataene du vil bruke til å beregne det bevegelige gjennomsnittet. Klikk i tekstboksen Inngangsområde i dialogboksen Moving Average. Deretter identifiserer du innspillingsområdet, enten ved å skrive inn et regnearkområdeadresse eller ved å bruke musen til å velge regnearkområdet. Ditt referanseområde bør bruke absolutte celleadresser. En absolutt celleadresse går foran kolonnebrevet og radnummeret med tegn, som i A1: A10. Hvis den første cellen i innspillingsområdet inneholder en tekstetikett for å identifisere eller beskrive dataene dine, velger du avmerkingsboksen Etiketter i første rad. I tekstboksen Intervall, fortell Excel hvor mange verdier som skal inkluderes i gjennomsnittlig beregning i glidende retning. Du kan beregne et glidende gjennomsnitt ved å bruke et hvilket som helst antall verdier. Som standard bruker Excel de siste tre verdiene til å beregne glidende gjennomsnitt. For å angi at et annet antall verdier skal brukes til å beregne det bevegelige gjennomsnittet, skriv inn verdien i Intervall-tekstboksen. Fortell Excel hvor du skal plassere de bevegelige gjennomsnittsdataene. Bruk tekstboksen Utgangsområde for å identifisere arbeidsarkområdet som du vil plassere de bevegelige gjennomsnittsdataene i. I regnearkseksemplet er de bevegelige gjennomsnittsdataene plassert i regnearkområdet B2: B10. (Valgfritt) Angi om du vil ha et diagram. Hvis du vil ha et diagram som viser den bevegelige gjennomsnittlige informasjonen, markerer du avkrysningsboksen Kartutgang. (Valgfritt) Angi om du vil beregne standard feilinformasjon. Hvis du vil beregne standardfeil for dataene, merker du av for Standard feil. Excel plasserer standard feilverdier ved siden av de bevegelige gjennomsnittsverdiene. (Standardfeilinformasjonen går inn i C2: C10.) Når du er ferdig med å angi hvilken flytende gjennomsnittsinformasjon du vil beregne, og hvor du vil plassere den, klikker du OK. Excel beregner flytende gjennomsnittsinformasjon. Merk: Hvis Excel doesn8217t har nok informasjon til å beregne et glidende gjennomsnitt for en standardfeil, plasserer den feilmeldingen i cellen. Du kan se flere celler som viser denne feilmeldingen som en verdi. Her er en kode som skal være nyttig for de som bruker teknisk analyse i handel og vil teste strategier i Excel. Den beregner det enkle, lineært vektede og eksponentielle glidende gjennomsnittet. Videre vil jeg presentere og forklare trinnene for å lage skjemaet og VBA-koden. Sett inn en UserForm 8211 Navn: MAForm Legg til fire etiketter fra Verktøykasse-kontrollene 8211 Bildetekst som ovenfor over utskriftsskjerm Legg til en ComboBox for det bevegelige gjennomsnittlige typevalget. Den ble kalt comboTypeMA Legg til to RefEdit-kontroller for inngangsområdet og utgangsområdet. Legg til en tekstboks for å velge den bevegelige gjennomsnittlige perioden Legg til to knapper: Navn: knappSend inn, Vedlegg: Send inn og Navn: buttonCancel, Caption: Cancel For å generere rullegardinlisten for MA typevalg og last brukerformularen, en ny modul vil bli satt inn med underkoden. ComboBox-elementene som befolkes ved å flytte gjennomsnittstypene og brukerskjemaet vil bli lastet inn. Alternativ Eksplisitt Sub loadMAForm () Med MAFormboTypeMA. RowSource. AddItem Simple. AddItem Weighted. AddItem Eksponensiell slutt med MAForm. Show End Sub Nedenfor er koden tilordnet Submit-knappen. Privat Sub-knappSubmitClick () Dim inputRange, outputRange As Range Inngangsrangen vil inneholde prisseriene som brukes til å beregne MAs, og outputRange vil bli fylt med gjennomsnittene for glidende gjennomsnitt. Dim inputPeriod As Integer Den glidende gjennomsnittlige perioden er erklært. Dim inputAddress, outputAddress As String Inngangs - og utgangsområdet erklæres som streng. Hvis comboTypeMA. Value ltgt Exponential og comboTypeMA. Value ltgt Simple og comboTypeMA. Value ltgt Weighted True Så MsgBox Vennligst velg en bevegelig gjennomsnittlig type fra listen. RefInputRange. SetFocus Exit Sub Denne delen av prosedyren håndhever de første begrensningene angående innsendte data. Hvis den bevegelige gjennomsnittstypen ikke finnes i rullegardinlisten, går prosedyren ikke videre til neste trinn, og brukeren blir bedt om å velge den igjen. ElseIf RefInputRange. Value Så MsgBox Vennligst velg innspillingsområde. RefInputRange. SetFocus Avslutt Sub ElseIf RefOutputRange. Value Then MsgBox Vennligst velg utdataområde. RefOutputRange. SetFocus Avslutt Sub ElseIf RefInputPeriod. Value Så MsgBox Vennligst velg den bevegelige gjennomsnittlige perioden. RefInputPeriod. SetFocus Avslutt Sub ElseIf Not IsNumeric (RefInputPeriod. Value) Så MsgBox Flytende gjennomsnittlig periode må være et tall. RefInputPeriod. SetFocus Exit Sub End Hvis andre restriksjoner er opprettet. Inngangsområdet, utgangsområdet og inngangsperioden må ikke være tomt. Også den bevegelige gjennomsnittlige perioden må være et tall. inputAddress RefInputRange. Value Angi inputRange Range (inputAddress) outputAddress RefOutputRange. Value Sett outputRange Range (outputAddress) inputPeriod RefInputPeriod. Value Argumentene for inputRange og outputRange intervaller vil bli lagt innAddress og outputAddress erklært som strenger. Hvis inputRange. Columns. Count ltgt 1 Da MsgBox Input-område kan ha bare en kolonne. RefInputRange. SetFocus Exit Sub InputRange må bare inneholde en kolonne. ElseIf inputRange. Rows. Count ltgt outputRange. Rows. Count Deretter har MsgBox Output-rekkevidde et annet antall rader enn inngangsområdet. RefInputRange. SetFocus Exit Sub End Hvis inputRange og outputRange må ha et like antall rader. Dim RowCount As Integer RowCount inputRange. Rows. Count Dim cRow som integer ReDim inputarray (1 til RowCount) For cRow 1 til RowCount inputarray (cRow) inputRange. Cells (cRow, 1).Value Neste cRow inputarray er deklarert som array og it8217s elementer tilsvarer verdiene fra hver rad i inngangsområdet. Hvis inputPeriod gt RowCount Da MsgBox Antall valgte observasjoner er amp RowCount amp og perioden er amp inputPeriod amp. Inngangsområdet må ha en høyere eller lik mengde elementer enn den valgte perioden. RefInputRange. SetFocus Exit Sub End Hvis en annen begrensning er lagt til 8211 Inngangsområdet må ha en høyere eller lik antall elementer enn perioden. Hvis inputPeriod lt 0 Then MsgBox Flytende gjennomsnittlig periode må være høyere enn 0. RefInputPeriod. SetFocus Exit Sub End Hvis den glidende gjennomsnittlige perioden må være høyere enn null. ReDim outputarray (inputPeriod To RowCount) Som variant Også array dimensjonene av outputarray er bestemt. Den nedre grensen til arrayet er inputPeriod-verdien, og den øvre grensen er verdien av RowCount (antall elementer i inputRange). Under delen av prosedyren utregnet det enkle glidende gjennomsnittet, hvis valget for comboTypeMA er enkelt. SMA ----------------------------------------- Hvis comboTypeMA. Value Simple Da Dim i , j Som helhet Dim temp Som dobbelt For jeg inputPeriod To RowCount temp 0 For j (i - (inputPeriod - 1)) Til jeg temp temp inputarray (j) Neste j outputarray (i) temp inputPeriod outputRange. Cells (i, 1).Value outputarray (i) Neste jeg outputRange. Cells (0, 1).Value SMA (amp inputPeriod amp) I utgangspunktet beregner prosedyren det bevegelige gjennomsnittet av de siste x tallene (x er lik inngangsperioden), med utgangspunkt i elementet i inputarrayet er lik inngangenPeriod. Nedenfor er et forenklet eksempel, som viser hvert trinn i prosedyren. I dette eksemplet er det fire tall (no01, no02, no03 og no04) fra rad 1 til rad 4 og den bevegelige gjennomsnittlige perioden er 3. Etter hvert nytt glidende gjennomsnitt beregnes, vil hver celle i outputRange ta verdien fra outputarray. Og etter hvert beregnes de bevegelige gjennomsnittene, i cellen over outputRange vil en tittel bli satt inn som inneholder den bevegelige gjennomsnittstypen og perioden. Denne neste delen beregner eksponentielt glidende gjennomsnitt. EMA ------------------------------------------ ElseIf comboTypeMA. Value Exponential Then Dim alfa Som dobbel alfa 2 (inputPeriod 1) For j 1 Til inputPeriod temp temp inputarray (j) Neste j outputarray (inputPeriod) temp inputPeriod Først bestemmes verdien av alfa. Fordi i beregningen er verdien av EMA basert på den tidligere EMA, vil den første være det enkle glidende gjennomsnittet. For jeg inputPeriod 1 To RowCount outputarray (i) outputarray (i - 1) alfa (inputarray (i) - outputarray (i - 1)) Neste jeg Starter med andre glidende gjennomsnitt, blir de beregnet ut fra formelen ovenfor: forrige EMA pluss alfa multiplisert med forskjellen mellom det nåværende nummeret fra inputarrayet og den tidligere EMA-verdien. For jeg inputPeriod To RowCount outputRange. Cells (i, 1).Value outputarray (i) Neste jeg outputRange. Cells (0, 1).Value EMA (amp inputPeriod amp) På samme måte som koden for SMA, vil outputarray bli befolket og cellen over outputarray vil representere typen og perioden for det bevegelige gjennomsnittet. Nedenfor er koden for beregning av det veide glidende gjennomsnittet. WMA ------------------------------------------ ElseIf comboTypeMA. Value Weighted Then Dim temp2 Som helhet For jeg inputPeriod To RowCount temp 0 temp2 0 For j (i - (inputPeriod - 1)) Til jeg temp temp inputarray (j) (j - i inputPeriod) temp2 temp2 (j - i inputPeriod) Neste j outputarray ) temp temp2 outputRange. Cells (i, 1).Value outputarray (i) Neste jeg outputRange. Cells (0, 1).Value WMA (amp inputPeriod amp) End Hvis nedenstående tabell inneholder trinnene for å beregne hver variabel som brukes til WMA-beregning. På samme måte som i det forrige eksempelet, er det for tall i inputRange. og inngangsperioden er 3. Nedenfor er den endelige koden til prosedyren, som laster ut brukerskjemaet. Loss MAForm End Sub Denne prosedyren er for Cancel-knappen. Det vil bli lagt til i samme modul. Privat sub-knappCancelClick () Løs MAForm End SubMoving gjennomsnitt i VBA Thnaks for svarene dine. Jeg har to interesser her. Den første er rett og slett en VBA (User Function) rutine for et enkelt flytende gjennomsnitt (SMA). Den andre er en VBA (User Function) rutine for et Optimalvektet Moving Average (OMA). I motsetning til SMA der alle poeng har like vekt, har det vekter for hvert punkt i gjennomsnittet med en lineær vekting, ved en viss skråning bestemt av vektingen. Koden jeg presenterte kom fra Mathcad regneark jeg opprettet, så det kan kreve litt massasje for å lage VBA for sløyfer fra den. Eksempelregnearkseksjonen har en indeks, dataene og utdataene fra 5-punktet SMA og OMA. Nedenfor er Excel Excel-regnearket. Nedenfor er koden jeg brukte i Mathcad. Microsoft Excel - Book2 Takk for dine kommentarer. Det jeg tror du viser er statisk gjennomsnitt av en gruppe celler. Det glidende gjennomsnittet i dette tilfellet er gjennomsnittlig for de siste N-tallene, og senker de forrige siste dataene fra gjennomsnittet som gjennomsnittet beveger seg fremover over de nyere dataene. Så N, bare beskriver antall celler som er gjennomsnittet som gjennomsnittsrullene fra en startcelle til slutten av data. Koblingen nedenfor beskriver i min bedre detalj det optimalt biased Moving Average. Jeg tok opprinnelig ligningene i vektornotasjon i Mathcad. Imidlertid ønsket jeg allsidighet, så jeg opprettet beregningene igjen med løyper i stedet for vektor (summation notation). Kodestykket som jeg postet tidligere er fra det Mathcad-regnearket. Mens jeg kan bruke gjennomsnittsfunksjonen, enten i Excel eller VBA. for-løp-tilnærmingen gir allsidigheten til å bruke hvilken som helst type vekting for et bevegelige gjennomsnitt siden grunnleggende summeringsfunksjonen allerede er tilstede i løkken. Fornøyd MrExcel MVP Ble medlem Feb 2003 Sted Belgia 3272 Testet innlegg 17,829 Beklager: du kan ikke forvente at vi leser et 14 sider-dokument, og jeg stimulerer til IKKE å bruke eksterne lenker: de gjør tråder verdiløs etter en stund, fordi linken vil dø en dag Blad7 Table-It versjon 06 av Erik Van Geit Blad7 Table-It versjon 06 av Erik Van Geit hvorfor ikke bruke statistiske pakker - det er mange tidsserier variasjoner. Statistikk er ikke ment å bli gjort i excel. hver statistikk professor vil si dette. fra personlig erfaring - jeg jobber med dataene mine, og når jeg legger opp alle mine sannsynligheter gjennom alle cellene, får jeg 0.999999999999977, når jeg legger opp emnene, er det 2013265800020132658000 så teknisk bør det være 1. Flytende punktfeil er bra i Excel, så ARMA-tidsserieanalyse bør gjøres i statistiske pakker - prøv Minitab - Penn State University Derfor unnlater vi å nekte null hypotesen om at det ikke er noe forhold

No comments:

Post a Comment