>_ DevTrendsde

Sprache

Start

Sprachen

Bereiche

Frontend Backend Mobile DevOps AI / ML GameDev Blockchain Embedded Sicherheit
Python

Wie man einen Trading-Bot in Python entwickelt, ohne das Rad neu zu erfinden

Wenn ein Programmierer zum ersten Mal algorithmischen Handel ausprobieren möchte, beginnt alles normalerweise mit dem Erstellen eines eigenen Skripts. Das Skript ruft Kerzen über die REST API ab, berechnet einige Indikatoren und sendet Aufträge. Einen Monat später wird das Projekt zu einem schwerfälligen Gebilde aus Netzwerkfehlerbehandlung, Socket-Desynchronisierung und chaotischen Workarounds für die Auftragssteuerung.

Statt alles von Grund auf neu zu schreiben, ist es sinnvoller, ein fertiges Framework zu verwenden. Das Projekt VeighNa (ehemals bekannt als VN.py) wurde bereits 2015 ins Leben gerufen. Es hat über 43 Tausend Sterne auf GitHub, und die aktive Entwicklung wird bis heute fortgesetzt.

Was die Plattform bietet

VeighNa ist ein Open-Source-Framework für algorithmischen Handel in Python. Die interne Architektur basiert auf einer Event-Engine. Das System muss keine Endlosschleifen ausführen – es reagiert auf eingehende Ticks, Änderungen des Auftragsstatus und Signale des System-Timers.

Das Projekt hat einen institutionellen Fokus. In China wird es von Futures-Brokern, Vermögensverwaltungsgesellschaften und privaten Hedgefonds genutzt. Dies hinterlässt einen gewissen Abdruck in der Codebasis.

Die meisten integrierten Konnektoren sind für den chinesischen Finanzmarkt zugeschnitten (CTP, XTP, HTS). Es gibt jedoch einen Adapter für Interactive Brokers für die Arbeit mit internationalen Börsen. Wenn die gewünschte Börse oder Krypto-Plattform nicht auf der Liste steht, müssen Sie Ihren eigenen Gateway schreiben, indem Sie von der Basis-Gateway-Klasse erben.

Module für praktische Aufgaben

Die Systemarchitektur besteht aus drei Hauptteilen: dem Kern, den Handelsanwendungen (Apps) und den Datenadaptern.

Für Strategien werden verschiedene spezialisierte Engines bereitgestellt:

  • CTA Strategy verarbeitet Standard-Trend- und Counter-Trend-Handel mit einzelnen Instrumenten.
  • Spread Trading hilft bei der Implementierung von Pair-Trading und räumlicher Arbitrage.
  • Option Master enthält Tools zur Optionsbewertung, Volatilitätskurvenkonstruktion und Greeks-Berechnung.
  • Portfolio Strategy konzentriert sich auf Strategien, die gleichzeitig einen Korb von Vermögenswerten handeln.

Ein nettes Detail ist das Vorhandensein fertiger Oberflächen für Backtesting. Um eine Idee mit historischen Daten zu testen, müssen Sie nicht unbedingt Jupyter Notebook öffnen. Das System verfügt über eine integrierte grafische Oberfläche basierend auf PyQt, wo Sie die Parameteroptimierung durchführen und sofort die Equity-Kurve sowie Drawdown-Diagramme anzeigen können.

Für die Speicherung des Verlaufs werden reguläre relationale Datenbanken wie SQLite und MySQL unterstützt, ebenso wie spezialisierte spaltenorientierte Datenbanken wie QuestDB und TDengine, die für schnelle Zeitreihenein- und -ausgabe optimiert sind.

Machine Learning in Release 4.0

Die vierte Generation des Frameworks führte das Modul vnpy.alpha ein. Die Entwickler geben ehrlich zu, dass sie vom Qlib-Projekt von Microsoft inspiriert wurden.

Das Modul schließt den Entwicklungszyklus für ML-Strategien:

  • Feature-Generierung und -Verarbeitung basierend auf dem Alpha158-Faktor-Ausdruckssatz.
  • Training von Vorhersagemodellen mit LightGBM, Lasso oder Multi-Layer-Perceptron (MLP).
  • Schneller Übergang vom Research-Notebook zur Ausführung auf einem Live- oder simulierten Konto.

Das Repository enthält fertige Jupyter Notebooks mit Beispielen, sodass es nicht schwierig ist, sich mit der Datenaufbereitung und dem Trainings-Pipeline vertraut zu machen.

Wie der Code aussieht

Das Starten eines Handels-Terminals mit dem erforderlichen Modulset kann buchstäblich in einem Dutzend Zeilen erfolgen. Im Beispiel unten assemblieren wir eine Anwendung mit einer CTP-Gateway-Verbindung und zwei Modulen: CTA-Strategieausführung und historisches Testen.

from vnpy.event import EventEngine
from vnpy.trader.engine import MainEngine
from vnpy.trader.ui import MainWindow, create_qapp

from vnpy_ctp import CtpGateway
from vnpy_ctastrategy import CtaStrategyApp
from vnpy_ctabacktester import CtaBacktesterApp


def main():
    qapp = create_qapp()

    event_engine = EventEngine()
    main_engine = MainEngine(event_engine)
    
    main_engine.add_gateway(CtpGateway)
    main_engine.add_app(CtaStrategyApp)
    main_engine.add_app(CtaBacktesterApp)

    main_window = MainWindow(main_engine, event_engine)
    main_window.showMaximized()

    qapp.exec()


if __name__ == "__main__":
    main()

Nach dem Start öffnet sich ein vollständiges Desktop-Fenster mit Auftragstabellen, Positionen, Protokollen und Kerzenchart-Diagrammen.

Lohnt es sich für den Produktiveinsatz

VeighNa ist eine massive Plattform. Wenn Sie nur ein paar Aufträge an den Spotmarkt senden müssen, einmal am Tag über die REST API, wird das Framework überkompliziert erscheinen.

Das Tool ist jedoch definitiv nützlich, wenn Sie eine erprobte Architektur für ereignisgesteuerten Handel suchen, planen, Ihre eigenen Konnektoren zu schreiben, oder eine fertige Desktop-Terminal mit Risikomanagement und Backtesting-Funktionen wünschen. Die Hauptsache ist, sich darauf vorzubereiten, dass einige der Dokumentation und Community-Kommentare mit einem Übersetzer aus dem Chinesischen übersetzt wurden.

Ähnliche Projekte