Vom quantitativen Handel zum Asset Management - Entwicklung einer CTA-Strategie für eine absolute Rendite

Schriftsteller:Lydia., Erstellt: 2023-02-07 09:58:41, aktualisiert: 2023-09-18 20:25:11

img

Vom quantitativen Handel zum Asset Management - Entwicklung einer CTA-Strategie für eine absolute Rendite

Vorwort

Warum sollte ich diesen Kurs nehmen?

Was gewinnen Sie, wenn Sie diesen Kurs besuchen? Zunächst einmal basiert dieser Kurs auf JavaScript und Python-Programmiersprachen. Sprache ist nur eine Technologie. Schließlich sollten wir diese Technologie in eine Branche anwenden. Quantitative Trading ist eine aufstrebende Branche, die sich derzeit in einer schnellen Entwicklungsphase befindet und eine große Nachfrage nach Talenten hat.

Durch das systematische Lernen dieses Kurses können Sie ein tieferes Verständnis für den Bereich des quantitativen Handels haben. Wenn Sie ein Student sind, der sich auf den Bereich des quantitativen Handels vorbereitet, wird es Ihnen auch helfen. Wenn Sie ein Aktien- oder Futures-Investment-Enthusiast sind, kann der quantitative Handel Ihrem subjektiven Handel helfen. Durch die Entwicklung von Handelsstrategien können Sie auf dem Finanzmarkt Gewinne erzielen und auch die Kanäle und Plattformen für Ihre Investition und Finanzmanagement erweitern.

Vorher möchte ich über meine persönliche Handelserfahrung sprechen. Ich bin kein Finanzfachmann, ich habe Statistik studiert. Zuerst begann ich in meinen Schuljahren subjektiv mit Aktien zu handeln. Später wurde ich ein quantitativer Handelspraktiker von inländischen Private Equity-Fonds, hauptsächlich in der Strategieforschung und Strategieentwicklung tätig.

Ich bin seit mehr als zehn Jahren in diesem Kreis tätig und habe verschiedene Arten von Strategien entwickelt. Meine Anlagephilosophie lautet: Risikokontrolle steht über allem und konzentriert sich auf absolute Renditen. Das Thema unseres Themas lautet: vom quantitativen Handel bis zum Asset Management - CTA-Strategieentwicklung für absolute Rendite.

1. Futures CTA-Strategie Geldverdienen Logik

1.1 Verständnis der Zukunftsgeschäfte

Einige fragen sich vielleicht, was ein CTA ist? Was genau ist ein CTA? Ein CTA wird im Ausland als Rohstoffhandelsberater und in China als Investmentmanager bezeichnet. Der traditionelle CTA besteht darin, die Mittel der Mehrheit der Anleger zu sammeln, sie dann professionellen Investmentinstitutionen anzuvertrauen und schließlich durch Handelsberater (d. h. CTA) in Aktienindex-Futures, Rohstofffutures und Treasury Bond-Futures zu investieren.

Aber in der Tat, mit der kontinuierlichen Entwicklung und Erweiterung des globalen Futures-Marktes, ist das Konzept von CTA auch erweitert, und sein Umfang ist weit über die traditionellen Futures hinaus. Es kann nicht nur in den Futures-Markt investieren, sondern auch in den Zinsmarkt, die Börse, den Devisenmarkt und den Optionsmarkt. Solange es eine bestimmte Menge an historischen Daten für diese Vielfalt gibt, kann es entsprechende CTA-Strategien auf der Grundlage dieser historischen Daten entwickeln.

Bereits in den 1980er Jahren war die elektronische Handelstechnologie noch nicht ausgereift. Zu dieser Zeit beurteilten die meisten Händler den zukünftigen Trend von Rohstoff-Futures, indem sie technische Indikatoren manuell zeichneten, wie William-Index, KDJ, RSI, MACD, CCI usw. Später gründeten Händler einen speziellen CTA-Fonds, um Kunden bei der Verwaltung von Vermögenswerten zu unterstützen. Erst mit der Popularisierung des elektronischen Handels in den 1980er Jahren begann der echte CTA-Fonds zu erscheinen.

Veränderungen der Größe der CTA-Fondsverwaltung

img

In Milliarden von Dollar

Die Größe der globalen CTA-Fonds ist insbesondere mit dem Aufstieg des quantitativen Handels von 130,6 Milliarden US-Dollar im Jahr 2005 auf mehr als 300 Milliarden US-Dollar im Jahr 2015 gestiegen.

Der Barclay CTA Index ist ein repräsentativer Branchenbenchmark für globale Rohstoffhandelsberater. Von Ende 1979 bis Ende 2016 betrug die kumulative Rendite des Barclay CTA Fund Index bis zu 28,95 Mal, die jährliche Rendite lag bei 9,59%, die Sharp-Ratio lag bei 0,37 und die maximale Auszahlung lag bei 15,66%.

Denn im Asset Allocation Portfolio unterhält die CTA-Strategie in der Regel eine sehr geringe Korrelation mit anderen Strategien. Wie im roten Kreis unten zu sehen ist, fiel der Barclay CTA-Fondsindex während des globalen Börsenbärenmarktes von 2000 bis 2002 und der globalen Subprime-Krise 2008 nicht nur nicht, sondern erzielte auch positive Renditen. Als der Aktienmarkt und der Anleihemarkt in der Krise waren, konnte CTA starke Renditen liefern. Außerdem können wir sehen, dass das Gewinnniveau des Barclay Commodity CTA-Index seit 1980 stärker war als der S&P 500 und der Rückzug auch viel niedriger ist als der S&P 500.

img

Die Entwicklung der CTA in China hat sich erst in den letzten zehn Jahren vollzogen, aber die Dynamik ist sehr stark. Dies ist vor allem auf das relativ offene Handelsumfeld der inländischen Rohstoff-Futures, die niedrige Schwelle der Handelsfonds, die Verwendung des Margin-Systems für den Handel in Long- und Short-Positionen, die niedrigen Transaktionskosten, die fortschrittlichere technische Struktur der Börse im Vergleich zu Aktien und den einfacheren Systemhandel zurückzuführen.

Seit 2010 existieren CTA-Fonds hauptsächlich in Form von privaten Fonds. Mit der allmählichen Öffnung des Anlagegrundes des Fondsspezialkontos in der Innenpolitik begannen CTA-Fonds in Form eines Fondsspezialkontos zu existieren.

CTA-Strategien eignen sich auch für einzelne Händler besser als andere Handelsstrategien in Bezug auf Eintrittsfreundlichkeit, Kapitalschwelle, Ausführung von Handelsstrategien und API-Konnektivität. Inländische Futures-Kontrakte sind sehr klein. Zum Beispiel kann Mais oder Sojabohnenmehl für Tausende von Yuan gehandelt werden, und es gibt fast keine Kapitalschwelle. Außerdem ist es relativ einfach, da einige CTA-Strategien aus traditioneller technischer Analyse stammen, im Vergleich zu anderen Strategien.

Der Designprozess der CTA-Strategie ist auch relativ einfach. Zuerst werden die historischen Daten zunächst verarbeitet und dann in das quantitative Modell eingegeben. Das quantitative Modell umfasst die Handelsstrategie, die durch mathematische Modellierung, Programmierdesign und andere Tools gebildet wird, und das Handelssignal wird durch Berechnung und Analyse dieser Daten generiert. Natürlich ist es in der tatsächlichen Entwicklung nicht so einfach wie das obige Diagramm. Hier geben wir Ihnen nur ein Gesamtkonzept.

1.2 Art der Futures-CTA-Strategie

Aus der Sicht der Handelsstrategie ist die CTA-Strategie auch diversifiziert: Es kann sich um eine Trendstrategie oder eine Arbitrage-Strategie handeln; Es kann sich um eine mittel- und langfristige Strategie mit großer Laufzeit oder eine kurzfristige Intraday-Strategie handeln; Die Strategie-Logik kann sich auf technische Analyse oder Fundamentalanalyse stützen; Es kann sich um eine subjektive Transaktion oder eine Systemtransaktion handeln.

CTA-Strategie hat verschiedene Klassifizierungsmethoden. Gemäß der Transaktionsmethode kann sie in subjektive Transaktionen und Systemtransaktionen unterteilt werden. Die Entwicklung der ausländischen CTA-Strategie ist relativ fortgeschritten, und die CTA-Strategie der Systemtransaktionen ist nahe bei 100%. Gemäß der Analysemethode kann sie in grundlegende Analyse und technische Analyse unterteilt werden. Gemäß der Einkommensquelle kann sie in Trendhandel und Oszillationshandel unterteilt werden.

Im Allgemeinen macht die CTA-Strategie etwa 70% des gesamten Handelsmarktes aus, die Trendstrategie etwa 25% und die Gegentrend- oder Trendumkehrstrategie etwa 5% aus.

Hochfrequenzmarktgestaltung

Derzeit gibt es auf dem Markt zwei Hauptströmungs-Hochfrequenz-Handelsstrategien: eine ist die Hochfrequenz-Marktmachungsstrategie, die andere ist die Hochfrequenz-Arbitrage-Strategie. Die Marktmachungsstrategie besteht darin, Liquidität auf dem Handelsmarkt bereitzustellen. Das heißt, auf dem Handelsmarkt mit einem Market Maker muss der Market Maker sicherstellen, dass sein Auftrag gehandelt werden kann, wenn jemand handeln möchte. Wenn auf dem Markt nicht genügend Liquidität vorhanden ist und der Auftrag nicht gehandelt werden kann, muss der Market Maker den Auftrag der Gegenpartei kaufen oder verkaufen.

Hochfrequenz-Arbitrage-Strategie

High Frequency Arbitrage bezieht sich auf den Handel mit zwei stark korrelierten Aktien oder ETF und ETF-Portfolio. Gemäß der Berechnungsmethode von ETF kann der erwartete Preis eines ETF auf die gleiche Weise berechnet werden. Der ETF-Indexpreis kann den erwarteten Preis des ETF subtrahieren, um einen Preisunterschied zu erhalten. Normalerweise läuft der Preisunterschied in einem Preiskanal. Wenn der Preisunterschied durch die oberen und unteren Kanäle bricht, können Sie den Preisunterschied handeln, auf die Rückkehr des Preisunterschieds warten und davon Einkommen erzielen.

Intraday-Strategie

Im wörtlichen Sinne kann es, solange es keine Position über Nacht gibt, als Intraday-Handelsstrategie bezeichnet werden. Aufgrund der kurzen Haltedauer des Intraday-Handels ist es normalerweise unmöglich, sofort nach dem Markteintritt Gewinne zu erzielen und dann schnell den Markt zu verlassen. Daher birgt dieser Handelsmodus ein geringes Marktrisiko. Da sich der Markt jedoch in kurzer Zeit schnell ändert, hat die Intraday-Strategie in der Regel höhere Anforderungen an Händler.

Mittel- und langfristige Strategie

In der Theorie ist die strategische Kapazität umso größer, je länger die Haltedauer ist und je niedriger die Risiko-Rendite-Ratio ist. Insbesondere bei institutionellen Transaktionen können aufgrund der begrenzten Kapazität von kurzfristigen Strategien große Fonds nicht in kurzer Zeit in den Markt gelangen und aussteigen, daher werden langfristige Strategien zugewiesen. Im Allgemeinen beträgt die Positionsdauer mehrere Tage und Monate oder sogar länger.

Daten zur CTA-Strategie

Im Allgemeinen wird die CTA-Strategie mit Minuten-, Stunden- und Tagesdaten untersucht, zu denen folgende gehören: Eröffnungspreis, höchster Preis, niedrigster Preis, Schlusspreis, Handelsvolumen usw. Nur wenige CTA-Strategien verwenden Tick-Daten, wie Kaufpreis, Verkaufspreis, Kaufvolumen, Verkaufvolumen und andere detaillierte Daten in L2-Daten.

Was die Grundidee der CTA-Strategie angeht, so basiert das erste, woran wir denken, auf traditionellen technischen Indikatoren, denn es gibt viele öffentliche Referenzmaterialien in diesem Bereich, und die Logik ist in der Regel einfach, von denen die meisten auf statistischen Prinzipien basieren.

Es gibt auch einige klassische Handelsmodelle auf dem Markt, die auch als Referenz verwendet und verbessert werden können, darunter: mehrfache gleitende Durchschnittskombination, DualThrust, R-Breaker, Turtle-Handelsmethode, Grid-Handelsmethode usw.

All dies sind Handelsstrategien, die auf traditioneller technischer Analyse basieren. Der Prozess besteht darin, Faktoren oder Handelsbedingungen mit Wahrscheinlichkeitsvorteilen nach historischen Daten und korrekten Handelskonzepten zu extrahieren und davon auszugehen, dass der Markt in Zukunft noch solche Gesetze haben wird. Schließlich wird die Handelsstrategie durch Code und vollautomatischen Handel realisiert. Offene Positionen, Stop-Gewinne, Stop-Verluste, Erhöhung von Positionen, Verringerung von Positionen usw., die im Allgemeinen kein manuelles Eingreifen erfordern.

Der größte Vorteil der CTA-Strategie ist, dass sie unabhängig davon, ob der aktuelle Markt steigt oder fällt, absolute Renditen erzielen kann, insbesondere wenn sich der Markt schnell ändert oder der Markttrend offensichtlich glatt ist, der Vorteil der Strategie ist offensichtlich, kurz gesagt, wenn es einen Trend gibt, gibt es einen Gewinn. Wenn sich der Markt jedoch in einer volatilen Situation befindet oder der Trend nicht offensichtlich ist, kann die Strategie an einem hohen Punkt kaufen und an einem niedrigen Punkt verkaufen und den Verlust hin und her stoppen.

1.3 Gewinnprinzip der Futures-CTA-Strategie

Die Futures-CTA-Strategie ist vor allem aufgrund folgender Punkte rentabel:

    1. Es gibt Reflexivität in der Preisentwicklung, die immer im Trend weitergeht. Wenn Anleger beobachten, dass der Preis steigt, werden sie dem Trend folgen und kaufen, was zu einem weiteren Preisanstieg führt. Dasselbe gilt für den Preisrückgang. Weil Anleger irrationaler sind, können wir manchmal sehen, dass der Preis abnormal steigt und abnormal fällt.
    1. Jeder Anleger hat eine asymmetrische Toleranz für das Verhältnis von Gewinn und Verlust und eine andere Toleranz für das Risiko. Für die meisten Einzelhändler sind sie eher geneigt, eine konservativere homöopathische Handelsmethode zu wählen, und der Markt ist auch anfälliger für den Trend.
    1. Die Preisbildung wird durch die Transaktion bestimmt. Es ist wahr, dass die Transaktion von Menschen getrieben wird, aber die menschliche Natur ist schwer zu ändern. Dies ist der Grund, warum sich das feste Muster wiederholen wird. Die Strategie ist bei der historischen Daten-Backtestung wirksam, was darauf hinweist, dass sie auch in Zukunft wirksam sein kann.

Darüber hinaus ist das Handelsmerkmal des Trend-Tracking, eine kleine Menge Geld zu verlieren, wenn es keinen Markt gibt, und ein großes Vermögen zu machen, wenn der Markt kommt. Menschen, die den Handel gemacht haben, wissen jedoch, dass der Markt die meiste Zeit volatil ist und nur in einer kleinen Zeit der Trendmarkt ist. Daher hat die Trend-Tracking-Strategie eine niedrige Gewinnrate im Handel, aber der Gesamtgewinn und Verlust jeder Transaktion ist relativ groß.

Da die Trendverfolgungsstrategie in Bezug auf das Einkommen instabil ist, verwenden viele Anlageinstitute mehrere Sorten und Strategien, um ein Portfolio aufzubauen, das auch mit einer bestimmten Anzahl von Umkehrstrategien konfiguriert wird.

Korrelation zwischen CTA und traditionellen Vermögenswerten

img

In der Theorie werden verschiedene Strategien mit unterschiedlichen Stilen oder relativ geringer Korrelation manchmal die gleichen und manchmal unterschiedliche Handelssignale gleichzeitig geben, wenn sie mit verschiedenen Veränderungen der Marktpreise konfrontiert sind. Da sich mehrere Rendite-Kurven überschneiden, ergänzt sich die Gesamtrendite und die Rendite-Kurve wird flacher, wodurch die Volatilität der Rendite reduziert wird.

Aus der obigen Sicht kann man schließen, dass es besser ist, mehrere moderate Unterstrategien zu entwickeln, als eine Masterstrategie zu entwickeln. Wie können diese Strategien gesteuert werden? Hier können wir vom Zufallswaldalgorithmus im maschinellen Lernen lernen. Der Zufallswald ist kein unabhängiger Algorithmus, sondern ein Entscheidungsrahmen, der mehrere Entscheidungsbäume enthält. Er entspricht der Elternstrategie über der Unterstrategie des Entscheidungsbaumes. Der Unterstrategiecluster wird durch die Elternstrategie organisiert und gesteuert.

Als nächstes müssen wir eine Mutterstrategie entwerfen. Wir können die Liquidität, Rentabilität und Stabilität jeder Sorte auf dem gesamten Rohstoff-Futures-Markt bewerten, um das Rohstoff-Futures-Varietätsportfolio mit geringer Gewinnvolatilität auszuschließen, und dann ein branchenneutrales Screening durchführen, die allgemeine Volatilität durch die Branchendispersion des Portfolios weiter reduzieren und schließlich das tatsächliche Rohstoff-Futures-Multi-Varietät-Portfolio durch Marktwert-Matching für den Handel aufbauen.

Jede Variante kann auch mit Multiparameter-Strategien konfiguriert werden und kann die Parameterkombination mit guter Performance im Backtest auswählen. Wenn der Markttrend offensichtlich ist, werden die Multiparameter-Strategien im Allgemeinen konsistent abschneiden, was gleichbedeutend ist mit dem Hinzufügen von Positionen; Wenn der Markt in einer volatilen Situation ist, wird die Performance mehrerer Parameter-Sätze in der Regel inkonsistent sein, so dass sie Risiken absichern können, indem sie jeweils lang oder kurz gehen, was gleichbedeutend ist mit der Verringerung von Positionen. Dies kann die maximale Backtestrate des Portfolios weiter reduzieren, während die Gesamtrendite unverändert bleibt.

2. Klassische Futures-CTA-Strategiebeispiel

Newton sagte einmal: Wenn ich weiter sehe als andere, dann weil ich auf den Schultern von Riesen stehe.

Die auf dem Markt öffentlich verfügbaren CTA-Strategien umfassen die SMA-Strategie, die Bollinger-Band-Strategie, die Schildkrötenhandelsregeln, die Momentum-Strategie, die Arbitrage-Strategie usw. Quantitative Handelsstrategien haben eine Eigenschaft, dh sie werden langsam scheitern, sobald sie öffentlich gemacht werden.

2.1 Analyse der Futures-Fundamentaldaten (Lagerbestand, Basisdifferenz, Preis)

Die Fundamentalanalyse muss sich nicht um die kurzfristige Preisentwicklung kümmern. Es wird angenommen, dass sich der Wert letztendlich im Preis widerspiegeln wird. Es geht mehr darum, die Faktoren hinter dem Preis zu analysieren, um festzustellen, wie viel die Vielfalt wert ist. Im Allgemeinen wird die Top-Down-Analyse-Methode angenommen: von Makrofaktoren, Vielfaltfaktoren und anderen Faktoren.

img

Wir können aus dem obigen Diagramm sehen, dass viele Faktoren die Rohstoffpreise beeinflussen, und diese Daten ändern sich ständig.

In der Tat ist die grundlegende Analyse von Rohstoff-Futures nicht, um alle Faktoren zu analysieren. Wir müssen nur die Kernelemente der grundlegenden Analyse zu erfassen, um die Regeln aus den komplexen Informationen herauszufinden.

Makrofaktoren

Makroökonomische Daten sind komplex und veränderlich. Jeden Tag, jeden Moment werden viele wirtschaftliche Daten veröffentlicht, von der nationalen Politik, Zentralbanken, Investmentbanken, offiziell und inoffiziell. Neben der politischen und wirtschaftlichen Krise ist Makroanalyse ein gutes Gesprächsmaterial, aber nicht praktisch. Peter Lynch, ein berühmter Experte für Fondsmanagement in den Vereinigten Staaten, sagte einmal: Ich verbringe nicht mehr als 15 Minuten pro Jahr mit der Analyse der wirtschaftlichen Situation.

Vielfaltfaktor

In der Fundamentalanalyse ist die Varieté-Analyse hauptsächlich die Analyse von Prämien und Rabatten, Angebot und Nachfrage, Rohstoffbestand, Industriegewinn usw. Es kann gesagt werden, dass die Beherrschung der Varieté-Faktor-Analyse von Rohstoff-Futures den größten Teil des Markttrends beurteilen kann.

Wie Freunde, die Futures gemacht haben, wissen, können inländische Rohstoff-Futures einfach in Industrieprodukte und landwirtschaftliche Produkte unterteilt werden. Die Analysemethoden von Industrieprodukten und landwirtschaftlichen Produkten sind unterschiedlich. Wir werden die beiden Aspekte von Angebot und Nachfrage erläutern. Bei Industrieprodukten ist das Angebot relativ stabil. Es sei denn, es gibt einen großen technologischen Durchbruch, ist es unwahrscheinlich, dass sich die Produktionskapazität in kurzer Zeit erheblich ändert. Daher ist der Hauptfaktor, der den Preis von Industrieprodukten beeinflusst, die Nachfrage. Die Nachfrage nach landwirtschaftlichen Produkten ist relativ stabil. Langfristig ändert sich die Nachfrage nach landwirtschaftlichen Produkten, aber kurzfristig neigt die Nachfrage nach landwirtschaftlichen Produkten dazu, stabil zu sein, so dass der Hauptfaktor, der den Preis von landwirtschaftlichen Produkten beeinflusst, die Versorgung ist.

Daher ist es nach den Gesetzen der Wirtschaft die Beziehung zwischen Angebot und Nachfrage, die den Preis von Gütern letztlich bestimmt. Theoretisch kann, solange die Daten von Angebot und Nachfrage erhalten werden können, der zukünftige Preis von Gütern bestimmt werden. Für Industrieprodukte sind die Angebotsdaten leicht zu erhalten, aber es ist schwierig, die Nachfragedaten zu erhalten. Für landwirtschaftliche Produkte sind die Nachfragedaten leicht zu erhalten und es ist schwierig, die Angebotsdaten zu erhalten.

In der Tat können wir weiter subtrahieren. Das gegenseitige Ergebnis von Angebot und Nachfrage auf dem Wirtschaftsmarkt ist Lagerbestand. Wir können die Stärke der Beziehung zwischen Marktangebot und Nachfrage anhand von Lagerbestandsdaten beurteilen. Wenn der Lagerbestand einer Ware sehr hoch ist, bedeutet dies, dass das Marktangebot größer ist als die Nachfrage, und der Rohstoffpreis sinkt unter der Voraussetzung, dass die externen Bedingungen unverändert bleiben. Wenn der Lagerbestand einer Ware sehr niedrig ist, bedeutet dies, dass die Marktnachfrage größer ist als das Angebot, und der Rohstoffpreis steigt unter der Voraussetzung, dass die externen Bedingungen unverändert bleiben.

Neben der Analyse des Rohstoffbestands müssen wir auch die Preisdifferenz zwischen dem Spotmarkt und dem Futuresmarkt analysieren, die auch Basisdifferenz genannt wird. Wenn der Futurespreis größer als der Spotpreis ist, nennen wir ihn die Futures-Prämie; Wenn der Futures-Preis kleiner als der Spotpreis ist, nennen wir ihn den Futures-Rabatt. Gemäß dem Futures-Liefersystem sollte der Futures-Preis am Lieferdatum dem Spotpreis entsprechen.

Unabhängig von der Prämie oder dem Rabatt sollte aufgrund der Einschränkungen des Futures-Liefersystems der Futures-Preis am Lieferdatum theoretisch dem Spot-Preis entsprechen.

Gemäß dem obigen Prinzip können wir Bestand und Basisdifferenz zur gleichen Zeit verwenden, um zukünftige Futurespreise zu bestimmen. Wenn der Bestand einer Ware niedrig ist und der Futurespreis viel niedriger ist als der Spotpreis, können wir beurteilen, dass die Nachfrage des Spotmarktes größer ist als das Angebot und die Wahrscheinlichkeit, dass der Spotpreis in Zukunft steigt, groß ist; Auch aufgrund des Futures-Liefersystems wird der Futures-Preis steigen, wenn sich der Lieferdatum nähert, und er wird dem Spotpreis entsprechen. Die Wahrscheinlichkeit, dass der Futures-Preis in Zukunft steigt, ist größer.

Schließlich beurteilen wir die wahrscheinliche Richtung des zukünftigen Preises anhand der Lager- und Basisdifferenz, aber es gibt keinen genauen Kauf- und Verkaufspunkt, so dass wir mit der technischen Analyse zusammenarbeiten müssen, um ein klares Signal für Ein- und Ausstieg zu geben.

2.2 Regeln für den Handel mit Schildkröten

Wenn es um Handelsstrategien geht, müssen wir über die repräsentativen Schildkrötenhandelsregeln sprechen. Die Schildkrötenhandelsregel stammt aus dem berühmtesten Experiment in der Geschichte des Handels. Richard Dennis, ein Rohstoffspekulant, möchte wissen, ob große Trader geboren oder ausgebildet werden. Zu diesem Zweck rekrutierte er 1983 13 Menschen und lehrte sie die grundlegenden Konzepte des Futures-Handels sowie seine eigenen Handelsmethoden und -prinzipien. Diese Studenten wurden schildkröten genannt.

In den folgenden vier Jahren erreichten die Schildkröten einen durchschnittlichen jährlichen Zinssatz von 80%. Dennis bewies, dass Menschen mit wenig oder keiner Handelserfahrung mit einem einfachen System und Regeln zu ausgezeichneten Händlern werden können.

Nachdem die Wahrheit herauskam, stellten die Leute fest, dass die Turtle-Handelsregeln den optimierten Donchian-Kanal übernahmen und ATR-Indikatoren für das Positionsmanagement verwendeten.

Grundprinzipien der Schildkröte

  • Vorteile zu meistern: Finden Sie eine Handelsstrategie mit positiven Erwartungen, denn langfristig kann dies zu positiven Renditen führen.
  • Risikomanagement: Risiken kontrollieren und Ihre Position halten, sonst können Sie nicht einen Tag warten, um Gewinne zu erzielen.
  • Ausdauer: Nur wenn man seine Strategie unerschütterlich umsetzt, kann man wirklich systematische Ergebnisse erzielen.
  • Einfach und klar: Auf lange Sicht haben einfache Systeme mehr Vitalität als komplexe Systeme.

Also, als nächstes, lassen Sie uns sehen, was die Schildkröten Handelsregeln sagen.

  1. Markt - was zu kaufen und zu verkaufen, im Wesentlichen in welchen Märkten zu handeln. Schildkröten sind Futures-Händler. Sie wählen die Märkte mit großem Handelsvolumen und hoher Liquidität nur. Weil die Auswahl der Märkte mit inaktivem Handel die zusätzliche Rutsch des Eintrags und Ausstiegs erhöhen wird, und auch viele Chancen des Trends verpassen wird.
  2. Die Positiongröße - wie viel zu kaufen oder zu verkaufen ist ein sehr wichtiger Teil der gesamten Strategie, die in der Regel von den meisten Menschen ignoriert oder falsch behandelt wird. Die Schildkröten-Handelsregel nimmt ATR, das heißt den durchschnittlichen realen Volatilitätsindex, um die offene Position zu berechnen, das Positionssignal zu erhöhen und das Stop-Loss-Signal zu berechnen. Dies ist ein sehr genialer Entwurf. Die ursprüngliche Absicht besteht darin, die Größe der Position durch die absolute Volatilität des Marktes anzupassen. Wenn die Marktvolatilität stark ist, reduzieren Sie die Position und wenn die Marktvolatilität schwach ist, erhöhen Sie die Position. Erstens definiert sie eine Einheit, deren Formel lautet: (Gesamtvermögen * 1%) / ATR. Die Anfangsposition ist 1 Einheit. Selbst wenn der Rückgang der Variante an diesem Tag das Niveau von ATR erreicht, kann der Verlust an diesem Tag innerhalb von 1% des Gesamtvermögenswerts kontrolliert werden. Wenn der Preis um
  3. Markteintritt - Der Markteintritt der Schildkröte basiert auf dem Donchian-Kanal. Wenn der Preis über den höchsten Preis der ersten 20 oder 55 K-Linien steigt, tritt er in den Markt ein, um lang zu gehen. Wenn der Preis unter den niedrigsten Preis der ersten 20 oder 55 K-Linien fällt, tritt er in den Markt ein, um kurz zu gehen. Wenn das Signal angezeigt wird, tritt er in den Markt für den Handel ein, ohne auf den Abschluss oder die nächste K-Linie zu warten.
  4. Stop Loss - Auf lange Sicht werden Transaktionen, die keinen Stop Loss haben, nicht erfolgreich sein, aber die meisten Trader halten Verlustpositionen und versuchen, Chancen einzusetzen, um zu hoffen, dass sich der Markt umdreht. Schildkrötenregeln legen fest, wann man sich streng aus der Verlustposition zurückzieht. Wenn Sie Long-Positionsordern halten und der Preis um 2 Einheiten sinkt, wird die Long-Position mit einem Stop-Loss geschlossen. Wenn Sie eine Short-Positions-Order halten und der Preis um 2 Einheiten steigt, wird die Short-Position mit einem Stop-Loss geschlossen.
  5. Stop-Profit - In den Turtle-Regeln bedeutet Stop-Profit den Verlust einer Vielzahl von schwimmenden Gewinnen, was auch für viele Trader ein inakzeptabler Teil ist. Wenn Sie derzeit Long-Positionsorders halten und der Preis unter den Track des Donchian-Kanals von zehn Tagen fällt, schließen Sie alle Long-Orders; Wenn die aktuelle Short-Positionsorder gehalten wird und der Preis über den Track des Donchian-Kanals von zehn Tagen steigt, schließen Sie alle Short-Positionen.

So können wir sehen, dass, obwohl die Schildkröten-Handelsregeln sehr einfach aussehen, in Wirklichkeit hat es einen echten Sinn des Prototypen des Handelssystems gebildet. Es umfasst alle Aspekte eines vollständigen Handelssystems, so dass kein Raum für Händler zu subjektiven phantasievollen Entscheidungen zu machen, die nur macht die Vorteile des programmierten Betriebs des Systems spielen, einschließlich: Ein- und Ausstiegsregeln, Fondsmanagement und Risikokontrolle, etc.

Der größte Vorteil der Schildkrötenhandelsmethode ist, dass sie uns hilft, eine Reihe von effektiven Handelsmethoden zu etablieren. Es ist eine Kombination aus Chargenöffnung, dynamischem Stop-Gewinn und Stop-Loss und der Trendfolgestrategie des Marktes, insbesondere der Verwendung von ATR-Wert und dem Konzept des Positionsmanagements, das sehr lernenswert ist. Natürlich hat sie auch ein gemeinsames Problem mit der Trendverfolgungsstrategie, dh schwimmendem Gewinn und Rücknahme. Es ist wahrscheinlich, dass alle schwimmenden Gewinne, die durch den Kauf der Gewinner erzielt werden, aufgrund der folgenden Welle scharfer Pannen ausgeschüttet werden. Sie ist im allgemeinen Trend sehr stark und nicht so gut wie erwartet im volatilen Markt.

3. Entwicklung einer zukünftigen CTA-Strategie in der Praxis

3.1 Entwicklung einer auf MyLanguage basierenden CTA-Trendstrategie

Am Ende des letzten Jahrhunderts begann eine sehr erstaunliche Handelsmethode im Bereich der Finanzinvestitionen in den Vereinigten Staaten zu herrschen. Nach Tausenden von Menschen Praxis fanden die Menschen heraus, dass diese Methode Wirksamkeit und großen praktischen Wert hat. Gleichzeitig wurde sie von vielen Anlageexperten und professionellen Händlern anerkannt. Bis jetzt kann sie auf fast alle Finanzinvestitionsfelder perfekt angewendet werden, ob Devisen, Gold, Aktien, Futures, Rohöl oder Index und Anleihe, die eine Chaos-Operationsmethode ist.

Das Wort Chaos bezieht sich auf die Beschreibung des chaotischen Zustands des Universums ursprünglich. Seine Idee ist, dass das Ergebnis unvermeidlich ist, aber weil das vorhandene Wissen nicht das Ergebnis berechnen kann, weil die Berechnung selbst auch das Ergebnis verändert, kann das maximale oder minimale Ergebnis schließlich erscheinen, aber es gibt kein unvermeidliches Ergebnis. Dies ist sehr ähnlich dem Handelsmarkt. Die Teilnehmer ändern auch den Markt, wenn sie den Markt analysieren und kaufen und verkaufen. Der Markt hat ewige Variabilität. Wenn die Teilnehmer die neue Form des Marktes verstehen, versteht der Markt auch, dass er von den Teilnehmern anerkannt wird, so dass die Variation auftritt. Und es wird dazu neigen, sich in die unbekannte Richtung der Teilnehmer zu ändern. Es hat genug Weisheit, um zu verhindern, dass die Teilnehmer seine Veränderungsregeln fangen, dh der Markt ist nicht stabil, und das Verständnis der Vergangenheit des Marktes kann nicht die Zukunft darstellen.

Die Chaos-Operationsmethode ist eine komplette Reihe von Investitionsideen, Handelsstrategien und Ein- und Ausstiegssignalen, die von Bill Williams erfunden wurde. Derzeit nehmen viele Anleger in der Welt die Chaos-Operation an, um an Markttransaktionen teilzunehmen. Da die Entwicklung des chinesischen Finanzmarkts zurückbleibt und die Chaos-Theorie auch eine relativ neue Idee ist, studieren nur wenige Menschen in China die Chaos-Operationsmethoden. Da die Chaos-Operationsmethode eine Handelsstrategie mit hoher Universalität ist und auf fast alle Bereiche der Finanzinvestition angewendet werden kann, einschließlich Aktien, Anleihen, Futures, Devisen und digitaler Währung, verwendet dieser Kurs eine vereinfachte Version der Chaos-Strategie als Ausgangspunkt, um Ihr Anlagegewinn und Ihr Einkommen zu verbessern.

Wie der Name schon sagt, ist die theoretische Grundlage der Chaos-Operationsmethode die Chaos-Theorie, die vom Meteorologen Edward Lorenz vorgeschlagen wurde. Es war eine der größten wissenschaftlichen Entdeckungen Ende des 20. Jahrhunderts. Er stellte den berühmten "Schmetterlings-Effekt" vor. Bill Williams wandte die Chaos-Theorie kreativ auf den Bereich der Finanzinvestitionen an, kombinierte sie mit Fraktalgeometrie, nichtlinearer Dynamik und anderen Disziplinen und schuf eine Reihe sehr effektiver technischer Analyseindikatoren.

Die gesamte Chaos-Betriebsmethode besteht aus fünf Hauptdimensionen (technischen Indikatoren):

  • Alligator

  • Das Fraktal

  • Die Dynamik

  • Beschleunigung

  • Die Balancelinie

img

Die Alligator ist eine Reihe von Gleichgewichtslinien, die Fraktalgeometrie und nichtlineare Dynamik verwenden. Sein Wesen besteht darin, den exponentiell gewichteten gleitenden Durchschnitt zu erweitern, der eine Art Mittellinie ist, aber seine Berechnungsmethode ist etwas komplizierter als die gewöhnliche Mittellinie. Als nächstes schauen wir uns an, wie man den Alligator in MyLanguage definiert:

// Parameters
N1:=11;
N2:=21;

// Defining the price median
N3:=N1+N2;
N4:=N2+N3;
HL:=(H+L)/2;

// Alligator
Y^^SMA(REF(HL,N3),N4,1);
R:=SMA(REF(HL,N2),N3,1);
G:=SMA(REF(HL,N1),N2,1);

Zuerst definieren wir 2 externe Parameter N1 und N2, und berechnen dann den durchschnittlichen HL des höchsten Preises und des niedrigsten Preises entsprechend den externen Parametern, und berechnen dann den durchschnittlichen HL mit verschiedenen Parametern. Für Zähne ist es der Durchschnitt der mittleren Periode der Mittellinie, und der Kiefer ist der Durchschnitt der großen Periode der Mittellinie. In dieser Strategie verwenden wir den Kiefer.

In der Chaos-Operationsmethode wird ein Fraktalkonzept anschaulich definiert. Wir können eine Analogie machen: Öffnen Sie die Handfläche, mit den Fingern nach oben, der Mittelfinger ist das obere Fraktal, der linke kleinen Finger und der Ringfinger, und der rechte Zeigefinger und Daumen beziehungsweise, stellen die K-Linie ohne Rekordhoch dar. Ein Grundfraktal besteht aus diesen fünf K-Linien. Dann können Sie Fraktal mit folgendem Code definieren:

// Fractal
TOP_N:=BARSLAST(REF(H,2)=HHV(H,5))+2;
BOTTOM_N:=BARSLAST(REF(L,2)=LLV(L,5))+2;

TOP:=REF(H,TOP_N);
BOTTOM:=REF(L,BOTTOM_N);

MAX_YRG^^MAX(MAX(Y,R),G); 
MIN_YRG^^MIN(MIN(Y,R),G); 

TOP_FRACTAL^^VALUEWHEN(H>=MAX_YRG,TOP);
BOTTOM_FRACTAL^^VALUEWHEN(L<=MIN_YRG,BOTTOM);

Nachdem wir den Alligator- und Fraktalindex berechnet haben, können wir eine einfache Chaos-Operationsstrategie basierend auf diesen beiden Bedingungen schreiben und eine Gruppe von exponentiell gewichteten gleitenden Durchschnittslinien als Benchmarkpreis für die Berechnung des Alligator- und Fraktalindex verwenden. Natürlich wird die ursprüngliche chaotische Operationsstrategie komplexer sein. Der Code lautet wie folgt:

// If there are no current long position orders and the closing price rises above the upper fractal and the upper fractal is above the alligator, open a long position.
BKVOL=0 AND C>=TOP_FRACTAL AND TOP_FRACTAL>MAX_YRG,BPK(1);
// If there are no current short position orders and the closing price falls below the lower fractal and the lower fractal is below the alligator, open a short position.
SKVOL=0 AND C<=BOTTOM_FRACTAL AND BOTTOM_FRACTAL<MIN_YRG,SPK(1);

// Long positions are closed if the closing price falls below the jaws of the alligator.
C<Y,SP(BKVOL);
// Short positions are closed if the closing price rises above the jaws of the alligator.
C>Y,BP(SKVOL);

Um es einfacher zu verstehen, habe ich die detaillierten Kommentare direkt in den Code geschrieben.

  • Long-Openingposition: wenn es derzeit keine Long-Positions-Orders gibt und der Schlusskurs unterhalb des oberen Fraktals steigt und das oberste Fraktal über dem Alligator liegt.
  • Kurze Eröffnungsposition: wenn zur Zeit keine Short-Positionsorders vorliegen und der Schlusskurs unter dem unteren Fraktal fällt und der unteren Fraktal unter dem Alligator liegt.
  • Long-Schließposition: falls der Schlusskurs unter das Alligatorenkinn fällt.
  • Kurze Schlussposition: wenn der Schlusskurs über dem Alligator Chin steigt.

Als nächstes sehen wir, wie die Ergebnisse dieses einfachen Chaos-Operation-Strategie-Backtests tatsächlich aussehen. Um den Backtest näher an das reale Marktumfeld zu bringen, wird die Provision auf das Doppelte des Wechselkurses eingestellt, und die Eröffnungs- und Schließpositionen unterliegen einem Gleitpunkt von jeweils zwei Sprüngen. Der Backtestdatentyp ist der Rebar-Index, und der Handelstyp ist der Rebar-Hauptkraftkontinuum mit einer festen Eröffnungsposition von 1 Lot. Nachfolgend ist der vorläufige Backtest-Leistungsbericht auf der 1-Stunden-Ebene.

img

Aus den Daten der Kapitalkurve und des Backtests ergab sich eine gute Performance der Strategie, und die Gesamtkapitalkurve war stetig nach oben. Seit Ende 2016 haben sich jedoch die Marktmerkmale der Stahlstahlsorten verändert, von einem einseitigen Trend hoher Volatilität zum breiten Volatilitätstrend. Aus Sicht der Kapitalkurve ist der Gewinn von 2017 bis heute offensichtlich schwach.

In einem Wort, die Essenz der Chaos-Operationsmethode ist es, einen Wendepunkt zu finden, ohne sich darum zu kümmern, wie der Markt läuft oder ob es ein wahrer oder falscher Ausbruch ist. Wenn er durch das Fraktal bricht, wird er direkt in den Markt eintreten. Versuche nie, den Markt vorherzusagen, sondern sei ein Beobachter und Nachfolger.

3.2 Entwicklung einer CTA-Arbitrage-Strategie auf Basis der JavaScript-Sprache

George Soros stellte 1987 in "The Alchemy of Finance" einen wichtigen Vorschlag vor: Ich glaube, dass die Marktpreise immer falsch sind, in dem Sinne, dass sie eine voreingenommene Sicht auf die Zukunft darstellen. Er glaubte, dass die Marktwirksamkeitshypothese nur eine theoretische Hypothese ist. In der Tat sind die Marktteilnehmer nicht immer rational und können zu jedem Zeitpunkt nicht alle Informationen vollständig erhalten und objektiv interpretieren. Darüber hinaus, auch wenn es sich um dieselben Informationen handelt, ist das Feedback aller anders. Das heißt, der Preis selbst enthält bereits die falschen Erwartungen der Marktteilnehmer, also ist der Marktpreis im Wesentlichen immer falsch. Dies kann die Gewinnquelle von Arbitragern sein.

Nach den oben genannten Prinzipien können wir wissen, dass in einem ineffektiven Futures-Markt der Grund, warum die Marktwirkung auf Lieferverträge in verschiedenen Perioden nicht immer synchron ist, und die Preisgestaltung nicht vollständig effektiv ist.

Wie die Rohstoff-Futures hat auch die digitale Währung ein Portfolio von Querschnitts-Arbitrage-Kontrakten. Zum Beispiel gibt es in der OKEX-Börse: ETC aktuelle Woche, ETC nächste Woche, ETC Quartal. Nehmen wir zum Beispiel an, dass die Preisdifferenz zwischen der aktuellen Woche von ETC und dem Quartal von ETC für eine lange Zeit bei etwa 5 bleibt. Wenn die Preisdifferenz an einem Tag 7 erreicht, erwarten wir, dass die Preisdifferenz in der Zukunft auf 5 zurückkehrt. Dann können wir ETC in dieser Woche verkaufen und ETC Quartal zur gleichen Zeit kaufen, um die Preisdifferenz zu verkürzen und umgekehrt.

Obwohl diese Preisdifferenz besteht, gibt es viele Unsicherheiten bei manueller Arbitrage aufgrund zeitaufwendiger manueller Operationen, schlechter Genauigkeit und der Auswirkungen von Preisänderungen. Der Charme der quantitativen Arbitrage liegt darin, Arbitragechancen durch quantitative Modelle zu erfassen und Arbitrage-Handelsstrategien zu formulieren, sowie Handelsorders automatisch an Börsen durch programmierte Algorithmen zu platzieren, um Chancen schnell und genau zu erfassen und Profite effizient und stabil zu erzielen.

Dieser Kurs wird Ihnen beibringen, wie Sie die FMZ Quant Trading Platform und den ETC-Futures-Kontrakt in der OKEX-Börse verwenden, um zu demonstrieren, wie Sie die sofortigen Arbitragemöglichkeiten nutzen, die Profite nutzen, die jedes Mal sichtbar sind, und die Risiken absichern können, die beim Handel mit digitalen Währungen mit einer einfachen Arbitragestrategie auftreten können.

Schaffung einer Zeitrahmenübergreifenden Arbitrage-Strategie für digitale WährungenSchwierigkeiten: Normal

Strategieumfeld

  • Gegenstand der Transaktion: Ether Classic (ETC)
  • Spread-Daten: ETC laufende Woche - ETC Quartal (Kointegrationstest weglassen)
  • Transaktionsdauer: 5 Minuten
  • Transaktionsdauer: 5 Minuten
  • Art der Transaktion: Querschnittsperiode desselben Typs

Strategie Logik

  • Bedingungen für die Eröffnung von Positionen mit dem Verkauf der Kursdifferenz: Wenn das Girokonto keine Positionen hat und die Kursdifferenz kleiner als die untere Grenze der Kugel ist, dann kaufen Sie die Eröffnungspositionen ETC für die Woche, verkaufen Sie die Eröffnungspositionen ETC für das Quartal.
  • Bedingungen für die Eröffnung von Positionen mit dem Shorting der Kursdifferenz: Wenn es keine Position auf dem Girokonto gibt und die Kursdifferenz größer ist als die obere Grenze des Balls, dann gehen Sie kurz die Kursdifferenz. Das heißt, verkaufen Sie Eröffnungspositionen ETC für die Woche, kaufen Sie Eröffnungspositionen ETC für das Quartal.
  • Bedingungen für den Schließungspositionen mit Long-Price-Differenz: Wenn das Girokonto im laufenden Monat Long-Orders von ETC hält und im laufenden Monat Short-Orders von ETC hält und die Preisdifferenz größer ist als die mittlere Grenze des Balls, dann schließt man die Preisdifferenz lang. Das heißt, man verkauft Schließpositionen ETC für die Woche, kauft Schließpositionen ETC für das Quartal.
  • Bedingungen für den Schluß von Positionen mit dem Shorten der Preisdifferenz: Wenn das Girokonto in der laufenden Woche laufende Short-Orders von ETC hält und laufende Long-Orders von ETC-Quartalen hält und die Preisdifferenz kleiner als die mittlere Grenze des Balls ist, dann schließt man die Preisdifferenz kurz. Das heißt, man kauft Schließpositionen ETC für die Woche, verkauft Schließpositionen ETC für das Quartal.

Die obige ist eine einfache logische Beschreibung der Querschnitts-Arbitrage-Strategie der digitalen Währung.

function Data() {}  // Basic data function
Data.prototype.mp = function () {}  // Position function
Data.prototype.boll = function () {}  // Indicator function
Data.prototype.trade = function () {}  // Order placement function
Data.prototype.cancelOrders = function () {}  // Order withdrawal function
Data.prototype.isEven = function () {}  // Processing single contract function
Data.prototype.drawingChart = function () {}  // Drawing function

function onTick() {
    var data = new Data(tradeTypeA, tradeTypeB);  // Create a basic data object
    var accountStocks = data.accountData.Stocks;  // Account balance
    var boll = data.boll(dataLength, timeCycle);  // Calculate the technical indicators of boll
    data.trade();  // Calculate trading conditions to place an order
    data.cancelOrders();  // Cancel orders
    data.drawingChart(boll);  // Drawing
    data.isEven();  // Processing of holding individual contract
}

//Entry function
function main() {
    while (true) {  // Enter the polling mode
        onTick();  // Execute onTick function
        Sleep(500);  // Sleep for 0.5 seconds
    }
}

Stellen Sie sich vor, wie unser Handelsprozess im Aufsichtshandel aussieht. Es gibt keinen wesentlichen Unterschied in den Systemtransaktionen. Es ist nichts anderes als das Erhalten von Daten, die Berechnung von Daten, die Platzierung einer Auftragstransaktion und die Verarbeitung nach der Platzierung einer Bestellung. Das gleiche gilt für das Programm. Zuerst führt das Programm die Hauptaufgabe in Zeile 20, die eine Konvention ist, aus. Wenn das Programm die Handelsstrategie vorverarbeitet (falls vorhanden), tritt es in den Endlosschleife-Modus, dh den Umfrage-Modus ein. Im Umfrage-Modus wird die OnTick-Funktion wiederholt ausgeführt.

Dann in der Funktion onTick, ist es unser Handelsprozess in der subjektiven Transaktion: zunächst erhalten Sie die Grundpreisdaten, dann erhalten Sie den Kontostand, dann berechnen Sie den Index, dann berechnen Sie die Handelsbedingungen und platzieren Sie die Bestellung, und schließlich die Verarbeitung nach der Bestellung, einschließlich der Annullierung der Bestellung, Zeichnung und Verarbeitung eines einzigen Vertrages.

Der Strategie-Rahmen kann leicht nach der Strategieidee und dem Transaktionsprozess aufgestellt werden.

  • Vorverarbeitung vor der Transaktion.
  • Holen und berechnen Sie Daten.
  • Stellen Sie eine Bestellung und kümmern Sie sich später darum.

Als nächstes müssen wir den notwendigen Detailcode im Strategie-Rahmen gemäß dem tatsächlichen Transaktionsprozess und den Transaktionsdetails ausfüllen.

I. Vorverarbeitung vor der Transaktion

1. Die notwendigen globalen Variablen im globalen Umfang erklären.

  • Ein Diagrammobjekt für das Konfigurationsdiagramm erklären
var chart = {}
  • Funktion Chart aufrufen und das Chart initialisieren
var ObjChart = Chart ( chart )
  • Deklarieren eines leeren Arrays zur Speicherung der Preisunterschiedsreihe
var bars = []
  • Anzeigen einer Zeitstempelvariable für Datenspeicherverlauf
var oldTime = 0

2. Konfigurieren der externen Parameter der Strategie.

var tradeTypeA = "this_week"; // Arbitrage A Contract
var tradeTypeB = "quarter"; // Arbitrage B Contract
var dataLength = 10; // Indicator period length
var timeCycle = 1; // K-line period
var name = "ETC"; // Currencies
var unit = 1; // Order quantity

3. Definition der Datenverarbeitung

  • Grunddatenfunktion: Daten Erstellen Sie einen Konstruktor, Daten, und definieren Sie seine internen Eigenschaften, einschließlich: Konto-Daten, Positionsdaten, K-Liniendaten Zeitstempel, Kauf-/Verkaufspreis eines Arbitrage-A/B-Kontrakts und positive/negative Arbitrage-Preisdifferenz.
function Data(tradeTypeA, tradeTypeB) { // Pass in arbitrage A contract and arbitrage B contract
    this.accountData = _C(exchange.GetAccount); // Get account information
    this.positionData = _C(exchange.GetPosition); // Get position information
    var recordsData = _C(exchange.GetRecords); // Get K-line data
    exchange.SetContractType(tradeTypeA); // Subscription arbitrage A contract
    var depthDataA = _C(exchange.GetDepth); // Depth data of arbitrage A contract
    exchange.SetContractType(tradeTypeB); // Subscription arbitrage B contract
    var depthDataB = _C(exchange.GetDepth); // Depth data of arbitrage B contract
    this.time = recordsData[recordsData.length - 1].Time; // Time of obtaining the latest data
    this.askA = depthDataA.Asks[0].Price; // Sell one price of Arbitrage A contract
    this.bidA = depthDataA.Bids[0].Price; // Buy one price of Arbitrage A contract
    this.askB = depthDataB.Asks[0].Price; // Sell one price of Arbitrage B contract
    this.bidB = depthDataB.Bids[0].Price; // Buy one price of Arbitrage B contract
    // Positive arbitrage price differences (Sell one price of contract A - Buy one price of contract B)
    this.basb = depthDataA.Asks[0].Price - depthDataB.Bids[0].Price;
    // Negative arbitrage price differences (Buy one price of contract A - Sell one price of contract B)
    this.sabb = depthDataA.Bids[0].Price - depthDataB.Asks[0].Price;
}
  • Erhalten Sie die Positionsfunktion: mp ()) Durchqueren Sie das gesamte Positionsarray und geben Sie die Positionsgröße des angegebenen Vertrags und der angegebenen Richtung zurück.
Data.prototype.mp = function (tradeType, type) {
    var positionData = this.positionData; // Get position information
    for (var i = 0; i < positionData.length; i++) {
        if (positionData[i].ContractType == tradeType) {
            if (positionData[i].Type == type) {
                if (positionData[i].Amount > 0) {
                    return positionData[i].Amount;
                }
            }
        }
    }
    return false;
}
  • K-Linie und Indikatorfunktion: Boll ((() Eine neue K-Liniensequenz wird nach den Daten der positiven Arbitrage/negativen Arbitrage-Preisunterschied synthetisiert. Die Daten der oberen Spur, der mittleren Spur und der unteren Spur, die durch den Boll-Indikator berechnet werden, werden zurückgegeben.
Data.prototype.boll = function (num, timeCycle) {
    var self = {}; // Temporary objects
    // Median value of positive arbitrage price difference and negative arbitrage price difference
    self.Close = (this.basb + this.sabb) / 2;
    if (this.timeA == this.timeB) {
        self.Time = this.time;
    } // Compare two depth data timestamps
    if (this.time - oldTime > timeCycle * 60000) {
        bars.push(self);
        oldTime = this.time;
    } // Pass in the price difference data object into the K-line array according to the specified time period
    if (bars.length > num * 2) {
        bars.shift(); // Control the length of the K-line array
    } else {
        return;
    }
    var boll = TA.BOLL(bars, num, 2); // Call the boll indicator in the talib library
    return {
        up: boll[0][boll[0].length - 1], // boll indicator upper track
        middle: boll[1][boll[1].length - 1], // boll indicator middle track
        down: boll[2][boll[2].length - 1] // boll indicator down track
    } // Return a processed boll indicator data
}
  • Auftragsfunktion: Handel Da es notwendig ist, zwei Aufträge in verschiedene Richtungen gleichzeitig zu platzieren, wird der Kauf/Verkauf eines Preises innerhalb der Funktion nach dem Vertragsnamen der Bestellung umgerechnet.
Data.prototype.trade = function (tradeType, type) {
    exchange.SetContractType(tradeType); // Resubscribe to a contract before placing an order
    var askPrice, bidPrice;
    if (tradeType == tradeTypeA) { // If the order is placed in contract A
        askPrice = this.askA; // set askPrice
        bidPrice = this.bidA; // set bidPrice
    } else if (tradeType == tradeTypeB) { // If the order is placed in contract B
        askPrice = this.askB; // set askPrice
        bidPrice = this.bidB; // set bidPrice
    }
    switch (type) { // Match order placement mode
        case "buy":
            exchange.SetDirection(type); // Set order placement mode
            return exchange.Buy(askPrice, unit);
        case "sell":
            exchange.SetDirection(type); // Set order placement mode
            return exchange.Sell(bidPrice, unit);
        case "closebuy":
            exchange.SetDirection(type); // Set order placement mode
            return exchange.Sell(bidPrice, unit);
        case "closesell":
            exchange.SetDirection(type); // Set order placement mode
            return exchange.Buy(askPrice, unit);
        default:
            return false;
    }
}
  • Auftrag stornieren Funktion: Auftrag stornieren Erhalten Sie eine Reihe aller ausstehenden Bestellungen und stornieren Sie sie einzeln. Zusätzlich wird false zurückgegeben, wenn es eine unerfüllte Bestellung gibt, und true wird zurückgegeben, wenn es keine unerfüllte Bestellung gibt.
Data.prototype.cancelOrders = function () {
    Sleep(500); // Delay before cancellation, because some exchanges, you know what I mean
    var orders = _C(exchange.GetOrders); // Get an array of unfilled orders
    if (orders.length > 0) { // If there are unfilled orders
        for (var i = 0; i < orders.length; i++) { // Iterate through the array of unfilled orders
            exchange.CancelOrder(orders[i].Id); // Cancel unfilled orders one by one
            Sleep(500); // Delay 0.5 seconds
        }
        return false; // Return false if an unfilled order is cancelled
    }
    return true; // Return true if there are no unfilled orders
}
  • Handler, der einen einzigen Vertrag hält: isEven ((() Im Falle eines Einzelbeins in der Arbitrage-Transaktion werden wir einfach alle Positionen schließen.
Data.prototype.isEven = function () {
    var positionData = this.positionData; // Get position information
    var type = null; // Switch position direction
    // If the remaining 2 of the position array length is not equal to 0 or the position array length is not equal to 2
    if (positionData.length % 2 != 0 || positionData.length != 2) {
        for (var i = 0; i < positionData.length; i++) { // Iterate through the position array
            if (positionData[i].Type == 0) { // If it is a long order
                type = 10; // Set order parameters
            } else if (positionData[i].Type == 1) { // If it is a short order
                type = -10; // Set order parameters
            }
            // Close all positions
            this.trade(positionData[i].ContractType, type, positionData[i].Amount);
        }
    }
}
  • Zeichnungsfunktion: Zeichnung Anrufen Sie die ObjChart Add () -Methode, zeichnen Sie die erforderlichen Marktdaten und Indikatordaten im Diagramm: oberer Track, mittlerer Track, unterer Track, positiver/negativer Arbitrage-Preisunterschied.
Data.prototype.drawingChart = function (boll) {
    var nowTime = new Date().getTime();
    ObjChart.add([0, [nowTime, boll.up]]);
    ObjChart.add([1, [nowTime, boll.middle]]);
    ObjChart.add([2, [nowTime, boll.down]]);
    ObjChart.add([3

Verwandt

Mehr