Monday 13 November 2017

Vba Einfach Gleitender Durchschnitt


Moving Average Dieses Beispiel lehrt, wie Sie den gleitenden Durchschnitt einer Zeitreihe in Excel berechnen. Ein gleitender Durchschnitt wird verwendet, um Unregelmäßigkeiten (Spitzen und Täler) zu glätten, um Trends leicht zu erkennen. 1. Erstens, werfen wir einen Blick auf unsere Zeitreihe. 2. Klicken Sie auf der Registerkarte Daten auf Datenanalyse. Hinweis: Klicken Sie hier, um das Analyse-ToolPak-Add-In zu laden. 3. Wählen Sie Verschiebender Durchschnitt aus, und klicken Sie auf OK. 4. Klicken Sie im Feld Eingabebereich auf den Bereich B2: M2. 5. Klicken Sie in das Feld Intervall und geben Sie 6 ein. 6. Klicken Sie in das Feld Ausgabebereich und wählen Sie Zelle B3 aus. 8. Zeichnen Sie ein Diagramm dieser Werte. Erläuterung: Da wir das Intervall auf 6 setzen, ist der gleitende Durchschnitt der Durchschnitt der letzten 5 Datenpunkte und der aktuelle Datenpunkt. Als Ergebnis werden Spitzen und Täler geglättet. Die Grafik zeigt eine zunehmende Tendenz. Excel kann den gleitenden Durchschnitt für die ersten 5 Datenpunkte nicht berechnen, da nicht genügend frühere Datenpunkte vorhanden sind. 9. Wiederholen Sie die Schritte 2 bis 8 für Intervall 2 und Intervall 4. Fazit: Je größer das Intervall, desto mehr werden die Spitzen und Täler geglättet. Je kleiner das Intervall, desto näher sind die gleitenden Durchschnitte zu den eigentlichen Datenpunkten. Hierbei handelt es sich um einen Code, der für diejenigen hilfreich sein sollte, die technische Analysen im Handel nutzen und Strategien in Excel testen möchten. Sie berechnet den einfachen, linear gewichteten und exponentiellen gleitenden Durchschnitt. Weiter werde ich die Schritte zur Erstellung des Formulars und des VBA-Codes vorstellen und erläutern. Einfügen einer UserForm 8211 Name: MAForm Fügen Sie vier Labels aus den Toolbox-Steuerelementen hinzu 8211 Beschriftungen wie im obigen Druckbildschirm Fügen Sie eine ComboBox für die gleitende durchschnittliche Typauswahl hinzu. Es heißt comboTypeMA Fügen Sie zwei RefEdit-Steuerelemente für den Eingabebereich und den Ausgabebereich hinzu. Fügen Sie eine TextBox hinzu, um den gleitenden Durchschnitt zu markieren. Fügen Sie zwei Schaltflächen hinzu: Name: buttonSenden, Beschriftung: Submit und Name: buttonCancel, Caption: Cancel Um die Dropdown-Liste für die MA-Typ-Auswahl zu generieren und das User-Formular zu laden, ein neues Modul Wird mit dem unten stehenden Code eingefügt. Die ComboBox-Elemente, die mit gleitenden Durchschnittswerten und dem Benutzerformular gefüllt werden, werden geladen. Option Explicit Sub loadMAForm () Mit MAFormboTypeMA. RowSource. AddItem Einfach. AddItem Gewichtet. AddItem Exponentielles Ende Mit MAForm. Show End Sub Unten ist der Code, der der Schaltfläche Submit zugeschrieben wird. Private Sub buttonSubmitClick () Dim inputRange, outputRange Als Bereich Der inputRange enthält die Preisreihen, die für die Berechnung der MAs verwendet werden, und der outputRange wird mit den gleitenden Durchschnittswerten gefüllt. Dim inputPeriod As Integer Der gleitende Durchschnittszeitraum wird deklariert. Dim inputAddress, outputAddress As String Die als String deklarierten Eingabe - und Ausgabebereiche. Wenn comboTypeMA. Value ltgt Exponential und comboTypeMA. Value ltgt Einfach und comboTypeMA. Value ltgt Weighted True Dann MsgBox Wählen Sie einen gleitenden Durchschnittstyp aus der Liste aus. RefInputRange. SetFocus Exit Sub Dieser Teil der Prozedur erzwingt die ersten Einschränkungen bezüglich der übermittelten Daten. Wenn der gleitende Durchschnittstyp nicht in der Dropdown-Liste enthalten ist, wird der Vorgang nicht zum nächsten Schritt fortgesetzt, und der Benutzer wird aufgefordert, ihn erneut auszuwählen. ElseIf RefInputRange. Value Then MsgBox Bitte wählen Sie den Eingabebereich. RefInputRange. SetFocus Exit Sub ElseIf RefOutputRange. Value Dann MsgBox Bitte wählen Sie den Ausgabebereich. RefOutputRange. SetFocus Exit Sub ElseIf RefInputPeriod. Value Dann MsgBox Bitte wählen Sie die gleitende durchschnittliche Periode. RefInputPeriod. SetFocus Exit Sub ElseIf Nicht IsNumeric (RefInputPeriod. Value) Dann MsgBox Moving durchschnittliche Periode muss eine Zahl sein. RefInputPeriod. SetFocus Exit Sub End If Weitere Einschränkungen werden erstellt. Eingabebereich, Ausgabebereich und Eingabeperiode dürfen nicht leer sein. Auch die gleitende durchschnittliche Periode muss eine Zahl sein. InputAddress RefInputRange. Value inputRange Range (inputAddress) outputAddress RefOutputRange. Value Set outputRange Range (outputAddress) inputPeriod RefInputPeriod. Value Die Argumente für inputRange und outputRange werden inputAddress und outputAddress als Strings deklariert. If inputRange. Columns. Count ltgt 1 Dann kann der MsgBox-Eingabebereich nur eine Spalte haben. RefInputRange. SetFocus Exit Sub Der inputRange darf nur eine Spalte enthalten. ElseIf inputRange. Rows. Count ltgt outputRange. Rows. Count Dann hat der MsgBox-Ausgabebereich eine andere Anzahl von Zeilen als der Eingabebereich. RefInputRange. SetFocus Exit Sub End If Die inputRange und outputRange müssen eine gleiche Anzahl von Zeilen haben. Dim RowCount Als Integer RowCount inputRange. Rows. Count DimRow als Integer ReDim-Inputarray (1 To RowCount) Für cRow 1 In RowCount inputarray (cRow) inputRange. Cells (cRow, 1).Value Next cRow inputarray wird als Array - und it8217s-Elemente deklariert Entsprechen den Werten aus jeder Zeile des Eingangsbereichs. Wenn inputPeriod gt RowCount Then MsgBox Anzahl der ausgewählten Beobachtungen ist amp RowCount amp und die Periode ist amp inputPeriod amp. Der Eingangsbereich muss eine höhere oder gleiche Anzahl von Elementen haben als der ausgewählte Zeitraum. RefInputRange. SetFocus Exit Sub End Wenn eine weitere Einschränkung hinzugefügt wird 8211 Der Eingabebereich muss eine höhere oder gleiche Menge an Elementen als die Periode haben. Wenn inputPeriod lt 0 dann MsgBox Moving durchschnittliche Periode größer als 0 sein muss. RefInputPeriod. SetFocus Exit Sub End If Die gleitende durchschnittliche Periode muss größer als Null sein. ReDim outputarray (inputPeriod To RowCount) Als Variant werden auch die Array-Dimensionen von outputarray bestimmt. Die untere Schranke des Arrays ist der Wert inputPeriod und die obere Schranke der Wert von RowCount (die Anzahl der Elemente im inputRange). Im folgenden Teil der Prozedur wurde der einfache gleitende Durchschnitt berechnet, wenn die Auswahl für comboTypeMA einfach ist. SMA ----------------------------------------- Wenn comboTypeMA. Value Simple Then Dim i , J Als Integer Dim temp als double Für i inputPeriod zu RowCount temp 0 Für j (i - (inputPeriod - 1)) Zu i temp temp-Inputarray (j) Nächstes j outputarray (i) temp inputPeriod outputRange. Cells (i, 1).Value outputarray (i) Next outputRange. Cells (0, 1).Value SMA (amp inputPeriod amp) Grundsätzlich berechnet die Prozedur den gleitenden Durchschnitt der letzten x Zahlen (x entspricht der inputPeriod), beginnend mit dem Element von Das Inputarray gleich der inputPeriod. Unten ist ein vereinfachtes Beispiel, das jeden Schritt des Verfahrens zeigt. In diesem Beispiel gibt es vier Ziffern (no01, no02, no03 und no04) von Zeile 1 bis Zeile 4 und die gleitende durchschnittliche Periode ist 3. Nach jedem neuen gleitenden Durchschnitt berechnet jede Zelle des outputRange den Wert aus dem Wert Ausgabearray. Und nachdem alle gleitenden Mittelwerte berechnet sind, wird in der Zelle über outputRange ein Titel eingefügt, der den gleitenden Durchschnittstyp und die Periode enthält. Dieser nächste Teil wird den exponentiellen gleitenden Durchschnitt berechnen. EMA ------------------------------------------ ElseIf comboTypeMA. Value Exponential Dann Dim Alpha As Doppeltes alpha 2 (inputPeriod 1) Für j 1 Zu inputPeriod temp temp inputarray (j) Nächstes j outputarray (inputPeriod) temp inputPeriod Zunächst wird der Wert von alpha bestimmt. Da bei der Berechnung der Wert der EMA auf der vorherigen EMA basiert, wird der erste der einfache gleitende Durchschnitt sein. (I - 1) alpha (inputarray (i) - outputarray (i - 1)) Next i Beginnend mit dem zweiten gleitenden Durchschnitt werden sie auf der Grundlage der obigen Formel berechnet: Vorherige EMA plus alpha multipliziert mit der Differenz zwischen der aktuellen Zahl aus dem Eingangsarray und dem vorherigen EMA-Wert. (I, 1).Value outputarray (i) Weiter i outputRange. Cells (0, 1).Value EMA (amp inputPeriod amp) Genau wie der Code für SMA wird das Outputarray gefüllt und Die Zelle über Outputarray repräsentiert den Typ und die Periode des gleitenden Durchschnitts. Unten ist der Code für die Berechnung der gewichteten gleitenden Durchschnitt. WMA ------------------------------------------ ElseIf comboTypeMA. Value Weighted Then Dim Temp2 Als Integer Für i inputPeriod Zu RowCount temp 0 temp2 0 Für j (i - (inputPeriod - 1)) Zu i temp Inputarray (j) (j - i InputPeriod) temp2 temp2 (j - i inputPeriod) (I, 1).Value outputarray (i) Weiter i outputRange. Cells (0, 1).Value WMA (amp inputPeriod amp) End If Die folgende Tabelle enthält die Schritte für die Berechnung der einzelnen Variablen für die WMA-Berechnung. Genau wie im vorherigen Beispiel, in diesem gibt es für Zahlen im inputRange. Und die Eingabeperiode ist 3. Unten ist der endgültige Code der Prozedur, die das Benutzerformular entlädt. Unload MAForm End Sub Die folgende Prozedur ist für die Schaltfläche Abbrechen. Es wird in demselben Modul hinzugefügt. Private Sub buttonCancelClick () Unload MAForm End SubWie zu berechnen EMA in Excel Erfahren Sie, wie Sie die exponentiellen gleitenden Durchschnitt in Excel und VBA berechnen und erhalten eine kostenlose Web-Kalkulationstabelle. Die Kalkulationstabelle holt die Bestandsdaten von Yahoo Finance ab, berechnet die EMA (über dem gewählten Zeitfenster) und stellt die Ergebnisse dar. Der Download-Link ist unten. Die VBA kann angesehen und bearbeitet werden. Aber zuerst disover, warum EMA ist wichtig für technische Händler und Marktanalysten. Historische Aktienkurse werden oft mit vielen hochfrequenten Geräuschen belastet. Das verbirgt oft große Trends. Gleitende Durchschnitte helfen, diese kleinen Schwankungen auszugleichen, so dass Sie einen besseren Einblick in die allgemeine Marktrichtung erhalten. Der exponentielle gleitende Durchschnitt legt mehr Wert auf neuere Daten. Je größer die Zeitspanne, desto geringer die Wichtigkeit der aktuellsten Daten. EMA wird durch diese Gleichung definiert. (Multipliziert mit einem Gewicht) und yesterday8217s EMA (multipliziert mit 1-Gewicht) Sie müssen die EMA-Berechnung mit einer anfänglichen EMA (EMA 0) kickstart. Dies ist gewöhnlich ein einfacher gleitender Durchschnitt der Länge T. Die obige Tabelle gibt beispielsweise die EMA von Microsoft zwischen dem 1. Januar 2013 und dem 14. Januar 2014 an. Technische Händler verwenden oft die Kreuzung zweier gleitender Durchschnitte 8211 mit einer kurzen Zeitskala Und ein anderer mit einer langen Zeitskala 8211, um Buysellsignale zu erzeugen. Häufig werden 12- und 26-Tage-Gleitmittel verwendet. Wenn der kürzere gleitende Durchschnitt über dem längeren gleitenden Durchschnitt steigt, ist der Markt aufwärts tendiert, der dieses ein Kaufsignal ist. Allerdings, wenn die kürzere gleitende Mittelwerte fällt unter den langlebigen Durchschnitt, der Markt sinkt dies ist ein Verkaufssignal. Let8217s erlernen zuerst, wie man EMA using Arbeitsblattfunktionen berechnet. Danach entdecken wir, wie man VBA zur Berechnung von EMA verwendet (und automatisch Plot Diagramme) Berechnen Sie EMA in Excel mit Worksheet-Funktionen Schritt 1. Let8217s sagen, dass wir die 12-Tage-EMA von Exxon Mobil8217s Aktienkurs berechnen wollen. Wir müssen zunächst historische Aktienkurse 8211 erhalten, die Sie mit diesem Bulk-Aktien-Downloader tun können. Schritt 2 . Berechnen Sie den einfachen Durchschnitt der ersten 12 Preise mit Excel8217s Average () - Funktion. In der Screengrab unten, in Zelle C16 haben wir die Formel AVERAGE (B5: B16) wo B5: B16 enthält die ersten 12 schließen Preise Schritt 3. Unterhalb der Zelle, die in Schritt 2 verwendet wird, geben Sie die EMA Formel oben ein Dort haben Sie es You8217ve berechnete erfolgreich einen wichtigen technischen Indikator, EMA, in einer Kalkulationstafel. Berechnen EMA mit VBA Jetzt let8217s mechanisieren die Berechnungen mit VBA, einschließlich der automatischen Erstellung von Plots. Ich hab8217t zeigt Ihnen die volle VBA hier (es8217s in der Kalkulationstabelle unten), aber wir8217ll diskutieren die meisten kritischen Code. Schritt 1. Laden Sie historische Aktienkurse für Ihren Ticker von Yahoo Finance (mit CSV-Dateien) und laden Sie sie in Excel oder verwenden Sie die VBA in dieser Tabelle, um historische Zitate direkt in Excel zu erhalten. Ihre Daten können so aussehen: Schritt 2. Dies ist, wo wir brauchen, um ein paar braincells 8211 wir brauchen, um die EMA-Gleichung in VBA implementieren. Wir können R1C1-Stil verwenden, um programmgesteuert Formeln in einzelne Zellen eingeben. Untersuchen Sie das Code-Snippet unten. Sheets (quotDataquot).Range (quothquot amp EMAWindow 1) quotaverage (R-amp quot EMAWindow - 1 Ampere quotC-3: RC-3) quot Sheets (quotDataquot).Range (quothquot amp EMAWindow 2 amp quot: hquot amp numRows). Formel R1C1 R0C-3 (2 (EMAWindow1))) EMAWindow ist eine Variable, die dem gewünschten Zeitfenster entspricht numRows ist die Gesamtzahl der Datenpunkte 1 (die 8220 18221 ist weil We8217re unter der Annahme, dass die tatsächlichen Bestandsdaten in Zeile 2 beginnen, wird die EMA in Spalte h berechnet. Angenommen, dass EMAWindow 5 und Numrows 100 (dh es gibt 99 Datenpunkte), setzt die erste Zeile eine Formel in die Zelle h6, die das arithmetische Mittel berechnet Der ersten 5 historischen Datenpunkte Die zweite Zeile platziert Formeln in den Zellen h7: h100, die die EMA der verbleibenden 95 Datenpunkte berechnet. Schritt 3 Diese VBA-Funktion erzeugt einen Plot des engen Preises und der EMA. Set EMAChart ActiveSheet. ChartObjects. Add (Links: Range (quota12quot).Left, Breite: 500, Top: Range (quota12quot).Top, Höhe: 300) Mit EMAChart. Chart. Parent. Name quotEMA Chartquot Mit. SeriesCollection. NewSeries. Charttype xlLine. Values ​​Sheets (quotdataquot).Range (quote2: equot amp numRows).XValues ​​Sheets (quotdataquot).Range (quota2: aquot amp numRows).Format. Line. Weight 1.Name quotPricequot End With Mit. SeriesCollection. NewSeries. Charttype xlLine. AxisGroup XlPrimary. Values ​​Sheets (quotdataquot).Range (quoth2: hquot amp numRows).Name quotEMAquot. Border. ColorIndex 1.Format. Line. Weight 1 End With. Axes (xlValue, XlPrimary).HasTitle Wahre. Axes ( xlValue, XlPrimary).AxisTitle. Characters. Text quotPricequot. Axes (xlValue, XlPrimary).MaximumScale WorksheetFunction. Max (Sheets (quotDataquot).Range (quote2: equot amp numRows)).Axes (xlValue, XlPrimary).MinimumScale Int (Work · min (Sheets (quotDataquot).Range (quote2: equot amp numRows))).Legend. Position xlLegendPositionRight. SetElement (msoElementChartTitleAboveChart).ChartTitle. Text quotClose Preis amp quot amp EMAWindow amp quot-Day EMAquot End With Erhalten Sie diese Tabelle für die Voll funktionsfähige Implementierung des EMA-Rechners mit automatischem Download von historischen Daten. 14 Gedanken über ldquo Wie EMA in Excel rdquo Zuletzt berechnen ich einen Ihrer Excel speadsheets heruntergeladen verursacht es mein Antivirus-Programm zu markieren sie als PUP (potentiellen unerwünschtes Programm), dass es offenbar Code war im Download eingebettet, die Adware war, Spyware oder zumindest potenzielle Malware. Es hat buchstäblich Tage, um meinen PC aufzuräumen. Wie kann ich sicherstellen, dass ich nur das Excel herunterladen Leider gibt es unglaubliche Mengen an Malware. Adware und Spywar, und Sie can8217t zu vorsichtig sein. Wenn es eine Frage der Kosten wäre ich nicht unwillig, eine angemessene Summe zu zahlen, aber der Code muss PUP frei sein. Danke, Es gibt keine Viren, Malware oder Adware in meinen Kalkulationstabellen. Ich programmierte sie selbst und ich weiß genau, was in ihnen drin ist. There8217s eine direkte Download-Link zu einer Zip-Datei am unteren Rand eines jeden Punktes (in dunkelblau, fett und unterstrichen). That8217s, was Sie herunterladen sollten. Hover über den Link, und Sie sollten einen direkten Link zu der Zip-Datei zu sehen. Ich möchte meinen Zugang zu Live-Preisen nutzen, um Live-Tech-Indikatoren (dh RSI, MACD usw.) zu schaffen. Ich habe gerade realisiert, um für absolute Genauigkeit brauche ich 250 Tage im Wert von Daten für jede Aktie im Gegensatz zu den 40 Ich habe jetzt. Gibt es irgendwo historische Daten von Dingen wie EMA, Avg Gain, Avg Verlust, der Art, wie ich, dass genauere Daten in meinem Modell verwenden konnte einfach zugreifen Statt 252 Tage von Daten mit dem richtigen 14 Tage RSI bekommen ich nur von außen bekommen könnte ein Sourced Wert für Avg Gain und Avg Verlust und gehen von dort möchte ich mein Modell, um Ergebnisse von 200 Aktien im Gegensatz zu ein paar zu zeigen. Ich möchte mehrere EMAs BB RSI auf dem gleichen Chart plotten und auf Bedingungen basieren, möchte den Handel auslösen. Dies würde für mich als Beispiel Excel Backtester. Können Sie mir helfen, Plot mehrere timeseries auf einem gleichen Diagramm mit dem gleichen Datensatz. Ich weiß, wie die Rohdaten zu einer Excel-Tabelle, aber wie wenden Sie die ema Ergebnisse gelten. Die ema in Excel-Tabellen können auf bestimmte Zeiträume angepasst werden. Danke kliff mendes sagt: Hallo Samir, erstmal danke eine Million für all deine harte Arbeit..outstanding job GOD BLESS. Ich wollte nur wissen, wenn ich zwei ema auf Diagramm gezeichnet haben, sagen wir 20ema und 50ema, wenn sie kreuzen, entweder oben oder unten kann das Wort KAUF oder VERKAUF an der Kreuzung Punkt erscheinen wird mir sehr helfen. Kliff mendes texas I8217m, die an einer einfachen backtesting Kalkulationstabelle arbeiten, die buy-sell Signale erzeugen. Geben Sie mir einige time8230 Großer Job auf Diagrammen und Erklärungen. Ich habe eine Frage though. Wenn ich das Anfangsdatum zu einem Jahr später ändere und neueste EMA Daten sehe, ist es merklich unterschiedlich, als wenn ich den gleichen EMA Zeitraum mit einem früheren Anfangsdatum für die gleiche neue Datumsreferenz verwende. Ist das, was Sie erwarten. Es macht es schwierig, bei veröffentlichten Diagrammen mit EMAs angezeigt und nicht sehen, das gleiche Diagramm. Shivashish Sarkar sagt: Hallo, ich bin mit Ihrem EMA-Rechner und ich wirklich zu schätzen wissen. Allerdings habe ich festgestellt, dass der Taschenrechner nicht in der Lage, die Graphen für alle Unternehmen (es zeigt Run time error 1004). Können Sie bitte erstellen Sie eine aktualisierte Version Ihres Rechners, in dem neue Unternehmen werden einbezogen werden Leave a Reply Cancel reply Wie die kostenlose Spreadsheets Master Knowledge Base Aktuelle Beiträge

No comments:

Post a Comment