Tuesday, 10 January 2017

Online Zeit Serie Glättung Algorithmus Forex

Hierbei handelt es sich um drei Befragungen, die den Einsatz von maschinellem Lernen in der Zeitreihenprognose untersuchen: Ein empirischer Vergleich maschineller Lernmodelle für die Zeitreihenprognose von Ahmed, Atiya, El Gayar und El-shishiny bietet einen empirischen Vergleich mehrerer maschineller Lernalgorithmen, einschließlich: . Multilayer Perceptron, Bayessche neuronale Netze, radiale Basisfunktionen, generalisierte neuronale Netze der Regression (auch Kernelregression genannt), K-nächste Nachbarregression, CART-Regressionsbäume, Unterstützungsvektorregression und Gaußsche Prozesse. . Dass künstliche neuronale Netze (ANNs) die dominante maschinelle Lerntechnik in diesem Bereich sind. . Die Formalisierung von einstufigen Prognoseproblemen als überwachte Lernaufgaben, die Diskussion lokaler Lerntechniken als ein effektives Werkzeug für den Umgang mit zeitlichen Daten und die Rolle der Prognosestrategie, wenn wir von einem Schritt auf eine mehrstufige Prognose übergehen. MetaTrader 5 - Statistik und Analyse Zeitreihenvorhersage mit Exponentialglättung Einleitung Zurzeit gibt es eine Vielzahl von bekannten Prognosemethoden, die nur auf der Analyse vergangener Werte einer Zeitreihenfolge basieren, dh Methoden, die in der technischen Analyse übliche Prinzipien verwenden . Das Hauptinstrument dieser Verfahren ist das Extrapolationsschema, bei dem die bei einer bestimmten Zeitverzögerung identifizierten Sequenzeigenschaften ihre Grenzen überschreiten. Gleichzeitig wird davon ausgegangen, dass die Sequenz-Eigenschaften in der Zukunft die gleichen wie in der Vergangenheit und Gegenwart sein werden. Ein komplexeres Extrapolationsschema, das eine Untersuchung der Dynamik von Änderungen der Charakteristik der Sequenz unter gebührender Berücksichtigung solcher Dynamiken innerhalb des Prognoseintervalls beinhaltet, wird in der Prognose weniger häufig verwendet. Die bekanntesten Prognosemethoden, die auf einer Extrapolation basieren, sind unter anderem die autoregressiven integrierten Moving Average Modells (ARIMA). Die Beliebtheit dieser Methoden ist vor allem auf die Arbeiten von Box und Jenkins zurückzuführen, die ein integriertes ARIMA-Modell vorgeschlagen und entwickelt haben. Es gibt natürlich andere Modelle und Prognosemethoden außer den Modellen von Box und Jenkins eingeführt. Dieser Artikel wird kurz auf einfachere Modelle - exponentielle Glättung Modelle von Holt und Brown vor dem Erscheinen von Arbeiten von Box und Jenkins vorgeschlagen. Trotz der einfacheren und klareren mathematischen Werkzeuge führt die Prognose unter Verwendung exponentieller Glättungsmodelle oft zu Ergebnissen, die mit den Ergebnissen des ARIMA-Modells vergleichbar sind. Das ist kaum verwunderlich, da exponentielle Glättungsmodelle ein Spezialfall des ARIMA-Modells sind. Mit anderen Worten, jedes exponentielle Glättungsmodell, das in diesem Artikel untersucht wird, hat ein entsprechendes äquivalentes ARIMA-Modell. Diese äquivalenten Modelle werden in dem Artikel nicht berücksichtigt und nur zur Information erwähnt. Es ist bekannt, dass die Prognose in jedem Einzelfall einen individuellen Ansatz erfordert und in der Regel eine Reihe von Prozeduren beinhaltet. Analyse der Zeitfolge für fehlende Werte und Ausreißer. Einstellung dieser Werte. Identifizierung des Trends und seiner Art. Bestimmung der Sequenzperiodizität. Prüfen Sie die Stationarität der Sequenz. Sequenzvorverarbeitung (Logarithmen, Differenzierung usw.). Modellauswahl. Modellparameterbestimmung. Prognose basierend auf dem ausgewählten Modell. Modellvorhersagegenauigkeitsbewertung. Analyse der Fehler des ausgewählten Modells. Bestimmung der Angemessenheit des gewählten Modells und ggf. Austausch des Modells und Rückkehr zu den vorhergehenden Posten. Dies ist bei weitem nicht die vollständige Liste der Maßnahmen für eine effektive Prognose erforderlich. Es sollte betont werden, dass die Modellparameterbestimmung und der Erhalt der Prognoseergebnisse nur ein kleiner Teil des allgemeinen Prognoseprozesses sind. Aber es scheint unmöglich, die ganze Bandbreite der Probleme in der einen oder anderen Weise mit der Prognose in einem Artikel zu decken. Dieser Artikel behandelt daher nur exponentielle Glättungsmodelle und verwendet nicht vorverarbeitete Währungszitate als Testsequenzen. Begleitende Fragen können in dem Artikel zwar nicht vermieden werden, doch werden sie nur insofern berührt, als sie für die Überprüfung der Modelle erforderlich sind. 1. Stationarität Der Begriff der Extrapolation impliziert, dass die zukünftige Entwicklung des untersuchten Prozesses die gleiche wie in der Vergangenheit und Gegenwart sein wird. Mit anderen Worten, es geht um die Stationarität des Prozesses. Stationäre Prozesse sind aus Prognoseperspektive sehr attraktiv, aber sie existieren leider nicht in der Natur, da jeder reale Prozeß sich im Laufe seiner Entwicklung ändern kann. Reale Prozesse können im Laufe der Zeit deutlich unterschiedliche Erwartungen, Varianzen und Verteilungen aufweisen, aber die Prozesse, deren Eigenschaften sich sehr langsam ändern, können wahrscheinlich auf stationäre Prozesse zurückgeführt werden. Sehr langsam bedeutet in diesem Fall, daß Änderungen der Prozeßcharakteristiken innerhalb des endlichen Beobachtungsintervalls so unbedeutend erscheinen, daß solche Änderungen vernachlässigt werden können. Es ist klar, dass je kürzer das verfügbare Beobachtungsintervall (kurze Stichprobe), desto höher die Wahrscheinlichkeit, die falsche Entscheidung hinsichtlich der Stationarität des gesamten Prozesses zu treffen. Auf der anderen Seite kann die Verringerung der Stichprobengröße in einigen Fällen zur Erhöhung der Genauigkeit dieser Prognose führen, wenn wir uns eher für den Zustand des Prozesses interessieren, der zu einem späteren Zeitpunkt eine kurzfristige Prognose durchführt. Wenn der Prozeß Änderungen unterworfen ist, werden die Sequenzparameter, die innerhalb des Beobachtungsintervalls bestimmt werden, außerhalb seiner Grenzen verschieden sein. Je länger das Prognoseintervall, desto stärker ist die Auswirkung der Variabilität der Sequenzmerkmale auf den Prognosefehler. Aufgrund dieser Tatsache müssen wir uns auf eine kurzfristige Prognose beschränken und nur eine signifikante Reduktion des Prognoseintervalls erlaubt, dass die sich langsam verändernden Sequenzmerkmale nicht zu erheblichen Prognosefehlern führen werden. Außerdem führt die Variabilität der Sequenzparameter dazu, dass der Wert, der bei der Schätzung durch das Beobachtungsintervall erhalten wird, gemittelt wird, da die Parameter nicht innerhalb des Intervalls konstant bleiben. Die erhaltenen Parameterwerte sind daher nicht auf den letzten Zeitpunkt dieses Intervalls bezogen, sondern reflektieren einen bestimmten Mittelwert davon. Leider ist es unmöglich, dieses unangenehme Phänomen vollständig zu eliminieren, aber es kann verringert werden, wenn die Länge des Beobachtungsintervalls, das in der Modellparameterschätzung (Studienintervall) involviert ist, soweit wie möglich verringert wird. Gleichzeitig kann das Untersuchungsintervall nicht auf unbestimmte Zeit verkürzt werden, da es, wenn es extrem reduziert wird, sicherlich die Genauigkeit der Sequenzparameterschätzung verringern wird. Man sollte einen Kompromiss zwischen der Wirkung von Fehlern, die mit der Variabilität der Sequenzcharakteristiken verbunden sind, und einer Erhöhung der Fehler aufgrund der extremen Verringerung des Untersuchungsintervalls suchen. Alle oben genannten Bedingungen gelten vollumfänglich für die Prognose unter Verwendung exponentieller Glättungsmodelle, da sie auf der Annahme der Stationarität von Prozessen beruhen, wie ARIMA-Modelle. Nichtsdestoweniger werden wir der Einfachheit halber nachfolgend konventionell davon ausgehen, daß die Parameter aller betrachteten Sequenzen innerhalb des Beobachtungsintervalls variieren, aber so langsam, daß diese Änderungen vernachlässigt werden können. Der Artikel befasst sich daher mit Fragen der kurzfristigen Prognose von Sequenzen mit sich langsam verändernden Charakteristika auf der Basis exponentieller Glättungsmodelle. Die kurzfristige Prognose ist in diesem Fall eine Prognose für ein, zwei oder mehr Zeitintervalle voraus, anstatt für einen Zeitraum von weniger als einem Jahr zu prognostizieren, wie es in der Regel in der Volkswirtschaft verstanden wird. 2. Testsequenzen Beim Schreiben dieses Artikels wurden zuvor die EURRUR-, EURUSD-, USDJPY - und XAUUSD-Zitate für M1, M5, M30 und H1 verwendet. Jede der gespeicherten Dateien enthält 1100 offene Werte. Der älteste Wert befindet sich am Anfang der Datei und der letzte am Ende. Der letzte in der Datei gespeicherte Wert entspricht dem Zeitpunkt der Erstellung der Datei. Dateien, die Testsequenzen enthalten, wurden mit dem HistoryToCSV. mq5-Skript erstellt. Die Dateien und das Skript, mit denen sie erstellt wurden, befinden sich am Ende des Artikels im Files. zip Archiv. Wie bereits erwähnt, werden die gespeicherten Anführungszeichen in diesem Artikel ohne Vorverarbeitung verwendet, trotz der offensichtlichen Probleme, auf die ich Sie aufmerksam machen möchte. Zum Beispiel, EURRURH1 Zitate während des Tages enthalten von 12 bis 13 Bar, XAUUSD Zitate am Freitag enthalten eine Bar weniger als an anderen Tagen. Diese Beispiele zeigen, dass die Anführungszeichen mit einem unregelmßigen Abtastintervall erzeugt werden, was für Algorithmen völlig unakzeptabel ist, die für die Arbeit mit korrekten Zeitabschnitten ausgelegt sind, die ein einheitliches Quantisierungsintervall nahelegen. Auch wenn die fehlenden Anführungswerte durch Extrapolation wiedergegeben werden, bleibt die Frage nach dem fehlenden Angebot an Wochenenden offen. Wir können annehmen, dass die Ereignisse, die in der Welt am Wochenende auftreten, die gleichen Auswirkungen auf die Weltwirtschaft wie Wochentag Ereignisse haben. Revolutionen, Naturereignisse, hochkarätige Skandale, Regierungswechsel und andere mehr oder weniger große Ereignisse dieser Art können jederzeit auftreten. Wenn ein solches Ereignis am Samstag stattfand, hätte es kaum einen geringeren Einfluss auf die Weltmärkte, als es an einem Wochentag geschehen war. Es sind vielleicht diese Ereignisse, die zu Lücken in Zitaten führen, die so häufig am Ende der Arbeitswoche beobachtet werden. Anscheinend geht die Welt nach eigenen Regeln weiter, auch wenn FOREX nicht funktioniert. Es ist noch unklar, ob die Werte in den Anführungszeichen, die den Wochenenden entsprechen, die für eine technische Analyse bestimmt sind, vervielfältigt werden sollten und welchen Nutzen sie haben könnten. Offensichtlich sind diese Fragen über den Rahmen dieses Artikels hinaus, aber auf den ersten Blick scheint eine Sequenz ohne Lücken für die Analyse geeigneter zu sein, zumindest hinsichtlich der Erfassung zyklischer (saisonaler) Komponenten. Die Bedeutung der Vorbereitung der Daten für die weitere Analyse ist in unserem Fall kaum zu überschätzen, da es sich um ein weitgehend unabhängiges Problem handelt, da Zitate, wie sie im Terminal erscheinen, für eine technische Analyse im Allgemeinen nicht wirklich geeignet sind. Abgesehen von den oben genannten Lücke-Probleme, gibt es eine ganze Reihe von anderen Problemen. Bei der Bildung der Anführungszeichen wird beispielsweise ein fester Zeitpunkt den Öffnungs - und Schließwerten zugewiesen, die nicht zu ihm gehören, diese Werte entsprechen der Tickbildungszeit anstelle eines festen Moments eines ausgewählten Zeitrahmendiagramms, wohingegen es allgemein bekannt ist, dass Zecken Sind manchmal sehr selten. Ein anderes Beispiel ist in völliger Abweichung vom Abtasttheorem zu sehen, da niemand garantieren kann, daß die Abtastrate sogar innerhalb eines Minutenintervalls dem obigen Satz genügt (ganz zu schweigen von anderen größeren Intervallen). Des Weiteren sollte man das Vorhandensein eines variablen Spread berücksichtigen, der in manchen Fällen den Quotierungswerten überlagert werden kann. Lassen Sie uns jedoch lassen Sie diese Fragen aus dem Geltungsbereich dieses Artikels und wieder auf das primäre Thema. 3. Exponentialglättung Betrachten wir zunächst das einfachste Modell, X (t) (simuliertes) Verfahren, L (t) variables Prozessniveau, r (t) null mittlere Zufallsvariable. Wie man sehen kann, besteht dieses Modell aus der Summe zweier Komponenten, die wir besonders an der Prozessebene L (t) interessieren, und wird versuchen, es auszumachen. Es ist bekannt, daß die Mittelung einer zufälligen Sequenz zu einer verminderten Varianz führen kann, d. H. Zu einem verringerten Bereich ihrer Abweichung vom Mittelwert. Wir können also annehmen, dass wir, wenn das von unserem einfachen Modell beschriebene Verfahren einer Mittelung (Glättung) ausgesetzt ist, nicht in der Lage sein wird, eine Zufallskomponente r (t) vollständig loszuwerden, aber wir können es zumindest erheblich schwächen, Zielpegel L (t). Dazu verwenden wir eine einfache exponentielle Glättung (SES). In dieser wohlbekannten Formel wird der Glättungsgrad durch einen von 0 bis 1 einstellbaren Alpha-Koeffizienten definiert. Wenn alpha auf Null gesetzt wird, haben neue Eingangswerte der Eingangsfolge X keine Wirkung auf das Glättungsergebnis. Das Glättungsergebnis für jeden Zeitpunkt wird ein konstanter Wert sein. Demzufolge wird in extremen Fällen wie diesem die störende Zufallskomponente vollständig unterdrückt, aber das betrachtete Prozessniveau wird auf eine gerade horizontale Linie geglättet. Wenn der Alpha-Koeffizient auf Eins gesetzt ist, wird die Eingabesequenz nicht durch eine Glättung beeinträchtigt. Der betrachtete Pegel L (t) wird in diesem Fall nicht verzerrt und die Zufallskomponente wird auch nicht unterdrückt. Es ist intuitiv klar, dass bei der Auswahl des Alphawertes gleichzeitig die gegensätzlichen Anforderungen erfüllt werden müssen. Einerseits muss der Alphawert nahe Null sein, um die Zufallskomponente r (t) wirksam zu unterdrücken. Andererseits ist es ratsam, den Alpha-Wert in der Nähe von Einheit zu setzen, um die L (t) - Komponente, die wir so interessieren, nicht zu verzerren. Um den optimalen Alphawert zu erhalten, müssen wir ein Kriterium identifizieren, nach dem ein solcher Wert vorliegt Kann optimiert werden. Bei der Bestimmung dieses Kriteriums, denken Sie daran, dass dieser Artikel befasst sich mit Prognose und nicht nur Glättung von Sequenzen. In diesem Fall ist es hinsichtlich des einfachen exponentiellen Glättungsmodells üblich, den Wert, der zu einem gegebenen Zeitpunkt als Prognose für eine beliebige Anzahl von Schritten erhalten wird, zu berücksichtigen. Daher wird die Prognose des Sequenzwerts zum Zeitpunkt t eine einstufige Prognose des vorherigen Schrittes sein. In diesem Fall kann ein Prognosefehler als ein Kriterium für die Optimierung des Alpha-Koeffizienten verwendet werden Wert Durch Minimieren der Quadratsumme dieser Fehler über die gesamte Probe können wir den optimalen Wert des Alphakoeffizienten für eine gegebene Sequenz bestimmen. Der beste Alphawert ist natürlich derjenige, bei dem die Quadratsumme der Fehler minimal wäre. Fig. 1 zeigt eine Auftragung der Summe von Quadraten von Prognosefehlern mit einem Schritt vor dem Alpha-Koeffizientenwert für ein Fragment der Testsequenz USDJPY M1. Abbildung 1. Einfache exponentielle Glättung Das Minimum auf dem resultierenden Plot ist kaum erkennbar und liegt nahe dem Alpha-Wert von etwa 0,8. Aber ein solches Bild ist nicht immer der Fall bei der einfachen exponentiellen Glättung. Beim Versuch, den optimalen Alpha-Wert für Testsequenz-Fragmente zu erhalten, die in dem Artikel verwendet werden, werden wir öfter als nicht eine Handlung erhalten, die kontinuierlich zur Einheit fällt. Solche hohen Werte des Glättungskoeffizienten deuten darauf hin, dass dieses einfache Modell für die Beschreibung unserer Testsequenzen (Anführungszeichen) nicht völlig ausreichend ist. Es ist entweder, dass sich die Prozessebene L (t) zu schnell ändert oder ein Trend vorliegt. Lassen Sie uns unser Modell durch Hinzufügen einer weiteren Komponente etwas komplizieren. Es ist bekannt, dass lineare Regressionskoeffizienten durch Doppelglättung einer Sequenz ermittelt werden können: Für die auf diese Weise erhaltenen Koeffizienten a1 und a2 ist die m-step-ahead-Prognose zum Zeitpunkt t gegeben Wird gleich sein Es sollte angemerkt werden, dass derselbe Alpha-Koeffizient in den obigen Formeln für die erste und wiederholte Glättung verwendet wird. Dieses Modell wird als additives Ein-Parameter-Modell des linearen Wachstums bezeichnet. Wir zeigen den Unterschied zwischen dem einfachen Modell und dem Modell des linearen Wachstums. Man nehme an, daß der betrachtete Prozeß für eine lange Zeit eine konstante Komponente darstellt, d. h. er erschien auf dem Diagramm als gerade horizontale Linie, aber irgendwann begann ein linearer Trend zu entstehen. Eine Prognose für diesen Prozeß, der unter Verwendung der oben erwähnten Modelle durchgeführt wurde, ist in Fig. 2 gezeigt. Fig. 2. Modellvergleich Wie man sehen kann, ist das einfache exponentielle Glättungsmodell deutlich hinter der linear variierenden Eingangsfolge und die Prognose, die mit diesem Modell durchgeführt wird, bewegt sich noch weiter weg. Wir können ein sehr unterschiedliches Muster sehen, wenn das lineare Wachstumsmodell verwendet wird. Wenn der Trend auftaucht, ist dieses Modell so, als versuche er, die linear veränderliche Sequenz heranzuziehen, und seine Prognose liegt näher an der Richtung der variierenden Eingabewerte. Wenn der Glättungskoeffizient in dem gegebenen Beispiel höher war, wäre das lineare Wachstumsmodell in der Lage, das Eingangssignal über die gegebene Zeit zu erreichen, und seine Prognose würde nahezu mit der Eingangssequenz übereinstimmen. Trotz der Tatsache, dass das lineare Wachstumsmodell im stationären Zustand in Gegenwart eines linearen Trends gute Ergebnisse liefert, ist es leicht zu sehen, dass es eine gewisse Zeit dauert, bis es den Trend wieder aufholt. Daher wird es immer eine Lücke zwischen dem Modell und der Eingabesequenz geben, wenn sich die Richtung eines Trends häufig ändert. Außerdem, wenn der Trend nichtlinear wächst, sondern statt dem quadratischen Gesetz folgt, wird das lineare Wachstumsmodell nicht in der Lage sein, es zu erreichen. Aber trotz dieser Nachteile ist dieses Modell vorteilhafter als das einfache exponentielle Glättungsmodell in Gegenwart eines linearen Trends. Wie bereits erwähnt, verwendeten wir ein Ein-Parameter-Modell des linearen Wachstums. Um den optimalen Wert des Alpha-Parameters für ein Fragment der Testsequenz USDJPY M1 zu finden, wollen wir ein Diagramm der Summe von Quadraten von Prognosefehlern im Vergleich zu Alpha-Koeffizienten erstellen. Dieses Diagramm, das auf der Basis des gleichen Sequenzfragments wie das in Fig. 1 aufgebaut ist, ist in Fig. 3 dargestellt. Fig. 3. Lineares Wachstumsmodell Im Vergleich mit dem Ergebnis in Fig. 1 hat der optimale Wert des Alpha-Koeffizienten in diesem Fall Auf etwa 0,4 gesenkt. Die erste und die zweite Glättung haben die gleichen Koeffizienten in diesem Modell, obwohl theoretisch ihre Werte unterschiedlich sein können. Das lineare Wachstumsmodell mit zwei verschiedenen Glättungskoeffizienten wird weiter untersucht. Beide exponentiellen Glättungsmodelle, die wir in Betracht ziehen, haben ihre Analoga in MetaTrader 5, wo sie in Form von Indikatoren vorliegen. Dies sind bekannte EMA und DEMA, die nicht für die Prognose, sondern für die Glättung von Sequenzwerten ausgelegt sind. Es ist zu beachten, dass bei Verwendung des DEMA-Indikators anstelle des einstufigen Prognosewerts ein dem a1-Koeffizient entsprechender Wert angezeigt wird. Der a2-Koeffizient (siehe die obigen Formeln für das lineare Wachstumsmodell) wird in diesem Fall nicht berechnet oder verwendet. Zusätzlich wird der Glättungskoeffizient in Bezug auf die äquivalente Periode n berechnet. Zum Beispiel entspricht alpha gleich 0,8, wobei n ungefähr gleich 2 ist und wenn alpha 0,4 ist, ist n gleich 4. 4. Anfangswerte Wie bereits erwähnt Wird ein Glättungskoeffizientenwert auf die eine oder andere Weise durch Anwendung einer exponentiellen Glättung erhalten. Aber das scheint unzureichend. Da bei der exponentiellen Glättung der aktuelle Wert auf der Grundlage der vorherigen berechnet wird, gibt es eine Situation, in der dieser Wert zum Zeitpunkt null noch nicht existiert. Mit anderen Worten, der Anfangswert von S oder S1 und S2 im linearen Wachstumsmodell soll in irgendeiner Weise zum Zeitpunkt null berechnet werden. Das Problem des Erhaltens von Anfangswerten ist nicht immer leicht zu lösen. Wenn wir (wie im Fall der Verwendung von Anführungszeichen in MetaTrader 5) eine sehr lange Geschichte haben, wird die exponentielle Glättungskurve, wenn die Anfangswerte ungenau bestimmt worden sind, die Zeit haben, um durch einen aktuellen Punkt zu stabilisieren, nachdem wir unseren Anfangsfehler korrigiert haben. Dies erfordert etwa 10 bis 200 (und manchmal sogar mehr) Perioden in Abhängigkeit von dem Glättungskoeffizientenwert. In diesem Fall wäre es ausreichend, die Anfangswerte grob zu schätzen und den exponentiellen Glättungsprozeß 200-300 Perioden vor der Zielzeitperiode zu starten. Es wird jedoch schwieriger, wenn die verfügbare Probe z. B. 100 Werte. In der Literatur gibt es verschiedene Empfehlungen zur Wahl der Ausgangswerte. Beispielsweise kann der Anfangswert in der einfachen exponentiellen Glättung dem ersten Element in einer Sequenz gleichgesetzt werden oder als der Mittelwert von drei bis vier Anfangselementen in einer Sequenz berechnet werden, um zufällige Ausreißer zu glätten. Die Anfangswerte S1 und S2 im linearen Wachstumsmodell können auf der Grundlage der Annahme bestimmt werden, dass der Anfangswert der Prognosekurve gleich dem ersten Element in einer Sequenz ist und die Steigung der linearen Tendenz Null sein muss. Man kann noch mehr Empfehlungen in verschiedenen Quellen hinsichtlich der Wahl der Anfangswerte finden, aber keiner von ihnen kann das Fehlen von wahrnehmbaren Fehlern in frühen Stadien des Glättungsalgorithmus sicherstellen. Besonders bemerkenswert ist die Verwendung von Glättungskoeffizienten mit niedrigem Wert, wenn eine große Anzahl von Perioden erforderlich ist, um einen stationären Zustand zu erreichen. Um daher die Auswirkung von Problemen, die mit der Wahl der Anfangswerte (insbesondere für kurze Sequenzen) verbunden sind, zu minimieren, verwenden wir manchmal ein Verfahren, das eine Suche nach solchen Werten beinhaltet, die zu dem minimalen Prognosefehler führen werden. Es ist eine Frage der Berechnung eines Vorhersagefehlers für die Anfangswerte, die in kleinen Schritten über die gesamte Sequenz variieren. Die geeignetste Variante kann nach der Berechnung des Fehlers innerhalb des Bereichs aller möglichen Kombinationen der Anfangswerte ausgewählt werden. Dieses Verfahren ist jedoch sehr mühsam und erfordert viele Berechnungen und wird fast nie in seiner direkten Form verwendet. Das beschriebene Problem hat mit Optimierung oder Suche nach einem minimalen multivariablen Funktionswert zu tun. Solche Probleme können unter Verwendung verschiedener Algorithmen gelöst werden, die entwickelt wurden, um den Umfang der erforderlichen Berechnungen beträchtlich zu reduzieren. Wir werden auf die Probleme der Optimierung von Glättungsparametern und Anfangswerten bei der Prognose etwas später zurückkommen. 5. Prognosegenauigkeitsbewertung Prognoseverfahren und Auswahl der Modellanfangswerte oder - parameter führen zu dem Problem der Schätzung der Prognosegenauigkeit. Die Bewertung der Genauigkeit ist auch wichtig, wenn man zwei verschiedene Modelle vergleicht oder die Konsistenz der erhaltenen Prognose bestimmt. Es gibt eine große Anzahl von bekannten Schätzungen für die Prognosegenauigkeitsbewertung, aber die Berechnung von jedem von ihnen erfordert das Wissen des Prognosefehlers bei jedem Schritt. Wie bereits erwähnt, ist ein einstufiger Prognosefehler zum Zeitpunkt t gleich Wahrscheinlich ist die häufigste Prognoseschätzung der mittlere quadratische Fehler (MSE): wobei n die Anzahl der Elemente in einer Sequenz ist. Extreme Empfindlichkeit gegenüber gelegentlichen Einzelfehlern von großem Wert wird manchmal als Nachteil von MSE aufgezeigt. Sie ergibt sich aus der Tatsache, dass der Fehlerwert bei der Berechnung von MSE quadriert wird. Alternativ ist es sinnvoll, in diesem Fall den mittleren Absolutfehler (MAE) zu verwenden. Der quadratische Fehler wird hier durch den absoluten Wert des Fehlers ersetzt. Es wird angenommen, dass die mit MAE erhaltenen Schätzungen stabiler sind. Beide Schätzungen sind für z. B. Bewertung der Prognosegenauigkeit der gleichen Sequenz unter Verwendung verschiedener Modellparameter oder verschiedener Modelle, aber sie scheinen wenig zum Vergleich der Prognoseergebnisse zu verwenden, die in verschiedenen Sequenzen erhalten werden. Außerdem legen die Werte dieser Schätzungen nicht ausdrücklich die Qualität des Prognoseergebnisses nahe. Zum Beispiel können wir nicht sagen, ob die erhaltene MAE von 0,03 oder irgendein anderer Wert gut oder schlecht ist. Um die Prognosegenauigkeit verschiedener Sequenzen vergleichen zu können, können Relativschätzungen RelMSE und RelMAE verwendet werden: Die erhaltenen Schätzwerte der Prognosegenauigkeit werden hier durch die jeweiligen Schätzungen unter Verwendung der Testmethode der Prognose dividiert. Als Testmethode ist es geeignet, die sogenannte naive Methode zu verwenden, die nahelegt, dass der zukünftige Wert des Prozesses gleich dem aktuellen Wert ist. Wenn der Mittelwert der Prognosefehler dem Wert der mit der naiven Methode erhaltenen Fehler entspricht, ist der relative Schätzwert gleich Eins. Wenn der relative Schätzwert kleiner als Eins ist, bedeutet dies, dass im Mittel der prognostizierte Fehlerwert kleiner als bei der naiven Methode ist. Mit anderen Worten, die Genauigkeit der Prognoseergebnisse rangiert über die Genauigkeit der naiven Methode. Und umgekehrt, wenn der relative Schätzwert mehr als eins ist, ist die Genauigkeit der Prognoseergebnisse im Durchschnitt schlechter als in der naiven Prognosemethode. Diese Schätzungen eignen sich auch zur Beurteilung der Prognosegenauigkeit für zwei oder mehr Schritte. Ein einstufiger Prognosefehler in Berechnungen muss nur mit dem Wert der Prognosefehler für die entsprechende Anzahl von Schritten ersetzt werden. Beispielsweise enthält die folgende Tabelle Prognosefehler, die mit Hilfe von RelMAE in einem Ein-Parameter-Modell des linearen Wachstums abgeschätzt wurden. Die Fehler wurden unter Verwendung der letzten 200 Werte jeder Testsequenz berechnet. Tabelle 1. Einstufige Prognosefehler, die mit Hilfe der RelMAE-RelmaE-Schätzung geschätzt werden, ermöglichen es, die Effektivität einer ausgewählten Methode bei der Prognose verschiedener Sequenzen zu vergleichen. Wie die Ergebnisse in Tabelle 1 zeigen, war unsere Prognose nie genauer als die naive Methode - alle RelMAE-Werte sind mehr als eins. 6. Additive Modelle Es gab ein Modell früher in dem Artikel, der die Summe aus Prozessebene, linearem Trend und einer Zufallsvariablen umfasste. Wir werden die Liste der in diesem Artikel beschriebenen Modelle erweitern, indem wir ein weiteres Modell hinzufügen, das zusätzlich zu den obigen Komponenten eine zyklische, saisonale Komponente enthält. Exponentielle Glättungsmodelle, die alle Komponenten als Summe umfassen, werden als additive Modelle bezeichnet. Abgesehen von diesen Modellen gibt es multiplikative Modelle, bei denen ein, mehr oder alle Komponenten als Produkt enthalten sind. Lassen Sie uns mit der Überprüfung der Gruppe der additiven Modelle fortfahren. Der einstufige Vorhersagefehler wurde wiederholt in dem Artikel erwähnt. Dieser Fehler muss in nahezu jeder Anwendung berechnet werden, die mit der Prognose auf der Grundlage einer exponentiellen Glättung zusammenhängt. Wenn man den Wert des Prognosefehlers kennt, können die Formeln für die oben beschriebenen exponentiellen Glättungsmodelle in einer etwas anderen Form (fehlerkorrigierende Form) dargestellt werden. Die Form der Modelldarstellung, die wir in unserem Fall verwenden werden, enthält einen Fehler in ihren Ausdrücken, der teilweise oder vollständig zu den zuvor erhaltenen Werten addiert wird. Solche Repräsentation wird das additive Fehlermodell genannt. Exponentielle Glättungsmodelle können auch in einer multiplikativen Fehlerform ausgedrückt werden, die in diesem Artikel jedoch nicht verwendet wird. Lassen Sie uns einen Blick auf additive exponentielle Glättungsmodelle werfen. Einfache Exponentialglättung: Additives lineares Wachstumsmodell: Im Gegensatz zum früher eingeführten einparametrischen linearen Wachstumsmodell werden hier zwei verschiedene Glättungsparameter verwendet. Lineares Wachstumsmodell mit Dämpfung: Die Bedeutung einer solchen Dämpfung ist, dass die Trendneigung bei jedem nachfolgenden Prognoseschritt in Abhängigkeit von dem Wert des Dämpfungskoeffizienten zurücktritt. Dieser Effekt wird in Abbildung 4 gezeigt. Abbildung 4. Dämpfungskoeffizienten-Effekt Wie in der Abbildung zu sehen ist, wird bei einer Prognose ein abnehmender Wert des Dämpfungskoeffizienten dazu führen, dass der Trend schneller abfällt und somit das lineare Wachstum zunimmt Mehr und mehr gedämpft werden. Durch das Hinzufügen einer saisonalen Komponente als Summe für jedes dieser drei Modelle erhalten wir drei weitere Modelle. Einfaches Modell mit additiver Saisonalität: Lineares Wachstumsmodell mit additiver Saisonalität: Lineares Wachstumsmodell mit Dämpfung und additiver Saisonalität: Es gibt auch ARIMA-Modelle, die den Modellen mit Saisonalität äquivalent sind, aber sie werden hier weggelassen, da sie praktisch keine praktische Bedeutung haben werden. Die in den angegebenen Formeln verwendeten Notationen sind wie folgt: Es ist leicht zu sehen, dass die Formeln für das zuletzt gelieferte Modell alle sechs betrachteten Varianten umfassen. Wenn in den Formeln für das lineare Wachstumsmodell mit Dämpfung und additiver Saisonalität die Saisonalität bei der Prognose nicht beachtet wird. Weiterhin wird, wo ein lineares Wachstumsmodell erzeugt wird und wo wir ein lineares Wachstumsmodell mit Dämpfung erhalten. Das einfache exponentielle Glättungsmodell entspricht. Bei der Anwendung der Modelle, die Saisonalität einschließen, sollte die Anwesenheit von Zyklizität und Periode des Zyklus zunächst unter Verwendung irgendeiner verfügbaren Methode bestimmt werden, um diese Daten weiter für die Initialisierung von Werten von Saisonindizes zu verwenden. Wir haben es nicht geschafft, eine beträchtliche stabile Zyklizität in den Fragmenten der Testsequenzen zu detektieren, die in unserem Fall verwendet werden, wo die Prognose über kurze Zeitintervalle erfolgt. Daher in diesem Artikel werden wir nicht geben relevante Beispiele und erweitern die Merkmale im Zusammenhang mit Saisonalität. Um die Wahrscheinlichkeitsvorhersageintervalle in Bezug auf die betrachteten Modelle zu bestimmen, verwenden wir analytische Ableitungen, die in der Literatur gefunden werden. 3. Der Mittelwert der Quadratsumme von einstufigen Prognosefehlern, berechnet über die gesamte Stichprobe der Größe n Wird als die geschätzte Varianz solcher Fehler verwendet. Dann gilt der folgende Ausdruck für die Bestimmung der geschätzten Varianz in einer Prognose für 2 und mehr Schritte für die betrachteten Modelle: Nach Berechnung der geschätzten Varianz der Prognose für jeden Schritt m, können wir die Grenzen der 95 Vorhersage finden Intervall: Wir werden einverstanden sein, solches Vorhersageintervall das prognostizierte Konfidenzintervall zu nennen. Lassen Sie uns die Ausdrücke implementieren, die für die exponentiellen Glättungsmodelle in einer in MQL5 geschriebenen Klasse vorgesehen sind. 7. Implementierung der Additiv-Klasse Die Implementierung der Klasse beinhaltete die Verwendung der Ausdrücke für das lineare Wachstumsmodell mit Dämpfung und additiver Saisonalität. Wie bereits erwähnt, können andere Modelle durch eine entsprechende Auswahl von Parametern abgeleitet werden. Lassen Sie uns kurz prüfen Methoden der AdditiveES Klasse. Double s - setzt den Anfangswert der geglätteten Ebene double t - setzt den Anfangswert der geglätteten Tendenz double alpha1 - setzt den Glättungsparameter für den Pegel der Sequenz double gamma0 - setzt den Glättungsparameter für den Trend double phi1 - setzt den Dämpfungsparameter double delta0 - setzt den Glättungsparameter für saisonale Indizes int nses1 - legt die Anzahl der Perioden im Saisonzyklus fest. Es gibt eine einstufige Prognose zurück, die auf der Grundlage der eingestellten Anfangswerte berechnet wird. Die Init-Methode muss in erster Linie aufgerufen werden. Dies ist erforderlich, um die Glättungsparameter und Anfangswerte einzustellen. Es sollte beachtet werden, dass die Init-Methode keine Initialisierung von saisonalen Indizes bei willkürlichen Werten vorsieht, wenn diese Methode aufgerufen wird, werden saisonale Indizes immer auf Null gesetzt. Int m - saisonale Indexnummer double - setzt den Wert der saisonalen Indexzahl m. Die IniIs (.) - Methode wird aufgerufen, wenn die Anfangswerte der saisonalen Indizes nicht Null sein müssen. Saisonindizes sollten direkt nach dem Aufruf der Init (.) Methode initialisiert werden. Doppelter y neuer Wert der Eingabesequenz Er gibt eine einstufige Prognose zurück, die auf der Basis des neuen Wertes der Sequenz berechnet wird. Diese Methode ist dazu ausgelegt, bei jedem neuen Wert der Eingabesequenz eine einstufige Prognose zu berechnen Eingegeben. Sie sollte nur nach der Klasseninitialisierung durch die Init - und ggf. IniIs-Methoden aufgerufen werden. Int m Prognosehorizont von 1,2,3, Periode Es gibt den m-step-ahead Prognosewert zurück. Diese Methode berechnet nur den Prognosewert, ohne den Zustand des Glättungsprozesses zu beeinflussen. Sie wird normalerweise nach Aufruf der NewY-Methode aufgerufen. Int m Prognosehorizont von 1,2,3, Periode Es gibt den Koeffizientenwert für die Berechnung der Prognosemen - dance zurück. This coefficient value shows the increase in the variance of a m-step-ahead forecast compared to the variance of the one-step-ahead forecast. GetS, GetT, GetF, GetIs methods These methods provide access to the protected variables of the class. GetS, GetT and GetF return values of the smoothed level, smoothed trend and a one-step-ahead forecast, respectively. GetIs method provides access to seasonal indices and requires the indication of the index number m as an input argument. The most complex model out of all we have reviewed is the linear growth model with damping and additive seasonality based on which the AdditiveES class is created. This brings up a very reasonable question - what would the remaining, simpler models be needed. Despite the fact, that more complex models should seemingly have a clear advantage over simpler ones, it is actually not always the case. Simpler models that have less parameters will in the vast majority of cases result in lesser variance of forecast errors, i. e. their operation will be more steady. This fact is employed in creating forecasting algorithms based on simultaneous parallel operation of all available models, from the simplest to the most complex ones. Once the sequence have been fully processed, a forecasting model that demonstrated the lowest error, given the number of its parameters (i. e. its complexity), is selected. There is a number of criteria developed for this purpose, e. g. Akaikes Information Criterion (AIC). It will result in selection of a model which is expected to produce the most stable forecast. To demonstrate the use of the AdditiveES class, a simple indicator was created all smoothing parameters of which are set manually. The source code of the indicator AdditiveESTest. mq5 is set forth below. A call or a repeated initialization of the indicator sets the exponential smoothing initial values There are no initial settings for seasonal indices in this indicator, their initial values are therefore always equal to zero. Upon such initialization, the influence of seasonality on the forecast result will gradually increase from zero to a certain steady value, with the introduction of new incoming values. The number of cycles required to reach a steady-state operating condition depends on the value of the smoothing coefficient for seasonal indices: the smaller the smoothing coefficient value, the more time it will require. The operation result of the AdditiveESTest. mq5 indicator with default settings is shown in Figure 5. Figure 5. The AdditiveESTest. mq5 indicator Apart from the forecast, the indicator displays an additional line corresponding to the one-step forecast for the past values of the sequence and limits of the 95 forecast confidence interval. The confidence interval is based on the estimated variance of the one-step-ahead error. To reduce the effect of inaccuracy of the selected initial values, the estimated variance is not calculated over the entire length nHist but only with regard to the last bars the number of which is specified in the input parameter nTest. Files. zip archive at the end of the article includes AdditiveES. mqh and AdditiveESTest. mq5 files. When compiling the indicator, it is necessary that the include AdditiveES. mqh file is located in the same directory as AdditiveESTest. mq5. While the problem of selecting the initial values was to some extent solved when creating the AdditiveESTest. mq5 indicator, the problem of selecting the optimal values of smoothing parameters has remained open. 8. Selection of the Optimal Parameter Values The simple exponential smoothing model has a single smoothing parameter and its optimal value can be found using the simple enumeration method. After calculating the forecast error values over the entire sequence, the parameter value is changed at a small increment and a full calculation is made again. This procedure is repeated until all possible parameter values have been enumerated. Now we only need to select the parameter value which resulted in the smallest error value. In order to find an optimal value of the smoothing coefficient in the range of 0.1 to 0.9 at 0.05 increments, the full calculation of the forecast error value will need to be made seventeen times. As can be seen, the number of calculations required is not so big. But the linear growth model with damping involves the optimization of three smoothing parameters and in this case it will take 4913 calculation runs in order to enumerate all their combinations in the same range at the same 0.05 increments. The number of full runs required for enumeration of all possible parameter values rapidly increases with the increase in the number of parameters, decrease in the increment and expansion of the enumeration range. Should it further be necessary to optimize the initial values of the models in addition to the smoothing parameters, it will be quite difficult to do using the simple enumeration method. Problems associated with finding the minimum of a function of several variables are well studied and there is quite a lot of algorithms of this kind. Description and comparison of various methods for finding the minimum of a function can be found in the literature 7. All these methods are primarily aimed at reducing the number of calls of the objective function, i. e. reducing the computational efforts in the process of finding the minimum. Different sources often contain a reference to the so-called quasi-Newton methods of optimization. Most likely this has to do with their high efficiency but the implementation of a simpler method should also be sufficient to demonstrate an approach to the optimization of forecasting. Let us opt for Powells method. Powells method does not require calculation of derivatives of the objective function and belongs to search methods. This method, like any other method, may be programmatically implemented in various ways. The search should be completed when a certain accuracy of the objective function value or the argument value is attained. Besides, a certain implementation may include the possibility of using limitations on the permissible range of function parameter changes. In our case, the algorithm for finding an unconstrained minimum using Powells method is implemented in PowellsMethod. class. The algorithm stops searching once a given accuracy of the objective function value is attained. In the implementation of this method, an algorithm found in the literature 8 was used as a prototype. Below is the source code of the PowellsMethod class. The Optimize method is the main method of the class. double ampp - array that at the input contains the initial values of parameters the optimal values of which shall be found the obtained optimal values of these parameters are at the output of the array. int n0 - number of arguments in array p. Where n0, the number of parameters is considered to be equal to the size of array p. It returns the number of iterations required for operation of the algorithm, or -1 if the maximum permissible number thereof has been reached . When searching for optimal parameter values, an iterative approximation to the minimum of the objective function occurs. The Optimize method returns the number of iterations required to reach the function minimum with a given accuracy. The objective function is called several times at every iteration, i. e. the number of calls of the objective function may be significantly (ten and even hundred times) bigger than the number of iterations returned by the Optimize method. Other methods of the class. Int n - maximum permissible number of iterations in Powells method. The default value is 200. It sets the maximum permissible number of iterations once this number is reached, the search will be over regardless of whether the minimum of the objective function with a given accuracy was found. And a relevant message will be added to the log. double er - accuracy. Should this value of deviation from the minimum value of the objective function be reached, Powells method stops searching. The default value is 1e-6. Int n - maximum permissible number of iterations for an auxiliary Brents method. The default value is 200. It sets the maximum permissible number of iterations. Once it is reached, the auxiliary Brents method will stop searching and a relevant message will be added to the log. double er accuracy. This value defines accuracy in the search of the minimum for the auxiliary Brents method. The default value is 1e-4. It returns the minimum value of the objective function obtained. It returns the number of iterations required for operation of the algorithm. Virtual function func(const double ampp) const double ampp address of the array containing the optimized parameters. The size of the array corresponds to the number of function parameters. It returns the function value corresponding to the parameters passed to it. The virtual function func() shall in every particular case be redefined in a class derived from the PowellsMethod class. The func() function is the objective function the arguments of which corresponding to the minimum value returned by the function will be found when applying the search algorithm. This implementation of Powells method employs Brents univariate parabolic interpolation method for determining the direction of search with regard to each parameter. The accuracy and maximum permissible number of iterations for these methods can be set separately by calling SetItMaxPowell, SetFtolPowell, SetItMaxBrent and SetFtolBrent. So the default characteristics of the algorithm can be changed in this manner. This may appear useful when the default accuracy set to a certain objective function turns out to be too high and the algorithm requires too many iterations in the search process. The change in the value of the required accuracy can optimize the search with regard to different categories of objective functions. Despite the seeming complexity of the algorithm that employs Powells method, it is quite simple in use. Let us review an example. Assume, we have a function and we need to find the values of parameters and at which the function will have the smallest value. Let us write a script demonstrating a solution to this problem. When writing this script, we first create the func() function as a member of the PMTest class which calculates the value of the given test function using the passed values of parameters p0 and p1. Then in the body of the OnStart() function, the initial values are assigned to the required parameters. The search will start from these values. Further, a copy of the PMTest class is created and the search for the required values of p0 and p1 starts by calling the Optimize method the methods of the parent PowellsMethod class will call the redefined func() function. Upon completion of the search, the number of iterations, function value at the minimum point and the obtained parameter values p00.5 and p16 will be added to the log. PowellsMethod. mqh and a test case PMTest. mq5 are located at the end of the article in Files. zip archive. In order to compile PMTest. mq5, it should be located in the same directory as PowellsMethod. mqh. 9. Optimization of the Model Parameter Values The previous section of the article dealt with implementation of the method for finding the function minimum and gave a simple example of its use. We will now proceed to the issues related to optimization of the exponential smoothing model parameters. For a start, let us simplify the earlier introduced AdditiveES class to the maximum by excluding from it all elements associated with the seasonal component, as the models that take into consideration seasonality are not going to be further considered in this article anyway. This will allow to make the source code of the class much easier to comprehend and reduce the number of calculations. In addition, we will also exclude all calculations related to forecasting and computations of the forecast confidence intervals for an easy demonstration of an approach to the optimization of parameters of the linear growth model with damping under consideration. The OptimizeES class derives from the PowellsMethod class and includes redefining of the virtual function func(). As mentioned earlier, the parameters whose calculated value will be minimized in the course of optimization shall be passed at the input of this function. In accordance with the maximum likelihood method, the func() function calculates the logarithm of the sum of squares of one-step-ahead forecast errors. The errors are calculated in a loop with regard to NCalc recent values of the sequence. To preserve the stability of the model, we should impose limitations on the range of changes in its parameters. This range for Alpha and Gamma parameters will be from 0.05 to 0.95, and for Phi parameter - from 0.05 to 1.0. But for optimization in our case, we use a method for finding an unconstrained minimum which does not imply the use of limitations on the arguments of the objective function. We will try to turn the problem of finding the minimum of the multi-variable function with limitations into a problem of finding an unconstrained minimum, to be able to take into consideration all limitations imposed on the parameters without changing the search algorithm. For this purpose, the so-called penalty function method will be used. This method can easily be demonstrated for a one-dimensional case. Suppose that we have a function of a single argument (whose domain is from 2.0 to 3.0) and an algorithm which in the search process can assign any values to this function parameter. In this case, we can do as follows: if the search algorithm has passed an argument which exceeds the maximum permissible value, e. g. 3.5, the function can be calculated for the argument equal to 3.0 and the obtained result is further multiplied by a coefficient proportional to the excess of the maximum value, for example k1(3.5-3)200. If similar operations are performed with regard to argument values that turned out to be below the minimum permissible value, the resulting objective function is guaranteed to increase outside the permissible range of changes in its argument. Such artificial increase in the resulting value of the objective function allows to keep the search algorithm unaware of the fact that the argument passed to the function was in any way limited and guarantee that the minimum of the resulting function will be within the set limits of the argument. Such approach is easily applied to a function of several variables. The main method of the OptimizeES class is the Calc method. A call of this method is responsible for reading data from a file, search for optimal parameter values of a model and estimation of the forecast accuracy using RelMAE for the obtained parameter values. The number of processed values of the sequence read from a file is in this case set in the variable NCalc. Below is the example of the OptimizationTest. mq5 script that uses the OptimizeES class. Following the execution of this script, the obtained result will be as shown below. Figure 6. OptimizationTest. mq5 script result Although we can now find optimal parameter values and initial values of the model, there is yet one parameter which cannot be optimized using simple tools - the number of sequence values used in optimization. In optimization with regard to a sequence of great length, we will obtain the optimal parameter values that, on the average, ensure a minimum error over the entire length of the sequence. However if the nature of the sequence varied within this interval, the obtained values for some of its fragments will no longer be optimal. On the other hand, if the sequence length is dramatically decreased, there is no guarantee that the optimal parameters obtained for such a short interval will be optimal over a longer time lag. OptimizeES. mqh and OptimizationTest. mq5 are located at the end of the article in Files. zip archive. When compiling, it is necessary that OptimizeES. mqh and PowellsMethod. mqh are located in the same directory as the compiled OptimizationTest. mq5. In the given example, USDJPYM11100.TXT file is used that contains the test sequence and that should be located in the directory MQL5FilesDataset. Table 2 shows the estimates of the forecast accuracy obtained using RelMAE by means of this script. Forecasting was done with regard to eight test sequences mentioned earlier in the article using the last 100, 200 and 400 values of each of these sequences. Table 2. Forecast errors estimated using RelMAE As can be seen, the forecast error estimates are close to unity but in the majority of cases the forecast for the given sequences in this model is more accurate than in the naive method. 10. The IndicatorES. mq5 Indicator The AdditiveESTest. mq5 indicator based on the AdditiveES. mqh class was mentioned earlier upon review of the class. All smoothing parameters in this indicator were set manually. Now after considering the method allowing to optimize the model parameters, we can create a similar indicator where the optimal parameter values and initial values will be determined automatically and only the processed sample length will need to be set manually. That said, we will exclude all calculations related to seasonality. The source code of the CIndiatorES class used in creating the indicator is set forth below. This class contains CalcPar and GetPar methods the first one is designed for calculation of the optimal parameter values of the model, the second one is intended for accessing those values. Besides, the CIndicatorES class comprises the redefining of the virtual function func(). The source code of the IndicatorES. mq5 indicator: With every new bar, the indicator finds the optimal values of the model parameters, makes calculations in the model for a given number of bars NHist, builds a forecast and defines the forecast confidence limits. The only parameter of the indicator is the length of the processed sequence the minimum value of which is limited to 24 bars. All calculations in the indicator are made on the basis of the open values. The forecasting horizon is 12 bars. The code of the IndicatorES. mq5 indicator and CIndicatorES. mqh file are located at the end of the article in Files. zip archive. Figure 7. Operation result of the IndicatorES. mq5 indicator An example of the operation result of the IndicatorES. mq5 indicator is shown in Figure 7. In the course of operation of the indicator, the 95 forecast confidence interval will take values corresponding to the obtained optimal parameter values of the model. The bigger the smoothing parameter values, the faster the increase in the confidence interval upon the increasing forecasting horizon. With a simple improvement, the IndicatorES. mq5 indicator can be used not only for forecasting currency quotes but also for forecasting values of various indicators or preprocessed data. Conclusion The main objective of the article was to familiarize the reader with additive exponential smoothing models used in forecasting. While demonstrating their practical use, some accompanying issues were also dealt with. However the materials provided in the article can be considered merely an introduction to the large range of problems and solutions associated with forecasting. I would like to draw your attention to the fact that the classes, functions, scripts and indicators provided were created in the process of writing the article and are primarily designed to serve as examples to the materials of the article. Therefore no serious testing for stability and errors was performed. Besides, the indicators set forth in the article should be considered to be only a demonstration of the implementation of the methods involved. The forecast accuracy of the IndicatorES. mq5 indicator introduced in the article can most likely be somewhat improved by using the modifications of the applied model which would be more adequate in terms of peculiarities of the quotes under consideration. The indicator can also be amplified by other models. But these issues fall beyond the scope of this article. In conclusion, it should be noted that exponential smoothing models can in certain cases produce forecasts of the same accuracy as the forecasts obtained by applying more complex models thus proving once again that even the most complex model is not always the best. Referenzen


No comments:

Post a Comment