AIOMQL

Linda Hamilton
Freigeben: 2025-01-23 00:27:12
Original
421 Leute haben es durchsucht

AIOMQL

Einführung

Das

aiomql-Paket ist ein fortschrittliches algorithmisches Handelsframework, das die Funktionalität der integrierten MetaTrader5 Python-Bibliothek (metatrader5) verbessert und erweitert. Sein Zweck besteht darin, den Prozess der Erstellung benutzerdefinierter Trading-Bots zu vereinfachen und gleichzeitig einen umfangreichen Satz an Tools und Abstraktionen speziell für den algorithmischen Handel bereitzustellen. aiomql Das Framework wurde im Hinblick auf Flexibilität und Anpassungsfähigkeit entwickelt und kann die Anforderungen einer Vielzahl von Benutzern erfüllen, von denen, die eine leichte asynchrone Alternative zur MetaTrader5-Python-Integration suchen, bis hin zu Entwicklern, die komplexe Multi-Strategie-Handelsroboter erstellen.

Nachfrage

Dieses Tutorial stellt die vierte Version des aiomql-Frameworks vor, das in Bezug auf Geschwindigkeit, Effizienz und Design erhebliche Verbesserungen gegenüber früheren Versionen bietet. Ein wesentliches Highlight dieser Version ist die Integration einer leistungsstarken Backtesting-Funktion, die es Benutzern ermöglicht, Handelsstrategien anhand historischer Daten zu testen, bevor sie diese live einsetzen.

Während die Vertrautheit mit aiomql früheren Versionen des Frameworks Ihr Verständnis verbessern kann, ist dies keine Voraussetzung. Dieses Tutorial ist so konzipiert, dass es auch von Anfängern leicht verstanden werden kann, die das Framework noch nie verwendet haben. Um die behandelten Konzepte vollständig zu verstehen und anzuwenden, sind jedoch praktische Kenntnisse in Python und ein grundlegendes Verständnis des algorithmischen Handels erforderlich.

Obwohl dieser Artikel in erster Linie als Einführung in das Framework und nicht als Schritt-für-Schritt-Anleitung gedacht ist, enthält er Codeausschnitte, die Python 3.11 erfordern. Wenn Sie in NumPy auf Kompatibilitätsprobleme stoßen, können Sie diese beheben, indem Sie eine unterstützte Version mit dem folgenden Befehl installieren:

<code class="language-bash">pip install aiomql
pip uninstall numpy
pip install 'numpy<v2></v2></code>
Nach dem Login kopieren

Organisation und Struktur von „aiomql“

aiomql Das Framework ist in drei Hauptunterpakete (Core, Contrib und Lib) sowie ein Top-Level-Modul utils.py unterteilt, das im gesamten Framework verwendete Hilfsfunktionen bereitstellt. Der Einfachheit halber sind alle Klassen, Funktionen, Konstanten und anderen Komponenten direkt von der obersten Ebene aus zugänglich.

MetaTrader-Klasse

Wie bereits erwähnt, ist die aiomql-Bibliothek das asynchrone Gegenstück zum metatrader5-Paket. Diese Funktionalität wird durch die MetaTrader-Klasse implementiert, die eine Grundkomponente des Frameworks ist. Diese Klasse repliziert die Funktionalität der metatrader5-Bibliothek und stellt deren Funktionen, Konstanten und spezialisierte Typen als Methoden und Eigenschaften bereit.

Hauptfunktionen

metatrader5 Auf Funktionen im Paket wird als asynchrone Instanzmethoden in der MetaTrader-Klasse zugegriffen, wobei ihre ursprünglichen Namen beibehalten werden. Dieses Design gewährleistet eine nahtlose Integration für Benutzer, die mit der Originalbibliothek vertraut sind, und nutzt gleichzeitig die Vorteile der asynchronen Programmierung.

Die MetaTrader-Klasse ist als asynchroner Kontextmanager konzipiert und vereinfacht die Verwaltung des MetaTrader-Terminals. Nach Eingabe des Kontexts wird das Terminal automatisch initialisiert und Anmeldevorgänge ausgeführt. Beim Beenden wird sichergestellt, dass die Ressourcen ordnungsgemäß bereinigt und getrennt werden, selbst wenn ein Fehler auftritt. Diese Struktur bietet eine übersichtliche und effiziente Methode des Lebenszyklusmanagements und eignet sich daher besonders für asynchrone Arbeitsabläufe.

Auf die nicht-asynchronen Versionen dieser Funktionen kann weiterhin zugegriffen werden, ihnen ist jedoch ein Unterstrich (_) vorangestellt, um anzuzeigen, dass sie als private Methoden behandelt werden können.

MetaBackTester

MetaBackTester ist eine Unterklasse von MetaTrader, die speziell für Backtesting verwendet wird. Es verwendet eine BackTestEngine-Instanz, die während der Initialisierung bereitgestellt oder aus der Konfiguration abgerufen werden kann. Wenn config.mode auf „Backtest“ eingestellt ist, ersetzt diese Klasse automatisch MetaTrader in Anwendungen, die auf einer Terminalverbindung basieren, und gewährleistet so eine nahtlose Integration der Backtesting-Funktionalität.

Base und _Base

Die Klassen

Base und _Base sind die Grundkomponenten, die die anderen Klassen im Framework bilden und grundlegende Dienstprogramme wie Datenvalidierung, Serialisierung und nahtlosen Zugriff auf MetaTrader oder MetaBackTester bereitstellen, je nachdem, ob sich das System im Live-Handel befindet oder Backtesting-Modus Beispiel. Obwohl diese Klassen selten direkt verwendet werden, gewährleisten sie die Stabilität und Zuverlässigkeit des Gesamtsystems, indem sie als Rückgrat für speziellere Funktionen dienen.

Basis

Die Base-Klasse bietet leistungsstarke Datenverarbeitungsfunktionen mit Schwerpunkt auf Validierung und Serialisierung. Während der Instanziierung können nur Eigenschaften Werte zugewiesen werden, die explizit im Klassenkörper annotiert oder von einer übergeordneten Klasse geerbt sind. Diese Werte müssen strikt ihren definierten Typen entsprechen, um eine strukturierte und typsichere Datenverwaltung sicherzustellen.

Wichtige Eigenschaften und Methoden

  • exclude (Satz): Ein Satz von Eigenschaftsnamen, die beim Zugriff auf die Eigenschaft oder beim Generieren einer Wörterbuchdarstellung des Objekts ausgeschlossen werden sollen.
  • include (set): Eine Sammlung von Attributnamen, die explizit eingeschlossen werden sollen. Diese Sammlung überschreibt die exclude-Sammlung, wenn beide Sammlungen bereitgestellt werden.
  • dict: Ein Attribut, das alle Attribute als Wörterbuch zurückgibt und dabei die in den Sammlungen exclude und include angegebenen Filter anwendet.
  • set_attributes(**kwargs): Eine Methode zum dynamischen Festlegen von Instanzeigenschaften. Es validiert die Eingaben und stellt sicher, dass sie den richtigen Typ haben.
  • get_dict(exclude: set = None, include: set = None): Eine Methode, die die Eigenschaften der Instanz als Wörterbuch zurückgibt und die Angabe von exclude- und include-Filtern ermöglicht. Wenn beide Parameter angegeben werden, hat der Parameter include Vorrang vor dem Parameter exclude.

_Base

Diese Klasse ist eine Unterklasse von Base mit zusätzlichen Eigenschaften und Funktionen speziell für die Verbindung mit Terminals.

Wichtige Eigenschaften und Methoden

  • config: Stellt eine Konfigurationsinstanz dar. Diese Eigenschaft enthält alle notwendigen Konfigurationseinstellungen, die für die Ausführung der Klasse erforderlich sind.
  • mt5 (MetaTrader | MetaBackTester): Stellt eine MetaTrader- oder MetaBackTester-Instanz bereit, die durch die config-Eigenschaft des mode-Objekts bestimmt wird. Die Art der Instanz hängt davon ab, ob sich das System im Live-Handelsmodus (MetaTrader) oder im Backtesting-Modus (MetaBackTester) befindet.

Konstant

Die MetaTrader5-Bibliothek organisiert ihre große Anzahl an Konstanten in speziellen Aufzählungen und verbessert so die Übersichtlichkeit und Funktionalität für Entwickler. Diese Aufzählungen stellen verschiedene Handelsvorgänge, Auftragstypen, Zeitrahmen und mehr dar und vereinfachen ihre Verwendung durch die Gruppierung verwandter Konstanten in intuitiven Kategorien. Jede Aufzählung stellt Eigenschaften und gegebenenfalls zusätzliche Methoden oder Eigenschaften bereit, die Funktionen wie das Konvertieren, Umkehren oder Ableiten von Werten ermöglichen. Diese Organisation reduziert Fehler, verbessert die Lesbarkeit des Codes und erleichtert die Verwaltung von Konstanten, insbesondere in komplexen Handelsanwendungen.

Aufzählungen wie TradeAction, OrderFilling und TimeFrame kapseln Konstanten als Ganzzahlwerte und bieten gleichzeitig eine Zeichenfolgendarstellung im Python-Stil für eine verbesserte Benutzerfreundlichkeit. Einige Aufzählungen (wie TimeFrame) enthalten erweiterte Methoden zum Konvertieren von Sekunden in vordefinierte Intervalle oder zum Zugriff auf alle möglichen Werte. Durch die systematische Organisation dieser Konstanten sorgt die MetaTrader5-Bibliothek für ein effizienteres und entwicklerfreundlicheres Erlebnis und vereinfacht die Interaktion mit Handelsvorgängen und Plattformdaten.

Modell

Das Modellmodul bietet einen gut organisierten Satz von Datenverarbeitungsklassen, die auf der Struktur der MetaTrader5-Bibliothek basieren. Alle Klassen erben von der Basisklasse, die Funktionen wie Datenvalidierung, Serialisierung und Filterung hinzufügt, um ihre Verwendung zu vereinfachen. Diese Klassen repräsentieren verschiedene handelsbezogene Entitäten wie OrderSendResult, SymbolInfo und TradeRequest und ermöglichen Entwicklern eine effiziente Interaktion mit der Handelsumgebung von MetaTrader5.

Jede Klasse kapselt spezifische Eigenschaften und Merkmale im Zusammenhang mit der entsprechenden Transaktionseinheit und gewährleistet so eine robuste und strukturierte Datenverwaltung. Beispielsweise liefert SymbolInfo detaillierte Informationen zu einem Finanzinstrument, während TradeRequest die Erstellung und Übermittlung von Handelsgeschäften ermöglicht. Dieses modulare Design verbessert die Lesbarkeit, vereinfacht komplexe Handelsabläufe und gewährleistet Datenkonsistenz und Benutzerfreundlichkeit für Entwickler, die MetaTrader5 in ihren Anwendungen nutzen.

TaskQueue

Die Klasse

TaskQueue verwaltet effizient Hintergrundaufgaben eines Bots oder Backtesters mithilfe von asyncio.PriorityQueue-Instanzen für die gleichzeitige Ausführung. Es läuft kontinuierlich im Hintergrund und ermöglicht eine nahtlose Integration mit anderen Komponenten wie der Trader-Klasse, die es zur Aufzeichnung von Post-Trade-Ausführungsdaten verwendet. Aufgaben werden über die Methode add zur Warteschlange hinzugefügt, müssen jedoch zunächst in ein QueueItem eingeschlossen werden, das Aufgabenmetadaten wie Parameter, Priorität und Abschlussanforderungen enthält.

Mit der konfigurierbaren Anzahl von Workern, Timeout-Einstellungen und Aufgabenprioritäten gewährleistet TaskQueue eine robuste Aufgabenverwaltung und Fehlerbehandlung. Es unterstützt begrenzte oder unbegrenzte Ausführungsmodi und kann verbleibende Aufgaben elegant bereinigen, bevor sie je nach Priorität beendet werden. Dieses Design verbessert den Arbeitsablauf durch die asynchrone Auslagerung und Verwaltung von Hintergrundvorgängen und gewährleistet so eine reibungslose und zuverlässige Funktionalität komplexer Handels- oder Testumgebungen.

Konto

Die

Account-Klasse ist ein Singleton, der zum Verwalten von Broker-Kontodetails verwendet wird und sicherstellt, dass während der Lebensdauer der Anwendung nur eine Instanz vorhanden ist. Es erbt von Base und _AccountInfo und bietet eine strukturierte und benutzerfreundliche Oberfläche für den Zugriff auf kontospezifische Informationen. Diese Architektur sorgt für Konsistenz, verhindert doppelte Instanzen und zentralisiert die Kontoverwaltung innerhalb der Anwendung.

Als AsyncContextManager vereinfacht die Klasse Account die Ressourcenverwaltung durch Automatisierung des Initialisierungs- und Bereinigungsprozesses. Beim Eintritt in seinen Kontext initialisiert es das MetaTrader-Terminal und meldet sich beim angegebenen Konto an. Beim Beenden wird sichergestellt, dass die Ressourcen ordnungsgemäß geschlossen und bereinigt werden. Dieser vereinfachte Ansatz erhöht die Zuverlässigkeit der Ressourcenverarbeitung, macht die Kontoverwaltung intuitiver und verringert die Möglichkeit von Fehlern während der Handelsvorgänge.

Wichtige Eigenschaften und Methoden

  • connected (bool): Zeigt an, ob die Anmeldung erfolgreich war und die Verbindung zum Terminal aktiv ist. Gibt True zurück, wenn das Konto verbunden ist.
  • refresh(): Aktualisiert die Kontoinstanz durch Abrufen der neuesten Kontodetails vom Terminal und stellt so sicher, dass die Kontodaten aktuell bleiben.

Risiko- und Vermögensmanagement

Die Klasse

RAM ist für die Risikobewertung und das Risikomanagement bei Handelsaktivitäten verantwortlich. Es verfügt über Attribute wie risk_to_reward, fixed_amount, min_amount, max_amount und risk, die es Händlern ermöglichen, ihre Risikoexposition effektiv zu definieren und zu kontrollieren. Diese Eigenschaften bieten die Flexibilität, Risikoparameter, minimale und maximale Risikobeträge sowie Risiko-Ertrags-Verhältnisse für jeden Handel festzulegen.

Diese Klasse umfasst Methoden wie get_amount, die den Risikobetrag für jeden Trade basierend auf der verfügbaren Marge und dem Risikoprozentsatz berechnet, und check_losing_positions und check_open_positions, die sicherstellen, dass Verluste oder Positionsbeträge innerhalb eines vordefinierten Zeitraums bleiben Grenzen. Durch die Integration dieser Fähigkeiten bietet die RAM-Klasse einen umfassenden Ansatz für das Risikomanagement, verbessert die Entscheidungsfähigkeit und fördert sicherere Handelspraktiken.

Wichtige Eigenschaften und Methoden

  • risk (Float): Der Prozentsatz des gefährdeten Kapitals pro Trade, ausgedrückt als Ganzzahl (z. B. 1 bedeutet 1 %). Der Standardwert ist 1.
  • risk_to_reward (Float): Risiko-Ertrags-Verhältnis, das das Verhältnis zwischen potenziellem Risiko und Ertrag angibt. Der Standardwert ist 2.
  • fixed_amount (Float): Ein fester Risikobetrag pro Trade überschreibt, falls festgelegt, prozentuale Berechnungen.
  • get_amount(): Berechnet den Risikobetrag für jeden Trade basierend auf konfigurierten Eigenschaften wie Risiko, fixed_amount, min_amount und max_amount und gibt ihn zurück.
Die

RAM-Klasse wird am besten in der Trader-Klasse verwendet, die vor der Bestellung verwendet werden kann.

Kerze und Kerzen

Die Klassen

Candle und Candles sind benutzerdefinierte Tools zum Verwalten von Preisbalken, die vom Terminal abgerufen werden. Die Candle-Klasse kapselt die Daten eines einzelnen Preisbalkens und stellt sicher, dass erforderliche Eigenschaften wie Eröffnung, Hoch, Tief und Schluss (OHLC) in jedem Fall vorhanden sind. Es unterstützt Python-Protokolle, einschließlich Hashing, Iteration und Vergleich, und stellt gleichzeitig Methoden wie keys() und values() zum Verwalten von Eigenschaften bereit. Darüber hinaus werden während der Instanziierung übergebene Eigenschaften dynamisch hinzugefügt, was eine flexible Anpassung ermöglicht.

Die Klasse

Candles fungiert als Container für mehrere Candle-Objekte, die in chronologischer Reihenfolge angeordnet sind. Es verwendet Pandas DataFrame zum Speichern und Verwalten seiner Daten und ermöglicht so eine nahtlose Integration mit Tools wie Pandas-ta für erweiterte technische Analysen. Diese Klasse dient als leistungsstarke Grundlage für die Entwicklung von Handelsstrategien, indem sie verschiedene Python-Protokolle wie Slicing und Iteration unterstützt und die Funktionalität durch spezielle Eigenschaften wie Zeitrahmen erweitert. Seine Vielseitigkeit gewährleistet den häufigen Einsatz in komplexen Analyseabläufen.

Eigenschaften und Methoden der Candle-Klasse

  • time (int): Startzeit des Kerzenzyklus.
  • open (Float): Der Eröffnungspreis der Kerze.
  • high (Float): Der höchste während der Kerzenperiode erreichte Preis.
  • low (Float): Der niedrigste Preis, der während der Kerzenperiode erreicht wurde.
  • close (Float): Der Schlusskurs der Kerze.
  • tick_volume (Float): Anzahl der Ticks im Kerzenzeitraum.
  • real_volume (Float): Tatsächliches Handelsvolumen während der Kerzenperiode.
  • spread (Float): Spread innerhalb der Kerzenperiode.
  • Index (int): Eine benutzerdefinierte Eigenschaft, die die Position der Kerze in der Sequenz angibt.
  • set_attributes(**kwargs): Legt die Eigenschaften der Kerzeninstanz dynamisch anhand der bereitgestellten Schlüsselwortargumente fest.
  • is_bullish(): Gibt „True“ zurück, wenn die Kerze bullisch ist (der Schlusskurs ist größer oder gleich dem Eröffnungskurs), andernfalls „False“.
  • is_bearish(): Gibt „True“ zurück, wenn die Kerze bärisch ist (der Schlusskurs ist niedriger als der Eröffnungskurs), andernfalls „False“.
  • dict(exclude: set = None, include: set = None): Gibt ein Wörterbuch mit Kerzenattributen zurück. Sie können optional die Sammlung exclude oder include verwenden, um Attribute zu filtern.

Eigenschaften und Methoden der Kerzenklasse

  • Index (Series[int]): pandas Serie, die die Indizes aller Kerzen im Objekt enthält.
  • time (Series[int]): pandas Serie, die alle Kerzenzeiten im Objekt enthält.
  • open (Series[float]): pandas Serie, die die Eröffnungspreise aller Kerzen im Objekt enthält.
  • high (Series[float]): pandas Serie, die den höchsten Preis aller Kerzen im Objekt enthält.
  • low (Series[float]): pandas Serie, die den niedrigsten Preis aller Kerzen im Objekt enthält.
  • close (Series[float]): pandas Serie, die die Schlusskurse aller Kerzen im Objekt enthält.
  • tick_volume (Series[float]): pandas Serie, die die Tick-Beträge aller Kerzen im Objekt enthält.
  • real_volume (Series[float]): Pandas Serie, die das tatsächliche Volumen aller Kerzen im Objekt enthält.
  • spread (Series[float]): Pandas-Serie, die alle Candle-Spreads im Objekt enthält.
  • Candle (Typ[Kerze]): Klasse, die zur Darstellung einer einzelnen Kerze innerhalb des Objekts verwendet wird.
  • timeframe (TimeFrame): Der Zeitrahmen der Kerze, berechnet aus ihrem Zeitstempel.
  • data (DataFrame): Pandas DataFrame, der Basisdaten für alle Kerzen im Objekt enthält.
  • rename(inplace=True, **kwargs): Spalten des zugrunde liegenden DataFrame umbenennen.
  • ta: Greifen Sie auf die Pandas-ta-Bibliothek zu, indem Sie über das Attribut data technische Analysen direkt an Kerzen durchführen.
  • ta_lib: Bietet Zugriff auf die ta-Bibliothek für zusätzliche technische Analysen. Verwenden Sie sie mit Funktionen, die die Übergabe von Serien- oder DataFrame-Objekten als Argumente erfordern.
  • columns: Gibt die Spaltennamen des zugrunde liegenden DataFrame zurück.

Zecken und Zecken

Die Klassen

Ticks und Tick dienen zur Verwaltung von Tick-Daten vom Handelsterminal, ähnlich wie die Klasse Candle. Die Tick-Klasse stellt einen einzelnen Tick dar und zu ihren Eigenschaften gehören Geld- und Briefkurs, letzter Preis und Volumen. Dadurch wird sichergestellt, dass jede Instanz die erforderlichen Daten für ein einzelnes Tick-Ereignis kapselt. Es unterstützt die dynamische Attributverwaltung und bietet einen wörterbuchähnlichen Zugriff, wodurch es in verschiedenen Kontexten anpassbar und einfach zu bedienen ist.

Die

Ticks-Klasse fungiert als Container für mehrere Tick-Objekte und speichert Daten in Pandas DataFrame für eine effiziente Bearbeitung und Analyse. Es unterstützt Iteration, Slicing und verschiedene Datenoperationen und ermöglicht so eine nahtlose Integration mit Tools wie pandas-ta für technische Analysen. Diese Klasse ist für die Verarbeitung großer Tick-Datenmengen in Handelssystemen unerlässlich und bietet eine leistungsstarke Struktur für Echtzeit- oder historische Datenanalysen.

Symbole

Die Klasse

_Symbol_ bietet eine leistungsstarke Struktur zum Kapseln der Daten eines Finanzinstruments und unterstützt Berechnungen und Vorgänge, die vor dem Einleiten einer Transaktion erforderlich sind. Als Unterklasse von _Base und SymbolInfo integriert es eine Vielzahl von Eigenschaften und Methoden zum effizienten Umgang mit Finanzinstrumenten. Diese Klasse kann für verschiedene Instrumente von verschiedenen Brokern angepasst werden und gewährleistet so die Anpassungsfähigkeit an alle Handelsplattformen.

Die Symbol-Klasse vereinfacht komplexe Handelsaufgaben mit Hilfsmethoden für den Zugriff auf aktuelle Tick-Daten, die Verwaltung der Markttiefe und die Durchführung von Währungsumrechnungen. Es bietet die Funktionalität, Symbole zu initialisieren, Volumina zu überprüfen und historische Kurse oder Ticks abzurufen, was es zu einem wichtigen Bestandteil der Entwicklung einer Handelsstrategie macht. Sein Design stellt sicher, dass Entwickler sein Verhalten erweitern und anpassen können, um spezifische Handelsanforderungen zu erfüllen.

Wichtige Eigenschaften und Methoden

Die Klasse

Symbol ist eine funktionsreiche Klasse. Für die Zwecke dieses Artikels habe ich nur einige der wichtigsten angesprochen, die Sie am wahrscheinlichsten verwenden werden. tick und account sind die einzigen Eigenschaften der Klasse Symbol, im Gegensatz zu denen, die in der übergeordneten Klasse SymbolInfo definiert sind.

  • tick (Tick): Stellt den aktuellen Preis-Tick eines Finanzinstruments dar und liefert Marktdaten in Echtzeit.
  • account (Konto): Instanz des aktuellen Handelskontos, das mit dem Symbol verknüpft ist.
  • __init__(*, name: str, **kwargs): Symbolinstanz initialisieren. Das Attribut name ist erforderlich und muss mit dem vom Broker im Terminal angegebenen Symbolnamen übereinstimmen.
  • initialize(): Füllt die Symbolinstanz, indem der aktuelle Preistick und die Details vom Terminal abgerufen werden. Bei Erfolg wird die Eigenschaft select auf True gesetzt und alle Eigenschaften werden mit Serverdaten gefüllt.
  • convert_currency(*, amount: float, from_currency: str, to_currency: str): Konvertiert den angegebenen Betrag von einer Währung in eine andere.
  • amount_in_quote_currency(*, amount: float): Konvertiert den Betrag von der Kontowährung in die Kurswährung, wenn die Kontowährung von der Kurswährung abweicht. Diese Methode ist besonders nützlich für die Durchführung von Risikomanagementberechnungen.
  • info_tick: Rufen Sie den aktuellen Preistick eines Finanzinstruments ab.
  • symbol_select(enable: bool = True): Fügt Symbole zum MarketWatch-Fenster hinzu oder entfernt sie daraus.
  • check_volume(volume: float): Stellen Sie sicher, dass das angegebene Transaktionsvolumen innerhalb der zulässigen Grenzen liegt, und passen Sie es gegebenenfalls an.
  • round_off_volume(volume: float, round_down: bool = False): Rundet die Lautstärke auf den nächsten gültigen Schritt.
  • compute_volume: Berechnet das passende Volumen für einen Trade.
  • copy_rates_from_pos(timeframe, start_position=0, count=500): Erhalten Sie Balken ab einem bestimmten Index.
  • copy_rates_from(timeframe, date_from, count=500): Historische Wechselkurse (Balken) ab dem angegebenen Datum abrufen.
  • copy_ticks_from(date_from, count=100, flags=CopyTicks.ALL): Tick-Daten ab dem angegebenen Datum abrufen.
Die

Symbol-Klasse ist ein vielseitiges und funktionsreiches Tool zur Verwaltung von Finanzinstrumenten und bietet die notwendigen Methoden zum Abrufen und Transformieren von Daten. Während sich diese Einführung auf Schlüsselfunktionen wie Initialisierung, Währungsumrechnung und das Abrufen der neuesten Tick-Daten konzentriert, werden die vielen anderen Funktionen in zukünftigen Diskussionen untersucht. Dazu gehört die Integration in algorithmische Handelssysteme und der Nachweis der Eignung für verschiedene Anwendungsfälle.

Ein bemerkenswerter Beitrag ist die Klasse ForexSymbol, die eine spezielle Erweiterung der Klasse Symbol ist und speziell für den Devisenhandel entwickelt wurde. Diese Unterklasse wurde entwickelt, um die besonderen Anforderungen des Währungspaarhandels zu erfüllen und demonstriert die Flexibilität und das Anpassungspotenzial der Symbol-Klasse in verschiedenen Handelsszenarien.

Bestellung

Die Klasse

Order vereinfacht die Verwaltung von Handelsaufträgen durch die Kombination verwandter Eigenschaften und Methoden und erleichtert so die Prüfung, Validierung und den Versand von Aufträgen. Als Unterklasse von _Base und TradeRequest erbt sie leistungsstarke Funktionalität und bietet gleichzeitig zusätzlichen Komfort. Durch das Festlegen sinnvoller Standardwerte für Eigenschaften wie action, type_time und type_filling wird die Codeduplizierung während der Instanziierung minimiert und so Effizienz und Klarheit bei Transaktionsvorgängen gewährleistet.

Dieser Kurs vereinfacht Kernaufgaben wie das Abrufen ausstehender Aufträge, die Überprüfung der Angemessenheit der Mittel und die Berechnung von Marge, Gewinn und Verlust. Die Integration von Methoden wie send() und check() gewährleistet einen nahtlosen Arbeitsablauf für die Initiierung und Validierung von Handelsvorgängen, während Dienstprogramme wie calc_margin() und calc_profit() die Analyse vor dem Handel erleichtern. Sein Design macht es zu einem unverzichtbaren Werkzeug für die effiziente Umsetzung algorithmischer Handelsstrategien.

Wichtige Eigenschaften und Methoden der Order-Klasse

  • __init__: Initialisieren Sie die Auftragsinstanz mit Schlüsselwortargumenten, die gültige TradeRequest-Attribute sein müssen. Der Standardwert für action ist DEAL, für type_time ist DAY und für type_filling ist FOK, obwohl sie während der Instanziierung angepasst werden können.
  • check(**kwargs): Überprüfen Sie Ihre Bestellung, bevor Sie sie aufgeben. Alle bereitgestellten Schlüsselwortargumente aktualisieren das Anforderungsobjekt.
  • send: Senden Sie den Auftrag zur Ausführung an das Terminal.
  • calc_margin: Berechnet die erforderliche Marge, um einen Handel zu platzieren.
  • calc_profit: Berechnen Sie den potenziellen Gewinn des Handels.
  • calc_loss: Berechnen Sie den potenziellen Verlust eines Handels.
  • request: Diese Eigenschaft gibt das Transaktionsanforderungsobjekt als Wörterbuch zurück.

Händler

Die Klasse

Trader fungiert als nützliche abstrakte Basisklasse für die Verwaltung von Handelsaufträgen. Es bietet grundlegende Methoden zum Erstellen und Verwalten verschiedener Auftragstypen und übernimmt gleichzeitig wichtige Prozesse wie die Überprüfung, Weiterleitung und Aufzeichnung von Transaktionen. Diese Klasse muss place_trade-Methoden in ihren Unterklassen implementieren, um Flexibilität bei der Anpassung an bestimmte Handelsstrategien zu gewährleisten.

Zu den wichtigsten Funktionen gehören die Möglichkeit, Stop-Loss- und Take-Profit-Levels basierend auf Pips oder Pips festzulegen, Aufträge mit oder ohne Stop-Loss-Levels zu erstellen und den angemessenen Betrag für einen Trade zu berechnen. Diese Klasse lässt sich in ordnungsgemäß initialisierte Symbolinstanzen und optionale RAM-Instanzen zur Risikobewertung integrieren und ermöglicht so eine nahtlose Transaktionsverwaltung. Es unterstützt auch die Aufzeichnung von Transaktionsergebnissen, um die Verfolgung und Analyse ausgeführter Transaktionen zu erleichtern.

Wichtige Eigenschaften und Methoden der Trader-Klasse

  • modify_order(**kwargs): Bestellattribute mithilfe der bereitgestellten Schlüsselwortparameter ändern.
  • modify_ram(**kwargs): Aktualisiert die RAM-Instanzeigenschaften (Risk Assessment and Management) mithilfe der bereitgestellten Schlüsselwortargumente.
  • check_order: Überprüfen Sie Ihre Bestellung, bevor Sie sie aufgeben, um sicherzustellen, dass sie die erforderlichen Bedingungen erfüllt.
  • send_order: Senden Sie den Auftrag zur Ausführung an den Broker.
  • record_trade(*, result: OrderSendResult, parameters: dict = None, name: str = ""): Transaktionsdetails in einer CSV- oder JSON-Datei protokollieren und die Aufgabe an die config.task_queue-Instanz delegieren. Enthält Handelsergebnisse und Strategieparameter (falls angegeben).
Das

contrib-Paket enthält zwei einfache Händler, ScalpTrader und SimpleTrader, wobei ScalpTrader unten gezeigt wird.

Sitzung und Sitzungen

Die Klassen

Session und Sessions bieten ein leistungsstarkes Framework zur Verwaltung und Ausführung von Handelszeiten. Session stellt einen in UTC definierten Zeitraum mit einer Startzeit und einer Endzeit dar und kann als Ganzzahl oder datetime.time-Objekt angegeben werden. Diese Sitzungen können vordefinierte Aktionen auslösen, z. B. das Schließen aller Geschäfte oder nur Gewinn-/Verlustpositionen, oder vom Benutzer festgelegte benutzerdefinierte Aktionen. Dies ermöglicht der Strategie eine genaue Kontrolle über die Handelsaktivität während eines bestimmten Zeitraums.

Die

Sessions-Klasse gruppiert mehrere Session-Instanzen in einer sortierten Sammlung und erleichtert so die Verwaltung überlappender oder aufeinanderfolgender Handelsperioden. Es fungiert als asynchroner Kontextmanager und überwacht kontinuierlich die aktuelle Zeit, um aktive Sitzungen zu ermitteln. Wenn keine aktiven Sitzungen vorhanden sind, pausiert die Sessions-Instanz den Handelsbetrieb, bis die nächste geplante Sitzung beginnt, um die Einhaltung des angegebenen Handelsfensters sicherzustellen.

Durch die Integration dieser Klassen können Handelsstrategien problemlos zeitbasierte Regeln integrieren und so ihre Genauigkeit und Zuverlässigkeit erhöhen. Diese Funktion ist besonders nützlich in automatisierten Systemen, die eine strikte Einhaltung der Handelszeiten erfordern (z. B. Forex- oder Börsenhandel) oder in automatisierten Systemen, die eine Ausrichtung der Abläufe auf vordefinierte Zeitintervalle erfordern.

Wichtige Eigenschaften und Methoden der Session-Klasse

  • start (datetime.time): Die Startzeit der Sitzung in UTC.
  • end (datetime.time): Die Endzeit der Sitzung in UTC.
  • on_start (str): Gibt die Aktion an, die beim Start der Sitzung ausgeführt werden soll, z. B. "close_all", "close_win", "close_loss" oder eine benutzerdefinierte Aktion.
  • on_end (str): Gibt die Aktion an, die ausgeführt werden soll, wenn die Sitzung endet, ähnlich wie on_start.
  • custom_start (Aufrufbar): Optionale benutzerdefinierte Funktion, die beim Start der Sitzung ausgeführt wird.
  • custom_end (Aufrufbar): Optionale benutzerdefinierte Funktion, die ausgeführt wird, wenn die Sitzung endet.
  • name (str): Der Name der Sitzung ist, falls nicht angegeben, standardmäßig eine Kombination aus Startzeit und Endzeit.
  • in_session: Überprüfen Sie, ob die aktuelle Zeit innerhalb der Sitzung liegt.
  • begin: Führen Sie die durch on_start oder custom_start angegebene Aktion zu Beginn der Sitzung aus.
  • close: Führen Sie die durch on_end oder custom_end angegebene Aktion am Ende der Sitzung aus.
  • duration: Gibt die Dauer der Sitzung als Duration-Objekt mit Stunden, Minuten und Sekunden zurück.
  • close_all: Alle offenen Positionen schließen.
  • close_win: Schließen Sie alle profitablen Positionen.
  • close_loss: Alle Verlustpositionen schließen.
  • action(action: str): Führen Sie die angegebene Aktion aus, z. B. das Schließen einer Position oder das Auslösen einer benutzerdefinierten Funktion.
  • until: Berechnet die Zeit in Sekunden vom aktuellen Zeitpunkt bis zum Beginn der Sitzung.

Wichtige Eigenschaften und Methoden der Sessions-Klasse

  • sessions (list[Session]): Eine Liste von Session Objekten, sortiert nach ihrer Startzeit.
  • current_session (Sitzung | Keine): Die aktuell aktive Sitzung (falls vorhanden).
  • find(moment: datetime.time = None): Konversationen suchen und zurückgeben, die die angegebene Zeit enthalten. Wenn keine Uhrzeit angegeben ist, wird die aktuelle Uhrzeit verwendet.
  • find_next(moment: datetime.time = None): Suchen Sie die nächste Sitzung nach der angegebenen Zeit und kehren Sie zurück. Wenn keine Zeit angegeben wird, wird standardmäßig die aktuelle Zeit verwendet.
  • check: Überwachen Sie die aktuelle Sitzung. Wenn keine aktive Sitzung vorhanden ist, wird gewartet, bis die nächste Sitzung beginnt.
  • config: Mit der Sitzung verknüpfte Konfigurationsinstanz, die den Modus bestimmt (Live oder Backtest).

Strategie

Die

Strategy-Klasse ist das Grundgerüst für die Entwicklung von Handelsstrategien und kann nahtlos mit Bot und Backtester integriert werden. Als abstrakte Basisklasse ist sie mit vielen Funktionen ausgestattet, muss aber trade-Methoden in abgeleiteten Klassen implementieren. Diese Methode dient als zentrale Handelslogik der Strategie. Die Klasse Strategy fungiert als asynchroner Kontextmanager und führt die Richtlinie mithilfe der Methode run_strategy aus, wobei sie je nach Betriebsmodus die Methode live_strategy oder backtest_strategy aufruft.

Mit Attributen wie symbol, sessions und parameters stellt diese Klasse sicher, dass die Strategie individuell angepasst und an bestimmte Finanzinstrumente und Handelssitzungen angepasst werden kann. Die Integration kollaborativer Multitasking-Methoden wie sleep und delay stellt sicher, dass Strategien in einer Live- oder Backtest-Umgebung effizient und synchron mit Marktaktualisierungen bleiben. Dies macht die Klasse Strategy zu einem leistungsstarken und flexiblen Werkzeug zum Aufbau komplexer Handelssysteme.

Eigenschaften und Methoden

  • name (str): Der Name der Strategie. Wenn nicht explizit angegeben, wird standardmäßig der Klassenname verwendet.
  • symbol (Symbol): Das mit der Strategie verbundene Finanzinstrument.
  • parameters (dict): Wörterbuch richtlinienspezifischer Parameter.
  • sessions (Sitzungen): Die Handelssitzung, in der die Strategie aktiv ist.
  • mt5 (MetaTrader | MetaBackTester): Instanz von MetaTrader oder MetaBackTester basierend auf dem Modus (Live oder Backtest).
  • config: Konfigurationseinstellungen der Richtlinie.
  • running (bool): Gibt an, ob die Strategie derzeit ausgeführt wird.
  • backtest_controller (BackTestController): Controller zur Verwaltung von Backtest-Vorgängen.
  • current_session (Sitzung): Die aktuell aktive Handelssitzung.
  • __init__(symbol: Symbol, params: dict = None, sessions: Sessions = None, name: str = ""): Verwenden Sie die angegebenen Symbole, Parameter und Sitzungsinitialisierungsstrategie.

Das obige ist der detaillierte Inhalt vonAIOMQL. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage