
MQL5-Assistenten-Techniken, die Sie kennen sollten (Teil 45): Reinforcement Learning mit Monte-Carlo
Einführung
In diesem Artikel setzen wir unsere Betrachtung des Bestärkenden Lernens fort, indem wir einen anderen Algorithmus betrachten, nämlich die Monte-Carlo-Simulation. Dieser Algorithmus ist dem Q-Learning-Algorithmus und dem SARSA-Algorithmus insofern sehr ähnlich, als er sowohl mit als auch ohne Richtlinien arbeiten kann. Das Besondere ist jedoch, dass der Schwerpunkt auf den Episoden liegt. Dies ist einfach eine Möglichkeit, das in diesem Artikel vorgestellten Bestärkende Lernen zu bündeln, sodass die Aktualisierung der Q-Werte der Q-Map weniger häufig erfolgt.
Mit dem Monte-Carlo-Algorithmus werden die Q-Werte erst nach Abschluss einer Episode aktualisiert. Eine Episode ist ein Stapel von Zyklen. Für diesen Artikel haben wir dieser Anzahl von Zyklen den Eingangsparameter „m_episodes_size“ zugewiesen und er ist optimierbar oder einstellbar. Der Methode Monte Carlo wird nachgesagt, dass sie sehr robust gegenüber Marktschwankungen ist, da sie ein breites Spektrum möglicher Marktszenarien besser simulieren kann, sodass die Händler feststellen können, wie verschiedene Strategien unter verschiedenen Bedingungen abschneiden. Diese Variabilität hilft den Händlern, potenzielle Kompromisse, Risiken und Renditen zu verstehen, sodass sie fundiertere Entscheidungen treffen können.
Dieser Vorteil, so wird argumentiert, ergibt sich aus der „langfristigen Leistungseinsicht", die im Gegensatz zu traditionellen Methoden steht, die sich eher auf kurzfristige Ergebnisse konzentrieren. Damit ist gemeint, dass die seltenen Aktualisierungen, die Monte-Carlo-Simulationen durchführen, da sie nur einmal in einer Episode stattfinden, dem Marktrauschen entgehen, dem Q-Learning und SARSA zwangsläufig ausgesetzt sind, da sie ihre Aktualisierungen häufiger durchführen. Die Beurteilung der langfristigen Leistung von Handelsstrategien durch die Bewertung der kumulierten Gewinne im Laufe der Zeit ist daher das Ziel von Monte Carlo. Durch die Analyse mehrerer solcher Episoden können Händler Erkenntnisse über die Gesamtrentabilität und Nachhaltigkeit ihrer Strategien gewinnen.
Der Monte-Carlo-Algorithmus berechnet Aktionswert-Schätzungen auf der Grundlage der durchschnittlichen Renditen von Zustands-Aktions-Paaren über mehrere Zyklen innerhalb einer einzigen Episode. Auf diese Weise können die Händler besser einschätzen, welche Aktionen (z. B. Kauf oder Verkauf) auf der Grundlage der historischen Performance am ehesten zu günstigen Ergebnissen führen. Diese Aktualisierung der Q-Werte ergibt sich daraus, dass die Belohnungskomponente dieser Q-Werte wie folgt bestimmt wird:
wobei:
- R t+1 , R t+2 ,...,R T sind die Belohnungen (rewards), die in jedem Schritt nach dem Zeitpunkt t erhalten werden.
- γ /gamma ist der Abschlagsfaktor (0 ≤ γ ≤ 1), der festlegt, um wie viel zukünftige Belohnungen reduziert werden (d. h. weniger wert sind als unmittelbare Belohnungen).
- T steht für den Zeitschritt, an dem die Episode endet (Endzustand oder Episodengröße in Zyklen).
Diese übergreifenden Belohnungsüberlegungen, die durch die oben erwähnte Aktualisierung der Q-Werte impliziert werden, machen Monte Carlo, wie bereits angedeutet, anpassungsfähiger. Diese inhärente Anpassungsfähigkeit ermöglicht es den Händlern, ihre Strategien an die sich verändernden Marktbedingungen anzupassen. Diese Anpassungsfähigkeit ist auf den Finanzmärkten von entscheidender Bedeutung, da sich Trends schnell ändern können und die Ergebnisse der Vergangenheit nicht immer auf künftige Ergebnisse schließen lassen. Im letzten Artikel über Reinforcement Learning, der sich mit SARSA befasste, betrachteten wir Reinforcement Learning als ein unabhängiges Modell, das trainiert wurde, um Preisbewegungen zu prognostizieren, und nicht nur als Unterstützung für das Training anderer Modelle des maschinellen Lernens, wie es traditionell der Fall wäre, wenn wir es als eine dritte Form des Trainings neben dem überwachten und unüberwachten Lernen betrachten würden. Wir verfolgen in diesem Artikel einen ähnlichen Ansatz.
Die Strategien, die unter Monte Carlo anpassungsfähig wären, würden daher in vielerlei Hinsicht von der Wahl der Q-Map und der Zustände abhängen. Da der Reinforcement-Learning-Algorithmus auch das Hauptprognosemodell für den Expert Advisor war, haben wir für den letzten Artikel über eine nutzerdefinierte Signalklasse 3 Umgebungszustände verwendet, die über einen kurzfristigen und einen langfristigen Horizont gekreuzt wurden, um ein Gitter/eine Matrix mit 9 Optionen zu erstellen. Was diese Zustände erfassten, war einfach steigend, seitwärts und fallend, und es ist relativ einfach/grob. Sie kann jedoch noch ausgefeilter und marktsensibler gestaltet werden, indem nicht nur ihre Gesamtgröße erhöht wird, sondern auch mehr Faktoren berücksichtigt werden. Wenn dies dann mit Monte Carlo kombiniert wird, wird die Anpassungsfähigkeit verbessert.
Zusammenfassung über Reinforcement Learning (RL) im Handel
Bestärkendes Lernen (Reinforcement Learning, RL) soll in dynamischen Umgebungen wie den Finanzmärkten funktionieren, wo es ständig mit seiner „Umgebung" interagiert, indem es auf der Grundlage seines aktuellen Zustands (wobei diese Zustände durch Marktpreise oder Indikatoren usw. definiert sind) Aktionen (wie Kaufen, Verkaufen, Halten) durchführt. Jede Aktion des Agenten beeinflusst den Zustand der Umwelt und führt zu neuen Beobachtungen und möglichen Belohnungen.
Weitere Beispiele für Feststellungen des Status, die von Händlern für ihre Q-Maps übernommen werden können, sind auf technischen Indikatoren basierende Zustände. Dazu können gleitende Durchschnitte gehören, wobei ein kurzfristiger MA, der über dem langfristigen MA liegt, ein bullischer Zustand ist, während ein kurzfristiger MA, der unter dem langfristigen MA liegt, einen bärischen Zustand und Gleichheit einen neutralen Zustand bedeuten würde.
Da wir sowohl die kurzfristigen als auch die langfristigen Aussichten auf einer einzigen Achse zusammengefasst haben, haben wir nun die Möglichkeit, eine weitere Achse einzuführen, die neben den MA-Indikatorwerten auch andere Metriken abdeckt. Ein weiterer Indikator, der hierfür verwendet werden kann, ist der Relative Strength Index (RSI). Dabei würden wir die Zustände „überkauft" (RSI > 70), die potenziell ein Verkaufssignal darstellen könnten, und „überverkauft" (RSI < 30), die potenziell ein Kaufsignal darstellen könnten, sowie einen zusätzlichen Übergangszustand berücksichtigen, der kein Signal bietet.
Innerhalb der indikatorbasierten Zustände könnten wir auch die Bollinger-Bänder betrachten, bei denen ein Preis nahe oder oberhalb des oberen Bandes ein Abwärtssignal sein könnte, während ein Preis am oder unterhalb des unteren Bandes ein Aufwärtssignal sein könnte, wobei wiederum ein dritter neutraler Zustand für jede andere Position impliziert wird.
Neben den technischen Indikatoren könnte auch die Marktvolatilität eine alternative Achse zur Matrix der Umweltzustände darstellen. Dabei würde die Messung auf Indikatoren wie der Standardabweichung des Preises oder der ATR basieren, und während man drei mögliche Zustände von hoher Volatilität, niedriger Volatilität und milder Volatilität verwenden könnte, könnten viele weitere Abstufungen hinzugefügt werden, um den Algorithmus empfindlicher gegenüber den Märkten zu machen. Diese Zustandseinstellung (oder Achse) würde dem Agenten helfen zu entscheiden, ob er aggressiv oder konservativ handeln soll. Volumenbasierte Staaten können auch für Aktien in Betracht gezogen werden, mit einer ähnlichen Abstufung.
Neben den Auf- oder Abwärtstrends, die wir in den vergangenen Artikeln verwendet haben und die wir auch in diesem Artikel als Indikatoren heranziehen, gibt es auch spezifischere Kursmuster, wie z.B. Ausbrüche durch Unterstützungs- und Widerstandsniveaus. Alternativ könnten Kopf-Schulter-Muster sowohl für Auf- als auch für Abwärtssignale verwendet werden, wobei jedes andere Muster eine Seitwärtsbewegung wäre. Das Erkennen solcher Muster in der jüngsten Kursentwicklung würde es dem Agenten ermöglichen, eine Fortsetzung oder Umkehrung zu antizipieren.
Eine weitere mögliche Achse zu den Q-Map-Zuständen könnten zeitbasierte Zustände sein. Diese Achse würde dann mit einer anderen Achse wie der obigen Preisaktion oder den erwähnten technischen Indikatoren gepaart werden, sodass Rückschlüsse darauf gezogen werden können, welche Preisaktion in jedem Zeitraum zuverlässiger ist. Mögliche Zeitpunkte sind z. B. Marktöffnung/-schluss, die Börsensitzungen oder sogar die Wochentage. Stimmungsbasierte Zustände sind eine weitere Achse, die die Matrix der Umweltzustände bilden könnte. Die Messung dieser Stimmungen hängt angesichts der Vielfalt der verfügbaren Indikatoren von den Wirtschaftsnachrichten ab, die der Kalender für einen bestimmten Indikator liefert. Die Abstufung dieser Zustände sollte von positiv über neutral bis negativ reichen, wobei je nach gewünschter Granularität weitere Zustände hinzugefügt werden können. Die Einbeziehung von Gefühlszuständen, insbesondere mit diesen Methoden, könnte dem Agenten helfen, auf externe Ereignisse, die den Markt beeinflussen, zu reagieren.
Ähnlich und alternativ dazu wären wirtschaftliche, ereignisbasierte Staaten. Etwas, das sich von diesen beiden unterscheidet und ebenfalls in Betracht gezogen werden könnte, sind die portfoliobasierten Zustände. Diese Kategorie ist auch außerhalb des Forex-Bereichs sehr gut anwendbar und bietet eine Reihe von potenziellen Achsen. Erstens gibt es die Exposure-Levels, bei denen das Portfolio nach dem relativen Exposure von z. B. Aktien und Anleihen eingestuft wird. Die Abstufung könnte von 90-10 am einen Ende bis 10-90 am anderen Ende reichen. Eine solche Achse kann mit der Zeit oder einer anderen, aber verwandten Metrik gepaart werden, sodass die Portfolio-Performance (die auf die Agenten-Belohnungen abgestimmt wäre) den Aktualisierungsprozess des Q-Wertes leiten kann.
Eine weitere Option in portfoliobasierten Staaten ist das Risikoniveau. Dabei könnten prozentuale Kapitalzuweisungen für jede Investition in Betracht gezogen werden, wobei die staatlichen Abstufungen von einem geringen Betrag < 0,5 % bis zu einer Obergrenze von beispielsweise 10 % reichen. Auch hier könnte ein Vergleich oder die Verknüpfung mit einer anderen portfoliospezifischen Kennzahl erfolgen, und eine Optimierung über einen angemessenen Datensatz sollte eine Q-Map liefern, die Aufschluss darüber gibt, welche Risikostufen wann zu verwenden sind. Eine weitere Alternative könnten Drawdowns sein. Zusammenfassend lässt sich sagen, dass diese portfoliobasierten Zustände es dem Agenten ermöglichen würden, den breiteren finanziellen Kontext zu berücksichtigen und nicht nur isolierte Marktsignale.
Ich könnte auch Makrotrends erwähnen, die Prinzipien sind ähnlich, aber wichtiger ist, dass die hier genannten Beispiele nicht erschöpfend sind. Die Wahl der Umgebungsbedingungen kann bei der Festlegung der eigenen Strategie eine große Rolle spielen und somit einen Vorteil verschaffen, je nachdem, wie einzigartig sie ist und wie viel Aufwand nicht nur beim Testen, sondern auch bei der Kreuzvalidierung betrieben wird.
Neben dem Zustand der Umgebung geben die Belohnungssignale nach jeder Aktion dem Agenten eine Rückmeldung über den Erfolg oder Misserfolg seiner Aktion. Belohnungen können in Form von Gewinnen/Verlusten (wie bisher), risikobereinigten Renditen oder anderen relevanten Leistungskennzahlen quantifiziert werden, die den Agenten zu günstigeren Handlungen veranlassen können. Erinnern Sie sich, die Belohnungen sind eine Schlüsselkomponente bei der Aktualisierung der Q-Werte der Q-Map.
RL ist vielleicht besser dafür bekannt, bei Prognosen ein Gleichgewicht zwischen Exploration und Ausbeutung herzustellen. Auf dem Papier wendet der Agent oft Erkundungsstrategien an, um neue Aktionen zu entdecken, die bessere Belohnungen bringen könnten, während er abwechselnd bekannte Aktionen nutzt, die sich zuvor als erfolgreich erwiesen haben. Das Gleichgewicht zwischen Erkundung und Ausbeutung, das durch den Eingabeparameter epsilon gesteuert wird, ist für den Agenten entscheidend, um lokale Optima zu vermeiden und seine Entscheidungsfindung im Laufe der Zeit zu verbessern.
Da der Epsilon-Greedy-Ansatz bei der Auswahl geeigneter Aktionen eine zufällige Auswahl beinhaltet, lernt der Agent durch Versuch und Irrtum aus seinen Erfahrungen in der Umgebung und passt seine Aktionsauswahlpolitik auf der Grundlage früherer Ergebnisse an. Mit jeder Erfahrung weiß der Agent besser, welche Handlungen zu positiven Belohnungen führen, sodass er in ähnlichen Situationen in Zukunft bessere Entscheidungen treffen kann.
Diese Verbesserung ist den Q-Map-Werten oder der Politik des Agenten zu verdanken. Die Karte stellt eine Strategie dar, die Zustände mit Handlungen verknüpft und die Handlungen der einzelnen Zustände auf der Grundlage der beobachteten Belohnungen kontinuierlich aktualisiert. Die Verbesserung der Strategie wird durch Algorithmen des verstärkten Lernens gesteuert, die darauf abzielen, die kumulativen Belohnungen im Laufe der Zeit zu maximieren.
Dies sind die grundlegenden Aspekte, die wir in den letzten drei Artikeln über RL betrachtet haben; es gibt jedoch noch weitere innovative Konzepte innerhalb von RL. Eine davon ist die Schätzung der Wertfunktion, bei der der Agent häufig die Wertfunktion schätzt, die den erwarteten Ertrag eines bestimmten Zustands oder eines Zustands-Aktionspaars vorhersagen kann. Durch die Annäherung an die Wertfunktion kann der Agent den potenziellen langfristigen Nutzen verschiedener Handlungen abschätzen, was ihm bessere Entscheidungen ermöglicht.
Temporal Credit Assignment ist ein weiteres Konzept, bei dem der Agent in der Vergangenheit durchgeführte Aktionen mit in der Zukunft erhaltenen Belohnungen verknüpft. Auf dem Papier ermöglicht dieser Ansatz dem Agenten zu verstehen, wie sich seine früheren Handlungen auf künftige Ergebnisse auswirken, was zu einer besseren Planung oder zur präventiven Festlegung bestimmter Strategien führen kann, die die Standard-Aktions-Zustands-Paarung außer Kraft setzen.
Eine andere ist die adaptive Lernrate, ein Thema, das wir in diesem letzten Artikel behandelt haben, als wir uns mit Multi-Layer-Perceptrons beschäftigten. Auch diese können bei der Aktualisierung von Q-Werten als Alpha eingesetzt werden. Der Agent kann sie so einsetzen, dass sie sich an die Ungewissheit der Zustands- und Aktionswerte anpassen, sodass aggressivere Aktualisierungen möglich sind, wenn der Agent unsicher ist, und konservativere Aktualisierungen, wenn er Vertrauen gewinnt. Diese Anpassungsfähigkeit könnte dem Agenten helfen, unter wechselnden Marktbedingungen effizient zu lernen.
Weitere bemerkenswerte Ideen im Zusammenhang mit dem RL sind die Verallgemeinerung über Staaten hinweg, um die Effizienz zu verbessern, und die Entwicklung langfristiger Strategien, die über den unmittelbaren Erfolg hinausgehen.
Der Monte-Carlo-Algorithmus
Der Lernansatz der Monte-Carlo-Methode unterscheidet sich von den früheren RL-Algorithmen, die wir betrachtet haben, insofern, als dass er aus vollständigen Erfahrungsepisoden lernt, indem er bis zum Ende einer Episode wartet, um zu „lernen", aber einen ganzheitlichen Ansatz über mehrere Belohnungspunkte verfolgt, die in der Zwischenzeit erhalten wurden. Daher müssen die Belohnungswerte über mehrere Zeiträume hinweg gepuffert werden, sodass bei Abschluss der Episode alle vergangenen Belohnungswerte zugänglich sind. Wir implementieren dies in MQL5 wie folgt, und zwar innerhalb der Funktion „GetOutput“ unserer nutzerdefinierten Signalklasse:
//+------------------------------------------------------------------+ //| | //+------------------------------------------------------------------+ void CSignalMC::GetOutput(Cql *QL, vector &Rewards) { vector _in, _in_row, _in_row_old, _in_col, _in_col_old; if ( _in_row.Init(m_scale) && _in_row.CopyRates(m_symbol.Name(), m_period, 8, 0, m_scale) && _in_row.Size() == m_scale && _in_row_old.Init(m_scale) && _in_row_old.CopyRates(m_symbol.Name(), m_period, 8, 1, m_scale) && _in_row_old.Size() == m_scale && _in_col.Init(m_scale) && _in_col.CopyRates(m_symbol.Name(), m_period, 8, 0, m_scale) && _in_col.Size() == m_scale && _in_col_old.Init(m_scale) && _in_col_old.CopyRates(m_symbol.Name(), m_period, 8, m_scale, m_scale) && _in_col_old.Size() == m_scale ) { _in_row -= _in_row_old; _in_col -= _in_col_old; vector _in_e; _in_e.Init(m_scale); QL.Environment(_in_row, _in_col, _in_e); int _row = 0, _col = 0; QL.SetMarkov(int(_in_e[m_scale - 1]), _row, _col); double _reward_float = _in_row[m_scale - 1]; double _reward_max = _in_row.Max(); double _reward_min = _in_row.Min(); for(int i = m_episode_cycles - 1; i > 0; i--) { Rewards[i] = Rewards[i - 1]; } Rewards[0] = QL.GetReward(_reward_max, _reward_min, _reward_float); QL.transition_act = 1; if(Rewards[m_episode_cycles - 1] != -1.0) { double _reward = Rewards[m_episode_cycles - 1]; for(int i = m_episode_cycles - 2; i >= 0; i--) { _reward += pow(QL.THIS.gamma, m_episode_cycles - 1 - i) * Rewards[i]; } if(m_policy) { QL.SetOnPolicy(_reward, _in_e); } else if(!m_policy) { QL.SetOffPolicy(_reward, _in_e); } } } }
Q-Learning hingegen verwendet eine Zeitdifferenz-Lernmethode (TD), bei der die Wertschätzungen nach jeder durchgeführten Aktion (oder nach jedem Zyklus) aktualisiert werden, wobei Bootstrapping aus den nachfolgenden Zustands-Aktionswerten verwendet wird. Dies ist ähnlich wie bei SARSA, aber hier werden die Wertschätzungen anhand der im nächsten Zustand ergriffenen Maßnahmen aktualisiert, was einen lernenden Ansatz auf politischer Ebene ermöglicht.
Der Monte-Carlo-Aktualisierungsmechanismus basiert auf der durchschnittlichen Rendite, die nach der Durchführung von Aktionen in einem Zustand über mehrere Zyklen in einer Episode beobachtet wird. Jedes Zustands-Aktionspaar wird erst aktualisiert, wenn die Episode abgeschlossen ist, um den tatsächlichen langfristigen Ertrag widerzuspiegeln. Der Belohnungswert, der in dieser Aktualisierung verwendet wird, ist daher eine gewichtete Summe, wie in der oben bereits geteilten Formel sowie im MQL5-Code in der obigen Funktion get output gezeigt.
Q-Learning verwendet jedoch die maximale zukünftige Belohnung des nächsten Zustands (Off-Policy), um den Aktionswert des aktuellen Zustands zu aktualisieren, was zu aggressiverem Lernen führen kann, da bei jedem Zyklusschritt innerhalb einer Episode das bestmögliche Ergebnis berücksichtigt wird. In ähnlicher Weise aktualisiert SARSA den Wert auf der Grundlage der im nächsten Zustand tatsächlich durchgeführten Maßnahmen (on-policy) und bezieht die aktuelle Strategie des Agenten in den Lernprozess ein, was zu etwas konservativeren Aktualisierungen führen kann als Q-Learning, aber immer noch aggressiver ist als Monte Carlo.
Monte Carlo stützt sich in der Regel auf eine vollständige Erkundung der Umgebung durch mehrere Zyklen in einer Episode, um optimale Handlungen zu erlernen, sodass vor der Durchführung von Aktualisierungen gründliche Stichproben von Zustands-Aktions-Paaren durchgeführt werden können. Dies geschieht über einen ε-greedy-Ansatz, den wir in unserem Einführungsartikel über Q-Learning vorgestellt haben, bei dem die Aktualisierungen durch Aktionen beeinflusst wurden, die der Agent nicht durchgeführt hat.
SARSA ist auch ε-greedy in seinem Ansatz, Exploration und Ausbeutung auszugleichen, aber es aktualisiert die Werte auf der Grundlage der im nächsten Zustand tatsächlich durchgeführten Aktion, wodurch es besser auf die aktuelle Politik und die Explorationsentscheidungen des Agenten reagiert. Monte Carlo unterscheidet sich von diesen beiden, abgesehen davon, dass Aktualisierungen nur einmal in einer Episode durchgeführt werden, dadurch, dass es entweder in der Politik oder außerhalb der Politik sein kann. Zu diesem Zweck verfügt unsere nutzerdefinierte Signalklasse für Monte Carlo über einen Eingabeparameter m_on_policy, der boolesch ist und, wie der Name schon sagt, angibt, ob er im Zustand „on" oder „off" verwendet wird.
Die Klassenschnittstelle für diese nutzerdefinierte Signalklasse ist unten dargestellt:
//+------------------------------------------------------------------+ //| MCs CSignalMC. | //| Purpose: MonteCarlo for Reinforcement-Learning. | //| Derives from class CExpertSignal. | //+------------------------------------------------------------------+ class CSignalMC : public CExpertSignal { protected: int m_actions; // LetMarkov possible actions int m_environments; // Environments, per matrix axis int m_scale; // Environments, row-to-col scale bool m_use_markov; // Use Markov double m_epsilon; // Epsilon bool m_policy; // On Policy int m_episode_cycles; // Episode Size public: void CSignalMC(void); void ~CSignalMC(void); //--- methods of setting adjustable parameters void QL_Scale(int value) { m_scale = value; } void QL_Markov(bool value) { m_use_markov = value; } void QL_Epsilon(bool value) { m_epsilon = value; } void QL_Policy(bool value) { m_policy = value; } void QL_EpisodeCycles(int value) { m_episode_cycles = value; } //--- method of verification of arch virtual bool ValidationSettings(void); //--- method of creating the indicator and timeseries virtual bool InitIndicators(CIndicators *indicators); //--- methods of checking if the market models are formed virtual int LongCondition(void); virtual int ShortCondition(void); protected: void GetOutput(Cql *QL, vector &Rewards); Sql RL; Cql *QL_BUY, *QL_SELL; vector REWARDS_BUY, REWARDS_SELL; };
Die Monte-Carlo-Konvergenz ist tendenziell langsamer, da sie vollständige Episoden für Aktualisierungen erfordert, was in Umgebungen mit langen Episoden oder spärlichen Belohnungen nicht unbedingt effizient ist. Dies steht im Gegensatz zum Q-Learning-Algorithmus, der aufgrund seines Bootstrapping-Charakters zumeist schneller konvergiert, jedoch zwangsläufig instabil ist, da er in Umgebungen mit instationären Belohnungen oder hoher Varianz oszillieren oder divergieren kann. SARSA wird in bestimmten Situationen als stabiler als Q-Learning angepriesen, da es die tatsächliche Politik des Agenten bei Aktualisierungen berücksichtigt, was tendenziell zu glatteren Lernkurven führt.
Was die Stichprobeneffizienz angeht, so ist Monte Carlo in der Regel weniger stichprobeneffizient, da es vollständige Episoden benötigt, um Aktualisierungen zu erhalten, was in Umgebungen mit einem großen Zustands-Aktionsraum ein großer Nachteil sein kann. Q-Learning hingegen ist stichprobeneffizienter, da es die Werte bei jedem Schritt aktualisiert und somit schnellere Änderungen auf der Grundlage unmittelbarer Rückmeldungen ermöglicht. Es ist sogar noch effizienter als SARSA, da letzteres möglicherweise mehr Stichproben benötigt als Q-Learning, da es auf die aktuelle Politik und die verwendete Explorationsstrategie anspricht.
Monte Carlo eignet sich gut für Umgebungen, in denen Episoden klar definiert werden können und die langfristigen Renditen tendenziell wichtiger sind als kurzfristige Ausschläge, wie z. B. bei Handelssimulationen. Dies macht sie eindeutig zu einer Schlüsselstrategie für Value- oder langfristige „Händler". Q-Learning ist effektiv in Umgebungen mit einer klaren Belohnungsstruktur und gut definierten Zustandsübergängen, was es ideal für Aufgaben wie den Tageshandel macht. Während SARSA in Situationen von Vorteil ist, in denen das Lernen die Politik des Agenten genau widerspiegeln muss, wie in dynamischen oder teilweise beobachtbaren Umgebungen, in denen die Anpassung entscheidend ist, wie beim Swing-Trading.
Implementierung von Monte Carlo in einer nutzerdefinierten Signalklasse
Wir implementieren unser nutzerdefiniertes Signal, das Monte Carlo RL als Ausgangsmodell und Signalgenerator verwendet. Die wichtigsten Schritte, um dies zu realisieren, wurden bereits oben mit der Klassenschnittstelle und der Funktion „GetOutput“ beschrieben. Nachfolgend sind die langen und kurzen Konditionsfunktionen aufgeführt:
//+------------------------------------------------------------------+ //| "Voting" that price will grow. | //+------------------------------------------------------------------+ int CSignalMC::LongCondition(void) { int result = 0; GetOutput(QL_BUY, REWARDS_BUY); if(QL_BUY.transition_act == 0) { result = 100; } return(result); } //+------------------------------------------------------------------+ //| "Voting" that price will fall. | //+------------------------------------------------------------------+ int CSignalMC::ShortCondition(void) { int result = 0; GetOutput(QL_SELL, REWARDS_SELL); if(QL_SELL.transition_act == 2) { result = 100;//printf(__FUNCSIG__); } return(result); }
Der vollständige Quellcode für diese Implementierung ist unten angehängt, und Anleitungen zur Verwendung dieses Codes für die Zusammenstellung eines Expert Advisors durch einen Assistenten finden Sie hier und hier. Der Markov-Entscheidungsprozess ist der Verwendung von Q-Maps inhärent, dennoch gibt es einen Eingabeparameter, der die Möglichkeit bietet, bei der Aktualisierung von Q-Werten eine Markov-Gewichtung zu verwenden. Darüber hinaus können wir optimieren, ob wir On-Policy verwenden oder nicht, die Größe von epsilon, unserem Parameter, der das Ausmaß der Erkundung gegenüber der Ausbeutung bestimmt, und die Anzahl der Zyklen in einer Episode. Wir führen Optimierungsläufe für das Paar GBP USD für das Jahr 2022 auf dem Zeitfenster von einer Stunde durch. Nachstehend finden Sie unsere Ergebnisse:
Schlussfolgerung und zusätzliche Überlegungen
Zusammenfassend haben wir uns den Monte-Carlo-Algorithmus des Reinforcement Learning angesehen, der viele Merkmale von Q-Learning und SARSA, zwei Algorithmen, die wir zuvor hier bzw. hier behandelt hatten, übernimmt und eine noch dynamischere und anpassungsfähigere Art des Lernens darstellt, die sich auf langfristige Merkmale und Eigenschaften ihrer Umgebung konzentriert. Neben der Verwendung einer stärker angepassten Umgebungsmatrix, wie sie in einigen der in diesem Artikel aufgeführten Alternativen hervorgehoben wird, kann auch eine alternative Aktionsskala mit mehr als 3 Optionen genutzt werden.
Bei der Implementierung von Monte Carlo (MC) gibt es noch einige zusätzliche Überlegungen, die erwähnt werden sollten. MC gleicht den Kompromiss zwischen Verzerrung und Varianz in der Art und Weise aus, wie der aktualisierte Belohnungswert berechnet wird. In Fällen, in denen die Anzahl der Zyklen in einer Episode gering ist, ist die Verzerrung hoch und die Varianz niedrig, während bei längeren Episoden mit einer hohen Anzahl von Zyklen eher das Gegenteil zu beobachten ist. Je nach Zielsetzung ist dies bei der Entwicklung der Q-Map zu berücksichtigen, denn eine hohe Verzerrung macht das Modell anpassungsfähiger für kurzfristige Maßnahmen, während eine hohe Varianz besser zu der Absicht des Algorithmus passt, langfristige Merkmale und Eigenschaften zu erfassen.
Die detailliertere Erkundung des Zustands-Aktions-Raums, die durch mehrere Belohnungen von verschiedenen Zeitpunkten aus möglich ist, wenn mehrere n-Schritt-Renditen verwendet werden, bedeutet, dass wir durch unterschiedliche Horizonte möglicher Renditen (die in unserer nutzerdefinierten Signalklasse durch den Eingabeparameter m_episode_cycles gesteuert wurden) die Signalstärke für Handelsstrategien fein abstimmen können. Diese Granularität führt zu nuancierteren Entscheidungen bei der Bestimmung von Ein- und Ausstiegspunkten und ermöglicht die Optimierung beider sowie die Anpassung von Zeitpunkt und Intensität ihrer Signale.
Übersetzt aus dem Englischen von MetaQuotes Ltd.
Originalartikel: https://www.mql5.com/en/articles/16254






- Freie Handelsapplikationen
- Über 8.000 Signale zum Kopieren
- Wirtschaftsnachrichten für die Lage an den Finanzmärkte
Sie stimmen der Website-Richtlinie und den Nutzungsbedingungen zu.