Type/to search
0
Follow
80
Followers
Inventors Einführung in den quantitativen Handel - Von den Grundlagen zur Praxis
Original
Created 2019-06-25 15:48:58  Updated 2023-10-31 21:01:08
 2
 16100

img

Inhaltsverzeichnis

Kapitel 1 Grundlagen des quantitativen Handels

1.1 Was ist quantitativer Handel?

Zusammenfassung

Quantitativer Handel als Produkt der Kombination von Wissenschaft und Maschinen verändert die Landschaft des modernen Finanzmarktes. Mittlerweile richten viele Investoren ihre Aufmerksamkeit auf diesen Bereich. Wie lassen sich Risiken minimieren und die bestmögliche Rendite erzielen? Dies ist auch der Zweck dieser Kursreihe. Als ersten Artikel erklären wir kurz „Was ist quantitativer Handel“.

Überblick

Wenn viele Leute den Begriff „quantitativer Handel“ hören, denken sie, das sei etwas High-End-Produkt, das sie über Nacht reich machen würde. Das Zeitalter der künstlichen Intelligenz und der Aufstieg hochentwickelter Technologien wie Deep Learning, Big Data und Cloud Computing haben dem Ganzen eine mysteriöse Note verliehen. Es scheint, dass durch den Einsatz quantitativer Handelsmethoden eine „perfekte“ Handelsstrategie entwickelt werden kann.

Tatsächlich ist quantitativer Handel bis zu einem gewissen Grad zu einem Mythos geworden. Wenn man vom Trading einmal absieht, ist „Quantifizierung“ eigentlich die Verwendung von Computern, Statistiken, Mathematik und anderen Methoden mittels eines wissenschaftlichen Investmentsystems, um eine Reihe erwarteter Handelssignalsysteme zu ermitteln. Dieses Signalsystem sagt uns, wann und zu welchem ​​Preis wir kaufen und verkaufen sollten.

Die Entwicklung des quantitativen Handels

Um auf die Quelle zurückzukommen: Der erste, der quantitative Methoden anwandte, um Datenänderungen zu analysieren und Muster von Marktpreisschwankungen zu erkennen, war weder der Niederländer - das Geburtsland der Aktie - noch die Briten, die das moderne Finanzwesen förderten, noch die Amerikaner, die seit der Gründung des Landes mit dem Finanzwesen koexistieren, sondern ein Franzose.

Bereits im 18. Jahrhundert schlug Jules Regnault, ein französischer Börsenmaklerassistent, die moderne Theorie der Aktienpreisänderungen vor. Später veröffentlichte er das Buch „Wahrscheinlichkeitsberechnung und die Philosophie des Aktienhandels“, in dem er das Gesetz der Marktschwankungen (Normalverteilung) ausarbeitete. Er entdeckte: „Die Preisabweichung ist proportional zur Quadratwurzel der Zeit“ und erreichte schließlich Handelserfolg durch rationale und quantitative Investitionsentscheidungen.

Heutzutage, im Zeitalter von Internet, Big Data, Cloud Computing und künstlicher Intelligenz, hat sich auch der quantitative Handel rasant entwickelt. Londons Canary Wharf, einst das Zentrum des globalen Finanzwesens, ist seit langem zu einem Zentrum für IT-Unternehmen geworden. Die weltweit führenden Investmentbanken bilden ebenfalls ihre eigenen quantitativen Teams aus und versuchen, sich am Finanzkrieg „Wer das Modell bekommt, gewinnt die Welt“ zu beteiligen. Diese IT-Teams, die Handelsmodelle entwickeln, werden auch als Quant-Teams bezeichnet. Was die Größenordnung angeht, gibt es in den USA, wo man früher angefangen hat, bereits eine große Zahl starker quantitativer Hedgefonds.

Im Gegensatz dazu befinden sich in China sowohl die Hardware-Ausrüstung als auch die Investitionsforschungskapazitäten noch in der Anfangsphase. Allerdings haben immer mehr Institutionen und professionelle Investoren die Vorteile des quantitativen Handels erkannt und beteiligen sich an diesem Bereich. Insbesondere da die Aufsicht immer strenger wird und sich die Markteffizienz allmählich verbessert, bietet der quantitative Handel einen größeren Wachstumsspielraum.

Merkmale des quantitativen Handels

Wissenschaftliche Überprüfung: Stellen Sie sich vor, Sie haben ein Handelssystem und möchten dessen Wirksamkeit mithilfe eines simulierten Handelssystems testen. Das kann sehr viel Zeit kosten. Wenn Sie es direkt mit einem echten Handelssystem testen, verlieren Sie möglicherweise echtes Geld. Allerdings kann die Backtesting-Funktion im quantitativen Handel verwendet werden, um das Handelssystem anhand einer großen Menge historischer Daten auf wissenschaftliche Weise zu testen. Lassen Sie die Daten dafür sprechen, was funktioniert und was nicht, anstatt einfach der Masse zu folgen.

Objektiv und präzise: Beim Trading sind wir selbst unser wahrer Feind. Unsere Mentalität zu kontrollieren ist leichter gesagt als getan. Menschliche Schwächen wie Gier, Angst und Glück werden auf dem Handelsmarkt um ein Vielfaches verstärkt. Quantitatives Trading kann uns helfen, diese Schwächen zu überwinden und bessere Entscheidungen beim Handel zu treffen.

Zeitgerecht und effizient: Beim subjektiven Handel kann die Reaktionsgeschwindigkeit der Menschen nicht schneller sein als die von Computern, und die körperliche Kraft und Energie der Menschen kann nicht 24 Stunden am Tag eingesetzt werden. Auf dem Handelsmarkt, wo Gelegenheiten flüchtig sind, kann der quantitative Handel den subjektiven Handel vollständig ersetzen, Handelsgelegenheiten finden und Marktveränderungen zeitnah und schnell verfolgen.

Risikokontrolle: Quantitativer Handel kann nicht nur anhand historischer Daten historische Muster erkennen, die sich in der Zukunft wiederholen könnten, sondern diese historischen Muster sind auch Strategien mit einer höheren Gewinnwahrscheinlichkeit. Sie können auch eine Vielzahl unterschiedlicher Anlageportfolios aufbauen, um systemische Risiken zu reduzieren und die Finanzierungskurve zu glätten.

Was sind die klassischen Handelsstrategien für den quantitativen Handel?

Eröffnungs-Breakout-Strategie

Die erste halbe Stunde nach der Eröffnung kann oft den Trend des Tages bestimmen. Diese Strategie verwendet, ob der Preis innerhalb einer halben Stunde nach der Eröffnung eine positive oder negative Linie ist, als Standard für die Beurteilung des Trends des Tages. Handelt es sich um eine positive Linie, eröffnen Sie eine Kaufposition; handelt es sich um eine negative Linie, eröffnen Sie eine Verkaufsposition und schließen Sie die Position innerhalb weniger Minuten vor Handelsschluss. Dies ist eine sehr einfache Handelsstrategie.

Donchian-Kanal-Strategie

img

Abbildung 1-1 Donchian Channel Strategiediagramm

Die Donchian Channel-Strategie kann als Vorläufer des Intraday-Handels angesehen werden. Ihre Regeln lauten: Kaufen, wenn der aktuelle Preis höher ist als der höchste Preis der vorherigen N K-Linien, und verkaufen, wenn der aktuelle Preis niedriger ist als der niedrigste Preis der vorherigen N K-Linien. Die berühmten Turtle-Trading-Regeln verwenden eine modifizierte Version der Donchian-Channel-Strategie.

Periodenübergreifende Arbitrage-Strategie

Die übergreifende Arbitrage ist die häufigste Art von Arbitragegeschäften. Sie basiert auf den Preisen von Kontrakten mit unterschiedlichen Liefermonaten für dasselbe Handelsprodukt. Wenn zwischen den beiden Preisen ein großer Preisunterschied besteht, können Terminkontrakte mit unterschiedlichen Laufzeiten gleichzeitig gekauft und verkauft werden, um übergreifende Arbitrage durchzuführen. Nehmen wir an, dass der Preisunterschied zwischen dem Hauptvertrag und dem sekundären Hauptvertrag über einen langen Zeitraum bei etwa -50~50 bleibt. Wenn der Spread an einem bestimmten Tag 70 erreicht, erwarten wir, dass der Spread irgendwann in der Zukunft wieder auf 50 zurückkehrt. Dann können Sie den Hauptkontrakt verkaufen und gleichzeitig den sekundären Hauptkontrakt kaufen, um die Preisdifferenz zu minimieren. umgekehrt.

Zusammenfassen

Oben haben wir die relevanten Konzepte des quantitativen Handels im Hinblick auf Definition, Entwicklung, Merkmale und klassische Handelsstrategien kurz vorgestellt.

Das Verständnis des quantitativen Handels ist ein wichtiger Schritt auf dem Weg zum Quant. Abschließend wünsche ich jedem, dass er sich auf dem Bärenmarkt bereichern und möglichst schnell Erkenntnisse gewinnen kann! Denken Sie daran: Sie sind nur einen Bullenmarkt von der finanziellen Freiheit entfernt!

Vorschau des nächsten Abschnitts
Was sind die Unterschiede zwischen quantitativem und traditionellem Handel? Sollten wir beim tatsächlichen Handel den traditionellen oder den quantitativen Handel wählen? Im nächsten Abschnitt werden wir diese beiden Fragen aufgreifen, um den quantitativen Handel besser zu verstehen.

Hausaufgaben

  1. Beschreiben Sie in einem Satz kurz, was quantitativer Handel ist.
  2. Was sind die Merkmale des quantitativen Handels?

1.2 Warum quantitativer Handel?

Zusammenfassung

Viele Menschen verwenden komplexe Strategieprogrammierungen als Ausgangspunkt, wenn sie über quantitativen Handel diskutieren, und legen damit unbeabsichtigt einen Schleier des Mysteriums über den quantitativen Handel. In diesem Abschnitt werden wir versuchen, eine einfache „Skizze“ des quantitativen Handels in leicht verständlicher Sprache zu erstellen, um sein Geheimnis zu enthüllen. Ich glaube, dass selbst ein Anfänger ohne Grundkenntnisse es leicht verstehen kann.

Der Unterschied zwischen quantitativem und subjektivem Handel

Beim subjektiven Handel wird mehr Wert auf menschliche Analyse und Marktsinn gelegt. Selbst wenn Kauf- und Verkaufssignale auftauchen, werden Aufträge selektiv erteilt. Die Leute verpassen lieber den Markt, als Fehler zu machen. Menschliche Gefühle sind komplex, wechselhaft und unzuverlässig. Sobald die meisten Händler aufeinanderfolgende Verluste erleiden, neigen sie dazu, auf eine andere Methode umzusteigen. Es ist sehr zufällig und anfällig für Gewinne und Verluste, was die Erzielung stabiler Gewinne erschwert.

Quantitativer Handel entwickelt konsistente Kauf- und Verkaufsstrategien durch das Verständnis von Transaktionen. Behandeln Sie beim Trading alle Trends gleich und gehen Sie beim Öffnen und Schließen von Positionen systematisch vor. Es ist besser, Fehler zu machen, als etwas zu verpassen. Es verfügt außerdem über ein vollständiges Bewertungssystem, das durch Backtesting historischer Daten ermittelt, für welche Art von Markt und Produkten die Strategie besser geeignet ist, und durch die Kombination mehrerer Strategien und Produkte Rentabilität erzielt.

Kurz gesagt: Subjektiver Handel ist die Grundlage des quantitativen Handels, und quantitativer Handel ist die Verfeinerung des subjektiven Handels. Subjektives Trading ist eher wie das Üben von Kampfsportarten. Ob Sie am Ende Erfolg haben, hängt hauptsächlich von Ihrem Talent ab. Manche Menschen erlangen die Erleuchtung vielleicht nicht nach zehn Jahren, während andere sie an einem Tag erlangen. Quantitativer Handel ist eher wie Fitness. Solange Sie hart arbeiten, können Sie Muskeln aufbauen, auch wenn Sie kein Talent haben.

Ist quantitativer Handel besser als subjektiver Handel?

Ein erfolgreicher subjektiver Händler ist in gewissem Sinne auch ein quantitativer Händler. Denn ein erfolgreicher subjektiver Trader muss über seine eigenen Regeln und Methoden verfügen, also über ein Handelssystem. Erfolgreicher subjektiver Handel muss auf Handelsdisziplin und Handelsregeln basieren, und der Ausführungsteil der Handelsregeln ist eigentlich der quantitative Teil des subjektiven Handels.

Im Gegenteil, ein erfolgreicher quantitativer Händler muss auch ein ausgezeichneter subjektiver Händler sein, da die Entwicklung quantitativer Handelsstrategien tatsächlich die Kristallisation der Handelsphilosophie einer Person darstellt. Wenn die Wahrnehmung und das Verständnis des Marktes von Anfang an falsch sind, wird es mit der entwickelten Handelsstrategie auf lange Sicht schwer sein, Gewinne zu erzielen.

Daher ist aus Sicht des Gewinns die Handelsphilosophie der entscheidende Faktor, der darüber entscheidet, ob ein Händler letztlich erfolgreich sein kann, und nicht, ob es sich um subjektiven oder quantitativen Handel handelt. Quantitativer Handel mag oberflächlich betrachtet hochtrabend klingen, aber sein Gewinnprinzip unterscheidet sich im Wesentlichen nicht vom subjektiven Handel. Sie sind wie die beiden Seiten einer Sache, sowohl gegensätzlich als auch vereint.

Es lässt sich jedoch nicht leugnen, dass der quantitative Handel im Hinblick auf Handelsinstrumente viele Vorteile bietet.

Schnellere Überprüfung: Wenn Sie eine Handelsstrategie testen möchten, müssen Sie eine große Menge historischer Daten berechnen. Quantitativer Handel kann die Ergebnisse innerhalb weniger Minuten berechnen. Diese Geschwindigkeit ist um ein Vielfaches höher als beim subjektiven Handel.

Wissenschaftlicher:Um zu beurteilen, ob eine Strategie gut ist, verlassen wir uns auf Daten (wie Sharpe-Ratio, maximale Drawdown-Rate, annualisierte Rendite) und nicht auf eigennützige Scharlatane.

Mehr Möglichkeiten:Es gibt Tausende von Handelsprodukten auf der Welt. Es ist unmöglich, den Markt gleichzeitig für subjektiven Handel zu überwachen, aber quantitativer Handel kann den gesamten Markt in Echtzeit überwachen, sodass keine Handelsmöglichkeiten verpasst werden und die Rentabilität gesteigert wird.

Kann man mit quantitativem Trading tatsächlich Geld verdienen?

Natürlich kann man das, aber es ist schwierig, auf lange Sicht dabei zu bleiben. Ob Sie Geld verdienen oder nicht, hängt nicht vom quantitativen Handel selbst ab, es ist nur ein Werkzeug. Beim quantitativen Handel werden lediglich Handelsideen programmiert, regelmäßig und quantifiziert umgesetzt. Das Programm ersetzt lediglich die Ausführung. Der schwierige Teil besteht darin, langfristig stabil Geld zu verdienen, da der Markt ein Spiel ist und sich dynamisch verändert und sich auch die Handelsideen mit dem Markt ändern müssen.

Risiken des quantitativen Handels

Quantitativer Handel birgt auch Risiken, warum? Denn beim quantitativen Handel geht es darum, Muster in historischen Daten zu erkennen und Handelsstrategien zu entwickeln. Der Finanzmarkt ist jedoch ein ökologisches System und seine Gesetze und die menschliche Natur sind ein interaktiver dynamischer Prozess. Letztendlich ist es immer noch ein menschlicher Markt. Die Gesetze des Marktes werden von der menschlichen Natur beeinflusst, und die Gier und Angst in der menschlichen Natur werden sich mit den Veränderungen auf dem Markt ändern. Es gibt nur sehr wenige unveränderliche Gesetze auf dem Markt, und egal wie mächtig die Handelsstrategie ist, es ist schwierig, mit solchen plötzlichen Gesetzesänderungen umzugehen.

Zusammenfassen

Aus der obigen Erklärung können wir erkennen, dass quantitativer Handel keine einzigartige Handelsmethode ist, sondern nur ein Handelsinstrument, das uns hilft, die Handelslogik zu analysieren und Handelsstrategien zu verbessern. Egal, ob Sie Value-Investor oder technischer Investor sind und ob Sie in Aktien, Anleihen, Rohstoffe oder Optionen investieren: Eigentlich lässt sich alles quantifizieren. Im Vergleich zu Händlern, die ihre Entscheidungen auf der Grundlage persönlicher Erfahrungen treffen, verfügen quantitative Händler über Marktdaten und Rationalität.

Vorschau des nächsten Abschnitts

Quantifizierung ist nur eine Handelsmethode, Strategie ist nur ein Träger von Handelsideen und das Programm führt jeden Handelsprozess aus. Der nächste Abschnitt führt Sie durch den gesamten Lebenszyklus des quantitativen Handels, der Folgendes umfasst: Strategiekonzeption, Modellerstellung, Backtesting und Tuning, Simulationshandel, realer Handel, Strategieüberwachung usw.

Hausaufgaben

  1. Was ist der wichtigste Unterschied zwischen quantitativem und subjektivem Handel?
  2. Was sind die Vorteile des quantitativen Handels gegenüber dem subjektiven Handel?

1.3 Was müssen Sie für den quantitativen Handel vorbereiten?

Zusammenfassung

Ein vollständiger quantitativer Handelslebenszyklus besteht nicht nur aus der Handelsstrategie selbst. Es besteht aus mindestens sechs Gliedern, darunter: Strategiekonzeption, Modellerstellung, Backtesting und Tuning, Simulationshandel, realer Handel, Strategieüberwachung usw.

Strategisches Denken

Um quantitativen Handel zu betreiben, müssen Sie zunächst auf den Handelsmarkt zurückkehren, die Preise auf dem Markt genauer beobachten, die Gesetze der Marktschwankungen verstehen, versuchen, die Logik jeder Transaktion abzuleiten und schließlich die Handelsstrategie zusammenzufassen. Hier gibt es keine Abkürzung. Möglicherweise müssen Sie klassische Anlagebücher lesen oder weiter handeln und aus Ihren Fehlern lernen.

Für Anfänger im quantitativen Handel besteht der beste Weg, zu Beginn Handelsstrategien zu entwickeln, darin, sie nachzuahmen. Verwenden Sie die vorhandenen Indikatoren der technischen Analyse direkt, um die Strategielogik aufzubauen und die Kauf- und Verkaufsregeln zu schreiben, sodass Sie eine einfache Strategie erhalten. Angenommen, Ihre Handelsstrategie lautet: Kaufen, wenn der Preis höher ist als der Durchschnittspreis der letzten 10 Tage, und verkaufen, wenn der Preis niedriger ist als der Durchschnittspreis der letzten 10 Tage. Dann sieht die Architektur wie folgt aus (siehe unten):
img
Abbildung 1-2 Beispiel einer Handelsstrategie

Natürlich werden Ihre logischen Entscheidungen mit dem Sammeln von Strategieerfahrung und der Entwicklung Ihrer eigenen Handelsmethoden immer vielfältiger und Sie gelangen zu einem systematischeren quantitativen Handel. Wenn Sie ein Händler mit quantitativem Denken sein können, sei es auf dem Aktien- oder Terminmarkt, ist das ein Segen, denn eine solche Person verfügt über eine nachhaltige und stabile Rentabilität, unabhängig davon, auf welchem ​​Handelsmarkt sie sich befindet.

Erstellen des Modells

Zweitens müssen Sie ein quantitatives Handelstool beherrschen, um Handelsstrategien zu schreiben und Ihre Handelsideen umzusetzen. Es kann jede gängige Software auf dem Markt verwendet werden. Aber wenn Sie ein High-End-Quantitative-Trader sein wollen, müssen Sie lernen

Kennen Sie eine Computersprache. Ich empfehle Python, da es die maßgebliche Sprache für wissenschaftliches Rechnen ist.
Es bietet außerdem verschiedene Open-Source-Analysepakete, Dateiverarbeitung, Netzwerke, Datenbanken usw.

Wenn Ihre Programmierkenntnisse nicht ausreichen (was vermutlich die Schwachstelle der meisten Anfänger ist), empfiehlt sich die Verwendung einer relativ einfachen visuellen Programmiersprache oder Mai-Sprache. Dies kann Ihr Interesse am Erlernen des quantitativen Handels steigern und es Ihnen ermöglichen, sich auf Strategien zu konzentrieren und die Strategieentwicklung effizient abzuschließen. Wie unten gezeigt: Entwickeln Sie mithilfe der Mai-Sprache eine Handelsstrategie wie oben beschrieben. Doppelklicken Sie auf das Bild, um detaillierte Kommentare im Strategiecode anzuzeigen.

img
Abbildung 1-3 Seite zur Entwicklung einer Handelsstrategie

Der Strategiecode in der obigen Abbildung wird mithilfe der Mai-Sprache des quantitativen Tools des Erfinders demonstriert. Er integriert viele Funktionsmodule, die direkt verwendet werden können, und unterstützt Backtesting und echte Handelsfunktionen. Dies ist eine gute Möglichkeit, schnell loszulegen.

Backtesting und Tuning

Nach dem Schreiben des Strategiemodells besteht der nächste Schritt darin, die Strategie einem Backtest zu unterziehen sowie die Parameter zu prüfen und zu optimieren. Sie können verschiedene Parameter verwenden, um die Strategie einem Backtest zu unterziehen und die Sharpe-Ratio, den maximalen Drawdown, die annualisierte Rendite usw. der Strategie zu beobachten. Durch kontinuierliches Debuggen und Modifizieren der Strategie erhalten wir schließlich eine vollständige quantitative Handelsstrategie.

Beispielsweise nehmen wir die historischen Daten von 2017 als In-Sample-Daten und die historischen Daten von 2018 als Out-of-Sample-Daten. Zunächst verwenden wir die Daten von 2017, um mehrere Parametersätze mit guter Leistung zu optimieren, und verwenden diese Parameter dann zur Optimierung von 2018.

Daten-Backtesting. Im Allgemeinen sind die Ergebnisse von Backtests außerhalb der Stichprobe nicht so gut wie die Ergebnisse von Backtests innerhalb der Stichprobe. Wenn die Ergebnisse außerhalb der Stichprobe und innerhalb der Stichprobe jedoch sehr unterschiedlich sind, ist die Strategie nahezu wirkungslos und es ist notwendig, sie zu beobachten und zu analysieren, um die Gründe für das Scheitern der Strategie zu ermitteln.

Angenommen, wir stellen fest, dass die Strategie aufgrund von Out-of-Sample-Daten und großen Verlusten aufgrund bestimmter extremer Marktbedingungen fehlschlägt, dann können wir eine feste Stop-Loss-Bedingung hinzufügen, um dieses Risiko zu vermeiden; wenn wir feststellen, dass die Strategie aufgrund zu vieler Transaktionen fehlschlägt, dann können wir die Handelslogik leicht straffen und die Handelsfrequenz reduzieren.

Es ist zu beachten, dass es schwierig sein wird, eine profitable Strategie zu entwickeln, wenn die Handelslogik selbst am Anfang falsch ist, egal wie sehr Sie sie ändern. Zu diesem Zeitpunkt müssen Sie Ihr strategisches Denken überprüfen. Darüber hinaus gilt bei der Parameteroptimierung: Je mehr Parametergruppen verfügbar sind, desto besser, was darauf hindeutet, dass die Strategie breit anwendbar ist. Beim Backtesting können Strategien mit zu wenigen Trades unter einem Survivor Bias leiden. Wenn das Ergebnis des Backtests eine superprofitable Fondskurve ist
In vielen Fällen ist Ihre Logik falsch.

Simulierter Handel

Wenn Sie dann eine Strategie mit der richtigen Handelslogik erhalten und sowohl innerhalb als auch außerhalb des Musters profitabel sind, sollten Sie nicht vorschnell mit dem Handel auf einem echten Konto beginnen. Insbesondere für Anfänger ist es notwendig, mindestens 3 Monate lang ein simuliertes Konto zu führen. Wenn es sich um eine Overnight-Strategie mit mittlerer oder niedriger Frequenz handelt, ist eine längere simulierte Handelszeit erforderlich.

Beobachten Sie in Zukunft auf einem völlig unbekannten simulierten Markt die Leistung der Strategie im simulierten Handel, prüfen Sie sorgfältig, ob das Backtest-Signal mit dem simulierten Handelssignal übereinstimmt und ob es eine Abweichung zwischen dem Preis bei Auftragserteilung und dem Preis bei Abschluss der Transaktion gibt. Wenn die Leistung den Erwartungen entspricht, bedeutet dies, dass die Strategie wirksam ist.

Festplatten-Transaktionen

Nachdem Sie die Strategie über einen langen Zeitraum getestet haben, ist es schließlich an der Zeit, sie in den tatsächlichen Handel umzusetzen. Natürlich müssen wir auch beim quantitativen Handel wachsam bleiben und uns vor extremen Marktbedingungen in Acht nehmen. Beim tatsächlichen Handel werden die Erwartungen an eine Strategie im Allgemeinen abgezinst und das Erreichen von 50 % der Erwartungen gilt als qualifiziert.

Richtlinienüberwachung

Abschließend muss ich alle daran erinnern, dass wir im Verlauf des Handels auch die Wirksamkeit der Strategie beobachten müssen. Wenn wir feststellen, dass die Strategie über die Erwartungen hinausgehende Verluste verursacht, müssen wir die Strategie neu bewerten. Da sich die Markteigenschaften ändern, orientieren sich die Strategien, die wir jetzt entwickeln, hauptsächlich an den Markteigenschaften der Vergangenheit. Ändern sich die Marktcharakteristika, muss das Strategiemodell zeitnah angepasst oder die Strategie vorübergehend ausgesetzt werden.

Zusammenfassen

In diesem Artikel erklären wir den kompletten Prozess des quantitativen Handels. Kurz gesagt, wenn Sie ein Investor mit Markterfahrung sind, werden Sie von den Grundlagen der Computersprache zurückgehalten. Sie können mit der visuellen Sprache oder der Mai-Sprache beginnen, sich auf dieser Plattform weiterbilden, Strategien entwickeln und sich dann allmählich dem quantitativen High-End-Handel mit Python zuwenden.

Wenn Sie Naturwissenschaften oder Ingenieurwissenschaften studieren oder IT-Fachmann mit guten Programmierkenntnissen sind, wird Ihnen die Erfahrung mit Marktinvestitionen im Weg stehen. Unterschätzen Sie diesen Punkt nicht. Als qualifizierter quantitativer Investor sind beide Arten von Wissen unverzichtbar.

Vorschau des nächsten Abschnitts

Der Kern des gesamten Lebenszyklus des quantitativen Handels ist nach wie vor die Handelsstrategie. Im nächsten Abschnitt werden wir die Elemente einer vollständigen Handelsstrategie aus der Perspektive des Handelsstrategierahmens näher erläutern. Dies wird Ihnen helfen, Ihre Handelsstrategie umfassender aufzubauen und den quantitativen Handel auf ein neues Niveau zu heben!

Hausaufgaben

  1. Versuchen Sie, die Handelsstrategie in diesem Abschnitt in der Mai-Sprache zu schreiben.
  2. Was ist der wichtigste Leistungsindikator beim quantitativen Trading-Backtesting?

1.4 Was sind die Elemente einer vollständigen Strategie?

Zusammenfassung

Eine vollständige Strategie besteht eigentlich aus einer Reihe von Regeln, die Händler für sich selbst festlegen. Sie deckt alle Aspekte der Transaktion ab und lässt keinen Raum für die subjektive Vorstellungskraft der Händler. Die Strategie gibt eine Antwort auf jede Kauf- und Verkaufsentscheidung. Es umfasst zumindest die Strategieauswahl, die Produktauswahl, das Kapitalmanagement, die Auftragserteilung, die Reaktion auf extreme Marktbedingungen, die Handelsmentalität usw.

Strategieauswahl

Aus der Sicht von Hedgefonds können die gängigen Handelsstrategien in Trendhandel, Paarhandel, Korbhandel, ereignisgesteuerten Handel, Hochfrequenzhandel, Optionsstrategien usw. unterteilt werden, wie in der folgenden Abbildung dargestellt. Natürlich ist die Art und Weise der Kategorisierung der Strategien nicht festgelegt.
img
Abbildung 1-4 Klassifizierung der Handelsstrategie

Anfänger im quantitativen Handel müssen sich nicht mit so vielen Begriffen und Konzepten auseinandersetzen. Beginnen Sie einfach Schritt für Schritt mit dem Einfachsten. Wenn ich Anfängern nur eine quantitative Handelsstrategie empfehlen kann, dann ist es das Trendtrading, weil es einfach und effektiv ist. Ich bin davon überzeugt, dass man auch dann erfolgreich handeln kann, wenn man sich kein systematisches Finanzwissen aneignet. Diese Strategie gibt es schon seit langer Zeit, in den frühen Strategien des öffentlichen Handels, und sie ist auch heute noch in vielen Märkten wirksam, weil sich die menschliche Natur nur schwer ändern lässt.

Was kaufen und verkaufen

Jeder, der bereits im Handel tätig war, weiß, dass jede Sorte ihre eigene Persönlichkeit besitzt. Einige Sorten haben einen sehr „heißen“ Charakter, mit guter Liquidität, großen Schwankungen und hoher Volatilität; andere Sorten haben einen sehr „gelehrigen“ Charakter, schwanken das ganze Jahr über innerhalb eines bestimmten Bereichs und weisen eine geringe Volatilität auf.

Daher müssen Sie bei der Auswahl von Handelsprodukten das Konzept der Volatilität berücksichtigen. Bei Produkten mit hoher Volatilität kann sich häufig leicht ein guter Trend entwickeln. Wenn es sich bei Rohstoff-Futures um eine Trendverfolgungsstrategie handelt, sollten Sie versuchen, Industrieprodukte auszuwählen. In Bezug auf die Produkteigenschaften neigen Industrieprodukte zu einer größeren Volatilität als Agrarprodukte.

Verschiedene Strategien passen sich unterschiedlichen Marktbedingungen an und die Auswahl der richtigen Handelsprodukte ist ein sehr wichtiger Start für das große Projekt des Futures-Handels. Im absoluten Sinne gibt es keine absolut guten oder absolut schlechten Sorten. Je nach Anlagestil und Risikobereitschaft müssen Ihre eigenen Maßstäbe entsprechend angepasst werden.

Wie viel kaufen und verkaufen

Beim Trading kann man leicht Geld verlieren, aber es ist schwer, Geld zu verdienen. Wenn das Kontoguthaben 50 % verliert, ist ein Gewinn von 100 % erforderlich, um den Verlust auszugleichen. Auch wenn Sie oft 100 % Gewinn machen können, müssen Sie nur einmal 100 % verlieren, um alles zu verlieren. Daher sollte eine ausgereifte Handelsstrategie auch ein Geldmanagement beinhalten.

Um es für jedermann leichter verständlich zu machen, wird hier auch die gleitende Durchschnittsstrategie aus dem vorherigen Abschnitt verwendet. Tatsächlich weisen viele Handelsstrategien, die auf traditionellen technischen Indikatoren basieren, im Allgemeinen eine maximale Drawdown-Rate von über 50 % oder sogar mehr auf. Aber eine sehr riskante Strategie, die völlig undurchführbar ist?

Offensichtlich nicht, die maximale Auszahlungsrate kann vollständig über das Fondsmanagement kontrolliert werden. Wenn die Position um die Hälfte reduziert wird, wird auch das Gesamtrisiko um die Hälfte reduziert und die maximale Drawdown-Rate beträgt 30 %. Wenn die Position erneut um die Hälfte reduziert wird, beträgt die maximale Drawdown-Rate 15 %. Am Ende erhalten wir eine Strategie mit einer maximalen Drawdown-Rate, die bei etwa 15 % liegt. Dies ist eine einfache und grobe Methode der Geldverwaltung. Viele Menschen wissen, dass sie mit einer Vollzeitstelle nicht arbeiten können, aber sie wissen nicht, warum sie mit einer Vollzeitstelle nicht arbeiten können. Die Antwort finden Sie hier.

Wann kaufen und verkaufen

Ein guter Kaufzeitpunkt ist die halbe Miete, denn er bringt Sie schnell aus der Kostenzone. Aber niemand kann Ihnen jemals sagen, dass es richtig ist, von diesem Punkt aus zu beginnen, und dass es falsch ist, von jenem Punkt aus zu beginnen. Das Eröffnen einer Position stellt nicht den Kern des Handels dar. Der Kern des Handels besteht darin, die Position nach dem Eröffnen einer Position so weit wie möglich zu optimieren.

Egal ob es sich um eine kurzfristige oder eine langfristige Strategie handelt: Entscheidend ist nicht, wer die Position länger hält, sondern das Risiko-Rendite-Verhältnis. Mit anderen Worten: Die Art des Ausstiegs und der Zeitpunkt der Gewinnrealisierung beeinflussen letztlich die Leistung der Strategie. Ausstiegsmethoden können in zwei Typen unterteilt werden: Stop-Loss-Ausstieg und Take-Profit-Ausstieg. Diese beiden Teile sind für jedes Handelssystem notwendig und stellen zudem wichtige Wendepunkte dar, die über den Erfolg oder Misserfolg einer Handelsstrategie entscheiden.

So kaufen und verkaufen Sie

1. Art und Weise der Auftragserteilung:
Es gibt viele Arten und Methoden, Aufträge zu erteilen, z. B.: Verwendung von Warteschlangen-Limit-Aufträgen, Kontrahentenpreis, aktueller Preis, Überpreis, Oberlimitpreis, Unterlimitpreis, erster Kaufpreis, zweiter Kaufpreis, erster Verkaufspreis, zweiter Verkaufspreis oder Verwendung des Warteschlangenpreises und dann des Überpreises, Erteilung von Aufträgen in Stapeln oder Aufteilung großer Aufträge in kleine Aufträge oder einfach direkte Erteilung aller Aufträge.

2. Stornierung der Bestellung
Wenn die Bestellung nicht ausgeführt wird, sollten Sie weiter warten oder die Bestellung stornieren? Die Stornierungsbedingung ist zeitabhängig. Wenn beispielsweise innerhalb von 10 Sekunden keine Transaktion erfolgt und der Preis 10 Sprünge vom Preis zum Zeitpunkt der Bestellung entfernt ist, sollten Sie weiter warten, die Bestellung stornieren oder die Bestellung weiterverfolgen.

3. Folgeaufträge
Wenn ein Auftrag nicht ausgeführt wird, ob der Auftrag weiterverfolgt werden soll. Wenn Sie einen Auftrag verfolgen, sollten Sie ihn auf Grundlage des letzten Preises, des Preises der Gegenpartei oder des Preislimits verfolgen? Wenn der verfolgte Auftrag noch nicht ausgeführt wurde, sollten Sie den Auftrag weiter verfolgen?

4. Preislimit
Was muss ich tun, wenn das Ordersignal beim oberen oder unteren Grenzpreis erscheint? Ob eine Warteschlange für die Ausführung zu den oberen und unteren Grenzpreisen eingerichtet werden soll und was zu tun ist, wenn keine Ausführung erfolgt.

5. Auktion aufrufen
Sollten Sie an der Eröffnungsauktion teilnehmen und wie erfolgt die Teilnahme?

6. Nachthandel
Bei einigen Rohstoff-Futures läuft der Nachthandel von 21:00 Uhr bis 02:30 Uhr des Folgetages. In dieser Zeit können Sie wählen, ob Sie ihn manuell oder per Computer durchführen möchten.

7. Große Festivals
Müssen Sie Ihre Positionen vor den extralangen Feiertagen während großer Festtage halten? So kontrollieren Sie die Risiken bei Beibehaltung.

Extreme Marktbedingungen

  1. Große Preisschwankungen in kurzer Zeit
    Wie mit Situationen wie sofortigen Preislimits, kontinuierlichen Preislimits, fehlerhaften Bestellungen, „Black Swan“-Preispaniken auf dem Markt usw. umzugehen ist.

  2. Liquiditätsrisiko
    Wenn die Gegenpartei nicht über das gewünschte Auftragsvolumen verfügt, Sie die Transaktion jedoch rechtzeitig abschließen müssen, insbesondere wenn die Liquidität von Nicht-Hauptverträgen sehr schlecht ist, können die von Ihnen erteilten Aufträge leicht Auswirkungen auf den Markt haben und der Schlupf groß ist. Wie sollten Sie damit umgehen?

  3. Änderungen der Sortenregeln
    Rohstoff-Futures-Produkte werden in den Nachthandel aufgenommen, die Margin-Ratio wird erhöht und die Bearbeitungsgebühr wird erhöht. Insbesondere kurzfristige Strategien werden auf diese Änderungen sehr empfindlich reagieren.

  4. Risiken im Handelsumfeld
    Zum Beispiel: Wie ist bei plötzlichen Stromausfällen, Internetausfällen, Computerfehlern, Softwareabstürzen, Aussetzung von Bankterminüberweisungen, Naturkatastrophen usw. zu reagieren?

Die Wahrscheinlichkeit, dass die oben beschriebene Situation eintritt, ist sehr gering oder fast unmöglich. Aber wenn es passieren kann, wird es passieren. Es ist notwendig, diese Annahmen zu treffen und Vorsichtsmaßnahmen zu ergreifen.

Psychologische Konstruktion

Die drei wichtigsten psychologischen Emotionen beim Trading sind Gier, Angst und Glück. Anleger benötigen ein starkes System der Handelspsychologie, um die oben genannten drei Emotionen in verschiedenen Phasen kontrollieren und sogar nutzen zu können.

Vor dem Handel müssen Sie allgemeine Erwartungen für die Zukunft haben, die auch Markterwartungen und psychologische Erwartungen an das Produkt umfassen. Markterwartungen beziehen sich auf ein klares Ziel für die Marktposition und die zukünftige Richtung, und Produkterwartungen beziehen sich auf die Handelsmöglichkeiten und den Risikostatus des Produkts an seiner aktuellen Position. Ohne die oben genannten psychologischen Grundlagen kann nichts erreicht werden.

Der gesamte Prozess des realen Handels ist ein Prozess der kontinuierlichen Analyse, Korrektur und Ausführung. Es wird nicht viel Zeit für den Handel aufgewendet, sondern mehr Zeit für die Verfolgung und Geduld. Dabei handelt es sich um einen Prozess, der die Mentalität umfassend untersucht und die menschliche Natur auf die Probe stellt. Alle Gewohnheiten der Händler werden während des Handelsvorgangs vollständig angezeigt und verstärkt. Nur indem wir ständig lernen, Erfahrungen und Lehren zusammenfassen und weiterhin Erfahrungen sammeln, können wir die allgemeinen Denk- und psychologischen Schwächen der menschlichen Natur überwinden.

Zusammenfassen

Zusammenfassend lässt sich sagen, dass die sogenannte Handelsstrategie tatsächlich so ist. Sie hat ihre perfekte und ihre unvollständige Seite. Wenn wir beurteilen, ob eine Handelsstrategie vernünftig ist, können wir nicht nur ihre perfekte oder ihre unvollständige Seite betrachten. Wir sollten die Integrität der Strategie umfassend analysieren.

Beurteilen Sie abschließend anhand der Merkmale der Strategie in Kombination mit Ihrer eigenen Persönlichkeit und finanziellen Situation, ob die Strategie für Sie geeignet ist. Wenn sie für Sie geeignet ist, sollten Sie genau abwägen, wie wahrscheinlich es ist, dass Sie sich daran halten, und im Voraus für den schlimmsten Fall planen. Wenn Sie über das Worst-Case-Szenario nachgedacht haben, ist die Wahrscheinlichkeit, es umzusetzen, relativ hoch.

Denken Sie daran: Beim Trading erwächst Vertrauen aus Ihrer aufrichtigen Anerkennung, und Vertrauen erwächst aus der richtigen Handelsphilosophie!

Vorschau des nächsten Abschnitts

Dies ist der letzte Artikel des ersten Kapitels. Im nächsten Kapitel werden wir quantitative Handelstools genauer erläutern, darunter: eine allgemeine Einführung in quantitative Tools, wie man ein quantitatives Handelssystem konfiguriert, allgemeine API-Erklärungen und wie man Strategien für ein quantitatives System schreibt.

Hausaufgaben

  1. Sollten Trendhandelsstrategien Produkte mit hoher oder niedriger Volatilität wählen?
  2. Welche Arten von Handelsaufträgen gibt es?

Kapitel 2 Einführung in quantitative Werkzeuge

2.1 Allgemeine Einführung in quantitative Werkzeuge

Zusammenfassung

Im vorherigen Kapitel haben wir die relevanten Konzepte des quantitativen Handels kennengelernt und ein grundlegendes Verständnis des quantitativen Handels erlangt. Welche Instrumente gibt es also für den quantitativen Handel auf dem Markt? Wie sollten wir entsprechend unseren Bedürfnissen wählen?

Open Source und kommerzielle Software
Inländische quantitative Handelstools können im Allgemeinen in zwei Kategorien unterteilt werden: Open-Source-Software und kommerzielle Software. Unter sogenannter Open-Source-Software ist Software zu verstehen, deren Quellcode offen liegt und direkt zur Nutzung heruntergeladen werden kann; unter kommerzieller Software versteht man im Allgemeinen Closed-Source-Software, die von kommerziellen Unternehmen gepflegt und betrieben wird und für die in der Regel eine Gebühr erhoben wird.

Open Source Quantitative Software

Erstens ist Open-Source-Software sehr flexibel und völlig kostenlos. Benutzer können diese Software grundsätzlich verwenden, um jede Funktion zu implementieren, sei es Handelsstrategien mit mittlerer oder niedriger Frequenz, Arbitragestrategien oder Optionsstrategien, die durch benutzerdefinierte Module erreicht werden können. Da Benutzer den Quellcode der Software kontrollieren und jede Ecke der Software verstehen können, ist sie zuverlässiger und sicherer.

Obwohl Open-Source-Software viele Vorteile bietet, ist sie für Anfänger im quantitativen Handel nicht sehr benutzerfreundlich. Sie müssen systematisch eine Standardprogrammiersprache wie Python, Java oder C++ erlernen. Vom Anfang bis zum Aufgeben kann man sich die Schwierigkeiten vorstellen. Manchmal kann das Debuggen von Fehlern dazu führen, dass man an seinem Leben zweifelt. Und anders als bei kommerzieller Software gibt es einen speziellen technischen Kundendienst, der Ihre Fragen sofort beantwortet. Sie werden zu diesem Zeitpunkt nicht nur kein Erfolgserlebnis haben, es wird Sie auch davon abhalten, weiter zu lernen.

Aus Lernperspektive empfiehlt es sich daher, dass Anfänger im quantitativen Handel schrittweise beginnen und mit der einfachsten kommerziellen Software beginnen. Obwohl diese kostenpflichtig ist, beträgt die Softwaregebühr nur einen Bruchteil des Gewinns, wenn die Strategie profitabel ist. Darüber hinaus wird kommerzielle Software im Allgemeinen von einem Team gewartet und ist definitiv viel ausgereifter als Open-Source-Software.

Quantitative Business-Software

In China gibt es Dutzende kommerzieller Software für den quantitativen Handel, beispielsweise Interactive Broker, das professionell und umfassend ist und über viele Produkte verfügt; APAMA, das große Mengen gleichzeitiger Daten verarbeiten kann und für Hochfrequenzhandel geeignet ist; SPT, das eine C++-Schnittstelle unterstützt und eine gute Ausführungseffizienz aufweist; Nuggets Quantitative, das sich auf die Transaktionsausführung und Risikokontrolle konzentriert; und MC, TB und MQ für einzelne Händler. In der folgenden Abbildung haben wir eine umfassende Bewertung der gängigen inländischen quantitativen Plattformen durchgeführt und auch eine gewisse Klassifizierung der Schwierigkeit quantitativer Tools vorgenommen. Die Leser können entsprechend ihrer tatsächlichen Situation wählen.
img
Abbildung 2-1 Umfassende Bewertung der wichtigsten inländischen quantitativen Plattformen

Obwohl es sich bei den oben genannten Programmen um kommerzielle Software handelt, werden auch hier Standardprogrammiersprachen oder Skriptsprachen verwendet. Stattdessen ist es besser, direkt Open-Source-Software zu verwenden, die kostenlos und sicher ist. Für Einsteiger empfiehlt sich die direkte Nutzung der FMZ Inventor Quantitative Platform, die Website lautet www.fmz.com. Als Sprungbrett zum Erlernen des quantitativen Handels.

Lernen Sie den Erfinder quantitativer Handelstools kennen

Die quantitativen Tools des Erfinders sind für Anfänger benutzerfreundlich. Selbst wenn Sie keine Grundkenntnisse haben, können Sie den Charme der quantitativen Analyse anhand der darin enthaltenen Tools erleben. Dieses Tool ist für den Hochfrequenzhandel konzipiert und stellt strenge Anforderungen an Leistung und Sicherheit. Unterstützt Hochfrequenzstrategien, Arbitragestrategien und Trendstrategien. Und es integriert den kompletten Prozess der Strategieentwicklung, des Testens, der Optimierung, der Simulation und des realen Handels. Darüber hinaus unterstützt es sowohl die einfache und benutzerfreundliche Mai-Sprache als auch fortgeschrittene quantitative Handelssprachen wie Python und C++, was einen nahtlosen Wechsel nach einmaligem Lernen bedeutet. Und nur für den realen Handel werden 0,125 Yuan/Stunde berechnet, was Ihre Softwarekosten während der Lernphase senkt. Gleichzeitig können Sie den simulierten Handel kostenlos durchführen.

Der erste Schritt zur Quantifizierung: quantitative Werkzeuge nutzen

Quantitative Tools sind sehr einfach zu verwenden. Sie müssen nur die Website aufrufen und darauf klicken, um Ihre eigene quantitative Strategie zu entwickeln. Sie können sich auf der offiziellen Website des Inventor Quantitative Tool anmelden, sich registrieren und anmelden und auf das Kontrollzentrum klicken, um es zu verwenden (wie unten gezeigt). Es ähnelt dem derzeit beliebten TikTok. Nach der Registrierung und Anmeldung können Sie Ihre eigenen Kurzvideos veröffentlichen und nach der Anmeldung beim quantitativen Tool Ihre eigene quantitative Handelsstrategie entwickeln.

img
Abbildung 2-2 Hauptseite der quantitativen Handelsplattform von FMZ

Es wird einen zentralen Funktionsbereich für die Programmierung quantitativer Tools geben. Der Funktionsbereich umfasst hauptsächlich (wie unten gezeigt). Das Kontrollzentrum in der oberen linken Ecke ist die Kernfunktion des quantitativen Tools. Nachdem Sie darauf geklickt haben, können Sie Handelsstrategien und Strategie-Backtests schreiben, den Austausch für Handelsprodukte festlegen, einen Verwahrer zur Verwaltung von Strategierobotern erstellen und spezifische quantitative Handelsroboter erstellen. Was die spezifische Verwendung der Funktionen betrifft, werden wir sie in nachfolgenden Artikeln ausführlich vorstellen. Derzeit führen wir nur Vorarbeiten durch.

img
Abbildung 2-3 Managementseite nach dem Einloggen in die FMZ quantitative Handelsplattform

Freunde, die neu in der quantitativen Forschung sind, müssen sich nicht durch mangelnde Kenntnisse von Codes und Programmierung entmutigen lassen. Um die Hemmschwelle für die Benutzer zu senken, hat die offizielle Community zahlreiche Video-Tutorials erstellt, die Anfängern im quantitativen Handel einen schnellen Einstieg erleichtern. Gleichzeitig fasst Strategy Square Tausende von offiziellen und kostenlosen und offenen Handelsstrategien von Drittanbietern zusammen, die jeder kopieren und erlernen kann.

Darüber hinaus werden in der Strategiebearbeitungsoberfläche auch klassische Strategiebeispiele konfiguriert. Sie können den Strategiecode direkt durch Anklicken verwenden und den Kernprozess des gesamten quantitativen Handels ganz einfach erleben. Selbst unerfahrene Benutzer können ihn sofort erlernen und befolgen!

Vor dem Handel mit echtem Geld ist auch der simulierte Handel ein unverzichtbarer Schritt. Der simulierte Handel mit diesem Tool entspricht den Börsenregeln und ist völlig kostenlos. Die in der Simulation enthaltenen Zeiten, Preise, Auftragsvolumina usw. werden in Echtzeit mit dem realen Markt abgeglichen, was in hohem Maße mit dem realen Handel übereinstimmt. Verbessern Sie die Effizienz der Strategieüberprüfung erheblich.

Zusammenfassen

Ob Open-Source-Software oder kommerzielle Software, es gibt keinen Unterschied zwischen gut und schlecht und es gibt kein perfektes quantitatives Handelstool. Jedes Tool hat seinen eigenen Schwerpunkt. Das Wichtigste ist, das Tool auszuwählen, das Ihren Anforderungen entspricht. Kommerzielle Software ist kostenpflichtig und bietet im Hinblick auf den Service usw. mehr. Sie ist möglicherweise eher für Anfänger geeignet, die gerade erst in diese Branche einsteigen. Wenn Sie bereits seit längerer Zeit in dieser Branche tätig sind und viel Erfahrung gesammelt haben oder komplexere Handelsstrategien umsetzen müssen, ist Open-Source-Software die bessere Wahl.

Vorschau des nächsten Abschnitts

Wie werden die Werkzeuge verwendet? So wie wir beim Kauf eines neuen Mobiltelefons beim ersten Einschalten einfache Starteinstellungen vornehmen müssen, benötigen quantitative Tools auch grundlegende Einstellungen und Konfigurationen. Im nächsten Abschnitt führen wir Sie Schritt für Schritt durch die Konfiguration des quantitativen Handelstools Inventor. Öffnen Sie die erste Tür zum quantitativen Handel, einschließlich: Hinzufügen von Börsen, Hinzufügen von Depotbanken, Erstellen von Handelsstrategien, Erstellen quantitativer Roboter usw. Nachdem Sie die Grundkonfiguration abgeschlossen haben, können Sie Ihre erste quantitative Strategie formal schreiben.

Hausaufgaben

  1. Was sind die beiden Hauptkategorien quantitativer Handelsinstrumente?
  2. Welche quantitativen Programmiersprachen werden häufig verwendet?

2.2 So konfigurieren Sie das Inventor Quantitative Trading System

Zusammenfassung

Bei der Entwicklung quantitativer Handelsstrategien müssen zunächst die Handelstools konfiguriert werden. Was ist Konfiguration? Es sind eigentlich nur Einstellungen. In diesem Abschnitt führen wir Sie durch die Einrichtung einer Börse, die Erstellung einer Handelsstrategie und die Erstellung eines quantitativen Handelsroboters. Dies sind alles notwendige Voraussetzungen für den quantitativen Handel.

Die Konfiguration ist in eine Einstiegskonfiguration für den Simulationshandel und eine Echtzeit-Handelskonfiguration unterteilt. In dieser Kategorie konzentrieren wir uns hauptsächlich auf inländische Rohstoff-Futures. Andere Arten quantitativer Investitionen werden aufgrund spezifischer inländischer Bedingungen nicht empfohlen oder eingeführt, aber der Betriebsablauf ist derselbe, nur der Konfigurationsprozess ist anders.

Hinzufügen von Börsen

Das Hinzufügen einer Börse ist der erste Schritt im gesamten Konfigurationsprozess. Den genauen Vorgang finden Sie in der folgenden Abbildung. In diesem Schritt müssen wir betonen, dass das Hinzufügen einer Börse für diejenigen, die nicht sicher sind, zu welcher Börse sie gehören, nicht schwierig ist. Es wird empfohlen, zunächst das Lernen zu simulieren.
img
Abbildung 2-4 FMZ-Registrierungs- und Hinzufügungsschritte für die quantitative Handelsplattform

Commodity Futures Exchange (Live) Konfiguration

Unser quantitativer Echtzeithandel konzentriert sich hauptsächlich auf inländische Futures-Handelsprodukte. Derzeit sind die Hauptdienstleistungsobjekte von Inventor Quantitative auch inländische Futures-Börsen. Für Freunde, die Devisenhandel betreiben, kann Inventor Quantitative als Lernplattform verwendet werden, da der quantitative Devisenhandel bereits auf Plattformen wie MT5 erschienen ist, aber professioneller ist.

Bei der Echtzeitkonfiguration müssen folgende Punkte beachtet werden: Da die quantitativen Tools des Erfinders mehrere Handelsmärkte unterstützen, müssen Sie bei der Konfiguration von Rohstoff-Futures in Schritt 1 zunächst „traditionelle Futures“ auswählen; in Schritt 2 müssen Sie das Futures-Konto und das Passwort eingeben, die Sie von der Futures-Firma erhalten haben, bei der Sie ein Konto eröffnet haben.

Das quantitative Tool des Erfinders verwendet das CTP-Protokoll und unterstützt alle inländischen Futures-Unternehmen. Bei der Konfiguration des realen Marktes kommt es nur dann zu Verbindungsfehlern, wenn Konto und Passwort falsch sind. Anfänger sollten daher darauf achten, Konto und Passwort genau zu überprüfen.
img
Abbildung 2-5 FMZ quantitative Handelsplattform ergänzt Terminbörse

Konfiguration der Warenterminbörse (Simulation)

Freunden, die neu im Rohstoff-Futures-Bereich sind, empfehle ich, den Handel zunächst eine Zeit lang zu simulieren, da bei der Entwicklung quantitativer Handelsstrategien kontinuierliche Tests, Fehlerbehebungen und Optimierungen erforderlich sind. Wie beim Autofahren wirst du zu Beginn auf jeden Fall einige Monate in der Fahrschule lernen und kannst dann nach bestandener Prüfung und Erhalt des Führerscheins auf die Straße gehen.

Hier empfehlen wir die Verwendung des simulierten Handels mit SimNow. SimNow ist eine von Shangqi Technology speziell für Anleger entwickelte Finanzsimulationshandelsplattform. Dieses Produkt simuliert die Handels- und Abwicklungsregeln verschiedener Börsen und unterstützt derzeit das Rohstofftermingeschäft verschiedener inländischer Terminbörsen. Den genauen Ablauf finden Sie in der folgenden Abbildung.
img
Abbildung 2-6 FMZ-Verwaltungsseite für quantitativen Handel nach der Anmeldung

Strategie schreiben

Die Codes werden in der Strategiebibliothek gespeichert, die unserem Lager für quantitative Handelsstrategien entspricht. Es ist hauptsächlich in zwei Funktionen unterteilt: Strategieschreiben und Simulations-Backtesting. Der Bereich Strategieschreiben ist unser Hauptarbeitsbereich für die Entwicklung zukünftiger Strategien (siehe unten). Viele Anfänger werden oft durch verschiedene Codes blockiert und finden es sehr schwierig. Tatsächlich können Sie diese Codes lernen, solange Sie ein wenig aufpassen. Sie haben keine psychische Belastung. Der Bereich Simulations-Backtesting kann zum Debuggen von Strategien während des Strategieentwicklungsprozesses sowie zum Testen von Strategien nach Abschluss der Strategieentwicklung verwendet werden. Dies werden wir in den folgenden Kapiteln ausführlich erläutern.
img
Abbildung 2-7 Schritte zum Erstellen einer Richtlinie

Erstellen eines quantitativen Handelsroboters

Ein quantitativer Handelsroboter ist der Ausführende einer Handelsstrategie. Sobald die Strategie erstellt ist, erstellen Sie einen Roboter, der Ihnen automatisch dabei helfen kann, jede Handelslogik im Strategiecode auszuführen sowie Positionen zu öffnen und zu schließen, Aufträge zurückzuziehen und andere Kauf- und Verkaufsvorgänge durchzuführen. Die konkreten Schritte zum Erstellen eines quantitativen Handelsroboters sind wie folgt: Erster Schritt ①: Klicken Sie auf der Kontrollzentrumseite auf „Roboter“, dann auf „Roboter erstellen“. Schritt ②: Geben Sie dem Roboter einen benutzerdefinierten Namen. Schritt 3: Klicken Sie auf das „+“-Zeichen, um eine Handelsplattform hinzuzufügen. Schritt 4: Klicken Sie auf „Roboter erstellen“
img
Abbildung 2-8 Schritte zum Erstellen eines Roboters

Zusammenfassen

Im oben beschriebenen Prozess sind mit Ausnahme des ersten Schritts der Auswahl des realen Handels und der Simulation die nachfolgenden Schritte des Schreibens der Strategie und des Erstellens von Handelsrobotern einheitliche Schritte. Das gesamte quantitative Tool wurde konfiguriert, der Handelsroboter läuft bereits und führt Kauf- und Verkaufstransaktionen gemäß den spezifischen Bedingungen der Strategie durch. Die Konfiguration des quantitativen Handels erfolgt in drei Schritten: Fügen Sie eine Börse hinzu und geben Sie das Passwort für Ihr Futures-Konto ein; schreiben Sie eine Handelsstrategie; und erstellen Sie einen quantitativen Handelsroboter in Echtzeit. Ist es nicht einfach?

Vorschau des nächsten Abschnitts

Obwohl quantitativer Handel in nur drei einfachen Schritten erreicht werden kann, werden Sie feststellen, dass das Hinzufügen von Börsen und das Erstellen quantitativer Handelsroboter einfach ist. Allerdings ist die Umsetzung einer tragfähigen Handelsstrategie nicht so einfach. Im nächsten Abschnitt lernen Sie die im quantitativen Handel häufig verwendeten APIs kennen, um Sie auf das Schreiben einer umsetzbaren Handelsstrategie vorzubereiten. Denn egal, welches quantitative Handelstool zum Einsatz kommt, es ist untrennbar mit der API-Schnittstelle verbunden, die eine wichtige Funktion zur Realisierung quantitativer Handelsstrategien darstellt.

Hausaufgaben

  1. Versuchen Sie, einen Austausch hinzuzufügen.
  2. Versuchen Sie, in diesem Abschnitt die Handelsstrategie zu beschreiben.

2.3 Allgemeine API-Erklärung

Zusammenfassung

Wenn es um Programmierung geht, kommen wir an API nicht vorbei. Was genau ist API für viele Nicht-IT-Leute? API ≈ Ich verstehe nicht. In diesem Abschnitt erklären wir im Klartext, was eine API ist, und stellen die in quantitativen Erfindertools üblicherweise verwendeten APIs vor.

Was ist eine API?

Wenn Sie online suchen, erhalten Sie die folgenden Ergebnisse: API (Application Programming Interface) ist eine Reihe vordefinierter Funktionen, die Anwendungen und Entwicklern die Möglichkeit bieten sollen, auf eine Reihe von Routinen basierend auf bestimmter Software oder Hardware zuzugreifen, ohne auf den Quellcode zugreifen oder die Details des internen Arbeitsmechanismus verstehen zu müssen. Um es einfacher auszudrücken: Was genau ist eine API?

Tatsächlich gibt es in unserem täglichen Leben viele Szenarien, die APIs ähneln. Wenn Sie beispielsweise in ein Restaurant gehen, um zu essen, müssen Sie nur einen Blick auf die Speisekarte werfen und das Essen bestellen, ohne wissen zu müssen, wie es zubereitet wird. Die Gerichtnamen im Menü sind die spezifischen APIs und das Menü ist die API-Dokumentation.

Was ist API im quantitativen Handel?

Wenn Sie heute den Eröffnungspreis des aktuellen Produkts erfahren müssen, müssen Sie nicht wissen, wie Sie ihn bekommen. Sie müssen nur „OPEN“ in den Code-Editor schreiben und es direkt verwenden. „OPEN“ ist die API des Eröffnungspreises in der Sprache Mai.

Häufig verwendete Mai-Sprach-API

Bevor wir die Mai Language API erklären, werfen wir einen Blick auf die allgemeine Codestruktur und ihre Funktionskomponenten. Dies wird Ihnen helfen, die API besser zu verstehen. Siehe das folgende Beispiel:
img
Abbildung 2-9 Beispiel für die Sprache Mai

Wie im obigen Code gezeigt:
Das violette AA ist eine Variable. Eine Variable ist eine Menge, die sich ändern kann, genau wie die Algebra, die wir in der Mittelschule gelernt haben. Wenn AA der Eröffnungskurs zugeordnet wird, dann ist AA der Eröffnungskurs; wenn AA der höchste Kurs zugeordnet wird, dann ist AA der höchste Kurs. Natürlich ist AA nur ein benutzerdefinierter Name, Sie können es auch als BB definieren.

Das grüne „:=“ steht für Zuweisung, d. h. der Wert auf der rechten Seite des „:=“ wird der Variablen auf der linken Seite zugewiesen.

Der orangefarbene Code ist die Mai-Sprach-API des Inventor Quantitative Tool. Beachten Sie, dass OPEN in der ersten Zeile die API zum Abrufen des Schlusskurses ist, die direkt verwendet werden kann; MA in der zweiten Zeile ist die API zum Abrufen des gleitenden Durchschnitts, für die zwei Parameter übergeben werden müssen, d. h. Sie müssen dem Inventor Quantitative Tool mitteilen, welche Art von gleitendem Durchschnitt Sie benötigen: Wenn Sie einen gleitenden Durchschnitt über 50 Perioden erhalten möchten, der auf Grundlage des Eröffnungskurses berechnet wird, können Sie ihn wie folgt schreiben: MA(OPEN,50); beachten Sie, dass zwischen den beiden Parametern ein englisches Komma steht.

Das gelbe „//“ ist ein Kommentarsymbol und die blauen chinesischen Schriftzeichen dahinter sind der Kommentarinhalt. Diese sind für Sie zum Selbstlesen gedacht und dienen dazu, die Bedeutung der Codezeile anzugeben. Das Programm verarbeitet während der Ausführung keine Kommentare. Beachten Sie, dass vor dem Kommentarzeichen jede Codezeile ein englisches Semikolon als Zeilenende haben muss.

Mit dem grundlegenden Verständnis der Codestruktur stellen wir Ihnen im Folgenden einige häufig verwendete Sprachen vor, die wir in Zukunft auch häufig verwenden werden.
OPEN——Erhalten Sie den Eröffnungspreis der neuesten K-Linie
Beispiel: AA: =OPEN; Holen Sie sich den Eröffnungspreis der letzten K-Linie und weisen Sie das Ergebnis AA zu

HOCH——Holen Sie sich den höchsten Preis der neuesten K-Linie
Beispiel: AA: =HIGH; Holen Sie sich den höchsten Preis der letzten K-Linie und weisen Sie das Ergebnis AA zu

LOW——Holen Sie sich den niedrigsten Preis der neuesten K-Linie
Beispiel: AA: =LOW; Holen Sie sich den niedrigsten Preis der letzten K-Linie und weisen Sie das Ergebnis AA zu

CLOSE——Holen Sie sich den letzten Schlusskurs der K-Linie. Wenn die Intraday-K-Linie noch nicht beendet ist, holen Sie sich den neuesten Kurs
Beispiel: AA: =CLOSE; Holen Sie sich den Schlusskurs der letzten K-Linie und weisen Sie das Ergebnis AA zu.

VOL——Holen Sie sich das neueste K-Line-Transaktionsvolumen
Beispiel: AA: =VOL; Holen Sie sich das neueste K-Line-Transaktionsvolumen und weisen Sie das Ergebnis AA zu

REF(X,N) – Referenziert den Wert von X vor N Zyklen.
Beispiel: REF(CLOSE,1); Holen Sie sich den Eröffnungspreis der vorherigen K-Linie

MA (X, N) – Finden Sie den einfachen gleitenden Durchschnitt von X in N Perioden
Beispiel: MA(CLOSE,10); //Erhalte den gleitenden Durchschnitt der letzten 10 Perioden der K-Linie

CROSSUP (A, B) - Wenn A B von unten nach oben kreuzt, wird 1 (Ja) zurückgegeben, andernfalls 0 (Nein).
Beispiel: CROSSUP(CLOSE,MA(C,10)) // Der Schlusskurs überschreitet den 10-Perioden-Durchschnittskurs

CROSSDOWN (A, B) - Wenn A B von oben kreuzt, wird 1 (Ja) zurückgegeben, andernfalls 0 (Nein).
Beispiel: CROSSDOWN(CLOSE,MA(C,10)) // Der Schlusskurs unterschreitet den 10-Perioden-Durchschnittskurs

BK——Eröffnungsposition kaufen
Beispiel: CLOSE>MA(CLOSE,5),BK; //Schlusskurs ist höher als der gleitende Durchschnitt der letzten 5 Perioden, Kaufposition

SP——Verkaufen, um Position zu schließen
Beispiel: CLOSE<MA(CLOSE,5),SP; // Schlusskurs liegt unter dem gleitenden Durchschnitt der letzten 5 Perioden, Position verkaufen und schließen

SK——Eröffnungsposition verkaufen
Beispiel: CLOSE<MA(CLOSE,5),SK; //Schlusskurs liegt unter dem gleitenden Durchschnitt der letzten 5 Perioden, Position verkaufen

BP – Kaufen zum Schließen
Beispiel: CLOSE>MA(CLOSE,5),BP; //Schlusskurs ist höher als der gleitende Durchschnitt der letzten 5 Perioden, Position kaufen und schließen

BPK – Kaufen, um eine Position zu schließen, und kaufen, um eine Position zu eröffnen (Reverse Long)
Beispiel: CLOSE>MA(CLOSE,5),BPK; // Der Schlusskurs liegt über dem gleitenden Durchschnitt der letzten 5 Perioden. Schließen Sie die Short-Position und kaufen Sie dann, um eine neue Position zu eröffnen.

SPK – Verkaufen, um eine Position zu schließen, und Verkaufen, um eine Position zu eröffnen (Leerverkauf)
Beispiel: CLOSE<MA(CLOSE,5),SPK; // Der Schlusskurs liegt unter dem gleitenden Durchschnitt der letzten 5 Perioden. Schließen Sie die Long-Position und verkaufen Sie dann die offene Position.

CLOSEOUT – Alle Positionen schließen, empfohlen für die Verwendung im Modell zur Positionserhöhung und -verringerung. Beispiel: CLOSEOUT; alle Positionen in alle Richtungen schließen.

Häufig verwendete JavaScript-Sprach-APIs

Bevor wir die API der JavaScript-Sprache erklären, werfen wir einen Blick auf die allgemeine Codestruktur und ihre Funktionskomponenten. Dies wird Ihnen helfen, die API besser zu verstehen. Siehe das folgende Beispiel:
img
Abbildung 2-10 JavaScript-Codebeispiel

Wie im obigen Code gezeigt:
Das Erstellen einer Variablen in der Sprache JavaScript wird häufig als „Deklarieren“ der Variable bezeichnet. Im roten Code verwenden wir das Schlüsselwort var, um eine Variable zu deklarieren, und der Variablenname lautet im orangefarbenen Code: „aa“.

In JavaScript wird das Gleichheitszeichen zum Zuweisen von Werten verwendet, d. h. der Wert auf der rechten Seite von "=" wird der Variablen auf der linken Seite zugewiesen.
Der cyanfarbene Code „Exchange“ ist das Exchange-Objekt. Die Börse bezieht sich hier auf das von Ihnen festgelegte Futures-Unternehmen. Dies ist ein festes Format, was bedeutet, dass Sie beim Aufrufen der JavaScript-Sprach-API das Exchange-Objekt angeben müssen.

Der grüne Code ist die JavaScript-API. Wenn wir ihn aufrufen, rufen wir tatsächlich die Funktion im Austauschobjekt auf. Beachten Sie den Punkt nach dem blauen Code, der ebenfalls ein festes Format darstellt. Die Funktion hier ist die gleiche wie die Funktion, die wir in der Mittelschule gelernt haben. Wenn die Funktion keine Parameter erfordert, verwenden Sie leere Klammern, um dies anzuzeigen. Wenn die Funktion Parameter übergeben muss, schreiben Sie die Parameter in die Klammern.

Nachdem wir Ihnen anhand von Beispielen die grundlegende Struktur und Prinzipien des Codes näher gebracht haben, zeigen wir Ihnen nun einige APIs der JavaScript-Sprache, die Sie in Zukunft häufig verwenden werden.
SetContractType("Produktcode") ——Legen Sie den Vertragstyp fest, d. h. welches Produkt Sie handeln möchten
Beispiel: exchange.SetContractType("rb1905"); //Setze den Transaktionstyp auf "Rebar 1905 Contract"

GetTicker – Tick-Daten abrufen
Beispiel: exchange.GetTicker(); //Tick-Daten abrufen

GetRecords - K-Line-Daten abrufen
Beispiel: exchange.GetRecords(); //K-Line-Daten abrufen

Kaufen
Beispiel: exchange.Buy(5000, 1); //Kaufen Sie ein Lot für 5000 Yuan

Verkaufen——Kaufen
Beispiel: exchange.Sell(5000, 1); //Verkaufe ein Lot für 5.000 Yuan

GetAccount——Kontoinformationen abrufen
Beispiel: exchange.GetAccount(); //Kontoinformationen abrufen

GetPosition – Positionsinformationen abrufen
Beispiel: exchange.GetPosition(); //Positionsinformationen abrufen

SetDirection——Legen Sie den Long- oder Short-Order-Typ fest
Beispiel:
exchange.SetDirection("buy"); //Setzen Sie den Auftragstyp auf "Kaufen", um eine Long-Position zu eröffnen
exchange.SetDirection("closebuy"); //Setzen Sie den Auftragstyp auf „Verkaufen“, um Long-Positionen zu schließen
exchange.SetDirection("sell"); //Setzen Sie den Auftragstyp auf „Verkaufen“, um eine Short-Position zu eröffnen
exchange.SetDirection("closesell"); //Setzen Sie den Auftragstyp auf Kaufen, um Short-Positionen zu schließen

Log - Ausgabe einer Meldung im Log
Beispiel: Log("hallo, welt"); // Gib "hallo welt" im Log aus

Schlafen - Unterbrechen Sie das Programm für eine gewisse Zeit
Beispiel: Sleep(1000); //Pausiere das Programm für 1 Sekunde

Einige von Ihnen fragen sich vielleicht, wie man sich die vielen oben genannten APIs merken soll? Tatsächlich müssen Sie sich das alles nicht merken. Auf der offiziellen Website von Inventor Quant finden Sie eine ausführliche API-Dokumentation. Genau wie beim Nachschlagen in einem Wörterbuch: Wenn Sie es brauchen, schlagen Sie einfach nach. Lassen Sie sich nicht von den Codes und anderen Inhalten abschrecken, mit denen Sie zum ersten Mal vertraut sind. Wir wollen unsere eigenen Strategien mithilfe dieser Sprachen organisieren. Bitte denken Sie daran, dass Technologie nie die Schwelle zur Quantifizierung darstellt. Ob Sie eine gute Strategie haben, ist der Schlüssel dazu, ob Sie langfristig auf dem quantitativen Markt bestehen können.

Zusammenfassen

Die oben genannten APIs sind die am häufigsten verwendeten APIs im quantitativen Handel. Sie umfassen im Wesentlichen: Daten abrufen, Daten berechnen, Kauf- und Verkaufsaufträge erteilen, was für die Handhabung einer einfachen quantitativen Handelsstrategie ausreicht. Wenn Sie eine komplexere Strategie schreiben möchten, müssen Sie natürlich auf die offizielle Website des Inventor Quantitative Tool gehen, um diese zu erhalten.

Hausaufgaben

  1. Versuchen Sie, in der Mai-Sprache eine Aussage zu schreiben, dass der gleitende Durchschnitt der 5-Perioden den gleitenden Durchschnitt der 10-Perioden kreuzt.
  2. Versuchen Sie, mit GetAccount in JavaScript Ihre Kontoinformationen abzurufen und diese mit Log in das Protokoll zu drucken.

Vorschau des nächsten Abschnitts

Programmieren ist wie das Zusammensetzen von Legosteinen, APIs sind wie die verschiedenen Teile der Steine ​​und der Programmiervorgang besteht darin, die verschiedenen Legoteile zu einem kompletten Spielzeug zusammenzusetzen. Im nächsten Abschnitt zeige ich Ihnen, wie Sie mithilfe der Mai Language API eine vollständige quantitative Handelsstrategie zusammenstellen.

2.4 So schreiben Sie Strategien für das Inventor Quantitative System

Zusammenfassung

Nachdem Sie die vorherigen Abschnitte studiert haben, können Sie nun endlich mit dem Schreiben quantitativer Handelsstrategien beginnen. Dies ist für Sie der wichtigste Schritt auf dem Weg vom manuellen zum quantitativen Handel. Tatsächlich ist es gar nicht so mysteriös. Eine Strategie zu schreiben bedeutet nichts anderes, als Ihre Ideen in Code umzusetzen. In diesem Abschnitt wird eine quantitative Handelsstrategie von Grund auf implementiert und Sie werden mit der Erstellung von Strategien im Inventor Quantitative System vertraut gemacht.

Vorbereiten

Öffnen Sie zunächst die offizielle Website des Inventor Quantitative Tool und klicken Sie nacheinander auf „Strategiebibliothek“ und „Neue Strategie“. Beachten Sie, dass Sie vor dem Schreiben des Codes im Dropdown-Menü „Programmiersprache“ die Sprache Mai oder JavaScript auswählen müssen. Natürlich unterstützt die Plattform auch Python, C++ und visuelle Sprachen.

Strategische Ideen

Im vorherigen Kapitel haben wir eine Strategie für den Preisdurchbruch durch den gleitenden Durchschnitt vorgestellt. Das heißt: Wenn der Preis höher ist als der Durchschnittspreis der letzten 10 Tage, kaufen; wenn der Preis niedriger ist als der Durchschnittspreis der letzten 10 Tage, verkaufen. Obwohl der Preis den Marktstatus direkt widerspiegeln kann, wird es jedoch viele falsche Durchbruchssignale geben. Daher müssen wir diese Strategie aktualisieren und verbessern.

Wählen Sie zunächst einen längeren gleitenden Durchschnitt aus, um die Trendrichtung zu bestimmen, der mindestens fast die Hälfte der falschen Durchbruchsignale herausgefiltert hat. Obwohl der lange gleitende Durchschnitt langsam ist, wird er stabiler sein; um dann die Erfolgsrate des Einstiegs weiter zu erhöhen, fügen Sie eine weitere Bedingung hinzu, dass dieser lange gleitende Durchschnitt mindestens nach oben geht; verwenden Sie schließlich die relative Positionsbeziehung von Preis, kurzfristigem gleitendem Durchschnitt und langfristigem gleitendem Durchschnitt, um eine vollständige Handelsstrategie zu bilden.

Strategielogik

Mit den oben genannten strategischen Ideen und Gedanken können wir versuchen, die Strategielogik aufzubauen. Die Logik besteht hier nicht darin, von Ihnen zu verlangen, die Gesetze der Himmelsbewegung zu berechnen; so kompliziert ist das nicht. Es handelt sich lediglich um den verbalen Ausdruck früherer strategischer Ideen.

Eröffnung einer Long-Position: Wenn keine aktuelle Position vorhanden ist und der Schlusskurs höher ist als der kurzfristige gleitende Durchschnitt, und der Schlusskurs höher ist als der langfristige gleitende Durchschnitt, und der kurzfristige gleitende Durchschnitt höher ist als der langfristige gleitende Durchschnitt, und der langfristige gleitende Durchschnitt steigt.

Eröffnen Sie eine Short-Position: Wenn keine aktuelle Position vorhanden ist und der Schlusskurs unter dem kurzfristigen gleitenden Durchschnitt liegt, der Schlusskurs unter dem langfristigen gleitenden Durchschnitt liegt, der kurzfristige gleitende Durchschnitt unter dem langfristigen gleitenden Durchschnitt liegt und der langfristige gleitende Durchschnitt fällt.

Schließen einer Long-Position: Wenn Sie derzeit eine Long-Order halten und der Schlusskurs unter dem langfristigen gleitenden Durchschnitt liegt, oder der kurzfristige gleitende Durchschnitt unter dem langfristigen gleitenden Durchschnitt liegt, oder der langfristige gleitende Durchschnitt sinkt.

Schließen von Short-Positionen: Wenn Sie derzeit eine Short-Order halten und der Schlusskurs höher ist als der langfristige gleitende Durchschnitt oder der kurzfristige gleitende Durchschnitt höher ist als der langfristige gleitende Durchschnitt oder der langfristige gleitende Durchschnitt steigt.

Das Obige ist der logische Teil der gesamten quantitativen Handelsstrategie. Wenn wir die Textversion der Strategielogik in Code umwandeln, umfasst sie drei Schritte: Erfassen der Marktbedingungen, Berechnen von Indikatoren und Platzieren von Kauf- und Verkaufsaufträgen.

Sprachstrategie

Der erste Schritt besteht darin, die Marktinformationen zu erhalten. Bei dieser quantitativen Handelsstrategie müssen wir nur den Schlusskurs ermitteln. In der Mai-Sprache lautet die API zum Ermitteln des Schlusskurses: CLOSE. Das heißt, Sie müssen nur CLOSE in den Code schreiben, um den Schlusskurs der letzten K-Linie zu erhalten.

Dann kommen die Berechnungsindikatoren. In dieser quantitativen Handelsstrategie verwenden wir insgesamt 2 Technologien, nämlich: kurzfristigen gleitenden Durchschnitt und langfristigen gleitenden Durchschnitt. Wir gehen davon aus, dass der kurzfristige gleitende Durchschnitt ein gleitender Durchschnitt über 10 Perioden und der langfristige gleitende Durchschnitt ein gleitender Durchschnitt über 50 Perioden ist. Wie verwenden wir also Code, um den gleitenden Durchschnitt über 10 Perioden und den gleitenden Durchschnitt über 50 Perioden darzustellen? Bitte beachten Sie die folgende Abbildung:
img
Abbildung 2-11 Mai-Sprachstrategiecode

Beim manuellen Handel können wir auf einen Blick erkennen, ob der gleitende Durchschnitt der 50 Perioden steigt oder fällt, aber wie drücken wir dies im Code aus? Denken Sie sorgfältig darüber nach, um zu beurteilen, ob der gleitende Durchschnitt steigt. Ist es nicht so, dass der 50-Perioden-Durchschnittswert der aktuellen K-Linie größer ist als der 50-Perioden-Durchschnittswert der vorherigen K-Linie, und ist der 50-Perioden-Durchschnittswert der vorherigen K-Linie größer als der 50-Perioden-Durchschnittswert der vorherigen K-Linie? Das Gegenteil ist der Fall, was bedeutet, dass der gleitende Durchschnitt fällt. Im Code sollte es also so aussehen:
img
Abbildung 2-12 Code zur Beurteilung des gleitenden Durchschnitts in der Mai-Sprache

Beachten Sie den rosaroten Code „AND“ in den Zeilen 8 und 9 der obigen Abbildung. In der Mai-Sprache bedeutet er „und“. Beispielsweise wird die 9. Zeile wie folgt ins Chinesische übersetzt: Wenn der 50-Perioden-gleitende Durchschnitt der aktuellen K-Linie größer ist als der 50-Perioden-gleitende Durchschnitt der vorherigen K-Linie und der 50-Perioden-gleitende Durchschnitt der vorherigen K-Linie größer ist als der 50-Perioden-gleitende Durchschnitt der vorherigen K-Linie, dann wird der Wert als „Ja“ berechnet; andernfalls wird der Wert als „Nein“ berechnet und das Ergebnis „MA50_ISUP“ zugewiesen.

Der letzte Schritt besteht darin, Kauf- und Verkaufsaufträge zu erteilen. Sie müssen nur die Auftrags-API des quantitativen Tools des Erfinders nach dem Kauf- und Verkaufslogikcode aufrufen, um die Kauf- und Verkaufsvorgänge auszuführen. Bitte beachten Sie die folgende Abbildung:
img
Abbildung 2-13 Kauf- und Verkaufstransaktionscode in der Sprache Mai

Beachten Sie den rosaroten Code „OR“ in den Zeilen 13 und 14 im obigen Bild. In der Mai-Sprache bedeutet er „oder“. Beispielsweise wird Zeile 13 ins Chinesische wie folgt übersetzt: Wenn der Schlusskurs der aktuellen K-Linie unter dem 50-Perioden-Gleitenden Durchschnitt der aktuellen K-Linie liegt oder der 10-Perioden-Gleitende Durchschnitt der aktuellen K-Linie unter dem 50-Perioden-Gleitenden Durchschnitt der aktuellen K-Linie liegt, wird der Wert als „Ja“ berechnet und sofort eine Bestellung aufgegeben; andernfalls wird er als „Nein“ berechnet und nichts getan.

Bitte beachten: „UND“ und „ODER“ sind logische Operatoren in der Mai-Sprache:
„UND“ bedeutet, dass, wenn alle Bedingungen „ja“ sind, die letzte Bedingung „ja“ ist;
„ODER“ bedeutet, dass die letzte Bedingung „Ja“ ist, sofern eine der Bedingungen „Ja“ lautet.

Zusammenfassen

Das Obige beschreibt den gesamten Prozess des Schreibens von Handelsstrategien in der Sprache Mai mit dem Inventor Quantitative Tool. Insgesamt sind es nur drei Schritte: von der Strategieidee über die Konzeption der Strategie und die Beschreibung der Logik in Worten bis hin zur Implementierung der vollständigen Handelsstrategie mit Code. Obwohl dies eine einfache Strategie ist, ähnelt der spezifische Implementierungsprozess dem einer komplexeren Strategie, mit der Ausnahme, dass der Algorithmus und die Datenstruktur der Strategie unterschiedlich sind. Solange Sie den quantitativen Strategieprozess in diesem Abschnitt verstehen und beherrschen, können Sie die Mai-Sprache verwenden, um bei Bedarf quantitative Strategieforschung zu betreiben und die quantitativen Tools des Erfinders zu üben.

Hausaufgaben

  1. Versuchen Sie, die Strategien in diesem Abschnitt selbst umzusetzen.
  2. Fügen Sie basierend auf der Strategie in diesem Abschnitt die Stop-Profit- und Stop-Loss-Funktionen hinzu.

Vorschau des nächsten Abschnitts

Bei der Entwicklung quantitativer Handelsstrategien sind Programmiersprachen wie Waffen und Ausrüstung. Eine gute Programmiersprache kann Ihnen helfen, mit halbem Aufwand das doppelte Ergebnis zu erzielen. Beispielsweise gibt es in der quantitativen Handelsbranche mehr als ein Dutzend am häufigsten verwendete Sprachen, darunter Python, C++, Java, C#, EasyLanguage, Mai Language usw. Welche Waffe sollte ich wählen, um auf das Schlachtfeld zu ziehen? Im nächsten Abschnitt stellen wir diese gängigen Programmiersprachen und die Eigenschaften der einzelnen Programmiersprachen vor.

Kapitel 3 Einfache Programmiersprache zur Implementierung von Handelsstrategien

3.1 Horizontale Bewertung von Programmiersprachen für den quantitativen Handel

Zusammenfassung

In Kapitel 1 und Kapitel 2 haben wir die Grundlagen des quantitativen Handels und den Einsatz der quantitativen Werkzeuge des Erfinders kennengelernt. In diesem Kapitel werden wir die Handelsstrategie im Detail umsetzen. Wenn Sie Ihre Arbeit gut machen möchten, müssen Sie zuerst Ihre Werkzeuge schärfen. Um Handelsstrategien umzusetzen, müssen Sie zunächst eine Programmiersprache beherrschen. In diesem Abschnitt werden zunächst die wichtigsten Programmiersprachen im quantitativen Handel sowie die Merkmale der einzelnen Programmiersprachen vorgestellt.

Was ist eine Programmiersprache

Bevor Sie eine Programmiersprache lernen, müssen Sie zunächst das Konzept „Programmiersprache“ verstehen. Eine Programmiersprache ist eine Sprache, die sowohl Menschen als auch Computer verstehen können. Es handelt sich um einen standardisierten Kommunikationscode. Der Zweck einer Programmiersprache besteht darin, Computer mithilfe der menschlichen Sprache zu steuern und ihnen mitzuteilen, was wir tun möchten. Computer können Anweisungen gemäß Programmiersprachen ausführen, und wir können auch Codes schreiben, um Computern Anweisungen zu erteilen.

So wie unsere Eltern uns in jungen Jahren das Sprechen beigebracht haben, haben sie uns auch beigebracht, die Worte anderer zu verstehen. Nach einer langen Zeit der Beeinflussung und des Selbststudiums lernten wir, ohne es zu merken, sprechen und konnten verstehen, was andere Kinder sagten. Es gibt viele Sprachen, darunter Chinesisch, Englisch, Französisch usw. Zum Beispiel:
Chinesisch: Hallo Welt
Englisch: Hallo Welt
Französisch: Bonjour tout le monde

Wenn Sie eine Programmiersprache verwenden, um „Hallo Welt“ auf einem Computerbildschirm anzuzeigen, würde dies folgendermaßen aussehen:
C-Sprache: puts("Hallo Welt");
Java-Sprache: System.out.println("Hallo Welt");
Python-Sprache: print("Hallo Welt")
Wir können sehen, dass Computersprachen ihre eigenen spezifischen Regeln haben und es viele Sprachen gibt. Diese Sprachregeln sind die Programmiersprachenklassifikationen, die wir Ihnen heute erklären müssen. In jeder Klassifikation müssen wir uns nur die grundlegendsten und am häufigsten verwendeten Regeln merken, und wir können diese Programmiersprachen verwenden, um mit Computern zu kommunizieren und Computer entsprechende Strategien gemäß unseren Anweisungen ausführen zu lassen.

Programmiersprachenklassifizierung

Um Ihnen die Referenz und den Vergleich zu erleichtern und die für Sie geeignete Programmiersprache für den quantitativen Handel auszuwählen, klassifizieren wir die sechs am häufigsten verwendeten Programmiersprachen, nämlich Python, Matlab/R, C++, Java/C#, EasyLanguage und visuelle Sprache (wie unten gezeigt).
img
Abbildung 3-1 Auswertung der Programmiersprache

Wir haben sie anhand ihres Funktionsumfangs, ihrer Laufgeschwindigkeit, ihrer Skalierbarkeit und ihres Lernschwierigkeitsgrades bewertet. Die Bewertung liegt zwischen 1 und 5. Beispielsweise bedeutet eine Bewertung von 5 hinsichtlich des Funktionsumfangs, dass die Funktion leistungsstark ist, und eine Bewertung von 1 bedeutet, dass die Funktion weniger leistungsstark ist. (Wie oben gezeigt) Visuelle Sprache und EasyLanguage sind leicht zu erlernen und eignen sich sehr gut für Anfänger; Python ist leistungsstark und verfügt über starke Erweiterungsmöglichkeiten, sodass es sich für die Entwicklung komplexerer Handelsstrategien eignet; C++ hat eine schnellere Handelsgeschwindigkeit und eignet sich besser für Hochfrequenzhändler.

Die Bewertung der einzelnen Programmiersprachen zielt allerdings vor allem auf deren Anwendung im Bereich des quantitativen Handels ab und enthält persönliche, subjektive Elemente. Gerne können Sie in den Kommentaren auch Kritik äußern oder Ihre Ansichten zur Diskussion stellen. Als Nächstes werden wir beginnen, diese Programmiersprachen nacheinander vorzustellen.

Visuelle Sprache

Visuelle Programmierung hat eine lange Geschichte und ist nichts Neues. Dieses mit verschiedenen Steuermodulen ausgestattete Programmierkonzept nach dem Motto „What you see is what you get“ kann Codelogik erstellen und Handelsstrategien ganz einfach per Drag & Drop entwerfen. Der Prozess ähnelt sehr dem Bauen von Bausteinen.
img
Abbildung 3-2 Visuelle Programmiersprachenschnittstelle

Wie oben gezeigt, kann dasselbe Programm mit nur wenigen Codezeilen in der visuellen Programmierung der Inventor Quantitative Trading Platform abgeschlossen werden. Dadurch wird die Hemmschwelle zum Programmieren deutlich gesenkt, was insbesondere für Händler ohne Programmierkenntnisse eine tolle Bedienerfahrung darstellt.

Da die zugrunde liegende Implementierungsstrategie dieser visuellen Sprache in C++ konvertiert wird, hat sie kaum Auswirkungen auf die Ausführungsgeschwindigkeit des Programms. Allerdings sind die Funktionalität und Skalierbarkeit relativ schwach und es ist nicht möglich, übermäßig komplexe oder anspruchsvolle Handelsstrategien zu entwickeln.

Einfache Sprache

Bei der sogenannten EasyLanguage handelt es sich um eine Programmiersprache, die nur in einigen kommerziellen quantitativen Handelsprogrammen zum Einsatz kommt. Obwohl diese Sprachen auch über einige objektorientierte Funktionen verfügen, basieren ihre Anwendungen hauptsächlich auf Skripten. Auch syntaktisch ist es unserer natürlichen Sprache sehr ähnlich. Für Anfänger im quantitativen Handel ist EasyLanguage als Einstiegspunkt die bessere Wahl. Beispiel: die Mai-Sprache in der quantitativen Handelsplattform des Erfinders.

Diese Skriptsprache kann problemlos Strategie-Backtests und realen Handel in ihrer spezifischen Software durchführen, ist jedoch häufig in Bezug auf die Skalierbarkeit eingeschränkt. Beispielsweise können Strategieentwickler keine externen APIs aufrufen. Darüber hinaus läuft diese Skriptsprache hinsichtlich der Ausführungsgeschwindigkeit auf ihrer eigenen virtuellen Maschine und ihre Leistungsoptimierung ist nicht so gut wie bei Java/C#, sodass sie langsamer ist.

Python

Auf Stackoverflow ist die Anzahl der Besuche der Mainstream-Programmiersprachen in den letzten Jahren weitgehend unverändert geblieben, nur Python weist einen Aufwärtstrend auf. Python kann für die Website-Entwicklung, maschinelles Lernen, Deep Learning, Datenanalyse usw. verwendet werden. Aufgrund seiner Flexibilität und Offenheit ist es die am weitesten verbreitete Sprache geworden. Dasselbe gilt für den Bereich quantitativer Investitionen. Derzeit basieren die meisten inländischen quantitativen Plattformen auf Python.

Die grundlegenden Datenstrukturen, Listen und Wörterbücher von Python sind sehr leistungsfähig und können grundsätzlich die Anforderungen der Datendarstellung erfüllen. Wenn Sie eine schnellere und umfassendere Datenstruktur benötigen, empfiehlt sich die Verwendung von NumPy und SciPy. Diese beiden Bibliotheken gelten grundsätzlich als Standardbibliotheken für wissenschaftliches Rechnen mit Python.

Für das Financial Engineering ist Pandas eine gezieltere Bibliothek, die über zwei Datenstrukturen, Series und DataFrame, verfügt und sich sehr gut für die Verarbeitung von Zeitreihen eignet.

In Bezug auf die Geschwindigkeit liegt Python im Mittelfeld, langsamer als C++ und schneller als EasyLanguage, hauptsächlich weil Python eine dynamische Sprache ist und seine Geschwindigkeit bei der Ausführung in reinem Python durchschnittlich ist. Sie können jedoch Cython verwenden, um einige Funktionen statisch zu optimieren, um die Geschwindigkeit von C++ anzunähern.

Als Verbindungssprache ist Python die unangefochtene Nummer eins in Sachen Erweiterungsleistung. Neben der Möglichkeit, sich erweiterbar mit anderen Sprachen zu verbinden, ist die Erweiterungs-API auch auf eine sehr einfache Verwendung ausgelegt. Was den Lernschwierigkeitsgrad angeht, verfügt Python über eine einfache Syntax, gut lesbaren Code und ist leicht zu erlernen.

Matlab/R

Als nächstes kommen Matlab und R. Diese beiden Sprachen werden hauptsächlich zur Datenanalyse verwendet. Die Autoren der Sprachen haben viele syntaktische Designs für wissenschaftliche Operationen erstellt. Ihre Besonderheit besteht darin, dass sie quantitative Handelsoperationen auf natürliche Weise unterstützen. Allerdings ist sein Anwendungsbereich relativ begrenzt und es wird im Allgemeinen für die Datenanalyse und das Strategie-Backtesting verwendet. Für die Entwicklung von Handelssystemen und Strategiealgorithmen sind die Benutzerfreundlichkeit und Stabilität relativ schlecht.

Darüber hinaus sind ihre Ausführungsgeschwindigkeit und Skalierbarkeit relativ gering, da Matlab und R auf virtuellen Maschinen mit unterschiedlichen Sprachen ausgeführt werden. In Bezug auf die Leistung sind ihre virtuellen Maschinen viel schlechter als Java und C#. Da ihre Syntax jedoch eher mathematischen Ausdrücken ähnelt, sind sie relativ leichter zu erlernen.

C++

C++ ist eine universelle Programmiersprache, die mehrere Programmiermodelle unterstützt, etwa prozedurale Programmierung, Datenabstraktion, objektorientierte Programmierung, generische Programmierung und Entwurfsmuster. Mit C++ können Sie alle gewünschten Funktionen implementieren, der größte Nachteil einer so leistungsstarken Sprache besteht jedoch darin, dass sie sehr schwer zu erlernen ist und beispielsweise Vorlagen, Zeiger, Speicherlecks usw. aufweist.

Derzeit ist C++ immer noch die bevorzugte Programmiersprache für den Handel mit großen Mengen und hoher Frequenz. Der Grund ist einfach. Da die Eigenschaften der Sprache C++ für den zugrunde liegenden Computer leichter zugänglich sind, ist sie das effektivste Werkzeug für die Entwicklung leistungsstarker Backtesting- und Ausführungssysteme, die große Datenmengen verarbeiten.

Java/C#

Java/C# sind beides statische Sprachen, die auf virtuellen Maschinen ausgeführt werden. Im Vergleich zu C++ gibt es keinen Array-Out-of-Bounds-Fehler, keinen Coredump, die ausgelösten Ausnahmen können den Speicherort des Fehlercodes genau lokalisieren, es verfügt über einen integrierten Garbage-Collection-Mechanismus, man muss sich keine Sorgen über Speicherlecks usw. machen. Daher sind sie auch im Hinblick auf den Schwierigkeitsgrad des Erlernens der Syntax einfacher als C++. Da ihre virtuellen Maschinen alle über eine eigene JIT-Funktion zur Laufzeitkompilierung verfügen, ist ihre Geschwindigkeit in puncto Ausführungsgeschwindigkeit nur der von C++ unterlegen.

Allerdings ist es hinsichtlich der Funktionalität nicht möglich, das zugrundeliegende Handelssystem wie bei C++ zu optimieren. In Bezug auf die Erweiterungsleistung ist es schwächer als C++, da die Erweiterung über die Brücke von C erfolgen muss und diese beiden Sprachen selbst auf virtuellen Maschinen ausgeführt werden. Beim Erweitern von Funktionsmodulen muss daher eine zusätzliche Wandschicht überquert werden, um dies zu erreichen.

Zusammenfassen

Andererseits ist die quantitative Programmiersprache nicht wichtig, wichtig ist die Idee. Es ist absolut kein Problem, die quantitative Mai-Sprache und die Visualisierungssprache des Erfinders als Sprungbrett für den quantitativen Einstieg zu verwenden. Um sich nach dem Einstieg zu verbessern, müssen Sie in Kombination mit unterschiedlichen Marktbedingungen ständig versuchen, zu erkunden. Man kann sagen, dass Ideen den Ausweg bestimmen und Visionen den Bereich bestimmen.

„Entwerfen Sie Ihre Strategie, handeln Sie Ihre Ideen.“ Aus dieser Perspektive besteht der Kern des quantitativen Handels immer noch darin, Ideen zu handeln. Als quantitativer Händler müssen Sie nicht nur die grundlegende Syntax und Funktionen der Strategieschreibplattform beherrschen, sondern auch Handelskonzepte im tatsächlichen Einsatz erleben. Die Quantifizierung ist lediglich ein Werkzeug und Träger zur Abbildung verschiedener Handelskonzepte.

Hausaufgaben

  1. Welche Vorteile bietet die Programmiersprache Python für den quantitativen Handel?
  2. Versuchen Sie, einige häufig verwendete APIs in der Sprache Mai des Erfinders zu schreiben?

Vorschau des nächsten Abschnitts

Ich glaube, dass Sie mit der obigen Einführung in Programmiersprachen wissen müssen, wie Sie wählen sollen. In den nächsten Kapiteln werden wir lernen, quantitative Handelsstrategien gezielt entsprechend der Klassifizierung der Programmiersprachen zu entwickeln.

3.2 Kurzanleitung zur Mai-Sprache

Zusammenfassung

Was ist Mai-Sprache? Die sogenannte Mai-Sprache ist ein Satz programmierter Funktionsbibliotheken, die aus frühen technischen Aktienindikatoren erweitert wurden. Die Algorithmen sind in Funktionen gekapselt und Benutzer müssen die Funktionen nur zeilenweise aufrufen, als würden sie mit Bausteinen spielen, um die Strategielogik zu implementieren.

Es verwendet den Konstruktionsmodus „kleine Syntax, große Funktion“, was die Schreibeffizienz erheblich verbessert. Strategien, die in anderen Sprachen mehr als 100 Sätze erfordern, können in der Mai-Sprache im Allgemeinen in nur einem Dutzend Sätzen geschrieben werden. In Verbindung mit der Finanzstatistik-Funktionsbibliothek und der Datenstruktur der quantitativen Tools des Erfinders kann es auch einige komplexe Handelslogiken unterstützen.

Komplette Strategie

Damit Sie die wichtigsten Kenntnisse dieses Abschnitts schnell erfassen können, sollten Sie sich vor der Einführung in die Inventor Quantitative Microwave Language Quick Start zunächst mit den Konzepten in diesem Abschnitt vertraut machen. Wir verwenden weiterhin den langfristigen 50-Tage-Durchschnitt und den kurzfristigen 10-Tage-Durchschnitt als Basisfälle und überprüfen den vollständigen Strategiefall, der im vorherigen Kapitel erwähnt wurde:

Eröffnung einer Long-Position: Wenn keine aktuelle Position vorhanden ist und der Schlusskurs höher ist als der kurzfristige gleitende Durchschnitt, und der Schlusskurs höher ist als der langfristige gleitende Durchschnitt, und der kurzfristige gleitende Durchschnitt höher ist als der langfristige gleitende Durchschnitt, und der langfristige gleitende Durchschnitt steigt.

Eröffnen Sie eine Short-Position: Wenn keine aktuelle Position vorhanden ist und der Schlusskurs unter dem kurzfristigen gleitenden Durchschnitt liegt, der Schlusskurs unter dem langfristigen gleitenden Durchschnitt liegt, der kurzfristige gleitende Durchschnitt unter dem langfristigen gleitenden Durchschnitt liegt und der langfristige gleitende Durchschnitt fällt.

Schließen einer Long-Position: Wenn Sie derzeit eine Long-Order halten und der Schlusskurs unter dem langfristigen gleitenden Durchschnitt liegt, oder der kurzfristige gleitende Durchschnitt unter dem langfristigen gleitenden Durchschnitt liegt, oder der langfristige gleitende Durchschnitt sinkt.

Schließen von Short-Positionen: Wenn Sie derzeit eine Short-Order halten und der Schlusskurs höher ist als der langfristige gleitende Durchschnitt oder der kurzfristige gleitende Durchschnitt höher ist als der langfristige gleitende Durchschnitt oder der langfristige gleitende Durchschnitt steigt.

Wenn es im Mai-Sprachcode geschrieben ist, sieht es folgendermaßen aus:
img
Abbildung 3-3 Vollständiges Beispiel der Mai-Sprache

Um eine vollständige quantitative Handelsstrategie zu schreiben, sind normalerweise mehrere Schritte erforderlich: Datenerfassung, Datenberechnung, logische Berechnung, Auftragserteilung usw. Wie in der obigen Abbildung gezeigt, wird im gesamten Code nur eine API zum Abrufen der Basisdaten verwendet, nämlich „CLOSE“ in der ersten und zweiten Zeile; dann sind die erste bis neunte Zeile der Datenberechnungsteil und schließlich sind die elfte bis vierzehnte Zeile der Teil zur Logikberechnung und Auftragserteilung.

Bitte beachten Sie, dass der violette Code eine Variable ist. In der ersten bis neunten Zeile ist das grüne „:=“ ein Zuweisungsoperator. Nach der Berechnung werden die Daten auf der rechten Seite des Zuweisungsoperators der Variablen auf der linken Seite zugewiesen. Der orangefarbene Code ist die API. In der ersten Zeile müssen beispielsweise zum Aufrufen des MA (gleitender Durchschnitt) zwei Parameter übergeben werden. Diese können als Einstellungen verstanden werden. Das heißt, beim Aufrufen des MA müssen Sie den Typ des MA festlegen. Das rosarote „AND“ und „OR“ sind logische Operatoren, die hauptsächlich zum Verbinden mehrerer logischer Berechnungen usw. verwendet werden. Beginnen wir mit dem Erlernen der detaillierten Grundlagen der Mai-Sprache, nachdem wir die oben genannten Grundkenntnisse erworben haben.

Basisdaten

Grundlegende Daten (Eröffnungskurs, Höchstkurs, Tiefstkurs, Schlusskurs, Handelsvolumen) sind ein unverzichtbarer Bestandteil des quantitativen Handels. Um die neuesten grundlegenden Daten in der Strategie zu erhalten, müssen Sie nur die API des quantitativen Tools des Erfinders aufrufen. Wenn Sie historische Basisdaten abrufen möchten, können Sie „REF“ verwenden, z. B.: REF (CLOSE, 1) dient zum Abrufen des Schlusskurses von gestern.

Variable

Eine Variable ist eine Zahl, die geändert werden kann. Der Name einer Variable kann als Code verstanden werden. Die Benennung unterstützt chinesische Schriftzeichen, Buchstaben, Zahlen und Bindestriche, die Länge muss jedoch auf 31 Zeichen begrenzt sein. Variablennamen, Parameternamen oder Funktionsnamen (API) dürfen sich nicht wiederholen und jede Anweisung sollte mit einem Semikolon enden. Möchten Sie nach dem Schreiben noch eigene Sprachkommentare hinzufügen, verwenden Sie am Ende „//“. Es muss im Großbuchstabenmodus der halbbreiten Eingabemethode geschrieben werden. Wie in der folgenden Abbildung dargestellt:
img
Abbildung 3-4 Datentyp der Mai-Sprache

Variablenzuweisung

Bei der Variablenzuweisung wird der Wert auf der rechten Seite des Zuweisungsoperators der Variablen auf der linken Seite zugewiesen. Es gibt vier Arten von Zuweisungsoperatoren, die steuern können, ob der Wert im Diagramm angezeigt wird, und die Anzeigeposition definieren. Die grünen Schriftarten in der folgenden Abbildung sind Zuweisungsoperatoren, nämlich „:“, „:=“, „^^“ und „..“. Die Codekommentare in der Abbildung erklären ihre Bedeutung im Detail.
img
Abbildung 3-5 Zuweisung von Variablen in der Mai-Sprache

Datentyp

In der Mai-Sprache gibt es viele Datentypen, von denen der numerische Typ, der Zeichenfolgentyp und der Boolesche Typ am häufigsten verwendet werden. Numerische Typen sind Zahlen, einschließlich Ganzzahlen, Dezimalzahlen, positive und negative Zahlen usw., z. B.: 1, 2, 3, 1,1234, 2,23456 ...; Zeichenfolgentypen können als Text, Chinesisch, Englisch und Zahlen verstanden werden, z. B.: „Inventor Quantification“, „CLOSEPRICE“, „6000“, und Zeichenfolgentypen müssen in englische Semikolons eingeschlossen werden. Der Boolesche Typ ist der einfachste, er hat nur zwei Werte „ja“ und „nein“, z. B.: 1 steht für „ja“ für wahr und 0 steht für „nein“ für falsch.

Beziehungsoperator

Relationale Operatoren sind, wie der Name schon sagt, Operatoren, die zum Vergleichen der Beziehung zwischen zwei Werten verwendet werden. Sie sind gleich, größer als, kleiner als, größer oder gleich, kleiner oder gleich und ungleich, wie unten gezeigt:
img
Abbildung 3-6 Mai-Sprachoperatoren

Logische Operatoren

Logische Operationen können einzelne Boolesche Aussagen zu einem Ganzen verbinden. Die am häufigsten verwendeten sind „UND“ und „ODER“. Angenommen, es gibt zwei Werte vom Typ Boolesch, nämlich „Schlusskurs ist höher als Eröffnungskurs“ und „Schlusskurs ist höher als gleitender Durchschnitt“, dann können wir sie zu einem Booleschen Wert kombinieren, wie etwa: „Schlusskurs ist höher als Eröffnungskurs und (UND) Schlusskurs ist höher als gleitender Durchschnitt“, „Schlusskurs ist höher als Eröffnungskurs oder (ODER) Schlusskurs ist höher als gleitender Durchschnitt“.
img
Abbildung 3-7 Logische Operation der Mai-Sprache

Achtung alle:
„UND“ bedeutet, dass, wenn alle Bedingungen „ja“ sind, die letzte Bedingung „ja“ ist;
„ODER“ bedeutet, dass die letzte Bedingung „Ja“ ist, sofern eine der Bedingungen „Ja“ lautet.
„UND“ kann als „&&“ und „ODER“ als „||“ geschrieben werden.

Arithmetik-Operator

Häufig verwendete arithmetische Operatoren in der Mai-Sprache ("+", "-",*”, „/“) unterscheidet sich nicht von der Mathematik, die man in der Grundschule lernt, wie unten gezeigt:
img
Abbildung 3-8 Arithmetische Operationen in der Mai-Sprache

Prioritäten

Wenn es eine 100 gibt*Welchen Schritt berechnet das Programm zuerst für den Ausdruck (10-1)/(10+5)? Aus der Mittelschulmathematik wissen wir: ① Handelt es sich um eine Operation auf gleicher Ebene, wird grundsätzlich von links nach rechts gerechnet. ② Wenn sowohl Addition und Subtraktion als auch Multiplikation und Division vorliegen, berechnen Sie zuerst die Multiplikation und Division, dann die Addition und Subtraktion. ③Wenn Klammern vorhanden sind, berechnen Sie zuerst den Inhalt der Klammern. ④ Wenn es den Betriebsgesetzen entspricht, können die Betriebsgesetze zur Vereinfachung der Berechnung verwendet werden. Die Priorität der Mai-Sprache ist die gleiche wie unten gezeigt:
img
Abbildung 3-9 Priorität arithmetischer Operationen in der Sprache Mai

Ausführung

In der Mai-Sprache des quantitativen Tools des Erfinders gibt es zwei Modi zur Ausführung der Programmstrategie, nämlich: Schlusskursmodus und Echtzeitkursmodus. Der Schlusskursmodus bedeutet, dass das aktuelle K-Liniensignal hergestellt wird und die Auftragstransaktion sofort ausgeführt wird, wenn die nächste K-Linie beginnt. Der Echtzeit-Preismodus bedeutet, dass die Auftragstransaktion sofort ausgeführt wird, sobald das aktuelle K-Line-Signal vorliegt.

Intraday-Strategien

Wenn es sich um eine Intraday-Strategie handelt und Sie die Position am Ende des Handelstages schließen müssen, müssen Sie die Zeitfunktion „TIME“ verwenden. Diese Funktion wird vierstellig angezeigt, wenn sie über der Sekundenperiode und unter der Tagesperiode liegt, also: HHMM (1450-14:50). Hinweis: Wenn Sie die TIME-Funktion als Bedingung zum Schließen einer Position am Ende des Handels verwenden, wird empfohlen, dass auch die Öffnungsbedingung ein entsprechendes Zeitlimit hat. Wie unten gezeigt:
img
Abbildung 3-10 Mikrofon-Sprachzeitfunktion

Modellklassifizierung

img
Abbildung 3-11 Klassifizierung des Mai-Sprachmodells

Es gibt zwei Arten der Modellklassifizierung in der Mai-Sprache, nämlich: nichtfilterndes Modell und filterndes Modell. Dies ist eigentlich sehr einfach zu verstehen: Das nicht filternde Modell ermöglicht kontinuierliche Öffnungs- oder Schließsignale, wodurch die Funktionen des Hinzufügens und Reduzierens von Positionen realisiert werden können. Das Filtermodell erlaubt keine kontinuierlichen Öffnungs- oder Schließsignale. Das heißt, wenn ein Öffnungssignal erscheint, werden nachfolgende Öffnungssignale herausgefiltert, bis ein Schließsignal erscheint. Die Reihenfolge der Signale im nicht filternden Modell ist: öffnen-schließen-öffnen-schließen-öffnen.....

Zusammenfassen

Das Obige ist eine kurze Einführung in die Mai-Sprache. Nachdem Sie sie gelernt haben, können Sie quantitative Handelsstrategien programmieren. Wenn Sie komplexere Strategien schreiben müssen, können Sie die Dokumentation zur Mai Language API des Inventor Quantitative Tool zu Rate ziehen oder sich direkt an den offiziellen Kundendienst wenden, um quantitative Handelsstrategien für Sie schreiben zu lassen.

Vorschau des nächsten Abschnitts

Auch Daytrading ist ein Handelsmodell. Bei dieser Methode werden Positionen nicht über Nacht gehalten, daher ist das Risiko von Marktvolatilität geringer. Sobald ungünstige Marktbedingungen eintreten, können rechtzeitig Anpassungen vorgenommen werden. Nachdem Sie in diesem Abschnitt die Einführung in die Mai-Sprache gelernt haben, zeigen wir Ihnen im nächsten Abschnitt, wie Sie eine durchführbare quantitative Intraday-Handelsstrategie schreiben.

Hausaufgaben

  1. Versuchen Sie, mit dem Inventor Quantitative Tool eine API in der Mai-Sprache zu schreiben, um grundlegende Daten zu erhalten.
  2. Welche Möglichkeiten gibt es, Variablenzuweisungen in einem Diagramm anzuzeigen?

3.3 So implementieren Sie Strategien in der Mai-Sprache

Zusammenfassung

Im vorherigen Artikel haben wir die Voraussetzungen für die Umsetzung von Handelsstrategien unter den Gesichtspunkten Einführung in die Mai-Sprache, grundlegende Syntax, Modellausführungsmethode, Modellklassifizierung usw. erläutert. In diesem Artikel werden wir den Inhalt des vorherigen Artikels fortsetzen und Ihnen dabei helfen, aus den häufig verwendeten Strategiemodulen und technischen Indikatoren Schritt für Schritt eine durchführbare quantitative Intraday-Handelsstrategie zu realisieren.

Richtlinienmodul

Überlegen Sie einmal: Wie baut man einen Roboter aus Legosteinen? Man kann es nicht Stück für Stück zusammensetzen, von oben nach unten oder von unten nach oben. Jeder mit ein wenig gesundem Menschenverstand weiß, dass Kopf, Arme, Beine, Flügel usw. einzeln zusammengesetzt und dann zu einem kompletten Roboter kombiniert werden müssen. Dasselbe gilt beim Schreiben von Programmen. Schreiben Sie die erforderlichen Funktionen in Strategiemodule und kombinieren Sie die Strategiemodule dann zu einer vollständigen quantitativen Handelsstrategie. Nachfolgend liste ich einige häufig verwendete Strategiemodule auf:

Phasenanstieg

Die Stufenerhöhung wird durch Berechnung des Prozentsatzes der Differenz zwischen dem Schlusskurs der aktuellen K-Linie und dem Schlusskurs der vorherigen N-Perioden berechnet. Um beispielsweise den Anstieg der letzten 10 K-Linien-Perioden zu berechnen, kann der Code wie folgt geschrieben werden:
img
Abbildung 3-12 Entwicklung der Mai-Sprachphase

Neue Höchststände

Um einen neuen Höchststand festzulegen, müssen wir berechnen, ob die aktuelle K-Linie höher ist als der höchste Preis in N Perioden. Um beispielsweise zu berechnen, ob die aktuelle K-Linie höher ist als der höchste Preis der letzten 10 K-Linien, kann der Code wie folgt geschrieben werden:
img
Abbildung 3-13 Mai Language erreicht einen neuen Höhepunkt

Großes Volumen nach oben

Ein großvolumiger Aufwärtsangriff kann als steigende Preise und ein starker Anstieg des Handelsvolumens verstanden werden. Beispiel: Wenn der Schlusskurs einer K-Linie das 1,5-fache des Schlusskurses der vorherigen 10 K-Linien beträgt, bedeutet dies, dass er in 10 Tagen um 50% gestiegen ist; das Handelsvolumen übersteigt das 5-fache des Durchschnitts der letzten 10 K-Linien. Es kann wie folgt codiert werden:
img
Abbildung 3-14 Maiyuyu's Volumen steigt

Schmaler Abschluss

Eine Konsolidierung in einem engen Bereich bedeutet, dass die Preise über einen aktuellen Zeitraum hinweg innerhalb eines bestimmten Bereichs bleiben. Beispiel: Wenn die Differenz zwischen dem höchsten Preis innerhalb von 10 Perioden und dem niedrigsten Preis innerhalb von 10 Perioden, geteilt durch den Schlusskurs der aktuellen K-Linie, weniger als etwa 0,05 beträgt. Es kann wie folgt codiert werden:
img
Abbildung 3-15 Enger Bereich der Weizensprache

Gleitender Durchschnitt – bullische Anordnung

Die bullische Anordnung der gleitenden Durchschnitte wird in eine bullische und eine bärische Anordnung unterteilt. Die K-Linie ist nach oben ausgerichtet und hat eine Unterstützung unter den gleitenden Durchschnitten 5-10-20-30-60, was eine bullische Anordnung darstellt. Die bullische Anordnung bedeutet, dass der Markttrend ein starker Aufwärtstrend ist. Es kann wie folgt codiert werden:
img
Abbildung 3-16 Mai Language Moving Average Bullish Arrangement

Bisherige Höchstwerte und ihre Standorte

Um den vorherigen Höchstpunkt und die Position dieses Höchstpunkts zu erhalten, können Sie diese direkt über die API des Inventor Quantitative Tool abrufen. Dies kann in Code geschrieben werden:
img
Abbildung 3-17 Der bisherige Höhepunkt der Mai-Sprache

Lücke

Eine Lücke ist eine Situation, in der die höchsten und niedrigsten Preise zweier K-Linien nicht verbunden sind. Sie besteht aus zwei K-Linien. Die Lücke ist ein Referenzpreis für zukünftige Unterstützungs- und Druckpunkte. Beim Auftreten einer Kurslücke kann davon ausgegangen werden, dass eine Trendbeschleunigung in Richtung der ursprünglichen Lücke eingesetzt hat. Dies kann in Code geschrieben werden:
img
Abbildung 3-18 Mai Sprachlücke

Allgemeine technische Indikatoren

Gleitender Durchschnitt

img
Abbildung 3-19 Diagramm mit gleitendem Durchschnitt

Statistisch gesehen ist der gleitende Durchschnitt der arithmetische Durchschnitt der Tagespreise und stellt eine Preisentwicklung mit Trend dar. Das gleitende Durchschnittssystem ist ein technisches Instrument, das von den meisten Analysten häufig verwendet wird. Aus technischer Sicht ist es ein Faktor, der den psychologischen Preis technischer Analysten und den Entscheidungsfaktor beim Kaufen und Verkaufen beeinflusst. Es ist ein gutes Referenzinstrument für technische Analysten. Das quantitative Instrument des Erfinders unterstützt viele verschiedene Arten von gleitenden Durchschnitten, wie in der folgenden Abbildung dargestellt:
img
Abbildung 3-20 Berechnung verschiedener Indikatoren der Mai-Sprache

BOLL-Kanal

img
Abbildung 3-21 BOLL-Kanaldiagramm

BOLL, auch als Bollinger-Band-Indikator bekannt, verwendet ebenfalls statistische Prinzipien, um zunächst den mittleren Kurs auf Grundlage des N-Tage-gleitenden Durchschnitts zu berechnen und dann die oberen und unteren Kurse auf Grundlage der Standardabweichung zu berechnen. Wenn der BOLL-Kanal schmaler wird, bedeutet dies, dass der Preis allmählich zum Mittelwert zurückkehrt. Wenn sich der BOLL-Kanal von schmal zu breit ändert, bedeutet dies, dass sich der Markt zu ändern beginnt. Wenn der Preis die obere Spur kreuzt, deutet dies darauf hin, dass die Kaufkraft gestiegen ist. Wenn der Preis die untere Spur kreuzt, deutet dies darauf hin, dass die Verkaufskraft gestiegen ist.

Unter allen technischen Indikatoren ist die Berechnungsmethode von BOLL eine der kompliziertesten. Sie führt das Konzept der Standardabweichung in die Statistik ein und beinhaltet die Berechnung der Mittellinie (MB), der oberen Linie (UP) und der unteren Linie (DN). Die Berechnungsmethode ist wie folgt:
img
Abbildung 3-22 Berechnung der Bollinger-Bänder in der Sprache Mai

MACD-Indikatoren

img
Abbildung 3-23 MACD-Indikator

Der MACD-Indikator verwendet schnelle (kurzfristige) und langsame (langfristige) gleitende Durchschnitte und ihre Konvergenz- und Trennungszeichen und führt eine doppelte Glättungsoperation durch. Der MACD, der auf der Grundlage des Prinzips des gleitenden Durchschnitts entwickelt wurde, hat den Defekt des gleitenden Durchschnitts, der häufig falsche Signale aussendet, beseitigt und die Wirkung des gleitenden Durchschnitts beibehalten. Daher weist der MACD-Indikator die Eigenschaften des gleitenden Durchschnittstrends, der Stabilität und der Stabilität auf. Es handelt sich um einen technischen Analyseindikator, der verwendet wird, um den Zeitpunkt des Kaufs und Verkaufs von Aktien zu beurteilen und den Anstieg und Fall der Aktienkurse vorherzusagen. Die Berechnungsmethode ist wie folgt:

img
Abbildung 3-24 MACD-Indikator in Mai-Sprache

Die oben genannten sind die am häufigsten verwendeten Strategiemodule bei der Entwicklung quantitativer Handelsstrategien. Natürlich gibt es noch viel mehr als diese. Anhand der obigen Modulbeispiele können Sie auch einige der am häufigsten verwendeten Handelsmodule in Ihrem subjektiven Handel implementieren. Die Methoden sind alle universell. Als Nächstes beginnen wir mit dem Schreiben einer umsetzbaren quantitativen Intraday-Handelsstrategie.

Strategie schreiben

Auf dem Devisen-Spotmarkt gab es einst eine weit verbreitete Durchbruch-Handelsstrategie, die HANS123-Strategie. Sie nutzt ihre einfachen Hoch- und Tiefpunktdurchbrüche von N K-Linien nach der Eröffnung als Kriterium für die Auslösung von Handelssignalen. Dies ist auch ein Handelsmodus für den frühen Einstieg.

Strategielogik

Seien Sie 30 Minuten nach Markteröffnung bereit, in den Markt einzusteigen;
Obere Spur = Höchstpunkt 30 Minuten nach Öffnung;
Untere Spur = 30 Minuten Tief nach der Eröffnung;
Wenn der Preis die obere Grenze durchbricht, kaufen Sie und eröffnen Sie eine Position;
Wenn der Preis unter die untere Grenze fällt, eröffnen Sie eine Verkaufsposition.
Intraday-Handelsstrategie: Schließen Sie Positionen vor Börsenschluss.

Strategiecode

img
Abbildung 3-25 Mai-Sprachstrategiecode

Zusammenfassen

Oben haben wir das Konzept von Strategiemodulen kennengelernt und anhand mehrerer häufig verwendeter Strategiemodulfälle die Programmiermethoden der quantitativen Werkzeuge des Erfinders kennengelernt. Man kann sagen, dass das Erlernen des Schreibens von Strategiemodulen und die Verbesserung des logischen Programmierdenkens wichtige Schritte im fortgeschrittenen quantitativen Handel sind. Schließlich nutzten wir die quantitativen Werkzeuge des Erfinders, um die im Devisen-Spot-Handel üblicherweise verwendeten Handelsstrategien umzusetzen.

Vorschau des nächsten Abschnitts

Manche Freunde sind möglicherweise verwirrt und nicht in der Lage, die dicht gedrängten Codes zu verstehen. Keine Sorge, an all das haben wir bereits für Sie gedacht. Im Inventor Quantitative Tool gibt es auch eine Programmiersprache, die eher für unerfahrene Benutzer geeignet ist. Es handelt sich um visuelle Programmierung. Wie der Name schon sagt, gilt: What you see is what you get. Freuen wir uns gemeinsam darauf!

Hausaufgaben

  1. Versuchen Sie, mehrere Handelsmodule zu implementieren, die Sie beim subjektiven Handel am häufigsten verwenden.
  2. Versuchen Sie, den KDJ-Indikatoralgorithmus mithilfe der Mai-Sprache im quantitativen Tool des Erfinders zu implementieren.

3.4 Schnellstart mit visueller Programmierung

Zusammenfassung

Viele subjektive Händler interessieren sich für quantitativen Handel. Am Anfang sind sie voller Selbstvertrauen. Nachdem sie jedoch die grundlegende Syntax, Datenoperationen, Datenstrukturen, logische Steuerung usw. traditioneller Programmiersprachen gelernt haben, sind sie oft entmutigt oder geben auf, nachdem sie sich die langen und komplexen Codes angesehen haben. Zu diesem Zeitpunkt sind visuelle Programmiersprachen möglicherweise besser für Sie geeignet, um loszulegen.

Komplette Strategie

Damit jeder die Schlüsselkenntnisse dieses Abschnitts schnell versteht, schauen wir uns zunächst an, wie die in der visuellen Sprache geschriebene Strategie aussieht, bevor wir die Kurzeinführung in die quantitative visuelle Programmiersprache von Inventor vorstellen. Und verschaffen Sie sich in diesem Abschnitt ein vorläufiges Verständnis der Konzepte von Substantiven. Betrachten wir das einfachste Beispiel einer Long-Position, wenn der Schlusskurs über dem gleitenden Durchschnitt der letzten 50 Perioden liegt, und einer Short-Position, wenn der Schlusskurs unter dem gleitenden Durchschnitt der letzten 50 Perioden liegt:

Eröffnung einer Long-Position: Wenn keine aktuelle Position besteht und der Schlusskurs über dem gleitenden Durchschnitt der letzten 50 Perioden liegt.
Eröffnen Sie eine Short-Position: Wenn keine aktuelle Position besteht und der Schlusskurs unter dem gleitenden Durchschnitt der letzten 50 Perioden liegt.
Schließen einer Long-Position: Wenn Sie derzeit eine Long-Position halten und der Schlusskurs unter dem gleitenden Durchschnitt der letzten 50 Perioden liegt.
Schließen von Short-Positionen: Wenn Sie derzeit eine Short-Order halten und der Schlusskurs über dem gleitenden Durchschnitt der letzten 50 Perioden liegt.

Wenn die obige Strategie in einer visuellen Sprache geschrieben wäre, würde sie folgendermaßen aussehen (wie unten gezeigt):
img
Abbildung 3-26 Visuelle Sprachschnittstelle

Wie in der obigen Abbildung dargestellt, besteht der gesamte Strategieentwurfsprozess aus: Festlegen des Markttyps, Erhalten des K-Linien-Arrays, Erhalten des 50-Perioden-Durchschnitts der vorherigen K-Linie, Erhalten des Schlusskurses der vorherigen K-Linie, Erhalten des Positions-Arrays, Bestimmen des Positionsstatus, Bestimmen, ob der Schlusskurs größer oder kleiner als der gleitende Durchschnitt ist, und Ausführen einer Eröffnung oder Schließung.

Hier müssen wir auf das Konzept „Array“ achten. Arrays sind eine der wichtigsten Datenstrukturen für jede Programmiersprache. Arrays sind wie Container, die eine Reihe von Werten speichern können. Wenn Sie beispielsweise die API aufrufen, um das K-Line-Array abzurufen, wird das folgende Ergebnis zurückgegeben:
img
Abbildung 3-27 K-Linien-Array

Der Code in der obigen Abbildung ist ein K-Line-Array. Das Array enthält insgesamt drei Daten, nämlich die Daten der vorherigen K-Line, die Daten der vorherigen K-Line und die Daten der aktuellen K-Line. Wenn wir dieses Array einer Variablen „arr“ zuweisen und die letzten Daten in diesem Array abrufen möchten (die Daten der Wurzel-K-Zeile), können wir sie folgendermaßen schreiben (wie in der vierten und fünften Zeile der folgenden Abbildung gezeigt):
img
Abbildung 3-28 Array-Referenz

Wir können einfach die zweite Schreibweise (Zeile 5) verwenden, da es in Wirklichkeit Hunderte oder Tausende von K-Linien-Daten gibt und ständig neue K-Linien hinzukommen. So können Sie zuerst die Länge des Arrays ermitteln. „arr.length“ bedeutet, die Länge des Arrays zu ermitteln und dann „1“ abzuziehen, was den Daten der letzten K-Zeile entspricht. Wenn Sie die Daten der vorherigen K-Linie erhalten möchten, subtrahieren Sie „2“.

Aufmerksame Personen werden feststellen, dass diese Daten in „{}“ eingeschlossen sind. Anhand der englischen Namen können Sie ungefähr erkennen, dass sie folgendem entsprechen: Zeit, Eröffnungskurs, Höchstkurs, Tiefstkurs, Schlusskurs und Handelsvolumen. Wenn Sie den Schlusskurs der vorherigen K-Linie erhalten möchten, fügen Sie einfach "." und den erforderlichen Wert am Ende hinzu, siehe Zeilen 8 bis 10 in der folgenden Abbildung.
img
Abbildung 3-29 Array-Referenz

Warum eine visuelle Programmiersprache verwenden?

Mit den oben genannten Konzepten verwenden wir zunächst Java, um ein Programm zu schreiben, das „Hallo Welt“ ausgibt, um traditionelle Programmierung kennenzulernen, wie unten gezeigt:
img
Abbildung 3-30

Ein Programm, das nur eine „Hallo Welt!“-Zeichenfolge ausgibt, erfordert nur 5 Codezeilen. Ich glaube, dass die meisten Anfänger nur die englischen Wörter „hello, world“ in Klammern kennen und beim Rest keine Ahnung haben, wo sie anfangen sollen. Daher ist es besser, mit der visuellen Programmierung zu beginnen, als ratlos dazustehen.

Was ist visuelle Programmierung?

Visuelle Programmierung hat eine lange Geschichte und ist nichts Neues. Dieses mit verschiedenen Steuermodulen ausgestattete Programmierkonzept nach dem Motto „What you see is what you get“ kann Codelogik erstellen und Handelsstrategien ganz einfach per Drag & Drop entwerfen. Der Prozess ähnelt sehr dem Bauen von Bausteinen.
img
Abbildung 3-31

Wie oben gezeigt, kann dasselbe Programm mit nur einer Codezeile in der visuellen Programmierung von Blockly abgeschlossen werden. Dadurch wird die Hemmschwelle zum Programmieren deutlich gesenkt, was insbesondere für Händler ohne Programmierkenntnisse eine tolle Bedienerfahrung darstellt.

Was sind die Merkmale einer visuellen Programmiersprache?

Blockly ist kein Programmierspielzeug, sondern ein echter Editor und kein als Editor getarntes Betriebssystem. Es unterstützt viele grundlegende Elemente der Programmierung, wie Variablen, Funktionen, Arrays und leicht erweiterbare und anpassbare Blöcke. Sie können damit komplexe Programmieraufgaben erledigen. Das Design entspricht voll und ganz der Unix-Philosophie: Mach eine Sache.

Der Erfinder der quantitativen visuellen Programmierung wurde auch durch das von Google veröffentlichte Visualisierungstool Blockly verwirklicht. Das Design ähnelt dem von MIT eingeführten Scratch und weist eine echte Nullschwelle auf (siehe unten).
img
Abbildung 3-32

In der visuellen Programmieroberfläche von Inventor Quant sind Hunderte häufig verwendeter Handelsmodule integriert. In Zukunft werden weitere Handelsmodule hinzugefügt, um neue Ideen und neue Anwendungen der Händler zu unterstützen. Diese werden von Entwicklern gemeinsam entwickelt und gepflegt.

Obwohl die Syntax einfach ist, wird die Leistung dadurch nicht beeinträchtigt. Es kann nahezu mit der Entwicklung der meisten einfachen quantitativen Handelsstrategien mithalten. In puncto Funktionalität und Geschwindigkeit steht es herkömmlichen Programmiersprachen wie Python und JavaScript in nichts nach. Es wird künftig logisch komplexe Finanz-Anwendungen unterstützen.

Anwendung

img
Abbildung 3-33

Schreiben Sie ein „Hallo Welt“-Programm

img
Abbildung 3-34

Ausführen und Drucken von „Hallo Welt“

img
Abbildung 3-35

Zusammenfassen

Oben haben wir mit einer vollständigen Visualisierungsstrategie begonnen, dann die Einführung und Merkmale der Visualisierungssprache vorgestellt und schließlich die Verwendung der Visualisierungssprache im Inventor Quant-Tool vorgestellt und ein „Hallo Welt“-Beispiel geschrieben. Wir müssen jedoch alle daran erinnern, dass visuelle Programmierung als Einstieg in den quantitativen Handel ein guter Ausgangspunkt ist, derzeit jedoch nur begrenzte API-Schnittstellen für das Inventor Quantitative Tool verfügbar sind. Für den quantitativen Handel ist es am besten, es als Hilfstool zu verwenden, das Ihnen hilft, die Logik der Strategie zu verstehen.

Vorschau des nächsten Abschnitts

Es gibt keinen Unterschied zwischen den Grundlagen der visuellen Programmierung und denen höherer Programmiersprachen, und einige Aspekte sind sogar universell. Wenn Sie die visuelle Programmierung beherrschen, sind Sie dem Erlernen höherer Programmierung einen Schritt näher. Im nächsten Abschnitt werden wir uns mit dem fortgeschrittenen Lernen der visuellen Programmierung befassen, einschließlich der Verwendung visueller Sprache zum Schreiben häufig verwendeter quantitativer Handelsmodule im Inventor Quantitative Tool und der Entwicklung einer vollständigen Intraday-Handelsstrategie.

Hausaufgaben

  1. Verwenden Sie in der visuellen Programmierschnittstelle von Inventor Quant die API und verstehen Sie, was sie bedeuten.
  2. Verwenden Sie visuelle Sprache, um den neuesten Eröffnungspreis zu ermitteln und ihn im Protokoll auszugeben.

3.5 So implementieren Sie Strategien mit visueller Sprache

Zusammenfassung

Im vorherigen Artikel haben wir die Einführung und Funktionen der visuellen Programmiersprache, das „Hallo Welt“-Beispiel und das Schreiben von Strategien im quantitativen Handelstool des Erfinders kennengelernt und die Voraussetzungen für die Implementierung von Handelsstrategien erläutert. In diesem Artikel werden wir den vorherigen Artikel fortsetzen und mit den häufig verwendeten Strategiemodulen und technischen Indikatoren beginnen und dann zur Strategielogik übergehen, um jedem zu helfen, Schritt für Schritt eine vollständige Intraday-Handelsstrategie zu realisieren.

Richtlinienmodul

Phasenanstieg

Die Stufenerhöhung wird durch Berechnung des Prozentsatzes der Differenz zwischen dem Schlusskurs der aktuellen K-Linie und dem Schlusskurs der vorherigen N-Perioden berechnet. Um beispielsweise den Anstieg der letzten 10 K-Linien-Perioden zu berechnen, kann der Code wie folgt geschrieben werden:
img
Abbildung 3-36

Aus dem obigen Code können wir erkennen, dass die Art und Weise, wie der Computer dies ausführt, eine vollständige logische Schleife erfordert. Um beispielsweise die Wachstumsrate der letzten 10 K-Linienperioden zu berechnen, muss sie in die folgenden Schritte unterteilt werden:
Zunächst muss der Computer genau wissen, welches Produkt Sie handeln möchten. Im obigen Beispiel handelt es sich beispielsweise um Methanol. Setzen Sie daher den Vertragscode auf: „MA888“. Nachdem Sie den Vertragscode festgelegt haben, können Sie die K-Line-Daten des Vertrags abrufen.

Mit den K-Line-Daten können Sie die Detaildaten jeder beliebigen K-Line aus diesen K-Line-Daten abrufen.
Um den periodischen Anstieg zu berechnen, müssen Sie zunächst die Schlusskurse von zwei K-Linien ermitteln, zum Beispiel: den Schlusskurs der vorherigen K-Linie und den Schlusskurs der 11. K-Linie davor.

Berechnen Sie schließlich auf der Grundlage der Schlusskurse dieser beiden K-Linien das Stufenerhöhungsverhältnis. Jede der folgenden Strategien weist die Merkmale solcher Logikschleifen und bedingter Attribute auf. Sobald Sie diese Logik verstanden haben, wird die visuelle Programmierung viel einfacher.

Großes Volumen nach oben

Ein großvolumiger Aufwärtsangriff kann als steigende Preise und ein starker Anstieg des Handelsvolumens verstanden werden. Beispiel: Wenn der Schlusskurs einer K-Linie das 1,5-fache des Schlusskurses der vorherigen 10 K-Linien beträgt, bedeutet dies, dass er in 10 Tagen um 50% gestiegen ist; das Handelsvolumen übersteigt das 5-fache des Durchschnitts der letzten 10 K-Linien. Es kann wie folgt codiert werden:
img
Abbildung 3-37

Lücke

Eine Lücke ist eine Situation, in der die höchsten und niedrigsten Preise zweier K-Linien nicht verbunden sind. Sie besteht aus zwei K-Linien. Die Lücke ist ein Referenzpreis für zukünftige Unterstützungs- und Druckpunkte. Beim Auftreten einer Kurslücke kann davon ausgegangen werden, dass eine Trendbeschleunigung in Richtung der ursprünglichen Lücke eingesetzt hat. Dies kann in Code geschrieben werden:
img
Abbildung 3-38

Allgemeine technische Indikatoren

EMA gleitender Durchschnitt

Statistisch gesehen ist der gleitende Durchschnitt der arithmetische Durchschnitt der Tagespreise und stellt eine Preisentwicklung mit Trend dar. Das gleitende Durchschnittssystem ist ein technisches Instrument, das von den meisten Analysten häufig verwendet wird. Aus technischer Sicht ist es ein Faktor, der den psychologischen Preis technischer Analysten und den Entscheidungsfaktor beim Kaufen und Verkaufen beeinflusst. Es ist ein gutes Referenzinstrument für technische Analysten. Das quantitative Instrument des Erfinders unterstützt viele verschiedene Arten von gleitenden Durchschnitten, wie in der folgenden Abbildung dargestellt:
img
Abbildung 3-39

MACD-Indikatoren

Der MACD-Indikator verwendet schnelle (kurzfristige) und langsame (langfristige) gleitende Durchschnitte und ihre Konvergenz- und Trennungszeichen und führt eine doppelte Glättungsoperation durch. Der MACD, der auf der Grundlage des Prinzips des gleitenden Durchschnitts entwickelt wurde, hat den Defekt des gleitenden Durchschnitts, der häufig falsche Signale aussendet, beseitigt und die Wirkung des gleitenden Durchschnitts beibehalten. Daher weist der MACD-Indikator die Eigenschaften des gleitenden Durchschnittstrends, der Stabilität und der Stabilität auf. Es handelt sich um einen technischen Analyseindikator, der verwendet wird, um den Zeitpunkt des Kaufs und Verkaufs von Aktien zu beurteilen und den Anstieg und Fall der Aktienkurse vorherzusagen. Die Berechnungsmethode ist wie folgt:
img
Abbildung 3-40

KDJ-Indikator

Der KDJ-Indikator kombiniert die Vorteile des Momentum-Konzepts, der Stärke- und Schwächeindikatoren sowie des gleitenden Durchschnitts und wird verwendet, um den Grad der Abweichung der Aktienkurse vom normalen Preisbereich zu messen. Es wird nicht nur der Schlusskurs berücksichtigt, sondern auch die jüngsten Höchst- und Tiefstkurse. Dadurch wird der Nachteil vermieden, der entsteht, wenn nur der Schlusskurs berücksichtigt wird und die wahre Volatilität außer Acht gelassen wird. Die Berechnungsmethode ist wie folgt:
img
Abbildung 3-41

Strategie schreiben

Warren Buffetts Mentor Benjamin Graham erwähnte in seinem Buch „Der intelligente Investor“ einmal ein Handelsmodell mit dynamischem Gleichgewicht zwischen Aktien und Anleihen.

Dieses Handelsmodell ist sehr einfach:
Investieren Sie 50 % Ihres Geldes in Aktienfonds und die restlichen 50 % in Anleihenfonds. Das heißt, Aktien und Anleihen machen jeweils die Hälfte aus.

Passen Sie die Vermögenswerte in festgelegten Abständen oder auf der Grundlage von Marktveränderungen an, um das Verhältnis von Aktienvermögen zu Anleihevermögen auf das ursprüngliche Verhältnis von 1:1 zurückzusetzen. Dies ist die gesamte Logik der Strategie, einschließlich der Frage, wann gekauft und verkauft werden soll und wie viel gekauft und verkauft werden soll. Ganz einfach!

Bei dieser Methode ist die Volatilität von Anleihefonds tatsächlich sehr gering, viel niedriger als die Volatilität von Aktien, so dass Anleihen hier als „Referenzanker“ verwendet werden, d. h. Anleihen werden verwendet, um zu messen, ob die Aktien zu stark gestiegen sind. Es ist immer noch zu wenig Anstieg.

Wenn der Aktienkurs steigt, ist der Marktwert der Aktie höher als der Marktwert der Anleihe. Wenn das Marktwertverhältnis der beiden den festgelegten Schwellenwert überschreitet, wird die Gesamtposition neu angepasst, die Aktie wird verkauft und Die Anleihe wird gekauft, um das Marktwertverhältnis zwischen Aktien und Anleihen wiederherzustellen und den ursprünglichen Wert von 1:1 zu erreichen.

Im Gegenteil, wenn der Aktienkurs fällt, ist der Marktwert der Aktie geringer als der Marktwert der Anleihe. Wenn das Marktwertverhältnis der beiden den festgelegten Schwellenwert überschreitet, wird die Gesamtposition neu angepasst, um Aktien zu kaufen und Verkaufen Sie Anleihen, um das Marktwertverhältnis zwischen Aktien und Anleihen wieder auf den ursprünglichen Wert von 1:1 zu bringen.

In diesem Fall genießen wir die Früchte des Aktienwachstums und reduzieren die Volatilität der Vermögenswerte in einem dynamisch ausgeglichenen Verhältnis zwischen Aktien und Anleihen.

Strategielogik

Entsprechend dem aktuellen Wert von BTC beträgt der Kontostand 5.000 ¥ in bar und 0,1 BTC, das heißt, das anfängliche Verhältnis von Bargeld zum BTC-Marktwert beträgt 1:1.

Wenn der Preis von BTC auf 6000 ¥ steigt, das heißt, der Marktwert von BTC höher ist als der Kontostand und die Differenz zwischen beiden den festgelegten Schwellenwert überschreitet, werden (6000-5000)/6000/2 Münzen verkauft. Dies bedeutet, dass BTC an Wert gewonnen hat und das Geld zurückgetauscht werden kann.

Wenn der Preis von BTC auf ¥4000 fällt, das heißt, der Marktwert von BTC geringer ist als der Kontostand und die Differenz zwischen beiden den festgelegten Schwellenwert überschreitet, dann kaufen Sie (5000-4000)/4000/2 Münzen. Dies bedeutet, dass BTC an Wert verloren hat. Kaufen Sie BTC also zurück.

Auf diese Weise bleiben der Kontostand und der Marktwert von BTC immer gleich, unabhängig davon, ob BTC im Wert steigt oder fällt. Wenn der Wert von BTC sinkt, kaufen Sie einen Teil, und wenn der Wert wieder steigt, verkaufen Sie einen Teil, genau wie bei einem Guthaben.

Einkaufsbedingungen: Wenn der Marktwert der aktuellen Position abzüglich des aktuell verfügbaren Saldos weniger als 5 % des negativen aktuell verfügbaren Saldos beträgt, eröffnen Sie eine Kaufposition.
Verkaufsbedingungen: Wenn der Marktwert der aktuellen Position abzüglich des aktuell verfügbaren Guthabens größer als 5 % des aktuell verfügbaren Guthabens ist, schließen Sie die Position und verkaufen Sie.

Voraussetzungen

  • Aktueller Markt
  • Umlaufvermögen
  • Gesamtmarktwert der Münzen
  • Vermögensdifferenz

Strategie aufbauen

Visuelle Authoring-Strategie – Schritt 1

Wir berechnen die vier Voraussetzungen der Handelsstrategie und ordnen sie den jeweiligen Variablen zu. Bei der visuellen Programmierung sehen Codeblöcke so aus. Wie unten gezeigt
img
Abbildung 3-42

Es ist zu beachten, dass der Gesamtmarktwert der Währung dem Gesamtmarktwert der aktuell gehaltenen Anzahl von Münzen entspricht und seine Berechnungsmethode darin besteht, die aktuelle Gesamtzahl der gehaltenen Münzen mit dem aktuell neuesten Preis zu multiplizieren. Die Vermögensdifferenz errechnet sich aus dem gesamten Marktwert der Währung abzüglich des aktuell verfügbaren Guthabens.

Visuelle Authoring-Strategie – Schritt 2

Nachdem die Voraussetzungen und notwendigen Bedingungen zugewiesen sind, müssen Sie die Transaktionslogik schreiben. Das ist nicht so kompliziert, wie Sie vielleicht denken. Es handelt sich lediglich um das Ausdrücken der oben genannten Strategielogik in Form von Codeblöcken.

Das heißt: Wenn die Vermögensdifferenz weniger als 5 % des negativen verfügbaren Saldos beträgt, kaufen Sie; wenn die Vermögensdifferenz mehr als 5 % des verfügbaren Saldos beträgt, verkaufen Sie. Wie unten gezeigt:
img
Abbildung 3-43

Die gesamte Strategie scheint geschrieben zu sein, aber Sie müssen wissen, dass das Programm von oben nach unten ausgeführt wird und nach der Ausführung stoppt. Unsere Handelsstrategie besteht allerdings nicht darin, die Handelsbedingungen einmal auszuführen, sondern sie immer wieder auszuführen.

Mit anderen Worten: Das Programm muss ständig prüfen, ob die Bedingungen der Strategie erfüllt sind. Wenn ja, führen Sie den Kauf oder Verkauf aus, andernfalls prüfen Sie weiter. Zu diesem Zeitpunkt müssen Sie eine andere Schleifenanweisung verwenden, wie unten gezeigt:
img
Abbildung 3-44

Strategie-Backtesting

Es gibt keinen wesentlichen Unterschied zwischen Visualisierungsstrategien und Strategien, die in anderen Programmiersprachen geschrieben sind. Sie unterstützen auch das Testen historischer Daten mit mehreren Zeiträumen und Genauigkeitsstufen. Natürlich unterstützen sie auch den Echtzeithandel mit inländischen und ausländischen Rohstofftermingeschäften und digitalen Währungen. Nachfolgend finden Sie die Backtest-Informationen zur Strategie:
img
Abbildung 3-45

An diesem Punkt ist eine vollständige Handelsstrategie abgeschlossen. Um uns vor denen zu schützen, die uns ausnutzen wollen, wurde diese Strategie im Strategieplatz geteilt und kann direkt kopiert und studiert werden.

Abschluss

Die 10.000-Stunden-Regel gilt zwar immer, doch für Trader ohne Grundkenntnisse ist es unmöglich, 10.000 Stunden aufzuwenden, um wieder in die Branche einzusteigen. Sie müssen also über eine Leiter verfügen, und für Händler ohne Programmierkenntnisse ist die visuelle Programmierung von Inventor Quant eine Leiter für den schnellen Einstieg.

Bei der visuellen Programmierung müssen Sie sich weder Syntax noch Methodennamen merken, sondern können einfach die Funktionsmodule durchsuchen und finden, was Sie suchen. Dies ist auch die ursprüngliche Absicht des Erfinders des Quantitativen, nämlich mehr quantitativen Anfängern zu helfen, die Einstiegsschwelle zu senken und ihr Interesse am quantitativen Handel zu steigern, damit jeder ein quantitativer Händler werden kann!

Allerdings ist die visuelle Programmierung als Sprungbrett zum quantitativen Lernen absolut unproblematisch, weist jedoch auch ihre Grenzen auf, wie etwa die Unfähigkeit, übermäßig komplexe und anspruchsvolle Handelsstrategien zu entwickeln. Ihre ersten Schritte im quantitativen Handel werden hierdurch jedoch nicht beeinträchtigt!

Vorschau des nächsten Abschnitts

Aus der Perspektive der Professionalität des quantitativen Handels sind sowohl die Mai-Sprache als auch die visuelle Sprache lediglich Übergangssprachen für den Einstieg in die Welt des quantitativen Handels. Ihre sprachlichen Besonderheiten führen dazu, dass sie bei der Entwicklung quantitativer Handelsstrategien eingeschränkt sind und einige komplexe Strategien wahrscheinlich nicht umgesetzt werden können. Im nächsten Abschnitt bringen wir Ihnen JavaScript bei, eine formale Programmiersprache auf höherer Ebene und für Sie die einzige Möglichkeit, in den fortgeschrittenen quantitativen Handel einzusteigen.

Hausaufgaben

  1. Versuchen Sie, den Bollinger-Band-Indikator mithilfe einer visuellen Sprache zu implementieren.
  2. Versuchen Sie, das Handelsmodul in diesem Abschnitt zu verwenden, um eine Handelsstrategie zu vervollständigen.

Kapitel 4: Implementierung von Handelsstrategien in gängigen Programmiersprachen

4.1 Kurzeinführung in die JavaScript-Sprache

Zusammenfassung

Als zukünftiger Star des quantitativen Handels ist es für Sie unmöglich, nur eine einfache Sprache zu lernen. Obwohl die Mai-Sprache und die Visualisierungssprache der quantitativen Tools des Erfinders Ihnen den Einstieg erleichtern, unterliegen sie aufgrund ihrer Sprachmerkmale zahlreichen Einschränkungen bei der Strategieentwicklung. Wenn Sie im quantitativen Handel Fuß fassen möchten, müssen Sie daher eine formale Programmiersprache erlernen.

Warum JavaScript lernen?

Im Vergleich zu visuellen Sprachen weist JavaScript eine höhere Leistung und Ausführungseffizienz auf. Und was die Strategieentwicklung angeht, ist JavaScript viel flexibler als visuelle Sprachen. Wenn Sie beispielsweise eine Arbitrage-Strategie entwickeln möchten, können Sie keine visuelle Sprache verwenden, da diese nur über begrenzte Module verfügt und keine Arbitrage-ähnlichen Strategien unterstützt. JavaScript hingegen kann diese Aufgabe problemlos erledigen.

Darüber hinaus ist JavaScript prägnanter und eleganter als visuelle Sprachen. Beispielsweise können 10 Codezeilen in einer visuellen Sprache in 5 Zeilen in JavaScript geschrieben werden. In gewisser Weise ist die visuelle Sprache lediglich eine Textversion von JavaScript und die Ausführung und Logik ihres Codes sind fast identisch mit denen von JavaScript. Wenn Sie eine visuelle Sprache lernen, wird Ihnen das Erlernen von JavaScript sehr leicht fallen.

Einführung in JavaScript

JavaScript ist eine formale Programmiersprache auf höherer Ebene. Sie eignet sich als Einstiegssprache zum Erlernen des Programmierens und auch als Arbeitssprache für die tägliche Entwicklung. Es ist derzeit eine der vielversprechendsten und aussichtsreichsten Computersprachen und hat auf der Browserseite immer noch eine unerschütterliche beherrschende Stellung. Obwohl es für die Entwicklung von Webseiten bekannt ist, wird es auch in vielen Nicht-Browser-Umgebungen verwendet, wie z. B. auf Servern, PCs, Mobilgeräten usw. Natürlich kann es auch quantitativen Handel betreiben!

Komplette Strategie

Damit Sie die wichtigsten Kenntnisse dieses Abschnitts schnell erfassen können, sollten Sie sich vor der Einführung in die quantisierte JavaScript-Sprache des Erfinders zunächst ein grundlegendes Verständnis der Konzepte in diesem Abschnitt aneignen. Betrachten wir als Beispiel die einfachste Strategie mit doppeltem gleitendem Durchschnitt:

Eröffnung einer Long-Position: Wenn keine aktuelle Position vorhanden ist und der gleitende Durchschnitt der 5 Perioden größer ist als der gleitende Durchschnitt der 20 Perioden.
Eröffnen Sie eine Short-Position: Wenn keine aktuelle Position vorhanden ist und der gleitende Durchschnitt der 5 Perioden kleiner ist als der gleitende Durchschnitt der 20 Perioden.
Schließen einer Long-Position: Wenn Sie derzeit eine Long-Position halten und der gleitende Durchschnitt der 5-Perioden niedriger ist als der gleitende Durchschnitt der 20-Perioden.
Schließen von Short-Positionen: Wenn Sie derzeit eine Short-Position halten und der gleitende Durchschnitt der 5-Perioden größer ist als der gleitende Durchschnitt der 20-Perioden.

In JavaScript geschrieben würde es folgendermaßen aussehen:
img
Abbildung 4-1

Der Code in der obigen Abbildung ist eine vollständige quantitative Handelsstrategie, die in JavaScript geschrieben ist. Es kann in Echtzeit ausgeführt werden und automatisch Bestellungen aufgeben. In Bezug auf die Codemenge ist diese Sprache einfacher als die visuelle Sprache. Der Entwurfsprozess der gesamten Strategie besteht aus: Festlegen von Markttypen, Erhalten von K-Line-Daten, Erhalten von Positionsinformationen, Berechnen der Transaktionslogik und Platzieren von Kauf- und Verkaufsaufträgen.

Kennzeichen

In JavaScript muss bei allem (Variablen, Funktionsnamen und Operatoren) die Groß-/Kleinschreibung beachtet werden. Dies bedeutet, dass der Variablenname „Test“ und der Variablenname „Test“ zwei unterschiedliche Variablen sind. Das erste Zeichen eines Bezeichners (Name einer Variablen, Funktion, Eigenschaft, Funktionsparameter) muss ein Buchstabe, ein Unterstrich (_), das Dollarzeichen ($) und die folgenden Zeichen können auch Zahlen sein, wie in der folgenden Abbildung gezeigt:
img
Abbildung 4-2

Anmerkungen

Zu den Kommentaren zählen einzeilige Kommentare und Kommentare auf Blockebene. Einzeilige Kommentare beginnen mit zwei Schrägstrichen und Blockkommentare beginnen mit einem Schrägstrich und einem Sternchen (/) und endet mit einem Sternchen und einem Schrägstrich (/) wie unten gezeigt:
img
Abbildung 4-3

Stellungnahmen

Jede Anweisung endet mit einem Semikolon. Obwohl es nicht erforderlich ist, empfehlen wir, es nie wegzulassen. Das Hinzufügen von Semikolons kann in einigen Fällen die Codeleistung verbessern, wie in der folgenden Abbildung gezeigt:
img
Abbildung 4-4

Variable

Variablen können beliebige Datentypen speichern. Um eine Variable zu erstellen, verwenden Sie den var-Operator, gefolgt vom Variablennamen. Beim Definieren einer Variablen können Sie auch deren Wert festlegen. Sobald eine Variable erstellt wurde, müssen Sie den var-Operator nicht mehr verwenden, um den Wert der Variablen erneut festzulegen, wie unten gezeigt:
img
Abbildung 4-5

Daten

JavaScript hat insgesamt 5 Datentypen, nämlich: Undefiniert, Null, Boolesch, Zahl und Zeichenfolge, wie in der folgenden Abbildung dargestellt:
img
Abbildung 4-6

Undefined hat nur einen Wert, das spezielle „undefined“, das einen Wert darstellt, der noch nicht festgelegt wurde. Wenn wir beispielsweise nur eine Variable definieren und keinen Wert dafür festlegen, ist der Wert der Variable „undefiniert“.

Null hat nur einen Wert, das spezielle „Null“, das einen Wert darstellt, der auf leer gesetzt ist. Wenn wir beispielsweise zuerst eine Variable erstellen und dann den Wert der Variablen auf „null“ setzen, ist der von der Variablen zurückgegebene Wert „null“.

Boolean hat zwei Werte: „true“ und „false“. „true“ steht für wahr und „false“ für falsch. Beachten Sie, dass sowohl „true“ als auch „false“ klein geschrieben sind.

Zahl ist der Zahlentyp, einschließlich: positive Zahlen, negative Zahlen, ganze Zahlen, Dezimalzahlen usw. Darüber hinaus ist „NaN“ auch eine spezielle Zahl, die speziell die Situation anzeigt, in der kein Wert zurückgegeben wird, zum Beispiel: 1 geteilt durch 0 gibt „NaN“ zurück.

Sie können Zeichenfolgen als Text verstehen, einschließlich Chinesisch und Englisch, und Sie können eine Zeichenfolge mit einfachen oder doppelten Anführungszeichen erstellen. Beispielsweise: „fmz“ oder „Erfinderquantisierung“.

Gegenstand

Sie können sich ein Objekt als einen Container zur Speicherung verschiedener Daten vorstellen, in dem die Attribute und Werte einander entsprechen. Sie können diesen Container zunächst über den neuen Operator erstellen. Sie können dem erstellten Objekt auch Eigenschaften und Methoden hinzufügen, wie in der folgenden Abbildung gezeigt:
img
Abbildung 4-7

Gruppe

Ein Array ist ebenfalls ein Container zum Speichern verschiedener Daten, allerdings sind die Elemente im Container von links nach rechts angeordnet. Das erste Element ist 0, das zweite Element ist 1 und so weiter. Darüber hinaus können JavaScript-Arrays beliebige Datentypen speichern, wie unten gezeigt:
img
Abbildung 4-8

Funktion

Funktionen in JavaScript sind im Wesentlichen dieselben wie die Funktionen, die wir in der Mittelschule gelernt haben. Sie können es sich so vorstellen, als ob die Funktion etwas übergibt und etwas ausgibt, wie in der folgenden Abbildung dargestellt:
img
Abbildung 4-9

Operator

JavaScript verfügt über verschiedene Operatoren, nämlich arithmetische Operatoren, Vergleichsoperatoren und logische Operatoren. Darunter sind arithmetische Operatoren mathematische Operationen der Addition, Subtraktion, Multiplikation und Division. Vergleichsoperatoren können vergleichen, ob zwei Werte kleiner oder kleiner sind. Die wichtigsten logischen Operatoren sind: logisches UND, logisches ODER und logisches NICHT. Wie in der folgenden Abbildung dargestellt:
img
Abbildung 4-10
Dabei ist zu beachten: „&&“ ist ein logisches UND, also „und“. „||“ ist ein logisches ODER, was „oder“ bedeutet. "!" ist eine logische Negation, die "nein" bedeutet:
„&&“ bedeutet, dass die letzte Bedingung „wahr“ ist, wenn alle Bedingungen „wahr“ sind.
„||“ bedeutet, dass die letzte Bedingung „wahr“ ist, sofern eine der Bedingungen „wahr“ ist.

Prioritäten

Wenn es eine 100 gibt*Welchen Schritt berechnet das Programm zuerst für den Ausdruck (10-1)/(10+5)? Aus der Mittelschulmathematik wissen wir: ① Handelt es sich um eine Operation auf gleicher Ebene, wird grundsätzlich von links nach rechts gerechnet. ② Wenn sowohl Addition und Subtraktion als auch Multiplikation und Division vorliegen, berechnen Sie zuerst die Multiplikation und Division, dann die Addition und Subtraktion. ③Wenn Klammern vorhanden sind, berechnen Sie zuerst den Inhalt der Klammern. ④ Wenn es den Betriebsgesetzen entspricht, können die Betriebsgesetze zur Vereinfachung der Berechnung verwendet werden. Dasselbe gilt für die Priorität der Sprache JavaScript, wie unten gezeigt:
img
Abbildung 4-11

Bedingte Anweisungen

Beim Schreiben von Code müssen Sie für unterschiedliche Entscheidungen häufig unterschiedliche Aktionen ausführen. Sie können in Ihrem Code bedingte Anweisungen verwenden, um diese Aufgabe auszuführen. In JavaScript können wir die folgenden bedingten Anweisungen verwenden:
if-Anweisung - Verwenden Sie diese Anweisung, um Code nur auszuführen, wenn eine angegebene Bedingung erfüllt ist
if...else-Anweisung - führt Code aus, wenn eine Bedingung erfüllt ist, und führt anderen Code aus, wenn die Bedingung falsch ist.
if...else if....else-Anweisung - Verwenden Sie diese Anweisung, um einen von mehreren Codeblöcken zur Ausführung auszuwählen.
switch-Anweisung - Verwenden Sie diese Anweisung, um einen von mehreren Codeblöcken zur Ausführung auszuwählen

If-Anweisung

Diese Anweisung führt Code nur aus, wenn eine angegebene Bedingung erfüllt ist. Bitte verwenden Sie Kleinbuchstaben, wenn. Die Verwendung von Großbuchstaben (IF) erzeugt einen JavaScript-Fehler! Wie in der folgenden Abbildung dargestellt:
img
Abbildung 4-12#

if...else-Anweisung

Wenn die Bedingung erfüllt ist, wird der Code ausgeführt, und wenn die Bedingung falsch ist, wird anderer Code ausgeführt, wie in der folgenden Abbildung dargestellt:
img
Abbildung 4-13

for-Schleife

Manchmal müssen wir die K-Line-Daten der letzten Tage abrufen und sie entsprechend der Position der K-Line-Daten nacheinander aus dem K-Line-Array abrufen. Dann ist es sehr praktisch, eine for-Schleife zu verwenden, wie in der folgenden Abbildung dargestellt:
img
Abbildung 4-14

While-Schleife

Wir alle wissen, dass sich der Markt ständig ändert. Wenn Sie das neueste K-Line-Array erhalten möchten, müssen Sie denselben Code immer wieder ausführen. Verwenden Sie dann die whilex-Schleife. Solange die angegebene Bedingung erfüllt ist, kann die Schleife immer das neueste K-Line-Array abrufen.
img
Abbildung 4-15

break-Anweisung und continue-Anweisung

Die Schleife hat eine Vorbedingung. Nur wenn die Vorbedingung „wahr“ ist, beginnt die Schleife, etwas wiederholt auszuführen, und die Schleife endet erst, wenn die Vorbedingung „falsch“ ist. Allerdings kann die break-Anweisung während der Ausführung der Schleife sofort aus der Schleife herausspringen, während die continue-Anweisung eine bestimmte Schleife unterbrechen und dann mit der nächsten Schleife fortfahren kann. Wie in der folgenden Abbildung dargestellt:
img
Abbildung 4-16

return-Anweisung

Die return-Anweisung beendet die Ausführung einer Funktion und gibt den Wert der Funktion zurück. Die return-Anweisung kann nur im Funktionskörper vorkommen. Wenn sie an einer anderen Stelle im Code vorkommt, führt dies zu einem Syntaxfehler!
img
Abbildung 4-17

CTA-Strategierahmen

Im Inventor Quantitative Tool ist es sehr praktisch, Strategien in JavaScript zu schreiben. Das offizielle Tool hat eine Reihe von Standardstrategie-Frameworks integriert, wie in der folgenden Abbildung dargestellt:
img
Abbildung 4-18

Wie im obigen Code gezeigt, handelt es sich hierbei um ein Standardstrategie-Framework. Mit Ausnahme des „Produktcodes für Rohstoff-Futures“, der geändert werden kann, liegt alles andere in einem festen Format vor. Der größte Vorteil bei der Verwendung des Frameworks zum Schreiben von Strategien besteht darin, dass Sie nur die Strategielogik schreiben müssen. Andere Aspekte wie Marktakquise, Auftragsabwicklung usw. werden alle vom Framework behandelt. So können Sie sich auf die Strategieentwicklung konzentrieren.

Zusammenfassen

Das Obige ist eine kurze Einführung in die JavaScript-Sprache. Nachdem Sie diese gelernt haben, können Sie quantitative Handelsstrategien programmieren. Wenn Sie komplexere Strategien schreiben müssen, können Sie die API-Dokumentation der JavaScript-Sprache des Inventor Quantitative Tool zu Rate ziehen.

Vorschau des nächsten Abschnitts

Auch Daytrading ist ein Handelsmodell. Bei dieser Methode werden Positionen nicht über Nacht gehalten, daher ist das Risiko von Marktvolatilität geringer. Sobald ungünstige Marktbedingungen eintreten, können rechtzeitig Anpassungen vorgenommen werden. Nachdem Sie in diesem Abschnitt die JavaScript-Sprache gelernt haben, zeigen wir Ihnen im nächsten Abschnitt, wie Sie eine durchführbare quantitative Intraday-Handelsstrategie schreiben.

Hausaufgaben

  1. Versuchen Sie, die JavaScript-Sprache im Inventor Quantitative Tool zu verwenden, um historische K-Line-Daten zu erhalten.
  2. Versuchen Sie, den Strategiecode am Anfang dieses Abschnitts aufzuschreiben und Kommentare hinzuzufügen.

4.2 So implementieren Sie Strategiehandel mit der Sprache JavaScript

Zusammenfassung

Im vorherigen Artikel haben wir die Voraussetzungen für die Umsetzung von Handelsstrategien unter den Gesichtspunkten einer Einführung in die JavaScript-Sprache, der grundlegenden Syntax, des CTA-Strategierahmens usw. erläutert. In diesem Artikel werden wir den Inhalt des vorherigen Artikels fortsetzen und Ihnen dabei helfen, Schritt für Schritt eine durchführbare quantitative Intraday-Handelsstrategie aus den häufig verwendeten Strategiemodulen und technischen Indikatoren umzusetzen.

Strategieeinführung

Bollinger Bands werden auch Bollinger Channels genannt, im Englischen mit BOLL abgekürzt. Es ist einer der am häufigsten verwendeten technischen Indikatoren und wurde in den 1980er Jahren von John Bollinger erfunden. Theoretisch schwanken die Preise immer innerhalb eines bestimmten Bereichs um den Wert. Basierend auf dieser theoretischen Grundlage führten Bollinger Bands das Konzept des „Preiskanals“ ein.

Die Berechnungsmethode besteht darin, anhand statistischer Prinzipien zunächst die „Standardabweichung“ des Preises über einen bestimmten Zeitraum zu berechnen und dann das „Vertrauensintervall“ des Preises zu ermitteln, indem man die Standardabweichung des gleitenden Durchschnitts um das Zweifache addiert/abzieht. Seine Grundform ist ein aus drei Spurlinien (Mittelspur, Oberspur und Unterspur) bestehender Streifenkanal. Die mittlere Spur stellt die durchschnittlichen Kosten des Preises dar, und die oberen und unteren Spuren stellen die Drucklinie bzw. die Unterstützungslinie des Preises dar.

Durch die Übernahme des Konzepts der Standardabweichung wird die Breite des Bollinger-Bandes dynamisch an die jüngsten Preisschwankungen angepasst. Bei geringer Volatilität werden die Bollinger-Bänder schmaler, bei hoher Volatilität werden die Bollinger-Bänder breiter. Wenn der BOLL-Kanal schmaler wird, bedeutet dies, dass der Preis allmählich zum Mittelwert zurückkehrt. Wenn sich der BOLL-Kanal von schmal zu breit ändert, bedeutet dies, dass sich der Markt zu ändern beginnt. Wenn der Preis die obere Spur kreuzt, deutet dies darauf hin, dass die Kaufkraft gestiegen ist. Wenn der Preis die untere Spur kreuzt, deutet dies darauf hin, dass die Verkaufskraft gestiegen ist.

Berechnungsmethode für den Bollinger Bands-Indikator

Unter allen technischen Indikatoren ist die Berechnungsmethode der Bollinger-Bänder eine der kompliziertesten. Sie führt das Konzept der Standardabweichung in die Statistik ein und beinhaltet die Berechnung der mittleren Linie (MB), der oberen Linie (UP) und der unteren Linie (DN). Die Berechnungsmethode ist wie folgt:

Mittelspur = Einfacher gleitender Durchschnitt über N Zeiträume
Obere Schiene = Mittlerer Track + K × Standardabweichung von N Zeiträumen
Untere Schiene = Mittlerer Track − Standardabweichung von K × N Zeiträumen
img
Abbildung 4-19

Strategielogik

Es gibt viele Möglichkeiten, Bollinger-Bänder zu verwenden. Sie können allein oder in Kombination mit anderen Indikatoren verwendet werden. In diesem Tutorial verwenden wir die einfachste Methode zur Verwendung von Bollinger-Bändern. Das heißt: Wenn der Preis die obere Spur von unten nach oben durchbricht, d. h. die obere Drucklinie durchbricht, glauben wir, dass die bullische Kraft stärker wird, sich eine Welle steigender Märkte gebildet hat und ein Kauf-Eröffnungssignal generiert wird; wenn der Preis unter die untere Spur von oben nach unten fällt, d. h. unter die Unterstützungslinie fällt, glauben wir, dass die bärische Kraft stärker wird, sich eine Welle fallender Tendenz gebildet hat und ein Verkaufs-Eröffnungssignal generiert wird.
img
Abbildung 4-20

Wenn der Preis nach dem Öffnen einer Kaufposition wieder auf die mittlere Spur der Bollinger-Bänder fällt, gehen wir davon aus, dass die bullische Kraft nachlässt oder die bärische Kraft zunimmt, und es wird ein Verkaufs-/Schlusssignal generiert. Wenn der Preis nach dem Öffnen einer Verkaufsposition wieder auf die mittlere Spur der Bollinger-Bänder steigt, gehen wir davon aus, dass die bärische Kraft nachlässt oder die bullische Kraft zunimmt, und es wird ein Kauf-/Schlusssignal generiert.

Handelsbedingungen

Eröffnung einer Long-Position:Wenn keine Position vorhanden ist und der Schlusskurs höher als der obere Kurs ist und die Zeit nicht 14:45 Uhr ist
Eröffnen Sie eine Short-Position:Wenn keine Position vorhanden ist und der Schlusskurs unter dem unteren Kurs liegt und die Zeit nicht 14:45 Uhr ist
Schließen einer Long-Position:Wenn Sie eine Long-Order halten und der Schlusskurs unter dem Mittelkurs liegt oder die Zeit 14:45 Uhr ist
Schließen von Short-Positionen:Wenn Sie eine Short-Order halten und der Schlusskurs höher als der Mittelkurs ist oder es 14:45 Uhr ist

Implementierung des Strategiecodes

Um eine Strategie umzusetzen, müssen wir zunächst überlegen, welche Daten wir benötigen. Über welche API kann ich es erhalten? Wie berechnet man dann die Transaktionslogik? Und schließlich: Welche Methoden werden für die Auftragserteilung und den Handel verwendet? Lassen Sie es uns als Nächstes Schritt für Schritt implementieren:

Schritt 1: Nutzen Sie das CTA-Strategie-Framework

Das sogenannte CTA-Strategie-Framework ist ein offiziell von Inventor Quantitative eingeführtes Standard-Framework. Mit diesem Framework müssen Sie sich nicht um die trivialen Probleme bei der Entwicklung quantitativer Handelsstrategien kümmern und können sich direkt auf die Programmierung der Handelslogik konzentrieren. Wenn Sie dieses Framework beispielsweise nicht verwenden, müssen Sie beim Aufgeben einer Bestellung die monatliche Übertragung, Kauf- und Verkaufspreise der Bestellung, die Stornierung der Bestellung oder die Nachverfolgung berücksichtigen, wenn die Bestellung nicht ausgeführt wird usw.
img
Abbildung 4-21

Das obige Bild zeigt den CTA-Strategierahmen unter Verwendung der quantitativen Tools des Erfinders. Dies ist ein festes Codeformat, und alle Transaktionslogikcodes werden ab Zeile 3 geschrieben. Während der Nutzung sind, bis auf die Sortenkennung (hellgelb), keine weiteren Änderungen erforderlich.

Es ist zu beachten, dass der Produktcode in der obigen Abbildung „rb000/rb888“ lautet, was bedeutet, dass die Signaldaten „rb000“ verwenden, die Transaktionsdaten „rb888“ verwenden und die Monatsverschiebung automatisch erfolgt. Natürlich können Sie auch einen bestimmten Produktcode angeben, beispielsweise den Produktcode „rb1910“, was bedeutet, dass sowohl Signaldaten als auch Transaktionsdaten „rb1910“ verwenden.

FMZ verfügt über eine integrierte JavaScript-Bibliothek für den Handel mit Rohstoff-Futures. Sie können diese in Ihrem Code verwenden, indem Sie einfach auf die Referenz in der Strategiebearbeitungsoberfläche klicken:
img

Schritt 2: Verschiedene Daten abrufen

Überlegen Sie genau, welche Daten Sie benötigen? Aus unserer Strategiehandelslogik haben wir Folgendes herausgefunden: Zuerst müssen wir den aktuellen Positionsstatus ermitteln, dann die Beziehung zwischen dem Schlusskurs und den oberen, mittleren und unteren Spuren des Bollinger-Band-Indikators vergleichen und schließlich feststellen, ob der Markt kurz vor der Schließung steht. Holen wir uns also diese Daten.

K-Streckendaten erhalten

Der erste Schritt besteht darin, das K-Linien-Array und den Schlusskurs der vorherigen K-Linie zu erhalten, da der Bollinger-Band-Indikator nur mit dem K-Linien-Array berechnet werden kann. So sieht es im Code aus:
img
Abbildung 4-22

Wie in der Abbildung oben gezeigt:
Zeile 4: Holen Sie sich das K-Line-Array, das ein festes Format hat.
Zeile 5: Filtern Sie die Länge der K-Linie, da der Parameter, den wir zur Berechnung des Bollinger-Band-Indikators verwenden, 20 ist. Wenn die K-Linie kleiner als 20 ist, kann der Bollinger-Band-Indikator nicht berechnet werden. Daher müssen wir hier die Länge der K-Linie filtern. Wenn es weniger als 20 K-Linien gibt, kehren wir direkt zurück und warten weiter auf die nächste K-Linie.
Zeile 6: Holen Sie sich aus dem erhaltenen K-Linien-Array zuerst das Objekt der vorherigen K-Linie und dann den Schlusskurs aus dem Objekt. Holen Sie sich das vorletzte Element eines Arrays, das der Länge des Arrays minus 2 entspricht (r[r.length - 2]); Die Elemente im K-Line-Array sind alle Objekte, die den Eröffnungskurs, den Höchstkurs, den Tiefstkurs, den Schlusskurs, das Handelsvolumen und die Zeit enthalten. Um den Schlusskurs zu erhalten, fügen Sie einfach "." und den Attributnamen am Ende hinzu (r[r.length - 2].Close)。

Holen Sie sich K-Line-Zeitdaten

Da wir eine Intraday-Strategie verwenden, müssen wir die Position schließen, bevor der Markt schließt. Daher müssen wir feststellen, ob die aktuelle K-Linie nahe am Marktschluss liegt. Wenn dies der Fall ist, schließen wir die Position. Wenn nicht, können wir die Position eröffnen. Der Code lautet wie folgt:
img
Abbildung 4-23

Wie in der Abbildung oben gezeigt:
Zeile 8: Holen Sie sich das Zeitstempelattribut der aktuellen K-Zeile und erstellen Sie dann ein Zeitobjekt (neues Datum (Zeitstempel)).
Zeile 9: Berechnen Sie die Stunden und Minuten basierend auf dem Zeitobjekt und bestimmen Sie, ob die Zeit der K-Linie 14:45 Uhr ist.

Positionsdaten abrufen

Positionsinformationen sind eine sehr wichtige Voraussetzung für quantitative Handelsstrategien. Wenn die Handelsbedingungen erfüllt sind, muss auch anhand des Positionsstatus und der Anzahl der Positionen bestimmt werden, ob eine Bestellung aufgegeben werden soll. Beispiel: Wenn die Bedingungen zum Eröffnen einer Kaufposition erfüllt sind und Sie eine Position haben, müssen Sie keine erneute Bestellung aufgeben; wenn Sie keine Position haben, können Sie eine Bestellung aufgeben. So sieht es im Code aus:
img
Abbildung 4-24
Wie in der Abbildung oben gezeigt:
Zeile 11: Aktuellen Positionsstatus abrufen. Bei Mehrfachaufträgen beträgt der Wert 1, bei Leeraufträgen beträgt der Wert -1, bei keinen Positionen beträgt der Wert 0.

Holen Sie sich Bollinger Bands-Daten

Als nächstes müssen Sie die Werte der oberen, mittleren und unteren Spur des Bollinger-Band-Indikators berechnen. Dann müssen Sie zuerst das Bollinger-Bänder-Array abrufen und dann die Werte der oberen, mittleren und unteren Bänder aus dem Array abrufen. Im Inventor Quantitative Tool ist es sehr einfach, das Bollinger-Band-Array abzurufen. Sie können die Bollinger-Band-API direkt aufrufen. Der schwierige Teil besteht darin, die Werte der oberen, mittleren und unteren Schiene abzurufen, da das Bollinger-Band-Array ein zweidimensionales Array ist.

Das zweidimensionale Array ist eigentlich sehr einfach zu verstehen. Es ist ein Array in einem Array. Die Reihenfolge der Erfassung lautet also: Holen Sie sich zuerst das angegebene Array im Array und dann das angegebene Element aus dem angegebenen Array, wie in der folgenden Abbildung dargestellt:
img
Abbildung 4-25

Wie in der folgenden Abbildung gezeigt, verwenden die Zeilen 13 bis 19 Code, um die Werte der oberen, mittleren und unteren Schiene der Bollinger-Bänder zu erhalten. Unter diesen verwendet Zeile 13 direkt die API des quantitativen Tools des Erfinders, um das Bollinger-Band-Array direkt zu erhalten; die Zeilen 14 bis 16 erhalten zuerst jeweils das obere Schienen-Array, das mittlere Schienen-Array und das untere Schienen-Array im zweidimensionalen Array; die Zeilen 17 bis 19 erhalten jeweils die oberen, mittleren und unteren Schienenwerte des Bollinger-Bands der vorherigen K-Linie aus dem oberen Schienen-Array, dem mittleren Schienen-Array und dem unteren Schienen-Array.
img
Abbildung 4-26

Schritt 3: Bestellung aufgeben

Mit den oben genannten Daten können Sie die Handelslogik und den Code zum Platzieren von Aufträgen schreiben. Das Format ist ebenfalls sehr einfach. Am häufigsten wird die „if-Anweisung“ verwendet, die in Worten wie folgt beschrieben werden kann: Wenn Bedingung 1 und Bedingung 2 erfüllt sind, geben Sie eine Bestellung auf; wenn Bedingung 3 oder Bedingung 4 erfüllt ist, geben Sie eine Bestellung auf. Wie in der folgenden Abbildung dargestellt:
img
Abbildung 4-27

In der obigen Abbildung stellen die Zeilen 21 bis 24 die Handelslogik- und Auftragserteilungscodes dar. Von oben nach unten sind dies: Schließen lang, Schließen kurz, Öffnen lang, Öffnen kurz.

Am Beispiel der Eröffnung einer Long-Position (Zeile 23) handelt es sich um eine „if-Anweisung“. Wenn in dieser Anweisung nur eine Codezeile ausgeführt wird, können die geschweiften Klammern „{}“ weggelassen werden. Diese Aussage wird wie folgt in den Text übersetzt: Wenn die aktuelle Position 0 ist und der Schlusskurs größer als die obere Spur ist und die K-Linienzeit nicht 14:45 ist, dann „1 zurückgeben“

Aufmerksame Leute werden vielleicht feststellen, dass in diesen Zeilen „Return 1“ und „Return -1“ vorkommen. Dies ist ein festes Format, das heißt: Wenn es sich um einen Kauf handelt, schreiben Sie „Return 1“, wenn es sich um einen Verkauf handelt, schreiben Sie „Return -1“. Das Eröffnen einer Long-Position und das Schließen einer Short-Position sind beides Kauftransaktionen, schreiben Sie also „Rendite 1“. Das Eröffnen einer Short-Position und das Schließen einer Long-Position sind beides Verkaufstransaktionen, schreiben Sie also „Rendite -1“.

Vollständiger Strategiecode

An diesem Punkt wurde ein vollständiger Strategiecode geschrieben. Wäre es nicht sehr einfach, wenn der Handelsrahmen, die Handelsdaten, die Handelslogik, die Auftragserteilung usw. separat geschrieben würden? Im Folgenden finden Sie den vollständigen Code dieser Strategie:
img
Abbildung 4-28

Dabei sind zwei Punkte zu beachten: Versuchen Sie (aber nicht unbedingt), die Strategielogik so zu schreiben, dass die nächste K-Line-Bestellung platziert wird, wenn die Root-K-Line-Bedingung erfüllt ist, oder dass die Root-K-Line-Bestellung platziert wird, wenn die vorherige K-Line-Bedingung erfüllt ist. Auf diese Weise unterscheiden sich die Backtest-Ergebnisse nicht wesentlich von den tatsächlichen Ergebnissen. Man muss das nicht zwingend so schreiben, muss aber darauf achten, ob die Strategielogik stimmt. Generell sollte die Logik zum Schließen einer Position vor der Logik zum Öffnen einer Position geschrieben werden. Der Zweck besteht darin, die Strategielogik so konsistent wie möglich mit Ihren Erwartungen zu gestalten. Beispiel: Wenn die Strategielogik die umgekehrte Position einholt, besteht die Regel der umgekehrten Position darin, zuerst die Position zu schließen und dann eine neue Position zu eröffnen. Anstatt zuerst eine neue Position zu eröffnen und sie dann zu schließen. Wenn wir die Schließlogik direkt vor die Öffnungslogik schreiben, tritt dieses Problem nicht auf.

Zusammenfassen

Oben haben wir jeden Schritt zur Entwicklung einer vollständigen quantitativen Intraday-Handelsstrategie kennengelernt, einschließlich: Strategieeinführung, Berechnungsmethode für den Bollinger-Band-Indikator, Strategielogik, Kauf- und Verkaufsbedingungen, Implementierung des Strategiecodes usw. Durch diesen Strategiefall können Sie sich nicht nur mit der Programmiermethode des quantitativen Tools des Erfinders vertraut machen, sondern es auch auf Grundlage dieser Vorlage in verschiedene Strategien integrieren.

Quantitative Handelsstrategien sind nichts anderes als Zusammenfassungen subjektiver Handelserfahrungen oder -systeme. Wenn wir die Erfahrungen oder Systeme, die beim subjektiven Handel verwendet werden, vor dem Schreiben der Strategien aufschreiben und sie dann nacheinander in Codes übersetzen, werden Sie feststellen, dass das Schreiben von Strategien viel einfacher ist. Probieren Sie es aus!

Vorschau des nächsten Abschnitts

Wenn Sie bei der Entwicklung quantitativer Handelsstrategien nur eine Programmiersprache auswählen können, müssen Sie sich ohne zu zögern für Python entscheiden. Von der Datenerfassung über das Backtesting von Strategien bis hin zum Handel deckt Python die gesamte Geschäftskette ab. Es nimmt eine wichtige Position im Bereich der quantitativen Finanzinvestitionen ein. Im nächsten Kurs erlernen wir die Grundkenntnisse der Python-Sprache.

Hausaufgaben

  1. Versuchen Sie, das Wissen aus diesem Abschnitt zu nutzen, um eine Strategie mit doppeltem gleitendem Durchschnitt umzusetzen.
  2. Versuchen Sie, den KDJ-Indikatoralgorithmus mithilfe der JavaScript-Sprache im Inventor Quantitative Tool zu implementieren.

4.3 Kurzeinführung in die Python-Sprache

Zusammenfassung

Wenn Sie bei der Entwicklung quantitativer Handelsstrategien nur eine Programmiersprache auswählen können, müssen Sie sich ohne zu zögern für Python entscheiden. Von der Datenerfassung über das Strategie-Backtesting bis hin zum Handel deckt Python die gesamte Geschäftskette ab. Es nimmt eine wichtige Position im Bereich der quantitativen Finanzinvestitionen ein. In diesem Kurs erlernen wir die Grundkenntnisse der Sprache Python.

Warum so viele Programmiersprachen lernen?

Wenn wir auf die vorherigen Kurse zurückblicken, haben wir insgesamt Folgendes gelernt: Mai-Sprache, visuelle Sprache, JavaScript-Sprache, einschließlich der in diesem Abschnitt zu erlernenden Python-Sprache. Einige Freunde haben vielleicht Fragen. Ich bin hier, um quantitativen Handel zu lernen. Warum muss ich so viele Programmiersprachen lernen?

Tatsächlich hat jede Programmiersprache ihre eigenen Sprachmerkmale und es gibt keinen Unterschied zwischen guten und schlechten Sprachen. Es kommt eher darauf an, für welche Programmiersprache sich Ihre Strategie besser eignet und ob diese Programmiersprache zu Ihnen passt. Es gibt ein Sprichwort, das man nur kennen kann, wenn man es selbst probiert. Aus diesem Grund haben wir so viel Platz den Programmiersprachen gewidmet. Wenn Sie Ihre Arbeit gut machen möchten, müssen Sie zuerst Ihre Werkzeuge schärfen.

Gleichzeitig möchten wir die Tür zur quantitativen Forschung für jedermann öffnen und das Wissen über verschiedene Programmiersprachen popularisieren. Quantitative Forschung ist nicht so mysteriös und unerreichbar, wie wir uns das vorstellen. Ich glaube, dass quantitative Forschung in Zukunft populär und für die breite Öffentlichkeit zugänglich sein wird.

Warum Sie Python für quantitativen Handel wählen sollten

Der Prozess des quantitativen Handels besteht lediglich aus dem Erfassen, Analysieren und Berechnen von Daten, Verarbeiten von Daten usw. Im Hinblick auf die Datenanalyse kann keine andere Sprache so gute Berechnungen durchführen und dabei eine so hohe Leistung erbringen wie Python. Insbesondere bei der Verarbeitung von Zeitreihenanalysedaten (K-Linie sind Zeitreihendaten) hat Python den Vorteil, dass es einfacher und bequemer ist. Darüber hinaus ist Python im Vergleich zu anderen Programmiersprachen prägnanter und leichter zu erlernen. Das Lesen eines guten Python-Programms fühlt sich an wie das Lesen von Englisch.

Fünf Gründe, sich für Python zu entscheiden

1. Die quantitative Anwendung ist umfangreich:

Sowohl Quantopian in den USA als auch Inventor Quant in China können die Sprache Python verwenden.

2. Leicht zu erlernen:

Die Designphilosophie von Python ist benutzerzentriert und es ist eine interpretierte Sprache, die leicht zu debuggen ist.

3. Kostenlos und Open Source:

Keine Nutzungskosten, Open-Source-Code-Sharing und verbesserte Lern- und Nutzungseffizienz.

4. Umfangreiche Bibliothek:

Datenverarbeitung, Datenberechnung, Visualisierung, statistische Analyse, technische Analyse, maschinelles Lernen ...

5. Anwendungsschnittstelle:

Schnittstellen zum Erfassen, Speichern, Aufrufen und Platzieren von Aufträgen auf Basis von Echtzeit-Marktinformationen der wichtigsten Plattformen.

Komplette Strategie

Damit Sie die wichtigsten Kenntnisse dieses Abschnitts schnell erfassen können, sollten Sie sich vor der Einführung in die quantisierte JavaScript-Sprache des Erfinders zunächst ein grundlegendes Verständnis der Konzepte in diesem Abschnitt aneignen. Betrachten wir als Beispiel die einfachste Strategie mit doppeltem gleitendem Durchschnitt:

Eröffnung einer Long-Position: Wenn keine aktuelle Position vorhanden ist und der gleitende Durchschnitt der 5 Perioden größer ist als der gleitende Durchschnitt der 20 Perioden.
Eröffnen Sie eine Short-Position: Wenn keine aktuelle Position vorhanden ist und der gleitende Durchschnitt der 5 Perioden kleiner ist als der gleitende Durchschnitt der 20 Perioden.
Schließen einer Long-Position: Wenn Sie derzeit eine Long-Position halten und der gleitende Durchschnitt der 5-Perioden niedriger ist als der gleitende Durchschnitt der 20-Perioden.
Schließen von Short-Positionen: Wenn Sie derzeit eine Short-Position halten und der gleitende Durchschnitt der 5-Perioden größer ist als der gleitende Durchschnitt der 20-Perioden.

In Python geschrieben würde es folgendermaßen aussehen:
img
Abbildung 4-29

Der Code in der obigen Abbildung ist eine vollständige quantitative Handelsstrategie, die in Python geschrieben wurde. Es kann in Echtzeit ausgeführt werden und automatisch Bestellungen aufgeben. In Bezug auf die Codemenge ist Python umfangreicher als JavaScript, da wir das CTA-Handelsframework nicht verwenden.

Der Entwurfsprozess der gesamten Strategie ist jedoch nahezu derselbe: Festlegen von Markttypen, Abrufen von K-Line-Daten, Abrufen von Positionsinformationen, Berechnen der Handelslogik und Platzieren von Kauf- und Verkaufsaufträgen. Mit anderen Worten: Auch wenn die Programmiersyntax unterschiedlich ist, ist die geschriebene Strategielogik dieselbe. Lernen wir also als Nächstes die grundlegende Syntax von Python!

Versionsauswahl

Es gibt zwei Versionen von Python, nämlich Python2 und Python3. Es gab einmal einen Witz, der besagte, dass Python wie eine doppelläufige Waffe sei, aber man kann immer nur einen Lauf verwenden, um Kugeln auf einmal abzufeuern, und man wird nie wissen, welcher genauer ist. Wenn Sie Python noch nicht kennen, empfiehlt es sich, direkt Python 3 zu lernen, da es die neueste Version ist und von der Python-Community gepflegt wird. Unsere Kurse werden auch in Python 3 unterrichtet.

Kennzeichen

Der Bezeichner ist der Name der Variable, z.B. test, Test, test10,Demo usw. In Python muss bei allem (Variablen, Funktionsnamen und Operatoren) die Groß-/Kleinschreibung beachtet werden. Dies bedeutet, dass der Variablenname „Test“ und der Variablenname „Test“ zwei unterschiedliche Variablen sind. Das erste Zeichen eines Bezeichners (Name einer Variablen, Funktion, Eigenschaft, Funktionsparameter) muss ein Buchstabe, ein Unterstrich (), können die darauf folgenden Zeichen auch Zahlen sein, wie in der folgenden Abbildung gezeigt:
img
Abbildung 4-30

Anmerkungen

Ein Kommentar ist eine Übersetzung oder Erklärung einer Codezeile. Die Regeln sind sehr einfach und umfassen einzeilige Kommentare und Kommentare auf Blockebene. Ein einzeiliger Kommentar beginnt mit einem Rautezeichen (#), und ein Blockkommentar beginnt mit drei einfachen Anführungszeichen (''') oder drei doppelten Anführungszeichen (""") und endet mit drei einfachen Anführungszeichen (''') oder drei doppelten Anführungszeichen ("""), wie in der folgenden Abbildung dargestellt:
img
Abbildung 4-31

Linien und Einrückungen

Das auffälligste Merkmal von Python ist die Verwendung von Einrückungen zur Kennzeichnung von Codeblöcken, ohne dass geschweifte Klammern {} erforderlich sind. Die Anzahl der Leerzeichen für die Einrückung ist variabel, aber Anweisungen im gleichen Codeblock müssen die gleiche Anzahl von Leerzeichen für die Einrückung enthalten. Wie unten gezeigt: In diesem Fall meldet das Programm einen Fehler. Auch wenn die if-Bedingung erfüllt ist, wird nicht „True“ ausgegeben, da Python vor der Ausführung des Codes automatisch erkennt, ob die Codesyntax korrekt ist. Wenn das Codeformat falsch ist, wird das Programm nicht ausgeführt. Der Grund dafür ist, dass die 5. Codezeile kein einheitliches Codeeinrückungsformat aufweist. Die Einrückung mit vier Leerzeichen ist ein festes Format für Python und jeder muss damit vertraut sein.
img
Abbildung 4-32

Variable

Variablen können beliebige Datentypen speichern. Durch einfaches Schreiben des Namens der Variablen wird die Variable erstellt. Beim Erstellen einer Variablen müssen Sie jedoch gleichzeitig den Wert der Variablen festlegen, da das Programm sonst einen Fehler meldet. Die linke Seite des Gleichheitszeichenoperators (=) ist ein Variablenname und die rechte Seite des Gleichheitszeichenoperators (=) ist der in der Variablen gespeicherte Wert. Wie in der folgenden Abbildung gezeigt: Name2 ist der Variablenname und „Erfinderquantifizierung“ ist der Wert der Variablen. Wenn Sie für name2 keinen neuen Wert festlegen, ist der Wert von name2 immer „Erfinderquantifizierung“.
img
Abbildung 4-33

Daten

Python hat sechs Datentypen, von denen drei unveränderlich und drei veränderbar sind. Wie der Name schon sagt, kann der Wert unveränderlicher Daten nach ihrer Erstellung nicht mehr geändert werden und ihre Adresse im Speicher ist eindeutig; veränderliche Daten sind ein Verweis auf eine Adresse im Speicher und wenn sich ihr Wert ändert, bleibt ihre Speicheradresse unverändert.
Unveränderliche Daten (3): Zahl, Zeichenfolge, Tupel;
Veränderbare Daten (3): Liste, Wörterbuch, Menge.
img
Abbildung 4-34

Zahlen

Die numerischen Typen von Python unterstützen int (Integer), float (Gleitkomma), bool (Boolescher Wert) und complex (komplexe Zahl). Mit der integrierten Funktion type() kann der Objekttyp abgefragt werden, auf den eine Variable verweist. Wie unten gezeigt:
img
Abbildung 4-35

Operator

Wie bei den meisten Sprachen ist die Mathematik in Python unkompliziert. Ob Rechenoperatoren, Vergleichsoperatoren oder logische Operatoren, es ist alles das Gleiche, was wir in der Schule gelernt haben. Darunter sind arithmetische Operatoren mathematische Operationen der Addition, Subtraktion, Multiplikation und Division. Vergleichsoperatoren können vergleichen, ob zwei Werte kleiner oder kleiner sind. Die wichtigsten logischen Operatoren sind: logisches UND, logisches ODER und logisches NICHT. [Können Sie kurz auf die in Handelsstrategien häufig verwendeten Zeichenfolgen eingehen?] In unseren Handelsstrategien ist beispielsweise die am häufigsten verwendete Zeichenfolge der Produktcode, z. B.: „rb1910“, „MA1910“.
img
Abbildung 4-36

Dabei ist zu beachten, dass es sich bei „and“ um ein logisches UND handelt, also „und“ bedeutet. „oder“ ist ein logisches ODER, was „entweder“ bedeutet. "!" ist eine logische Negation, die "nein" bedeutet:
„und“ bedeutet, dass die letzte Bedingung „wahr“ ist, wenn alle Bedingungen „wahr“ sind;
„oder“ bedeutet, dass die letzte Bedingung „wahr“ ist, sofern eine der Bedingungen „wahr“ ist.

Prioritäten

Wenn es eine 100 gibt*Welchen Schritt berechnet das Programm zuerst für den Ausdruck (10-1)/(10+5)? Aus der Mittelschulmathematik wissen wir: ① Handelt es sich um eine Operation auf gleicher Ebene, wird grundsätzlich von links nach rechts gerechnet. ② Wenn sowohl Addition und Subtraktion als auch Multiplikation und Division vorliegen, berechnen Sie zuerst die Multiplikation und Division, dann die Addition und Subtraktion. ③Wenn Klammern vorhanden sind, berechnen Sie zuerst den Inhalt der Klammern. ④ Wenn es den Betriebsgesetzen entspricht, können die Betriebsgesetze zur Vereinfachung der Berechnung verwendet werden. Die Priorität der Mai-Sprache ist die gleiche wie unten gezeigt:
img
Abbildung 4-37

Boolescher Wert

Boolean steht für „wahr“ oder „falsch“ und wird normalerweise in bedingten Urteilen und Schleifenanweisungen verwendet. Python definiert zwei Konstanten „True“ und „False“, um wahr und falsch darzustellen. Tatsächlich kann jedes Objekt in einen Booleschen Typ konvertiert und auch direkt zur bedingten Beurteilung verwendet werden, wie in der folgenden Abbildung dargestellt:
img
Abbildung 4-38

Zeichenfolge

Zeichenfolgen sind Text. Zeichenfolgen wie „if1905“ werden häufig beim Festlegen von Produktcodes verwendet. Zeichenfolgen werden in Python in einfache Anführungszeichen ' oder doppelte Anführungszeichen " eingeschlossen. Das Pluszeichen + ist der Zeichenfolgenverkettungsoperator. Sie können ein Zeichen in einer Zeichenfolge basierend auf dem Indexwert abrufen, wie unten gezeigt:
img
Abbildung 4-39

Liste

Listen sind der am häufigsten verwendete Datentyp in Python. Sie können sich eine Liste als Container vorstellen, mit dem Unterschied, dass die Elemente im Container von links nach rechts angeordnet sind. Das erste Element ist 0, das zweite Element ist 1 und so weiter. Darüber hinaus können Python-Listen beliebige Datentypen speichern, wie unten gezeigt:
img
Abbildung 4-40

Funktion

Funktionen in Python sind im Wesentlichen dieselben wie die Funktionen, die wir in der Mittelschule gelernt haben. Sie können es sich so vorstellen, als ob die Funktion etwas übergibt und etwas ausgibt, wie in der folgenden Abbildung dargestellt:
img
Abbildung 4-41

Die if-Anweisung

Kommen in unserem Leben häufig Aussagen vor, zum Beispiel: Wenn es heute regnet, werde ich einen Regenschirm halten. Das heißt, die Anweisung führt den Code nur aus, wenn die angegebene Bedingung wahr ist. Hinweis: Achten Sie auf das Einrückungsformat des Codes, da sonst ein Python-Fehler generiert wird! Wie in der folgenden Abbildung dargestellt:
img
Abbildung 4-42

if...else-Anweisung

If...else-Anweisungen sind ebenfalls häufig verwendete Anweisungen, z. B.: Wenn es heute regnet, werde ich einen Regenschirm halten, andernfalls werde ich keinen Regenschirm halten. Die else-Anweisung ist eine Erweiterung der if-Anweisung, d. h. der auf else folgende Code wird nur ausgeführt, wenn die angegebene Bedingung „False“ ist. Wie in der folgenden Abbildung dargestellt:
img
Abbildung 4-43

elif-Anweisung

Da Python keine Switch-Anweisungen unterstützt, kann Python nur Elif-Anweisungen verwenden, um mehrere bedingte Urteile zu implementieren. Beispiel: Wenn die Linie positiv ist, bin ich optimistisch, wenn sie negativ ist, bin ich pessimistisch, andernfalls warte ich ab. Wie in der folgenden Abbildung dargestellt:
img
Abbildung 4-44

for-Schleife

Manchmal müssen wir die K-Line-Daten der letzten Tage abrufen und sie entsprechend der Position der K-Line-Daten nacheinander aus dem K-Line-Array abrufen. Dann ist es sehr praktisch, eine for-Schleife zu verwenden, wie in der folgenden Abbildung dargestellt:
img
Abbildung 4-45

While-Schleife

Wir alle wissen, dass sich der Markt ständig ändert. Wenn Sie das neueste K-Line-Array erhalten möchten, müssen Sie denselben Code immer wieder ausführen. Verwenden Sie dann die whilex-Schleife. Solange die angegebene Bedingung erfüllt ist, kann die Schleife immer das neueste K-Line-Array abrufen.
img
Abbildung 4-46

break-Anweisung und continue-Anweisung

Die Schleife hat eine Vorbedingung. Nur wenn die Vorbedingung „wahr“ ist, beginnt die Schleife, etwas wiederholt auszuführen, und die Schleife endet erst, wenn die Vorbedingung „falsch“ ist. Allerdings kann die break-Anweisung während der Ausführung der Schleife sofort aus der Schleife herausspringen, während die continue-Anweisung eine bestimmte Schleife unterbrechen und dann mit der nächsten Schleife fortfahren kann. Wie in der folgenden Abbildung dargestellt:
img
Abbildung 4-47

return-Anweisung

Die return-Anweisung beendet die Ausführung einer Funktion und gibt den Wert der Funktion zurück. Die return-Anweisung kann nur im Funktionskörper vorkommen. Wenn sie an einer anderen Stelle im Code vorkommt, führt dies zu einem Syntaxfehler!
img
Abbildung 4-48

Strategierahmen

Sie können die Strategiearchitektur als festes Format der Strategie verstehen. Das quantitative Tool des Erfinders verwendet einen Polling-Modus. Das Folgende ist eine klassische Strategiearchitektur für Rohstoff-Futures.

Die Zeilen 4 bis 7 sind die Haupteinstiegsfunktionen des gesamten Programms, d. h. der Computer beginnt mit der Ausführung des Codes ab Zeile 4; dann führt er direkt Zeile 5 aus und tritt in eine Endlosschleife ein; dann werden die Strategielogikfunktion (onTick) und die Ruhefunktion (Sleep) in der Endlosschleife ausgeführt; die Funktion onTick ist der Code in Zeile 1, und Sie können die Strategielogik in Zeile 2 schreiben; wir wissen, dass die Ausführungsgeschwindigkeit des Programms in der Schleife sehr hoch ist, sodass die Verwendung der Ruhefunktion (Sleep) das Programm für eine Weile anhalten kann. Der folgende Code Sleep(500) bedeutet, dass er jedes Mal, wenn die Schleife abgeschlossen ist, für 500 Millisekunden schläft.
img
Abbildung 4-49

Zusammenfassen

Das Obige ist eine kurze Einführung in die Python-Sprache. Obwohl es sich nur um einfaches Grundwissen handelt, ist es dennoch kein Problem, damit eine einfache quantitative Handelsstrategie zu schreiben. Wenn Sie komplexere Strategien schreiben müssen, können Sie die API-Dokumentation des Inventor Quantitative Tool in der Python-Sprache zu Rate ziehen.

Vorschau des nächsten Abschnitts

Unter den Trendstrategien im Bereich der technischen Analyse sind der gleitende Durchschnitt und der Kanaldurchbruch zweifellos die beiden wichtigsten Schulen. Obwohl das Ziel darin besteht, den Trend der Preisbewegungen zu erfassen, sind die Handelsphilosophien und Risikomerkmale dieser beiden Strategien völlig unterschiedlich. Nachdem Sie in diesem Abschnitt eine Einführung in die Python-Sprache erhalten haben, zeigen wir Ihnen im nächsten Abschnitt, wie Sie eine quantitative Handelsstrategie für den Kanaldurchbruch schreiben.

Hausaufgaben

  1. Versuchen Sie, die Sprache Python im Inventor Quantitative Tool zu verwenden, um historische K-Line-Daten zu erhalten.
  2. Versuchen Sie, den Strategiecode am Anfang dieses Abschnitts aufzuschreiben und Kommentare hinzuzufügen.

4.4 So implementieren Sie Strategiehandel mit der Sprache Python

Zusammenfassung

Im vorherigen Artikel haben wir die Einführung, die grundlegende Syntax, das Strategie-Framework usw. der Sprache Python gelernt. Obwohl der Inhalt langweilig ist, handelt es sich dabei um eine wesentliche Fähigkeit zur Umsetzung Ihrer Handelsstrategie, und Sie müssen sie erlernen. In diesem Artikel werden wir das Eisen schmieden, solange es heiß ist, und mit den grundlegenden Python-Kenntnissen des vorherigen Artikels weitermachen. Wir werden mit einer einfachen Strategie beginnen, lernen, während wir sie anwenden, und jedem dabei helfen, Schritt für Schritt eine praktikable quantitative Handelsstrategie umzusetzen.

Strategieeinführung

Unter den vielen Handelsstrategien dürfte die Donchian Channel-Strategie eine der klassischsten Durchbruchstrategien sein. Sie war bereits 1970 bekannt. Damals führte ein ausländisches Unternehmen Simulationstests und Untersuchungen zu gängigen Programmhandelsstrategien durch. Die Ergebnisse zeigten dass die Donchian-Channel-Strategie unter allen Strategietests die erfolgreichste war.

Später fand in den USA die berühmteste „Turtle“-Trader-Ausbildung der Trading-Geschichte statt, die zu großem Erfolg führte. Zu dieser Zeit wurden die Handelsmethoden der „Turtles“ geheim gehalten, aber mehr als zehn Jahre später, als die „Turtle Trading Rules“ veröffentlicht wurden, entdeckten die Leute, dass die „Turtles“ eine verbesserte Version des Donchian Channel verwendeten Strategie.

Durchbruchshandelsstrategien eignen sich für Handelsprodukte mit relativ gleichmäßigen Trends. Die gängigste Durchbruchshandelsmethode besteht darin, die relative Positionsbeziehung zwischen Preis und Unterstützung und Widerstand zu nutzen, um bestimmte Handelskauf- und -verkaufspunkte zu bestimmen. Die Donchian-Channel-Strategie in diesem Abschnitt basiert auf diesem Prinzip.

Regeln für die Donchian-Kanal-Strategie

Donchian Channel ist ein Trendindikator und sein Erscheinungsbild und seine Signale ähneln etwas dem Bollinger Band-Indikator. Der Preiskanal von Donchian basiert jedoch auf den höchsten und niedrigsten Preisen innerhalb eines bestimmten Zeitraums. Beispiel: Berechnen Sie den Maximalwert des höchsten Preises der letzten 50 K-Linien, um die obere Spur zu bilden; berechnen Sie den Minimalwert des niedrigsten Preises der letzten 50 K-Linien, um die untere Spur zu bilden.
Dieser Indikator besteht aus drei Kurven in unterschiedlichen Farben. Standardmäßig werden die höchsten und niedrigsten Preise innerhalb von 20 Perioden verwendet, um die Volatilität der Marktpreise anzuzeigen. Ein schmaler Kanal bedeutet, dass die Marktvolatilität gering ist. Umgekehrt bedeutet ein breiter Kanal, dass die Marktvolatilität relativ groß ist.

Steigt der Kurs über die obere Linie, handelt es sich um ein Kaufsignal; fällt der Kurs hingegen unter die untere Linie, handelt es sich um ein Verkaufssignal. Da die oberen und unteren Spuren anhand der höchsten und niedrigsten Preise berechnet werden, steigen und fallen die Preise unter normalen Umständen selten gleichzeitig über die oberen und unteren Kanallinien. In den meisten Fällen bewegen sich die Preise einseitig entlang der oberen oder unteren Spur oder zwischen der oberen und unteren Spur.

Berechnungsmethode für Donchian-Kanäle

Im Inventor Quantitative Tool ist die Berechnungsmethode des Donchian Channel sehr einfach. Sie können sie direkt verwenden, um den höchsten oder niedrigsten Preis innerhalb des angegebenen Zeitraums zu ermitteln, wie in der folgenden Abbildung dargestellt: Die 5. Zeile dient zum Ermitteln des Maximalwerts des höchsten Preises von 50 Zeiträumen und die 6. Zeile zum Ermitteln des Minimalwerts des niedrigsten Preises von 50 Zeiträumen.
img
Abbildung 4-50

Strategielogik

Es gibt viele Möglichkeiten, den Donchian Channel zu nutzen. Er kann allein oder in Kombination mit anderen Indikatoren verwendet werden. In diesem Kurs verwenden wir die einfachste Methode. Das heißt, wenn der Preis die obere Spur von unten nach oben durchbricht, das heißt, die obere Drucklinie durchbricht, glauben wir, dass die bullische Kraft stärker wird, eine Welle steigender Märkte gebildet wurde und ein Kauf-Eröffnungssignal vorliegt wird generiert; wenn der Preis von oben nach unten fällt und die untere Linie durchbricht, d. h. wenn er unter die Unterstützungslinie fällt, glauben wir, dass die Short-Seite stärker wird, ein Abwärtstrend gebildet wurde und eine Verkaufseröffnung Signal wird erzeugt.
img
Abbildung 4-51

Wenn der Preis nach dem Öffnen einer Long-Position auf die mittlere Spur des Donchian-Kanals zurückfällt, glauben wir, dass die Bullen schwächer werden oder die Bären stärker werden, und es wird ein Ausverkaufssignal generiert; wenn der Preis auf die Mitte zurückfällt Wenn der Kurs nach dem Öffnen einer Short-Position auf der Spur des Donchian-Kanals ansteigt, glauben wir, dass die Bullen schwächer werden oder die Bären stärker werden, und es wird ein Ausverkaufssignal generiert. Wenn der Kurs wieder auf die mittlere Spur des Donchian-Kanals ansteigt, glauben wir, dass Die Stärke der Bären lässt nach oder die Stärke der Bullen nimmt zu, und es wird ein Buy-to-Close-Signal generiert.

Handelsbedingungen
Eröffnung einer Long-Position: Wenn keine Position besteht und der Schlusskurs über dem oberen Kurs liegt
Eröffnen Sie eine Short-Position: Wenn keine Position besteht und der Schlusskurs unter dem unteren Kurswert liegt
Schließen einer Long-Position:Wenn Sie eine Long-Order halten und der Schlusskurs unter dem Mittelkurs liegt
Schließen von Short-Positionen:Wenn Sie eine Short-Order halten und der Schlusskurs höher ist als der Mittelkurs

Implementierung des Strategiecodes

Der erste Schritt zur Umsetzung einer Strategie besteht darin, Daten zu beschaffen, denn Daten sind eine Voraussetzung für eine Handelsstrategie. Stellen Sie sich vor, welche Daten wir benötigen? Und wie erhält man diese Daten? Anschließend entwerfen wir die Handelslogik auf Grundlage dieser Daten und erteilen schließlich Kauf- und Verkaufsaufträge gemäß der Handelslogik. Die einzelnen Schritte sind wie folgt:

Schritt 1: Nutzen Sie die Handelsbibliothek

Sie können sich die Handelsbibliothek als funktionales Modul vorstellen. Der Vorteil der Verwendung der Handelsbibliothek besteht darin, dass Sie sich auf das Schreiben der Strategielogik konzentrieren können. Beispiel: Wenn wir die Handelsbibliothek verwenden und Positionen öffnen und schließen, können wir die Auftrags-API in der Handelsbibliothek direkt verwenden. Wenn wir die Handelsbibliothek jedoch nicht verwenden, müssen wir beim Öffnen und Schließen von Positionen den Marktpreis ermitteln und das Problem der Platzierung von Aufträgen, die nicht ausgeführt werden, berücksichtigen, das Problem der Stornierung von Aufträgen berücksichtigen usw.
img
Abbildung 4-52

Das obige Bild zeigt den CTA-Strategierahmen unter Verwendung der quantitativen Tools des Erfinders. Dies ist ein festes Codeformat, und alle Transaktionslogikcodes werden ab Zeile 4 geschrieben. An anderer Stelle sind keine Änderungen erforderlich.

Die Vorlagenbibliothek von JavaScript ist integriert. Python muss diese Vorlage kopieren und speichern: https://www.fmz.com/strategy/24288. Klicken Sie dann auf der Seite zur Richtlinienbearbeitung auf „Referenz“. Natürlich können Sie die Strategie auch ohne Verwendung der Vorlagenbibliothek absolvieren.

img

Schritt 2: Verschiedene Daten abrufen

Überlegen Sie genau, welche Daten Sie benötigen? Aus unserer Strategiehandelslogik haben wir Folgendes herausgefunden: Zuerst müssen wir den aktuellen Positionsstatus ermitteln, dann die Beziehung zwischen dem Schlusskurs und den oberen, mittleren und unteren Spuren des Bollinger-Band-Indikators vergleichen und schließlich feststellen, ob der Markt kurz vor der Schließung steht. Holen wir uns also diese Daten.

K-Streckendaten erhalten

Der erste Schritt besteht darin, das K-Line-Array und den aktuellen K-Line-Schlusskurs abzurufen. Nur mit dem K-Line-Array können wir die API aufrufen, um den höchsten oder niedrigsten Kurs von N Perioden abzurufen. So sieht es im Code aus:
img
Abbildung 4-53
Wie in der Abbildung oben gezeigt:
Zeile 4: Holen Sie sich das K-Line-Array, das ein festes Format hat.
Zeile 5: Filtern Sie die Länge der K-Linie. Da wir den höchsten oder niedrigsten Preis von N Perioden berechnen, ist der verwendete Parameter 50. Wenn die Anzahl der K-Linien kleiner als 50 ist, kann sie nicht berechnet werden. Daher müssen wir hier die Länge der K-Linie filtern. Wenn es weniger als 50 K-Linien gibt, überspringen Sie diese Schleife und warten Sie weiter auf die nächste K-Linie.
Zeile 6: Wir verwenden den Code „records[len(records) - 1]" ruft zuerst die letzten Daten des K-Line-Arrays ab, also die neuesten K-Line-Daten. Diese Daten sind ein Objekt, das enthält: Eröffnungskurs, Höchstkurs, Tiefstkurs, Schlusskurs, Handelsvolumen, Zeit und andere Daten. Da es sich um ein Objekt handelt, können wir „.Close“ direkt verwenden, um den neuesten K-Line-Schlusskurs abzurufen.

Positionsdaten abrufen

Positionsinformationen sind eine sehr wichtige Voraussetzung für quantitative Handelsstrategien. Wenn die Handelsbedingungen erfüllt sind, muss auch anhand des Positionsstatus und der Anzahl der Positionen bestimmt werden, ob eine Bestellung aufgegeben werden soll. Beispiel: Wenn die Bedingungen zum Eröffnen einer Kaufposition erfüllt sind und Sie eine Position haben, müssen Sie keine erneute Bestellung aufgeben; wenn Sie keine Position haben, können Sie eine Bestellung aufgeben. Dieses Mal kapseln wir die Positionsinformationen direkt in eine Funktion und können sie verwenden, indem wir einfach diese Funktion aufrufen:
img
Abbildung 4-54

Wie in der Abbildung oben gezeigt:
Dies ist eine Funktion, die Positionsinformationen abruft. Wenn es sich um eine Short-Position handelt, gibt sie 0 zurück; wenn es sich um eine Long-Position handelt, gibt sie 1 zurück; wenn es sich um eine Short-Position handelt, gibt sie -1 zurück. Beachten Sie den obigen Code:
Zeile 2: Erstellen Sie eine Funktion namens mp, die keine Parameter hat.
Zeile 3: Holen Sie sich das Positions-Array, das ein festes Format hat.
Zeile 4: Bestimmen Sie die Länge des Positionsarrays. Wenn seine Länge gleich ist, muss es sich um eine leere Position handeln. Geben Sie daher 0 zurück.
Zeile 6: Verwenden Sie eine For-Schleife, um mit dem Durchlaufen des Arrays zu beginnen. Die folgende Logik ist sehr einfach. Wenn Sie eine Long-Position halten, wird 1 zurückgegeben; wenn Sie eine Short-Position halten, wird -1 zurückgegeben.
Zeile 18: Rufen Sie die Funktion mp auf, die wir gerade geschrieben haben, um die Positionsinformationen zu erhalten.

Erhalten Sie die höchsten und niedrigsten Preise der letzten 50.000 Linien

Im Inventor Quantitative Tool können Sie diesen Wert mithilfe der Funktionen „TA.Highest“ und „TA.Lowest“ direkt ermitteln, ohne die logischen Berechnungen selbst schreiben zu müssen. Und die von den Funktionen „TA.Highest“ und „TA.Lowest“ zurückgegebenen Ergebnisse sind konkrete Werte und keine Arrays. Das ist sehr praktisch. Darüber hinaus verfügt der Beamte über integrierte Hunderte von Anzeigefunktionen.
img
Abbildung 4-55

Wie in der Abbildung oben gezeigt:
Zeile 19: Rufen Sie die Funktion „TA.Highest“ auf, um den Maximalwert des höchsten Preises in 50 Perioden zu erhalten
Zeile 20: Rufen Sie die Funktion „TA.Lowest“ auf, um den Mindestwert des niedrigsten Preises in 50 Perioden zu erhalten
Zeile 21: Berechnen Sie den Durchschnittswert basierend auf dem Maximalwert des höchsten Preises in 50 Perioden und dem Minimalwert des niedrigsten Preises in 50 Perioden

Schritt 3: Bestellung aufgeben

Mit den oben genannten Daten können Sie die Handelslogik und den Code zum Platzieren von Aufträgen schreiben. Das Format ist ebenfalls sehr einfach. Am häufigsten wird die „if-Anweisung“ verwendet, die in Worten wie folgt beschrieben werden kann: Wenn Bedingung 1 und Bedingung 2 erfüllt sind, geben Sie eine Bestellung auf; wenn Bedingung 3 oder Bedingung 4 erfüllt ist, geben Sie eine Bestellung auf.
img
Abbildung 4-56

Wie in der Abbildung oben gezeigt:
Zeile 22: Verwenden Sie die Transaktionsbibliothek, die ein festes Format hat
Zeilen 23 und 24: Dies ist eine Anweisung zum Schließen einer Long-Position, die die zuvor gelernten „Vergleichsoperatoren“ und „logischen Operatoren“ verwendet. Das bedeutet, dass alle Positionen geschlossen werden, wenn Sie derzeit eine Long-Position halten und der Schlusskurs unter dem Mittelwert liegt.
Zeilen 25 und 26: Dies ist eine Anweisung zum Schließen einer Short-Order, die die zuvor erlernten „Vergleichsoperatoren“ und „logischen Operatoren“ verwendet. Das bedeutet, dass alle Positionen geschlossen werden, wenn Sie derzeit eine Short-Order halten und der Schlusskurs über dem Mittelwert liegt.
Zeile 27: Bestimmen Sie den aktuellen Positionsstatus. Wenn die Position knapp ist, fahren Sie mit dem nächsten Schritt fort.
Zeilen 28 und 29: Bestimmen Sie, ob der Schlusskurs höher ist als der obere Kurs. Wenn der Schlusskurs über den oberen Kurs steigt, kaufen Sie, um eine Position zu eröffnen.
Zeilen 30 und 31: Bestimmen Sie, ob der Schlusskurs unter dem unteren Kurs liegt. Wenn der Schlusskurs unter den unteren Kurs fällt, verkaufen Sie und eröffnen Sie eine Position.

Zusammenfassen

Oben haben wir jeden Schritt zur Entwicklung einer vollständigen quantitativen Handelsstrategie mit Python gelernt, einschließlich: Strategieeinführung, Berechnungsmethode des Donchian-Kanals, Strategielogik, Kauf- und Verkaufsbedingungen, Implementierung des Strategiecodes usw. Dieser Abschnitt ist nur eine einfache Strategie als Ausgangspunkt. Es gibt mehr als eine Methode. Sie können verschiedene Handelsmethoden entsprechend Ihrem eigenen Handelssystem übereinanderlegen, um Ihre eigene quantitative Handelsstrategie zu entwickeln.

Vorschau des nächsten Abschnitts

Wenn wir bei der Entwicklung quantitativer Handelsstrategien aus der Perspektive der Ausführungsgeschwindigkeit der Programmiersprache fragen, welche Sprache die schnellste ist, kann es nur C++ sein. Insbesondere im Bereich der Derivate und des Hochfrequenzhandels weist C++ einzigartige sprachliche Besonderheiten und Vorteile bei numerischen Berechnungen auf. Seine Geschwindigkeit kann im Vergleich zu JavaScript und Python um mehrere Größenordnungen gesteigert werden. Wenn Sie sich in Zukunft im Bereich der Derivate und des Hochfrequenzhandels weiterentwickeln möchten, ist dieser Kurs ein Muss für Sie.

Hausaufgaben

  1. Beginnen Sie, indem Sie die Strategien in diesem Abschnitt kopieren und implementieren.
  2. Versuchen Sie, der Strategie in diesem Abschnitt einen gleitenden Durchschnittsindikator hinzuzufügen, um die Häufigkeit der Transaktionen zu verringern.

Kapitel 5 Strategie-Backtesting, Debugging und Verbesserung

5.1 Bedeutung und Fallstricke des Backtestings

Zusammenfassung

Backtesting stellt den größten Unterschied zwischen quantitativem und traditionellem Handel dar. Basierend auf realen Marktdaten, die in der Vergangenheit aufgetreten sind, werden schnell das Auslösen von Strategiesignalen und entsprechende Transaktionen simuliert, um über einen bestimmten Zeitraum Leistungsberichte und andere Daten zu erhalten. Es ist einer der wichtigsten Bestandteile der Strategieentwicklung für in- und ausländische Aktien-, Rohstoff-Futures-, Devisen- und andere Märkte.

Die Bedeutung von Backtesting

In den vorherigen Kapiteln haben wir die Grundlagen der gängigen Programmiersprachen erlernt und Ihnen gezeigt, wie Sie diese Programmiergrundlagen nutzen können, um einige einfache Handelsstrategien zu schreiben. Man kann sagen, dass wir bereits mehr als die Hälfte des langen Marsches hinter uns haben. Ist eine Strategie jedoch erst einmal geschrieben, kann sie nicht direkt in die Praxis umgesetzt werden. Es bedarf weiterhin kontinuierlicher Backtests – Debugging – Backtests – Debugging – und so weiter, bis die Strategie den Modellinhalt vollständig umsetzen und reibungslos laufen kann.

Aus der Perspektive der quantitativen Handelslogik basieren Strategien tatsächlich auf einer Reihe von Erkenntnissen und Annahmen über den Markt. Durch Backtesting lässt sich effizient feststellen, ob diese Annahmen gültig und stabil sind. Welche Verluste in historisch instabilen Zeiten auftreten können und wie man bei der Entscheidungsfindung zur Vermeidung dieser Verluste helfen kann.

Darüber hinaus kann Backtesting aus der Perspektive des quantitativen Handelsbetriebs dabei helfen, Fehler in der Strategielogik zu erkennen, wie etwa zukünftige Funktionen, Preisdiebstahl, Multi-Fitting usw. Liefern Sie zuverlässige Beweise dafür, dass die Strategie im realen Handel eingesetzt werden kann.

  • Überprüfen Sie die Genauigkeit der Handelssignale.
  • Prüfen Sie die Transaktionslogik und ob Ihre Vorstellungen umsetzbar sind.
  • Entdecken Sie Schwachstellen in Ihrem Handelssystem und verbessern Sie Ihre ursprüngliche Strategie.

Daher besteht die Bedeutung des Backtestings darin, den tatsächlichen Handelsprozess durch historische Daten so realistisch wie möglich wiederherzustellen, die Wirksamkeit der Strategie zu überprüfen, zu vermeiden, einen hohen Preis für falsche Strategien zu zahlen und uns dabei zu helfen, Handelsstrategien zu prüfen, zu verbessern und zu optimieren.

Fallstricke beim Backtesting

Backtesting Trap Signal Blinken:

Handelsstrategien werden auf der Grundlage statischer historischer Daten einem Backtest unterzogen. Die tatsächlichen Transaktionsdaten sind dynamisch. Beispiel: Wenn der Höchstkurs höher ist als der Schlusskurs von gestern, dann kaufen Sie, um eine Position zu eröffnen. Wenn im realen Handel die K-Linie noch nicht abgeschlossen ist, ist der Höchstpreis dynamisch und das Handelssignal kann hin und her blinken. Während des Backtestings kann die Backtesting-Engine passende Transaktionen auf Basis statischer historischer Daten simulieren.

Backtesting-Falle der Future-Funktion:

Bei der Future-Funktion werden zukünftige Preise verwendet, so dass sich die aktuellen Konditionen in der Zukunft ändern können. Die Future-Funktion kann auch ein Blinken der Signale auslösen. Daher besitzt jede Funktion die Eigenschaften einer Zukunftsfunktion, wie beispielsweise die „Zickzack-Funktion“.

Wie in der folgenden Abbildung dargestellt: Die ZigZag-Funktion zeigt die Wendepunkte von Spitzen und Tälern an. Sie kann ihren Wert entsprechend dem neuesten Echtzeitpreis anpassen. Wenn sich jedoch der aktuelle Preis ändert, ändert sich auch das von der ZigZag-Funktion berechnete Ergebnis. Wenn eine Funktion mit einer Zukunftsfunktion verwendet wird, wird möglicherweise das aktuelle Auftragssignal erstellt und der Auftrag erteilt, das Signal wird jedoch möglicherweise nach einer Weile nicht erstellt.
img
Abbildung 5-1

Backtesting-Falle: Preisdiebstahl

Beim sogenannten Preisdiebstahl handelt es sich um die Verwendung von Preisen aus der Vergangenheit für Handelsgeschäfte. Beispiel: Wenn der höchste Preis höher ist als ein Festpreis, kaufen Sie zum Eröffnungspreis. Unter dieser Bedingung versteht man Preisdiebstahl, denn auf dem tatsächlichen Markt ist es so, dass, wenn der Höchstpreis über einem bestimmten Preis liegt, der Preis bereits eine gewisse Strecke über dem Eröffnungspreis liegt und zu diesem Zeitpunkt nicht zum Eröffnungspreis gekauft werden kann. Im Backtest liegt jedoch ein Kaufsignal vor und die Transaktion kann abgeschlossen werden.

Es gibt noch eine andere Situation. Wenn der Preis höher springt und höher eröffnet als der von der Strategie festgelegte Festpreis, kann die Transaktion beim Backtesting zum Festpreis abgeschlossen werden, aber dieser Festpreis ist auf dem tatsächlichen Markt offensichtlich nicht verfügbar.

Backtesting-Falle: Unmögliche Transaktionspreise

Es gibt mehrere Situationen, in denen Preise nicht gehandelt werden können:
Erstens: Im tatsächlichen Handel können Sie grundsätzlich nicht kaufen, wenn der Preis die Obergrenze erreicht, und umgekehrt. Allerdings ist ein Handel im Backtest möglich.

Der zweite Typ: Der Austauschanpassungsmechanismus ist: Preispriorität und Zeitpriorität. Einige Sorten haben oft riesige Aufträge zum Marktpreis. Wenn Sie während des realen Handels einen Kauf- oder Verkaufsauftrag erteilen, müssen Sie warten, bis der Marktpreis steigt, bevor die Transaktion abgeschlossen werden kann, oder sie kann sogar nicht abgeschlossen werden. Während des Backtestings können jedoch ausstehende Kauf- und Verkaufsaufträge ausgeführt werden.

Der dritte Typ: Handelt es sich um eine Arbitragestrategie, dann ist der Backtestinggewinn sehr hoch, weil jedes Mal beim Backtesting davon ausgegangen wird, dass diese Preisunterschiede erfasst wurden. In Wirklichkeit können viele Preisspannen nicht erfasst werden, oder es wird nur ein Teil erfasst. Im Allgemeinen wird der Teil, der für Ihre Richtung ungünstig ist, zuerst ausgeführt, sodass Sie den anderen Teil sofort ausfüllen müssen. Zu diesem Zeitpunkt beträgt der Slippage nicht mehr 1 oder 2 Punkte, und die Arbitragestrategie selbst verdient den Preisunterschied dieser wenigen Punkte. Diese Situation kann im Backtesting nicht simuliert werden. Der tatsächliche Gewinn ist nicht so gut wie der Backtest.

Der vierte Typ: Black-Swan-Ereignis. Wie der rote Kreis in der Abbildung unten zeigt, gibt es beim „schwarzen Schwan“ des Devisenhandels in Schweizer Franken zwar Eröffnungskurse, Höchstkurse, Tiefstkurse und Schlusskurse an der Oberfläche, aber in Wirklichkeit ist der Preis in der Mitte unter den extremen Marktbedingungen des Tages ein Vakuum, eine große Anzahl von Stop-Loss-Orders verursachte Massenpaniken, die Liquidität war null und Transaktionen waren sehr schwierig, aber Stop-Loss-Orders konnten im Backtesting erreicht werden.
img
Abbildung 5-2

Backtesting-Falle: Overfitting

Jedes Mal, wenn ich das Bild unten sehe, denke ich: Hahahaha ... Auf dem Bild unten können Sie erkennen, dass sich ein absurdes Modell, solange es komplex genug ist, perfekt an die Daten anpassen kann.
img
Abbildung 5-3

Beim quantitativen Handel basiert das Backtesting auf historischen Daten, aber die Stichproben historischer Daten sind begrenzt. Wenn die Handelsstrategie zu viele Parameter hat oder die Handelslogik zu kompliziert ist, wird die Handelsstrategie übermäßig an historische Daten angepasst.

Der Modellierungsprozess quantitativer Strategien besteht im Wesentlichen darin, aus einer großen Menge scheinbar zufälliger Daten lokale nicht zufällige Daten zu finden. Ohne die Hilfe statistischer Kenntnisse kann man leicht in die Falle der Überanpassung tappen.

Machen Sie sich also nichts vor. Wenn Sie feststellen, dass die Out-of-Sample-Daten keine gute Leistung erbringen, und es schade finden, das Modell zu verwerfen, oder nicht zugeben wollen, dass Ihr Modell nicht gut ist, und stattdessen mit der Optimierung des Modells anhand der Out-of-Sample-Daten fortfahren, bis diese wieder genauso gut funktionieren, dann wird Ihnen am Ende Ihr hart verdientes Geld geschadet haben.

Backtesting-Falle: Survivor Bias

An der Wall Street gibt es einen beliebten Witz: Angenommen, es gibt 1.000 Affen, die an Investitionen auf dem Markt teilnehmen. Im ersten Jahr werden 500 Affen, die auf dem Markt verlieren, eliminiert. Im zweiten Jahr wurde die Hälfte der Affen erneut eliminiert, so dass noch 250 Affen übrig blieben. Am Ende des dritten Jahres waren noch 125 Affen übrig.
img
Abbildung 5-4

Im neunten Jahr war nur noch ein Affe übrig. Dann blickt man von links nach rechts darauf, und es kommt einem bekannt vor. Als ich schließlich das Cover eines Finanzmagazins sah, fiel mir plötzlich ein: „Oh, ist das nicht Buffett?“

Das ist natürlich nur ein Scherz, aber haben Sie schon einmal darüber nachgedacht, dass von 1.000 Fondsmanagern nach zehn Jahren etwa zehn davon zehn Jahre in Folge eine bessere Performance als der Markt erzielen werden? Dies kann jedoch Zufall und Glück unterliegen und hat nichts mit den Fähigkeiten der Fondsmanager zu tun.

Ich glaube, dass die meisten Anleger von der Backtest-Performance auf der linken Seite des Bildes unten begeistert sein werden. Diese Anlagestrategie hat eine sehr solide Performance gezeigt und es kam praktisch zu keinen nennenswerten Rückgängen.
img
Abbildung 5-5

Warten Sie einen Moment, die tatsächliche Situation im Inneren wird im Bild rechts gezeigt. Es stellt sich heraus, dass die Backtest-Kurve auf der linken Seite einfach die mit der besten Performance unter vielen Backtests ist. Das heißt, im Backtest auf der linken Seite gibt es viele Situationen mit noch schlechterer Performance.

Backtesting-Falle: Einflusskosten

In einer realen Handelsumgebung schwanken die Preise ständig. Wenn Sie eine Handelsmöglichkeit sehen und eine Bestellung aufgeben, hat sich der Preis möglicherweise geändert. Daher ist das Problem des Slippage unvermeidlich, sowohl beim subjektiven als auch beim quantitativen Handel.

Allerdings basiert Backtesting auf statischen Daten und es ist schwierig, eine reale Handelsumgebung zu simulieren. Beispiel: Der Auftragspreis für den Kauf beträgt 1050, der tatsächliche Transaktionspreis kann jedoch 1051 betragen. Für dieses Phänomen gibt es viele Gründe, beispielsweise: Liquiditätsvakuum unter extremen Marktbedingungen, Netzwerkverzögerungen, Software- und Hardwaresysteme, Serverantworten usw.

Backtesting ohne Slippage

img
Abbildung 5-6

Wie in der Abbildung oben zu sehen, handelt es sich hierbei um einen Backtest ohne Slippage. Die Kapitalkurve sieht zwar besser aus, allerdings gibt es einen Unterschied zwischen dem tatsächlichen Transaktionspreis im realen Handel und dem idealen Transaktionspreis des Strategie-Backtests. Um diesen Fehler zu reduzieren, können Sie beim Backtesting der Strategie zwei Slippage-Punkte festlegen, um den Kaufpreis zu erhöhen oder den Verkaufspreis zu senken.

Backtesting mit Slippage

img
Abbildung 5-7

Wenn sich, wie in der obigen Abbildung gezeigt, bei derselben Strategie das Backtest-Ergebnis nach dem Hinzufügen von 2-Jump-Slippage erheblich vom Backtest-Ergebnis ohne Slippage unterscheidet, bedeutet dies, dass diese Strategie verbessert oder durch eine neue ersetzt werden muss. Insbesondere bei Strategien mit einer relativ hohen Handelsfrequenz kann das Hinzufügen eines Slippage von 1 bis 2 Sprüngen während des Backtestings den Backtest näher an die reale Handelsumgebung bringen.

Zusammenfassen

Manche Freunde fragen sich vielleicht: „Da es beim quantitativen Handel so viele Probleme geben kann, wie soll ich dann beweisen, dass meine Strategie gut ist?“ Tatsächlich ist die Antwort sehr einfach. Bevor Sie die Strategie in die Praxis umsetzen, müssen Sie die Transaktion zunächst für einen bestimmten Zeitraum simulieren. Wenn der Transaktionspreis der simulierten Transaktion fast dem Transaktionspreis während des Backtests entspricht, beweist dies, dass es kein Problem mit der Strategie gibt, zumindest gibt es kein Problem mit der Strategielogik.

Für einen erfahrenen Entwickler von Handelssystemen ist Backtesting in jedem Fall ein Muss. Denn dadurch erfahren Sie, ob sich die Wirksamkeit einer Strategieidee in der Transaktionshistorie bestätigen lässt. Doch oftmals sind aus Backtestings keine Rückschlüsse auf die zukünftige Rentabilität möglich. Da es beim Backtesting zu viele Fallstricke gibt, werden Sie es nicht verstehen, wenn Sie nicht Geld ausgeben, um einige Lektionen zu lernen. Und diese Lektionen werden mit echtem Geld gelernt. Ich denke, dass die Lektüre dieses Artikels Ihnen zumindest dabei helfen kann, viele quantitative Umwege und Fallen zu vermeiden.

Hausaufgaben

  1. Was ist Overfitting und wie kann man es vermeiden?
  2. Was sind einige Beispiele für den Survivor Bias im wirklichen Leben?

5.2 So führen Sie quantitatives Trading-Backtesting durch

Zusammenfassung

Die Bedeutung und Wichtigkeit von Backtests stehen außer Zweifel. Bei der Durchführung von quantitativen Backtests sollte versucht werden, die Strategie so weit wie möglich in der realen historischen Umgebung zu belassen. Wenn die Details in der historischen Umgebung ignoriert werden, kann der gesamte quantitative Backtest ungültig sein. In diesem Artikel wird Ihnen erklärt, wie Sie quantitatives Trading-Backtesting durchführen.

Backtesting entspricht der Datenwiedergabe. Es spielt historische K-Line-Daten wieder und simuliert echte Handelsregeln für Kauf und Verkauf und fasst schließlich die Sharpe-Ratio, die maximale Drawdown-Rate, die annualisierte Rendite, die Kapitalkurve und andere Daten innerhalb eines Zeitraums zusammen. Derzeit gibt es viele Softwareprogramme, die Backtests durchführen können, wie etwa Wenhua Finance, das über eine vollständige Produktpalette verfügt, VNPY, das flexibel angepasst werden kann, und so weiter.

Als kommerzielle quantitative Handelssoftware verfügt Inventor Quant über eine leistungsstarke Backtesting-Engine und verwendet ein For-Loop-(Polling-)Backtesting-Framework für vektorisierte Berechnungen, das schneller ist. Darüber hinaus werden die Codes für Backtesting und tatsächlichen Handel vereinheitlicht, wodurch das Dilemma „einfaches Backtesting, schwieriger tatsächlicher Handel“ teilweise gelöst wird.

Einführung in die Backtesting-Schnittstelle

Nehmen wir die Mai Language Strategy von Inventor Quantitative als Beispiel und öffnen die offizielle Website des Inventor Quantitative Trading Tools (www.fmz.com). Klicken Sie auf „Control Center“, „Strategiebibliothek“, „Strategie auswählen“, „Backtest simulieren“ und rufen Sie die folgende Seite auf:
img
Abbildung 5-8

In der Backtest-Konfigurationsoberfläche können Sie es entsprechend Ihren tatsächlichen Anforderungen anpassen. Beispiel: Legen Sie die Backtest-Zeit, den K-Line-Zeitraum und den Datentyp fest (Daten auf Simulationsebene oder Daten auf Echtzeitebene. Im Vergleich dazu ist das Backtesting von Daten auf Simulationsebene schneller, während das Backtesting von Daten auf Echtzeitebene genauer ist). Darüber hinaus können Sie auch die Backtesting-Gebühr, die Kontoeröffnungssumme usw. festlegen.

Klicken Sie auf die Mai Language Trading Library, die erste ist die Registerkarte Trading Settings. Die Mai Language-Strategie im Inventor Quantitative Trading Tool verfügt über zwei Backtest-Ausführungsmethoden, nämlich: Schlusskursmodell und Echtzeitkursmodell. Das Schlusskursmodell bedeutet, dass das Modell erst ausgeführt wird, nachdem die aktuelle K-Linie abgeschlossen ist, und die Transaktion ausgeführt wird, wenn die nächste K-Linie beginnt. Das Echtzeit-Preismodell bedeutet, dass das Modell bei jeder Preisänderung einmal ausgeführt wird und die Transaktion sofort ausgeführt wird, wenn das Handelssignal erstellt wird. Wie unten gezeigt:
img
Abbildung 5-9

Die standardmäßige Eröffnungslotgröße bezieht sich auf die Anzahl der während des Backtestings eröffneten und geschlossenen Positionen, und die maximale Einzeltransaktionsauftragsgröße ist die maximale Anzahl von Eröffnungs- und Schließpositionen, die der Backtesting-Engine in einer einzelnen Transaktion anvertraut werden. Es gibt eine Abweichung zwischen dem tatsächlichen Transaktionspreis und dem voreingestellten Transaktionspreis. Diese Abweichung bewegt sich im Allgemeinen in eine für den Händler ungünstige Richtung, was zu zusätzlichen Verlusten bei der Transaktion führt, sodass Slippage hinzugefügt werden muss. Inländische Rohstoff-Futures fügen im Allgemeinen 1 bis 2 Sprünge oder sogar mehr hinzu, um eine reale Handelsumgebung zu simulieren.

Geben Sie in der Futures-Option den Vertragstyp ein, der einem Backtest unterzogen werden soll, beispielsweise rb000 oder rb888. Die Realoption wird hauptsächlich für den realen Handel verwendet und die Standardeinstellungen können beim Backtesting beibehalten werden. Wenn der automatische Wiederherstellungsfortschritt auf „True“ geklickt wird und die Strategie den Roboter während des Echtzeitbetriebs stoppt, wird beim Neustart des Roboters automatisch die vorherige Signalposition wiederhergestellt, ohne das Signal neu zu berechnen. Die Standardanzahl der Bestellwiederholungsversuche beträgt 20. Wenn eine Bestellung fehlschlägt, versucht das System, die Bestellung erneut aufzugeben. Das Netzwerkabfrageintervall ist das Zeitintervall, in dem der Roboter den Strategiecode ausführt.
img
Abbildung 5-10

Die Spot-Trading-Option ist hauptsächlich für den Handel mit digitalen Währungen gedacht und Sie können die Standardeinstellungen im Backtest beibehalten. Sie können das Volumen einzelner Transaktionen, das Mindesttransaktionsvolumen, die Genauigkeit der Preiswährung, die Genauigkeit der Transaktionsprodukte, Bearbeitungsgebühren, die Synchronisierungszeit des Kontos, das Intervall für Gewinn- und Verluststatistiken usw. festlegen. Darüber hinaus können Sie für einzelne digitale Währungsbörsen auch das Hebelvielfache und andere damit verbundene Einstellungen festlegen.
img
Abbildung 5-11

Strategie-Backtesting

Bevor Sie Backtests durchführen, legen Sie zunächst Ihre Handelsstrategie fest. Hier nehmen wir die Thermostat-Strategie als Beispiel. Diese Strategie wird je nach Marktbedingungen eine Trendstrategie in einem Trendmarkt und eine volatile Strategie in einem volatilen Markt anwenden. Der Quellcode lautet wie folgt (Sie können ihn auch direkt vom Strategy Square der offiziellen Inventor Quantitative-Website herunterladen):
img
Abbildung 5-12
Klicken Sie in der Backtesting-Simulationsschnittstelle nach der Konfiguration der Backtesting-Einstellungen einfach auf die Schaltfläche „Backtesting starten“, und die Backtesting-Ergebnisse werden sofort nach einigen zehn Sekunden angezeigt. Im Backtest-Protokoll werden die Anzahl der Sekunden, die der Backtest dauerte, die Gesamtzahl der Protokolle und die Anzahl der Transaktionen aufgezeichnet. Die Kontoinformationen drucken die endgültigen Performanceergebnisse des Strategie-Backtests aus: durchschnittlicher Gewinn und Verlust, Gewinn und Verlust der Position, Marge, Bearbeitungsgebühren und geschätzte Renditen usw.
img
Abbildung 5-13

In der Spalte „Statusinformationen“ werden der Transaktionstyp, das Positionsvolumen, der Positionspreis, der letzte Preis, der letzte Signaltyp, die höchsten und niedrigsten Preise nach Halten der Position, Aktualisierungsnummer und -zeit sowie Kapitalinformationen aufgezeichnet. Darüber hinaus zeigt das variable Gewinn- und Verlustlabel die detaillierte Kapitalkurve des Kontos sowie häufig verwendete Leistungsindikatoren: Rendite, annualisierte Rendite, Sharpe-Ratio, annualisierte Volatilität und maximale Drawdown-Rate, was grundsätzlich die Bedürfnisse der meisten Benutzer erfüllen kann.

Der wichtigste Leistungsindikator ist dabei die Sharpe-Ratio. Es handelt sich um einen umfassenden Indikator, der sowohl Rendite als auch Risiko berücksichtigt. Außerdem ist er ein wichtiger Referenzindikator für die Bewertung eines Fondsprodukts. Einfach ausgedrückt bedeutet er, wie viel Risiko Sie für jeden verdienten Dollar eingehen. Daher gilt: Je höher die Sharpe-Ratio, desto besser.

Wie der Name schon sagt, ist die annualisierte Volatilität die tägliche Volatilität multipliziert mit der Anzahl der Handelstage pro Jahr. Sie misst das Risiko eines Fonds, stellt aber definitiv nicht das Gesamtrisiko dar. Beispielsweise weist Strategie A eine höhere Volatilität auf, schwankt aber bei guter Rendite nach oben, während Strategie B eine geringere Volatilität aufweist, aber stagniert. Können wir sagen, dass Strategie B besser ist als Strategie A? Wie in der folgenden Abbildung dargestellt, gilt Strategie A:
img
Abbildung 5-14

Schließlich wird in der Spalte „Protokollinformationen“ der Übereinstimmungsstatus jeder Transaktion während des Backtests detailliert aufgezeichnet, einschließlich der genauen Uhrzeit der Transaktion, des Umtauschs, des Kaufs und Verkaufs, der Eröffnungs- und Schließungsarten, des vom Backtest-Motor übereinstimmenden Transaktionspreises, der Transaktionsmenge und gedruckter Informationen usw.
img
Abbildung 5-15

Nach dem Backtesting

Häufig, sogar in den meisten Fällen, werden die Backtesting-Ergebnisse weit von Ihren Erwartungen entfernt sein. Schließlich ist es nicht einfach, eine Strategie zu entwickeln, die langfristig nachhaltige und stabile Gewinne abwirft. Sie erfordert die Fähigkeit, den Markt zu verstehen.

Wenn Ihr Strategie-Backtest zu einem Verlust führt, lassen Sie sich nicht entmutigen, das ist eigentlich normal. Überprüfen Sie zunächst, ob die Strategielogik falsch geschrieben ist, ob extreme Parameter verwendet werden, ob es zu viele Eröffnungs- und Schließbedingungen gibt usw. Bei Bedarf können Sie Ihre Handelsstrategie und Handelsphilosophie auch noch einmal aus einem anderen Blickwinkel betrachten.

Wenn die Backtest-Ergebnisse Ihrer Strategie sehr gut sind, die Kapitalkurve perfekt ist und die Sharpe-Ratio über 1 oder sogar mehr liegt. Seien Sie noch nicht zu glücklich. Wenn Sie auf eine solche Situation stoßen, liegt dies meistens an der Verwendung von Future-Funktionen, Preisdiebstahl, Überanpassung oder dem Versäumnis, Slippage festzulegen usw. Sie können diese Probleme mithilfe von Out-of-Sample-Daten und simuliertem realen Handel beseitigen.

Zusammenfassen

Das Obige ist eine Einführung in den gesamten Prozess des Backtestings der gesamten Handelsstrategie, von dem man sagen kann, dass er auf jedes Detail zugeschnitten ist. Es ist zu beachten, dass das Backtesting historischer Daten letztendlich eine ideale Umgebung darstellt, in der alle Risiken bekannt sind. Der beste Zeitpunkt für einen Backtest der Strategie ist daher eine Bullen- oder Bärenmarktphase. Dabei sollte die Anzahl der effektiven Transaktionen nicht unter 100 liegen, um einen partiellen Survivor Bias zu vermeiden.

Der Markt verändert und entwickelt sich ständig weiter. Eine Strategie, die im historischen Backtesting gut abschneidet, muss nicht unbedingt auch in Zukunft gut abschneiden. Die Strategie kann nicht nur bekannte Risiken im Backtesting-Umfeld bewältigen, sondern muss auch unbekannte Risiken in der Zukunft bewältigen. Daher ist es äußerst wichtig, die Risikoresistenz und Universalität der Strategie zu erhöhen.

Hausaufgaben

  1. Versuchen Sie, die Strategie in diesem Abschnitt zu kopieren und den Leistungsbericht zu testen
  2. Versuchen Sie, die Strategien in diesem Abschnitt auf der Grundlage Ihrer eigenen Handelserfahrung zu verbessern und zu optimieren

5.3 So verstehen Sie den Performancebericht zum Strategie-Backtesting

Zusammenfassung

Wenn unser Strategie-Backtest abgeschlossen ist, gibt das Inventor Quantitative Trading Tool verschiedene Leistungsindikatoren und Gewinnkurvendiagramme auf der Webseite aus. Aber vielleicht weil wir mit der Interpretation und dem Inhalt dieser Indikatoren nicht vertraut sind, können wir nicht genau beurteilen, ob eine Strategie gut oder schlecht ist. Dieser Artikel beginnt mit den wichtigsten Indikatorkonzepten, um jedem zu helfen, den Leistungsbericht zum Strategie-Backtesting zu verstehen und die Vor- und Nachteile der Strategie zu unterscheiden. Natürlich verfügen die meisten quantitativen Handelstools über diese Art von Backtest-Leistungsberichten, und der Inhalt ist ähnlich. Sobald Sie den Inhalt dieses Abschnitts gelernt haben, ist er auch anwendbar, wenn Sie zu einem anderen Handelstool wechseln.

Objektive und vollständige Bewertung

Unabhängig davon, ob es sich um die Aufzeichnung realer Handelsdaten oder den Backtesting-Bericht anhand historischer Daten handelt, wird die Qualität des Modells anhand von Statistiken zu den Handelsbedingungen bewertet.

Die entscheidende Frage ist: Welche statistischen Daten werden für einen Vergleich benötigt? Schauen wir uns ein Beispiel an: Können wir, wie in der folgenden Abbildung gezeigt, unter der Annahme, dass die folgenden beiden Datensätze im Test im selben Zeitraum erhalten wurden, bestimmen, welches Modell die bessere Leistung erbringt?
img
Abbildung 5-16

Die Antwort ist nein. Die Einseitigkeit des Bewertungssystems wird das quantitative Handelssystem in eine Sackgasse führen.

Das Handelssystem muss historische Backtests bestehen, bevor es eingesetzt werden kann. Ein Handelssystem, das historische Backtests nicht besteht, wird im tatsächlichen Handel auf lange Sicht wahrscheinlich keine Gewinne erzielen. Historisches Backtesting ist eine notwendige Voraussetzung, um ein Handelssystem in den realen Handel zu bringen.

Ein Handelssystem, das den historischen Backtest besteht, ist nicht unbedingt ein gutes Handelssystem. Wenn es den historischen Backtest nicht besteht, ist es definitiv kein gutes Handelssystem. Generell gilt es, Leistungsberichte unter den Gesichtspunkten Stabilität, Nachhaltigkeit und Erfüllung der Erwartungen zu analysieren.
img
Abbildung 5-17

Wie in der Abbildung oben gezeigt, ist jedem, der sich mit quantitativem Handel beschäftigt hat, wahrscheinlich diese langen und undurchsichtigen Backtest-Performancedatenbegriffe aufgefallen. Viele dieser Performancedaten sind sogar widersprüchlich. Viele quantitative Anfänger sind sich nicht sicher, auf welche Daten sie sich konzentrieren sollen.

Die Begriffe der Leistungsindikatoren im obigen Bild können im Allgemeinen in mehrere Kategorien unterteilt werden: Leistungskennzahlen, Zyklusanalyse, verschiedene Kurven, Analyse extremer Handelsaktivitäten usw. Auch aus der Perspektive von Fondsprodukten handelt es sich bei den meisten davon lediglich um die Anzeige von Backtest-Berechnungsergebnissen, die kaum eine praktische Anwendungsbedeutung haben, wie z. B.: Kontokapitalanforderung, Halteeinkommen, Vertrauensgrenze usw. Möglicherweise müssen Sie sich sogar nur auf das Wichtige konzentrieren. Nachfolgend werde ich die wichtigsten unter den Backtest-Leistungsindikatoren auswählen und detailliert erläutern.

Wichtige Leistungsindikatoren

Maximaler Drawdown

Die Formel zur Berechnung des maximalen Drawdowns ist wie oben. Für das Modell ist der maximale Drawdown ein sehr wichtiger Risikoindikator, der sogar noch wichtiger ist als die Volatilität. Der im Backtest festgestellte maximale Drawdown stellt in gewissem Sinne auch die schlimmstmögliche Situation dar, die nach dem Eröffnen einer Position eintreten kann.

Mathematisch gesehen müssen die verbleibenden Fonds bei einem Kapitalverlust von 20 % einen Gewinn von 25 % erzielen, um die ursprüngliche Kapitalskala wiederherzustellen. Beträgt der Verlust 50 %, müssen die verbleibenden Fonds einen Gewinn von 100 % erzielen, um die Kapitalskala vor dem Verlust wiederherzustellen.

Dann besteht kein Zweifel daran, dass die Möglichkeit einer Rückkehr auf das ursprüngliche Kapitalniveau umso geringer und die Schwierigkeiten umso größer sind, je größer der Verlust ist. Der Spielraum für Gewinne nach oben ist für Fonds unbegrenzt, der Spielraum für Verluste nach unten hingegen ist begrenzt und die Möglichkeit einer Talfahrt größer.

Unabhängig von der Definition entsprechen zumindest diese beiden Punkte dem gegenwärtigen Mainstream-Verständnis:

  1. Je kleiner das maximale Retracement, desto besser;
  2. Der Drawdown ist direkt proportional zum Risiko. Je größer der Drawdown, desto größer das Risiko, und je kleiner der Drawdown, desto kleiner das Risiko.

Bereinigtes Rendite-Risiko-Verhältnis (RAROC)

Viele Leute sind mit diesem Konzept nicht vertraut. Tatsächlich ist das angepasste Rendite-Risiko-Verhältnis die Wasserscheide zwischen Profispielern und Amateurspielern. Dies ist auch ein sehr gutes Bewertungsinstrument für Investmentbanken, große Fonds und professionelle Händler und ein gängiger Bewertungsstandard im globalen Finanzbereich.

Bei Investitionen sollten wir nicht nur auf die Gewinne achten, sondern auch bedenken, welches Risiko eingegangen wurde, um diese Gewinne zu erzielen. Im Allgemeinen sind Risiko und Rendite eines Vermögenswerts proportional. Dies bedeutet, dass sich hinter dem Erfolg eines Modells, das in puncto Rendite führend ist und rasche Fortschritte macht, möglicherweise Risiken verbergen, die noch nicht ausgebrochen sind.

Beispielsweise können die Öffnungs- und Schließbedingungen oder die Erhöhung und Verringerung von Positionen im Modell bei steigendem Markt höhere Renditen erzielen, aber sobald ein Rückgang eintritt, vervielfachen sich die Verluste, was zu enormen Verlusten führt. Hinzu kommt, dass Anstiege und Rückgänge erhebliche asymmetrische Auswirkungen haben.

Viele erfahrene quantitative Trader sind bereit, einen Teil der Rendite zu opfern, um das Risiko zu reduzieren. In diesem Fall sind risikobereinigte Renditen als Referenz wertvoller. Daher ist beim Backtesting ein Modell mit hohem Risiko und hoher Volatilität nicht unbedingt ein gutes Modell, selbst wenn es hohe Renditen erzielt.

Die Einlagen sind sicher, die jährliche Rendite beträgt jedoch lediglich 2 %. Der Markt kann Ihnen in wenigen Tagen einen Gewinn von 50 % bescheren, aber auch einen Verlust von 50 %. Nach so vielen Jahren des Handels habe ich ein sehr wichtiges Konzept: Stellen Sie sich den Risiken. Risiken und Erträge existieren nie isoliert voneinander. Der Handel ist wie das Angeln aufs Meer hinaus. Es ist unmöglich, dass Sie angeln, aber die Risiken des Meeres nicht tragen möchten. Zu konservativ und zu radikal zu sein, sind eigentlich zwei Extreme. Gleiches gilt für die Gestaltung von Strategiemodellen.

Anzahl der Transaktionen

Sie können nicht die Leistung einiger Backtests über mehrere Monate hinweg nutzen, um das Modell zu beweisen. Wenn zu wenige Backtest-Daten vorhanden sind, können die Backtest-Ergebnisse zufällig sein, entweder sind die Parameter zufällig oder die Marktbedingungen sind zufällig usw. Darüber hinaus können durch die Nutzung längerer historischer Daten auch einige Überlebensverzerrungen herausgefiltert werden.

Im Allgemeinen sollten die Daten für inländische Aktien und Rohstoffe über einen Zeitraum von mehr als fünf Jahren zurückgetestet werden, und für neu gelistete Produkte sind mindestens drei Jahre Backtests erforderlich. Für früher am internationalen Markt notierte Produkte bzw. Rohstoffe wie Gold und den US-Dollarindex sollte mindestens ein Bullen-Bear-Zyklus zurückgetestet werden, der in der Regel mehr als 10 bis 15 Jahre betragen sollte. Damit die Backtesting-Ergebnisse zuverlässig genug sind, muss der Backtesting-Zeitraum lang genug sein. Bei Produkten, die diese Anforderung nicht erfüllen, sollte der R-Wert beim Eröffnen einer Position entsprechend gewichtet werden, um die Risikoexposition proaktiv zu reduzieren.

Durchschnittlicher Gewinn

Der Indikator „Durchschnittsgewinn“ erscheint alltäglich, ist aber tatsächlich sehr wichtig. Auch die Berechnung ist ganz einfach: Nettogewinn / Anzahl der Transaktionen. Es ist keine Übertreibung, wenn man sagt, dass es sich um einen Spiegel handelt, der jene Backtest-Leistungen erkennen kann, die an der Oberfläche glänzend erscheinen. Wie in der folgenden Abbildung dargestellt, ist es abnormal, wenn mit dieser Strategie Geld verdient werden kann:
img
Abbildung 5-18
img
Abbildung 5-19

Wenn Sie sich die Backtest-Performance dieser Strategie ansehen, fragen Sie sich vielleicht: Wäre es nicht schade, eine so nahezu perfekte Strategie nicht zu verwenden? Warten Sie eine Minute! Bitte schauen Sie sich den durchschnittlichen Gewinn im zweiten Bild genau an, er beträgt nur 17, was bedeutet, dass der durchschnittliche Gewinn aus jeder Transaktion nur 17 Yuan beträgt.

Nehmen wir als Beispiel die Mehrheit der Futures-Marktprodukte mit einem Sprung von 10 Yuan. Jeder, der schon einmal wirklich gehandelt hat, wird verstehen, was das bedeutet. Im realen Handel sind neben einem Sprung sogar zehn oder acht Sprünge möglich. Zwei- und Dreisprünge sind üblich.

Gewinnrate

Die Gewinnrate steht nie isoliert betrachtet im Vordergrund, denn es ist unrealistisch, über das Problem nur auf Grundlage der Gewinnrate zu sprechen. Wenn Sie das richtige Modell auf dem richtigen Markt verwenden, ist eine Gewinnquote von 80 % keine Überraschung, aber das ist bedeutungslos.

Der Preis steigt oder fällt, ansonsten bleibt er gleich. Wenn die Zeitspanne lang genug ist, werden Sie feststellen, dass die Wahrscheinlichkeit für steigende und fallende Preise jeweils 50 % beträgt. Unabhängig davon, welche Art von Strategiemodell Sie verwenden, sollten Sie vorsichtig sein, wenn die Gewinnrate beim Backtesting 50 % übersteigt. Aus mathematischer und physikalischer Sicht ist dies unmöglich.

Detaillierte Eigenkapitalkurve

Wie das Sprichwort sagt: Ein Bild sagt mehr als tausend Worte. Die detaillierte Eigenkapitalkurve beginnt mit dem Zeitpunkt des ersten Eintrags und endet mit dem Zeitpunkt des letzten Balkens des Diagramms. Es handelt sich um eine Echtzeit-Equity-Kurve für den Handel. Sie erfolgt in Echtzeit, da sie die variablen Gewinne und Verluste jedes Balkens berücksichtigt.
img
Abbildung 5-20

Die detaillierte Eigenkapitalkurve spiegelt die Änderungen des Nettowerts des Kontos wider und ist das intuitivste Bewertungstool. Sie ermöglicht es Ihnen, sich auf einen Blick einen groben Überblick über den Verlust- und Gewinnstatus der Strategie sowie die Volatilität/Glätte von Gewinn und Verlust zu verschaffen. Dieses Bild des Strategie-Performance-Berichts sagt jedoch nicht nur mehr als tausend Worte, sondern verwirrt auch Millionen Gläubige. Schauen Sie sich außerdem niemals die Eigenkapitalkurve zum Schluss an.

Annualisierte Rendite

Die annualisierte Rendite ist ein kontroverser Indikator. Manche Leute meinen, sie sei für Laien leicht zu erkennen und habe keinen Referenzwert. Zunächst einmal ist die Erzielung eines Gewinnes Voraussetzung für die Auswahl des Modells, d. h. die Modellrendite selbst muss einen positiven Erwartungswert aufweisen.
img
Abbildung 5-21

100 % Rendite kann man unzählige Male haben, aber man kann sich höchstens eine 100 % Rendite leisten. Die Lücke zwischen der annualisierten Rendite und der tatsächlichen Rendite (Rendite über die Haltedauer) kann sehr groß sein, manchmal sogar größer, als wir uns vorstellen können.

Zusammenfassen

Abschließend muss noch eines erklärt werden. Eine perfekte Backtesting-Performance gibt es nicht. Neben Problemen mit den Testdaten selbst können die Benutzer des Modells mit weiteren Fallstricken konfrontiert werden. Von der Parameteroptimierung bis zum Transaktionsdesign kann alles vom tatsächlichen Betrieb abweichen.

Noch wichtiger ist, dass emotionale Probleme auf der Ausführungsebene der entscheidende Faktor bei der Umsetzung des Modells in die Produktion sind. Realer Handel kann nicht in einer Umgebung mit „emotionalem Vakuum“ betrieben werden. Das Fat-Tail-Phänomen ist etwas, worauf jeder programmatische Händler immer achten muss.

Hausaufgaben

  1. Listen Sie die Leistungsindikatoren auf, die Ihrer Meinung nach beim Backtesting am wichtigsten sind
  2. Versuchen Sie, den Sharpe-Ratio-Indikator zu berechnen

5.4 Warum Out-of-Sample-Tests erforderlich sind

Zusammenfassung

Im vorherigen Abschnitt haben wir uns auf mehrere wichtige Leistungsindikatoren konzentriert, um Ihnen das Verständnis des Leistungsberichts zum Strategie-Backtesting beizubringen. Tatsächlich ist es nicht das Schwierigste, eine Strategie zu entwickeln, mit der man durch Backtesting Geld verdienen kann. Schwieriger ist es, zu beurteilen, ob diese Strategie im realen Handel weiterhin wirksam ist. Deshalb erkläre ich Ihnen heute das Out-of-Sample-Testing und seine Bedeutung.

Backtesting ist nicht dasselbe wie echter Handel

Viele quantitative Anfänger lassen sich aufgrund eines scheinbar guten Performanceberichts oder einer Kapitalkurve aus einem Backtest leicht von ihren Handelsstrategien überzeugen und sind bereit, ihr Talent auf dem Markt unter Beweis zu stellen. Zugegebenermaßen kann dieses Backtest-Ergebnis perfekt zu einem bestimmten von ihnen beobachteten Marktzustand passen, aber wenn diese Handelsstrategie über einen längeren Zeitraum hinweg tatsächlich angewendet wird, werden sie feststellen, dass diese Strategie nicht wirklich effektiv ist.

Ich habe viele Handelsstrategien gesehen, die bei Backtests eine Erfolgsquote von über 50 % aufweisen. Bei einer so hohen Gewinnquote kann das Gewinn- und Verlustverhältnis immer noch über 1:1 liegen. Werden diese Strategien jedoch einmal in die Praxis umgesetzt, führen sie grundsätzlich zu Verlusten. Die Gründe für Verluste sind vielfältig. Einer davon ist, dass beim Backtesting zu wenige Datenstichproben vorliegen, was zu einer Datenverzerrung führt.

Allerdings ist der Handel eine so komplizierte Angelegenheit. Rückblickend ist alles sehr klar, aber wenn wir an den Anfang zurückgehen, sind wir immer noch ratlos. Hier geht es um das Grundproblem der Quantifizierung: die Beschränkungen historischer Daten. Wenn Sie daher zum Testen Ihrer Handelsstrategie nur begrenzte historische Daten verwenden, wird es schwierig sein, das Problem des „Fahrens mit Blick in den Rückspiegel“ zu vermeiden.

Was ist Out-of-Sample-Testing?

Wie können wir begrenzte Daten am besten nutzen, um Handelsstrategien wissenschaftlich zu testen, wenn nur begrenzte Daten zur Verfügung stehen? Die Antwort ist Out-of-Sample-Testing. Beim Backtesting werden historische Daten entsprechend der zeitlichen Abfolge in zwei Abschnitte unterteilt. Der erste Datenabschnitt wird zur Strategieoptimierung verwendet und als Trainingssatz bezeichnet, während der zweite Datenabschnitt für Out-of-Sample-Tests verwendet wird und als Testsatz bezeichnet wird.

Wenn Ihre Strategie immer effektiv ist, optimieren Sie die besten Parameter in den Trainingsdaten und wenden Sie diese Parameter für das Backtesting auf die Testdaten an. Im Idealfall sollten die Backtest-Ergebnisse denen des Trainingssatzes ähneln oder in einem vernünftigen Bereich liegen. Dies zeigt, dass diese Strategie relativ effektiv ist.

Wenn eine Strategie jedoch im Testsatz gute Ergebnisse erzielt, im restlichen Testsatz jedoch schlechte Ergebnisse oder große Abweichungen aufweist und das Gleiche auch für andere Parameter gilt, kann es sein, dass die Strategie einen Datenanpassungsbias aufweist.

Angenommen, Sie möchten beispielsweise einen Backtest für Rohstoff-Futures auf Betonstahl durchführen und es liegen Daten für etwa 10 Jahre (2009–2019) zu Betonstahl vor. Dann können Sie die Daten von 2009 bis 2015 als Trainingsdatensatz und die Daten von 2015 bis 2019 als Testdatensatz verwenden. Beispielsweise sind für eine Strategie mit doppeltem gleitendem Durchschnitt die besten Parametergruppen im Trainingssatz (gleitender Durchschnitt für 15 Perioden und gleitender Durchschnitt für 90 Perioden), (gleitender Durchschnitt für 5 Perioden und gleitender Durchschnitt für 50 Perioden), (gleitender Durchschnitt für 10 Perioden und gleitender Durchschnitt für 100 Perioden)... Anschließend fügen wir diese Parametergruppen in den Testsatz für das Backtesting ein und vergleichen die Backtest-Leistungsberichte und Kapitalkurven des Trainingssatzes und des Testsatzes, um zu bestimmen, ob ihre Unterschiede innerhalb eines angemessenen Bereichs liegen.

Wenn Sie keine Out-of-Sample-Tests durchführen und direkt Daten von 2009 bis 2019 verwenden, um die Strategie zu testen, können die Ergebnisse aufgrund der passenden historischen Daten ein guter Backtest-Leistungsbericht und eine gute Kapitalkurve sein. Solche Backtest-Ergebnisse sind jedoch für den tatsächlichen Handel von geringer Bedeutung und haben keine richtungsweisende Funktion, insbesondere bei Strategien mit mehr Parametern.

Erweiterte Out-of-Sample-Tests

Neben der Aufteilung der historischen Daten in zwei Teile und der Durchführung von In-Sample- und Out-of-Sample-Backtesting gibt es tatsächlich eine bessere Option, nämlich die Methoden des rekursiven Backtestings und des Cross-Backtestings. Insbesondere wenn nur wenige historische Daten vorliegen, wie etwa bei Rohöl-Futures und Apfel-Futures, die erst in den letzten Jahren gelistet wurden, können diese beiden Methoden verwendet werden, um das Modell anhand begrenzter Daten umfassend zu testen.

Die Grundprinzipien der Recursive Testing: Das Modell wird mit einem längeren Vorlauf und einem relativ kürzeren Nachlauf trainiert. Die Datenfenster werden dann ständig nach hinten verschoben und die Schritte für das Training und die Prüfung wiederholt.
Trainingsdaten: 2000 bis 2001, Testdaten: 2002;
Trainingsdaten: 2001 bis 2002, Testdaten: 2003;
Trainingsdaten: 2002 bis 2003, Testdaten: 2004;
Trainingsdaten: 2003 bis 2004, Testdaten: 2005;
Trainingsdaten: 2004 bis 2005, Testdaten: 2006;
...und so weiter...
Schließlich werden die Testergebnisse aus den Jahren 2002, 2003, 2004, 2005, 2006 usw. statistisch erfasst, um die Strategie zu bewerten.

Das Prinzip der iterativen Prüfung lässt sich intuitiv erklären wie in der folgenden Abbildung:
img
Abbildung 5-22

In der obigen Abbildung werden die beiden Methoden der Rezeptionstests dargestellt.

Die erste Art: Bei jeder Prüfung sind die Testdaten kürzer und die Anzahl der Tests größer.
Zweite Art: Bei jeder Prüfung sind die Testdaten länger und die Anzahl der Tests weniger.

In praktischen Anwendungen kann die Länge der Testdaten geändert und mehrere Tests durchgeführt werden, um die Stabilität des Modells im Umgang mit nichtstationären Daten zu bestimmen. Das Grundprinzip der Kreuzvalidierung besteht darin, alle Daten in N gleiche Teile aufzuteilen, jedes Mal N-1 Teile zum Trainieren und die verbleibenden Teile zum Testen zu verwenden.

In vier Abschnitte werden die Jahre 2000 bis 2003 nach Jahr unterteilt. Die Vorgehensweise bei dieser Überprüfung lautet wie folgt:

  1. Trainingsdaten: 2001-2003, Testdaten: 2000;
  2. Trainingsdaten: 2000-2002 und Testdaten: 2003
  3. Trainingsdaten: 2000, 2001 und 2003, Testdaten: 2002
  4. Trainingsdaten: 2000, 2002 und 2003, Testdaten: 2001
    img
    Abbildung 5-23

Wie in der obigen Abbildung gezeigt: Der größte Vorteil der Cross-Check ist die Nutzung von begrenzten Daten, wobei jede Trainingsdaten auch Testdaten sind. Aber es gibt auch deutliche Nachteile, wenn die Cross-Check auf die Prüfung von Strategie-Modellen angewendet wird:

  1. Wenn die Preisdaten nicht gleichmäßig sind, sind die Modelltestergebnisse oft unzuverlässig. Beispielsweise wird mit den Daten von 2008 trainiert und mit den Daten von 2005 getestet. Es ist sehr wahrscheinlich, dass sich das Marktumfeld von 2008 im Vergleich zu 2005 stark verändert hat, so dass die Modelltestergebnisse unzuverlässig sind.
  2. Ähnlich wie in Absatz 1 ist es nicht logisch, bei einer Kreuzprüfung ein neues Daten-Training-Modell mit einem älteren Daten-Test-Modell zu verwenden.
    Außerdem gibt es bei der Überprüfung von symmetrischen Strategie-Modellen Probleme mit Datenüberschneidungen, sowohl bei der Rezeption als auch bei der Kreuzung.

Bei der Entwicklung von Trading-Strategie-Modellen basieren die meisten technischen Indikatoren auf historischen Daten einer bestimmten Länge. Wenn beispielsweise ein Trendindikator verwendet wird, um die historischen Daten der letzten 50 Tage zu berechnen, und der Indikator am nächsten Handelstag aus den Daten der 50 Tage vor diesem Handelstag besteht, sind die Daten der beiden Indikatoren 49 Tage lang identisch, was dazu führt, dass sich der Indikator an zwei benachbarten Tagen kaum verändert.
img
Abbildung 5-24

Überlappende Daten führen zu folgenden Folgen:

  1. Langsame Veränderungen der Ergebnisse der Modellvorhersagen führen zu langsamer Veränderungen der Haltungen, was wir als Verzögerung der Indikatoren bezeichnen.
  2. Einige statistische Werte sind für die Modellresultate nicht verfügbar, was die Ergebnisse einiger statistischer Prüfungen aufgrund der Sequenzbezogenheit, die durch die Wiederholung der Daten verursacht wird, unzuverlässig macht.

Eine gute Handelsstrategie sollte auch in Zukunft profitabel sein. Neben der objektiven Prüfung von Handelsstrategien können Out-of-Sample-Tests quantitativen Händlern auch effizient Zeit sparen. In den meisten Fällen ist es sehr gefährlich, die optimalen Parameter aller Proben direkt zu übernehmen und im tatsächlichen Kampf einzusetzen.

Diese Fehler können herausgefunden werden, wenn alle historischen Daten vor dem Zeitpunkt der Parameteroptimierung unterschieden werden, in In- und Out-of-Sample-Daten unterteilt, die zuerst mit In-Sample-Daten für die Parameteroptimierung und dann mit Out-of-Sample-Daten für die Testung verwendet werden. Gleichzeitig kann geprüft werden, ob die optimierte Strategie für den zukünftigen Markt geeignet ist.

Zusammenfassen

Wie beim Handel haben wir nie die Möglichkeit, durch die Zeit zu gehen und eine richtige Entscheidung für uns selbst zu treffen, ohne auch nur einen einzigen Fehler zu machen. Wenn es die Hand Gottes oder die Fähigkeit gibt, aus der Zukunft zurückzukehren, dann kann man auch ohne Tests direkt online handeln. Und ich, ein Mensch, muss unsere Strategie in den historischen Daten überprüfen.

Doch selbst bei einer riesigen Menge historischer Daten erscheinen diese angesichts der gewaltigen, endlosen und unvorhersehbaren Zukunft äußerst knapp. Deshalb wird ein Handelssystem, das von Grund auf auf Grundlage der Geschichte entwickelt wurde, mit der Zeit untergehen. Denn die Geschichte kann die Zukunft nicht erschöpfen. Daher muss ein vollständiges Handelssystem mit positiven Erwartungen durch seine internen Prinzipien und seine Logik unterstützt werden.

„Vertrauen ist gut, Kontrolle ist besser“ – Präsident Reagan

Hausaufgaben

  1. Welche Phänomene im wirklichen Leben sind Survivor Bias?
  2. Verwenden Sie die quantitativen Tools des Erfinders, um sowohl In-Sample als auch Out-Sample Backtests durchzuführen und ihre Unterschiede zu vergleichen.

5.5 Handelsstrategieoptimierung und -optimierung

Zusammenfassung

Das Wesen der Handelsstrategie besteht in der Verallgemeinerung und Schlussfolgerung von Marktregeln. Je tiefer Ihr Verständnis des Marktes und je besser Ihre Fähigkeit, Ideen in Code auszudrücken, desto näher wird Ihre Strategie am Markt sein. In diesem Abschnitt erfahren Sie weiterhin, wie Sie Ihre Handelsstrategien optimieren und die letzten Vorbereitungen für Ihren eigentlichen Handel treffen.

Ein- und Ausstieg optimieren

Die meisten Trendverfolgungsstrategien verwenden Durchbrüche oder technische Indikatoren, um Markttrends zu erfassen. Normalerweise sind die Ein- und Ausstiegsmethoden dieser Signale weniger zeitnah. Wenn die Strategie ein Schlusskursmodell verwendet, liegt der Einstiegspunkt beim Eröffnungskurs der nächsten K-Linie. Daher wird der beste Einstiegszeitpunkt zum Durchbrechen dieser K-Linie verpasst und ein großer Teil des Gewinns wird verloren gehen.

Daher besteht ein effektiver Weg darin, bei der Strategieumsetzung günstigere Echtzeitpreise zu verwenden und sofort Aufträge zu erteilen, wenn Signale erscheinen. Auf diese Weise können Sie, sobald das Signal etabliert ist, sofort in den Markt einsteigen und verpassen keine Gewinne. Allerdings sind nicht alle Echtzeitkurse besser als Schlusskurse. Dies hängt von der Handelsstrategie ab. Bei einigen Strategien mit einfacher Handelslogik ist der Unterschied zwischen dem Echtzeitpreis und dem Schlusskurs relativ gering. Eine detailliertere Handelslogik kann das Schlusskursmodell allerdings nicht verarbeiten, daher ist die Verwendung des Echtzeitkurses erforderlich.

Parameteroptimierung

Durch Parameteroptimierung können quantitative Handelsstrategien näher an historische Daten herangeführt und eine bessere Backtesting-Leistung erzielt werden. Beispiel: Wir verwenden bei Bewehrungsstahl-Kontrakten eine Strategie mit doppeltem gleitendem Durchschnitt, aber welche beiden gleitenden Durchschnitte sind die besten? Anschließend können Sie die Parameteroptimierungsfunktion im Inventor Quant-Tool verwenden, um automatisch die beiden besten gleitenden Durchschnittsparameter zu finden.

Wie in der folgenden Abbildung gezeigt, handelt es sich am Beispiel der Strategie des doppelten gleitenden Durchschnitts selbst um eine mehrdimensionale Instanz. Wenn wir die Backtest-Ergebnisse jedes Parameters als Punkt darstellen (siehe Abbildung unten), dann ist jeder Parameter eine Dimension dieser Strategie, und letztendlich bilden alle Parameterkombinationen diese komplexe mehrdimensionale Oberflächenform (wie ein Berg).
img
Abbildung 5-25

Wie oben gezeigt, handelt es sich hierbei um ein Leistungsdiagramm einer Strategie mit zwei Parametern. Wenn sich die Parameter ändern, ändert sich auch die endgültige Rendite erheblich, und die Oberfläche wird stark verzerrt, wodurch „Spitzen“ und „Täler“ unterschiedlicher Höhe entstehen. Im Regelfall ergibt sich als erstes im Optimierungsergebnis der höchste Punkt der gesamten Fläche. Aus der Perspektive der Parametersensitivität, Objektivität usw. ist dieses Ergebnis jedoch manchmal möglicherweise nicht das „optimale“. Denn der Markt verändert sich ständig.

Daher besteht das wichtige Prinzip der Parameteroptimierung darin, Parameterplateaus statt Parameterinseln zu wählen. Das sogenannte Parameterplateau bezieht sich auf die Existenz eines größeren Parameterbereichs, innerhalb dessen die Strategie eine gute Performance erzielen kann. Im Allgemeinen bildet es eine Normalverteilung mit dem Zentrum des Plateaus. Die sogenannte Parameterinsel bedeutet, dass die Strategie nur dann eine gute Leistung erbringt, wenn der Parameterwert innerhalb eines sehr kleinen Bereichs liegt. Wenn der Parameter von diesem Wert abweicht, verschlechtert sich die Leistung der Strategie erheblich.
img
Abbildung 5-26

Parameter Plateau

Am Beispiel der obigen Abbildung sollte eine gute Strategieparameterverteilung ein Parameterplateau aufweisen. Auch wenn die Parametereinstellungen abweichen, kann die Rentabilität der Strategie weiterhin gewährleistet werden. Solche Parameter weisen eine hohe Stabilität auf, was die Strategie universeller gestalten kann, wenn im künftigen tatsächlichen Geschäftsbetrieb unterschiedliche Marktbedingungen herrschen.
img
Abbildung 5-27

Parameterinseln

Nehmen wir die obige Abbildung als Beispiel: Wenn die Backtest-Performance Parameterinseln zeigt und sich die Parameter leicht verschieben, wird die Rentabilität der Strategie stark reduziert. Aufgrund ihrer mangelnden Universalität sind solche Parameter bei tatsächlichen Transaktionen oft schwer mit den sich ständig ändernden Marktbedingungen zurechtzukommen.

Wenn daher die Leistung nahegelegener Parameter viel schlechter ist als die des optimalen Parameters, kann dieser optimale Parameter das Ergebnis einer Überanpassung sein, die mathematisch als einzelne Lösung und nicht als die gesuchte Maximallösung betrachtet werden kann. Aus mathematischer Sicht sind Singularitäten instabil. Unter unsicheren Marktbedingungen können sich die optimalen Parameter zu den schlechtesten Parametern entwickeln, sobald sich die Markteigenschaften ändern.

Filter hinzufügen

Viele Trendstrategien können den Trend gut erfassen und bei Markttrends hohe Renditen erzielen. Auf lange Sicht ist das Endergebnis jedoch entweder ein kleiner Gewinn oder ein Verlust. Wo liegt das Problem?

Der Grund dafür ist, dass die Strategie wiederholt in einem volatilen Markt handelt und die meisten volatilen Trades Verluste oder kleine Gewinne sind. Der Markt ist etwa 70 % der Zeit volatiler. Langfristige kontinuierliche kleine Verluste führen zum Verlust aller vorherigen Gewinne.
img
Abbildung 5-28

Die Lösung besteht darin, Filter hinzuzufügen. Es gibt viele Arten von Filtern auf dem Markt, darunter Gewinn- und Verlustfilter, Risikowertfilter, Trendmusterfilter, technische Indikatorenfilter usw. Beispielsweise kann das Hinzufügen eines gleitenden Durchschnittsfilters mit großem Zeitraum die Anzahl der Transaktionen in einem volatilen Markt reduzieren und die Hälfte der fehlerhaften Transaktionen herausfiltern.

Glättung der Finanzierungskurve

Die Quantifizierung verfolgt eine stabile und nachhaltige Gewinnmethode, und das ist es, was die meisten Händler sehen wollen. Niemand möchte dieses Jahr 50 % verdienen, nächstes Jahr 30 % verlieren und im Jahr darauf 40 % verdienen. Sie würden lieber eine jährliche Rendite von 20 % akzeptieren, aber das kann länger als zehn Jahre anhalten. Dies ist, was quantitatives Investieren leisten kann. Denn quantitatives Investieren ist ein Handelsmodell mit nachhaltiger Performance.

Um eine glatte Kapitalkurve zu erreichen, ist es notwendig, ein Anlageportfolio mit mehreren Strategien, mehreren Varianten, mehreren Zyklen und mehreren Parametern aufzubauen. Aber mehr ist nicht unbedingt besser. Hier gibt es einen abnehmenden Grenzeffekt. Je mehr Sie zu Beginn zum Portfolio hinzufügen, desto besser ist die Diversifizierung. Wenn die Strategie jedoch eine bestimmte Größenordnung erreicht, beginnt der Effekt abnehmender Erträge der Diversifizierung zu erscheinen. Der Vorteil einer Kombination liegt in der Diversifikation. Zwar ist die Gesamtrendite nicht die höchste, aber die stabilste.

Gib die Suche nach dem Heiligen Gral auf

Ob der quantitative Handel den Heiligen Gral finden kann, ist eine Frage, die sich viele Händler stellen. Einige Händler stürzen sich nach einem einfachen Backtest sogar mit ihren sogenannten perfekten Strategien auf den Markt. Ich hoffe, jeden Kampf zu gewinnen und ein professioneller Quant zu werden, der alle Hindernisse überwinden kann.

Aber gibt es einen Heiligen Gral? Es ist eigentlich ganz einfach: Die Antwort lautet nein. Tatsächlich ist es nicht schwer zu verstehen. Wenn dieser Markt wirklich Regeln hat, dann werden Menschen mit höherem IQ, höherer Bildung und härterer Arbeit in der Lage sein, die Regeln zu entdecken. Ob sie nun mathematische Analysen, Informationsmonopole oder andere Analysemethoden verwenden, sie werden letztendlich das meiste Geld auf dem Markt verdienen. Auf lange Sicht werden diese Leute den Handelsmarkt monopolisieren, bis der Markt nicht mehr normal funktionieren kann.

Zusammenfassen

Wenn die Handelszeit lang genug ist, kann jeder während des Handelsprozesses mit verschiedenen Markttrends konfrontiert werden, und es ist unwahrscheinlich, dass sich diese Trends genau wiederholen. Als quantitativer Trader müssen Sie nicht nur Ihre eigenen Handelsstrategien richtig prüfen und optimieren, sondern auch die Marktbedingungen kontinuierlich beobachten und Ihre Strategien als Reaktion auf Marktveränderungen kontinuierlich verbessern.

Gleichzeitig sollten Sie sich auch darüber im Klaren sein, dass Gewinne und Verluste aus derselben Quelle stammen. Verluste sind Teil der gesamten Handelsstrategie. Selbst die beste Handelsstrategie kann eine Reihe von Rückschlägen erleben. Wenn bei jedem Handel ein Verlust entsteht, sollten Sie Ihre Handelsregeln und -strategien nicht in Frage stellen. Ändern Sie Ihren strategischen logischen Rahmen zumindest nicht leichtfertig, es sei denn, Ihr logisches Gerüst ist von Anfang an falsch.

Hausaufgaben

  1. Bauen Sie ein Anlageportfolio auf der Grundlage Ihrer eigenen Strategie auf und führen Sie einen Backtest mit den quantitativen Tools des Erfinders durch
  2. Versuchen Sie, Ihre quantitative Handelsstrategie basierend auf dem Inhalt dieses Abschnitts zu optimieren

5.6 Bauen Sie probabilistisches Denken auf und verbessern Sie Ihr Handelsmuster

Zusammenfassung

Der Handel ist sowohl eine Wissenschaft als auch eine Kunst. Es gibt viele Methoden im Handel, sei es Value Investing, technische Analyse, Event-Hotspots, Arbitrage-Hedging usw. Sie scheinen auf den ersten Blick logisch streng zu sein und ergeben in der Theorie Sinn. Doch in Wirklichkeit widersprechen sie oft. Manchmal kann die Strenge der Wissenschaft die wilde Fantasie der Kunst nicht erklären.

Auch wenn die Ausgangspunkte verschiedener Handelsmethoden unterschiedlich sind, führen doch alle Wege nach Rom. Der Vorteil des Value Investing liegt darin, dass eine Sicherheitsmarge für wertbasierte Preisschwankungen festgelegt werden kann; der Vorteil der technischen Analyse liegt darin, dass die Transaktion aufgrund der drei Hauptannahmen wissenschaftlich ist.

Eine Gemeinsamkeit haben sie jedoch alle: Sie können nur grobe Aussagen über zukünftige Preisanalysen treffen, jedoch keine präzisen Vorhersagen. Auch wenn die Fundamentalanalyse mit der technischen Analyse kombiniert wird, kann das Problem der Verbesserung der „Präzision“ nicht gelöst werden, sodass der Handel von Anfang bis Ende ein Wahrscheinlichkeitsspiel ist.

Glücksspiele

Tatsächlich ist der Handel nicht nur ein Glücksspiel. Im Leben eines Menschen sind alles Wahrscheinlichkeitsspiele, bei denen es darum geht, Risiken und Erträge abzuwägen – von kleinen Dingen wie dem Überqueren der Straße (die Ampel ist grün, ist es jetzt sicher, die Straße zu überqueren?) und der Frage, welche Art von Freunden man sich schließen soll (ist dieser Freund zuverlässig?) bis hin zu großen Dingen wie der Frage, welche berufliche Laufbahn man einschlagen soll (ist professioneller Trader wirklich eine gute Karriere?) und wen man heiraten soll (werden wir miteinander glücklich sein?). Da wir nicht in der Lage sind, die Zukunft vorherzusagen, ist jedes Mal, wenn wir etwas tun, immer ein Risiko gegeben und wir können uns nicht hundertprozentig sicher sein, egal, wie zuversichtlich wir sind.

Ein wichtiger Grund, warum viele Menschen beim Trading Fehler machen, ist, dass ihnen das Wahrscheinlichkeitsdenken fehlt und sie beim Trading zu emotional statt rational vorgehen. Emotionalität ist eigentlich unser primitiver Instinkt. Auf dem Markt können diese primitiven Instinkte viele menschliche Schwächen stimulieren und exponentiell verstärken. Aus diesem Grund kommen die meisten Leute auf den Markt und scheitern letztendlich.

Gründe für Transaktionsfehler

Grund 1: Die menschliche Natur

Die allermeisten Menschen haben eine Schwäche: Sie nutzen gerne kleine Vorteile aus und haben Angst, kleine Verluste zu erleiden. Sobald es einen kleinen Gewinn auf dem Markt gibt, lösen sie ihn sofort ein und verlassen den Markt mit Gewinnen; sobald es einen Verlust gibt, halten sie an der Verlustposition fest, in der Hoffnung, ihr Geld auf dem Zufallsprinzip zurückzubekommen. Infolgedessen summieren sich kleine Verluste langsam zu großen Verlusten.

Die Preise steigen oder fallen, oder sie bleiben gleich. Auf lange Sicht beträgt die Wahrscheinlichkeit, Geld zu verdienen oder zu verlieren, ohne Transaktionsgebühren und Slippage zu berücksichtigen, etwa 50 %. Daher wird die Handelsmethode der meisten Menschen zu einer Strategie mit negativen Erwartungen mit begrenzten Gewinnen und unbegrenzten Risiken. Ihre Transaktionsabrechnung sollte wie folgt aussehen: kleiner Gewinn>>......>>kleiner Gewinn>>großer Verlust.

Im wirklichen Leben ist dies der Denkweise armer und der Denkweise reicher Menschen sehr ähnlich. Arme Menschen sind risikoscheu und haben Angst, Geld zu verlieren. Ich mag Jobs, die ein stabiles Einkommen bieten und Stabilität anstreben. Auch wenn Sie sich nicht ganz sicher sind, ob Sie etwas tun möchten, sollten Sie es auf keinen Fall tun. Oberflächlich betrachtet scheint daran nichts auszusetzen, es birgt jedoch enorme Chancen und Risiken.

Die Reichen sind eher bereit, Risiken einzugehen, da sie wissen, dass Risiko und Rendite immer im Verhältnis zueinander stehen. Nur aus Risiko erwachsen Chancen. Sie bewerten Risiken rational und gehen mutige Wetten ein, wenn die Risiken kontrollierbar sind.

Grund 2: Ich verdiene gerne schnelles Geld

Eine Statistik, die ein ausländisches Institut erstellte, ergab, dass die annualisierte Nettovermögensrendite in den meisten Branchen langfristig wahrscheinlich nicht über 15 Prozent liegen wird. Im Gegenteil, viele Privatanleger schämen sich, andere zu grüßen, wenn sie an der Börse einen Gewinn von 15 % erzielen. Die Leute wollen schnell Geld machen und zu ihren Aktivitäten gehört intensives Handeln und kurzfristiger Handel.

Schwere Position
Hohe Positionen, eine hohe Hebelwirkung und eine hohe Kapitalallokation sind sehr verlockend, aber auch sehr gefährlich. Wenn Sie Erfolg haben, sind Sie erfolgreich. Wenn Sie scheitern, sind Sie verdammt. Wenn Sie eine Handelsstrategie mit einer Gewinnrate von 50 % haben und mit Vollpositionen und Margin-Trading arbeiten, können Sie mit etwas Glück mehr als zehn Mal hintereinander gewinnen und es ist auch möglich, dass sich Ihr Vermögen von einer quantitativen zu einer qualitativen Veränderung verändert.

Aber wenn Sie nur einmal einen Fehler machen, wird alles auf Null zurückgesetzt. Selbst wenn Sie nur mit einer hohen Position ohne jegliche Kapitalallokation agieren, besteht das Risiko, dass Ihr Konto auf Null geht, da Sie nicht garantieren können, dass Sie in der nächsten Marktsituation nicht mehr als ein Dutzend Mal hintereinander Verluste erleiden. Auch intensives Handeln kann dazu führen, dass eine ursprünglich erwartete Handelsstrategie zu einer Strategie mit ungleichen Gewinnen und Verlusten wird.

Kurzfristig
Die einzige unbesiegbare Kampfkunst der Welt ist die Geschwindigkeit. Im Handelskreis waren manueller Tageshandel, Intraday-Kurzfristhandel und quantitativer Hochfrequenzhandel schon immer sehr geheimnisvoll. Ich zweifle nicht an diesen Leuten, die mit einem Blick auf die Stoppuhr handeln, aber ich versuche, Sie aus einer anderen Perspektive davon zu überzeugen, den Kurzfristhandel aufzugeben.

Bei der Beurteilung der Durchführbarkeit einer Methode sollten wir nicht nur auf diejenigen schauen, die mit diesen Methoden Erfolg hatten, sondern auch auf diejenigen, die mit diesen Methoden gescheitert sind. Mit anderen Worten: Nur weil einige Leute den Jackpot gewinnen, können Sie nicht davon ausgehen, dass der Kauf von Lottoscheinen eine Strategie mit positiven Erwartungen ist.

Wenn man sich außerdem die Rangfolge der Private-Equity-Produkte der letzten drei Jahre ansieht, wie viele der Top 100 sind in tägliche Spekulationen oder kurzfristigen Handel verwickelt? Es besteht kein Zweifel, dass die Erfolgsquote kurzfristiger Investitionen sehr gering ist. Selbst wenn sie erfolgreich sind, ist diese Methode, schnell Geld zu verdienen, auf lange Sicht schwer aufrechtzuerhalten. Wenn Sie nicht begabt sind, seien Sie bei der Anwendung dieser Art von Tricks vorsichtig, schließlich gibt es nur einen Simmons.

Grund 3: Voreingenommenheit

Wenn möglich, schlage ich vor, dass Sie 100 Minuten damit verbringen, einen Film anzuschauen – „Die zwölf Geschworenen“. Ein Film, der in vier Ländern neu verfilmt wurde: die erste amerikanische Version im Jahr 1957, die japanische Version im Jahr 1991, die russische Version im Jahr 1997 und die chinesische Version im Jahr 2014. Dieser Film kann Ihnen zwar nicht beibringen, wie man handelt, aber er bringt Ihnen bei, die Dinge zu betrachten und sich selbst kennenzulernen, was sehr wichtig ist.

Da die menschliche Erfahrung begrenzt ist, ist auch die menschliche Erkenntnis begrenzt. Jeder Mensch hat aufgrund seiner eigenen Erfahrungen mehr oder weniger ausgeprägte Vorurteile. Vorurteile sind für die meisten Menschen häufig zur Gewohnheit geworden und sie betrachten es als selbstverständlich, viele Dinge auf der Grundlage ihrer eigenen Gefühle zu beurteilen.

Zurück zum Markt: Ob Ihre Beurteilung des Marktes auf einer Fundamentalanalyse oder einer technischen Analyse beruht, spielt eigentlich keine Rolle. Wenn Ihre Ansichten von denen der Mehrheit auf dem Markt abweichen, tendieren die Preise dazu, die Mehrheit des Marktes zu begünstigen und der Markt funktioniert nicht entsprechend Ihrer Ansichten.

Deshalb müssen wir bei Transaktionen daran denken, „zu urteilen, uns aber nicht auf Urteile zu verlassen“. Letztlich müssen sie auf Fakten und Preisen basieren. Die einzige Kraft, die die Preise nach oben und unten treibt, sind die Zukunftserwartungen der meisten Menschen. Ihr Urteil hat auf dem Markt kein Gewicht. Lassen Sie also niemals zu, dass Ihr Urteil Ihre eigene Voreingenommenheit beeinflusst.

Grund 4: Streben nach Perfektion.

Zu den Marktteilnehmern zählen Experten aus allen Lebensbereichen, darunter Physik, Statistik, Mathematik, Astronomie usw. Viele Menschen versuchen, diesen Markt mit ihrem Fachwissen zu erklären.

Doch die Hauptteilnehmer am Markt sind Menschen, und die Menschen selbst unterliegen kognitiven Einschränkungen, was bedeutet, dass der Markt selbst falsch und unvollkommen ist. Wie können wir also diese „perfekten“ Methoden nutzen, um den Markt zu erklären? Ist das nicht ein Widerspruch zur Natur des Marktes?

Oben sind die Gründe aufgeführt, warum die überwiegende Mehrheit der Leute, die auf den Markt kommen, letztendlich scheitert. Neben den oben genannten Hauptgründen gibt es noch zahlreiche weitere Faktoren, die hier nicht einzeln aufgeführt werden. Kurz gesagt: Außer Ihrer Siegeszuversicht ist alles andere ein Stolperstein, der Sie am Erfolg hindert.

Wer auf dem Markt durch Glück Geld verdient, wird es im Laufe der Zeit wieder an den Markt zurückgeben. Daher ist der Terminmarkt ein Negativsummenspiel. Nur wenn Sie Ihre Denkweise ändern und Ihre eigene Handelsstrategie entwickeln, haben Sie die Möglichkeit zum Erfolg.

Was ist probabilistisches Denken?

Wahrscheinlichkeitsdenken ist ein ausgefallener Name, vereinfacht ausgedrückt handelt es sich dabei um Glücksspieldenken. Sie haben richtig gehört: Trading ist Glücksspiel. Wenn Sie vom Glücksspiel hören, denken Sie vielleicht an „jemanden, der beim Glücksspiel alles verloren hat, wegen Schulden abgehauen ist oder keine Familie mehr hat“ und halten sich davon fern.

Es gibt in der Tat einige Spieler in unserer Gesellschaft, die vom Glücksspiel besessen sind. Aber Glücksspiel ≠ Spieler. „Glücksspiel“ ist wahrscheinlich eines der am meisten missverstandenen Wörter. Wenn Ihre Strategie auf einer negativen Erwartung basiert, sind Sie ein Spieler; wenn Ihre Strategie auf einer positiven Erwartung basiert, spielen Sie.

Wenn wir die negative Bedeutung des Wortes „Glücksspiel“ beseitigen und es als eine Aktivität verstehen, bei der man im Austausch für einen bestimmten Ertrag gewisse Risiken eingeht, dann ist das Leben überall eigentlich „Glücksspiel“. Welches Hauptfach soll ich an der Uni wählen, ob ich ein Haus kaufen, ein Projekt beginnen, arbeiten oder ein Unternehmen gründen usw.

Auch die Geldanlage bei einer Bank ist ein Glücksspiel, denn man kann sich nicht sicher sein, ob es in der Zukunft zu Inflation kommt oder ob die Bank pleitegeht (siehe griechische Schuldenkrise). Kurz gesagt: Von der Wiege bis zur Bahre ist jeder Prozess des Lebens ein Glücksspiel.

Wie man auf lange Sicht gewinnt

Das Konzept des Glücksspiels bedarf einer weiteren Klärung: Wie kann man auf lange Sicht gewinnen? Bevor wir uns mit den langfristigen Gewinnstrategien befassen, wollen wir zunächst die Grundsätze dieser langfristigen Gewinnstrategien untersuchen. Was außer der Gelddruckmaschine kann einen langfristigen Gewinn garantieren?

Das passiert im Casino: Baccarat, Roulette, Spielautomaten, Blackjack usw. Egal wie sich die Spielmethoden ändern, am Ende wird das Casino gewinnen. Tatsächlich verbirgt sich hier ein Geheimnis, das die Casinos nie verraten: das Gesetz der großen Zahlen.

So funktioniert Sic Bo

Drei Würfel, setzen Sie auf die Größe, 4-10 ist klein, 11-17 ist groß, wenn Sie richtig setzen, gewinnen Sie Geld. Bei Sic Bo gibt es eine Art umlaufender Würfel, das heißt, wenn die Punkte auf drei Würfeln gleich sind, gewinnt der Casino-Dealer. Die Wahrscheinlichkeit, dass umlaufende Würfel erscheinen, beträgt 2,8 %. Dann beträgt die Wahrscheinlichkeit für das Auftreten einer großen und einer kleinen Zahl jeweils 48,6 %. Das Casino verlässt sich auf diese Wahrscheinlichkeit von 2,8 %. Wenn jeder Spieler in jedem Spiel 100 Yuan setzt, gewinnt das Casino nach 100 Spielen 280 Yuan.

(0.486+0.028)100100-0.486100100=280

Allerdings hat diese Casino-Strategie Schlupflöcher. Wenn ein großer Spieler aus einer Laune heraus zig Milliarden setzt und zufällig gewinnt, ist das Casino plötzlich pleite. Aus diesem Grund legt das Casino ein Wettlimit fest und wenn dieses Limit überschritten wird, können in dieser Runde keine weiteren Wetten getätigt werden. Selbst wenn der Spieler also eine Zeit lang das Glück hat, Geld zu gewinnen, wird er auf lange Sicht wahrscheinlich trotzdem verlieren. Bei einer unendlichen Anzahl von Sic Bo-Spielen wird der Spieler 2,8 % seines Geldes verlieren.

Das Gesetz der großen Zahlen

Der Vorteil des Casinobesitzers beträgt nur 2 % mehr als der des Spielers. Bei einem einzelnen Glücksspiel kann der Besitzer einen Verlust erleiden oder sogar kontinuierliche Verluste erleiden. Der Kasinobesitzer wird sich jedoch nicht von den Verlusten abschrecken lassen, denn er weiß, dass er nur deshalb Geld verdienen kann, weil das „Gesetz der großen Zahlen“ gilt. Solange die Leute weiterspielen, braucht er nur einen kleinen Vorteil von 2 %, um langfristig stabile Gewinne zu erzielen.

Das Casino hat also keine Angst davor, dass Sie Geld gewinnen, sondern nur davor, dass Sie nicht kommen. Sie haben im Laufe der Jahre sogar von Bankenpleiten gehört, aber wann haben Sie jemals von der Pleite eines Casinos gehört? Auf lange Sicht ist das Casino immer der Gewinner. Aus diesem Grund wird das Glücksspiel auf lange Sicht gewinnen.

Ähnliche Beispiele für langfristige Gewinne sind: verschiedene Lotterien. Der Gewinnpool der Lotterie ist seit Einführung der Lotterie immer größer geworden und dieses Geld stammt sicherlich von der Mehrheit der Lotteriespieler. Wissen Sie, wie hoch die Wahrscheinlichkeit ist, beim Double Color Ball 5 Millionen zu gewinnen? Die Antwort lautet: eins zu 17,7 Millionen.

Änderungen der Wahrscheinlichkeit

Angenommen, es gibt eine Münze mit gleichem Gewicht auf beiden Seiten. Dann beträgt die Wahrscheinlichkeit, dass ein Wort (Rückseite) oder eine Blume (Vorderseite) fällt, 50 % und jeder Münzwurf ist unabhängig vom vorherigen Ergebnis. Wenn Sie die Münze 10.000 Mal hintereinander werfen, liegt die Wahrscheinlichkeit, dass Kopf fällt, bei etwa 50 %.

Wenn Sie es aber nur 10 Mal werfen, ändert sich die Wahrscheinlichkeit für ein positives Ergebnis und liegt möglicherweise nicht mehr bei 50 %. Daher muss der Casino-Dealer sicherstellen, dass diese Strategie der positiven Erwartung oft genug ausgelöst wird, damit sie wirksam ist. Dies ist auch der Grund, warum Private Equity-Institutionen beim Einstieg in eine quantitative Handelsstrategie die Strategie nicht abbrechen können, es sei denn, es liegen besondere Bedingungen vor.

Wie Sie mit dem „Gesetz der großen Zahlen“ eine langfristige Erfolgsstrategie am Finanzmarkt entwickeln, ist Inhalt unserer nächsten Kursreihe, also bleiben Sie dran!

Zusammenfassen

Oben haben wir Ihnen erklärt, wie Sie den Handel aus wissenschaftlicher Sicht unter den Gesichtspunkten der Wahrscheinlichkeit, der Gründe für Handelsversagen, der richtigen Handelsmentalität, des Prinzips des langfristigen Gewinnens beim Glücksspiel usw. betrachten können. Ich bin überzeugt: Wenn Sie gut lernen, wird sich Ihr Verhalten durch eine Änderung Ihrer Denkweise ändern, und die Änderung Ihres Verhaltens wird zu Ihrem Erfolg führen.

Hausaufgaben

  1. Warum ist Trading ein Glücksspiel?
  2. Was sind die anderen Gründe für das Scheitern einer Transaktion?
Related Recommendations
Comment
All comments (2)

    好文章啊!

    5 years ago

    mark

    5 years ago
  • 1
iPhone Download
Forums
PINE Language
© 2015 - ∞ INVENTOR PTE LTD (SG)