Type/to search
8
Follow
1364
Followers
Visualisierungsmodul zum Erstellen von Handelsstrategien - Fortgeschritten
Original
Created 2019-07-17 10:22:20  Updated 2023-10-24 21:40:50
 3
 4790

img

Visualisierungsmodul zum Erstellen von Handelsstrategien - Fortgeschritten

Lernen Sie die Handelsstrategie der visuellen Modulkonstruktion kennen – das Einführungskapitel – und erlangen Sie ein konzeptionelles Verständnis der Konstruktion und des Zusammenfügens visueller Module.
Anschließend ist es leicht, den Umgang mit anderen Modulen zu erlernen.
Einige komplexere Funktionen können kombiniert werden.

  • Modul „Transaktionskategorie“

    In früheren Studien und Tests sind wir mit mehreren Modulen der „Transaktionskategorie“ in Kontakt gekommen.
    Zum Beispiel:
    Modul „Börsenkurse“
    Modul „Börsenabruf K-Linie“
    ...

    Auf die bereits verwendeten werde ich hier nicht näher eingehen.

    • 1. Ermitteln Sie die Anzahl der Austausche

      img

      Wenn Sie eine Strategie für den Handel mit einem Roboter schreiben, können Sie mehr als ein Austauschobjekt hinzufügen, beispielsweise eine Absicherungsstrategie.
      Oder Sie müssen die Börsenobjekte durchlaufen (durchlaufen bedeutet, sie einzeln aufzurufen), um auf die Marktbedingungen zuzugreifen.
      Zu diesem Zeitpunkt müssen Sie ein Modul verwenden, um die Anzahl der Austausche zu ermitteln.

      Wir können zunächst eine einfache Struktur verwenden, um die Anzahl der aktuell konfigurierten Börsen auszudrucken:
      img

      Tatsächlich ist es so, als würde man den folgenden JavaScript-Richtliniencode aufrufen:

      function main () { Log(exchanges.length) }

      Schauen wir uns die Ergebnisse der Ausführung dieses kombinierten Moduls an:
      img

      Sie können sehen, dass wir 3 Exchange-Objekte hinzugefügt haben, die drei verschiedene Exchange-Konten darstellen, und das Ergebnis der Backtest-Protokollausgabe ist 3.

    • 2. Holen Sie sich den Namen der Börse

      img

      Beim Hinzufügen von drei Austauschobjekten werden in der Dropdown-Box drei Optionen angezeigt.
      Lernen Sie vorab ein Loop-Modul im Loop-Typ.
      img

      Lassen Sie uns vorab ein Modul zur bedingten Beurteilung lernen:
      img
      Die Beurteilungsbedingung kann wie folgt geschrieben werden:
      img

      Wir verwenden das Loop-Modul, um über die hinzugefügten Börsennamen zu iterieren
      Verwenden Sie das Modul zur bedingten Beurteilung, um zu bestimmen, ob die aktuelle Schleifenanzahl dem auszudruckenden Austauschnamen entspricht.

      img

      Ergebnisse des Backtestlaufs:
      img

      Wie der JavaScript-Strategiecode:

      function main () { for (var i = 1 ; i <= exchanges.length ; i++) { if (i == 1) { Log(exchanges[0].GetName()) } else if (i == 2) { Log(exchanges[1].GetName()) } else { Log(exchanges[2].GetName()) } } }
    • 3. Holen Sie sich das aktuelle Handelspaar der Börse

      img

      Ein einfaches Beispiel holt das Handelspaar des ersten aktuell eingestellten Börsenobjekts und weist es der Textvariable (die vorab in der Variablenkategorie erstellt wurde) zu.

      img
      Backtesting-Ergebnisse:
      img

      Wenn Sie den JavaScript-Richtliniencode aufrufen:

      function main () { var text = exchange.GetCurrency() Log(text) }
    • 4. Bestellmodul

      img
      Dieses Modul ist sehr wichtig und wird für Bestellvorgänge verwendet. Die Preisvariable wird in die erste Zapfenposition (Nut) eingebettet, um den Bestellpreis anzugeben. Sie können auch direkt einen festen Wert eingeben.
      In der zweiten Zapfenposition (Punkt) wird die Bestellmengenvariable eingebettet, welche zur Angabe der Bestellmenge dient.

      Als Beispiel erstellen wir ein Beispiel für die Platzierung einer Kauforder auf Grundlage des neuesten Preises der aktuellen Tick-Marktdaten mit einem Slippage von 10 Yuan, legen die Ordermenge auf 0,1 Münzen fest und drucken die Order-ID.
      img

      Ergebnisse des Backtestlaufs:
      img

      Wie der folgende JavaScript-Richtliniencode:

      function main () { var id = exchange.Buy(_C(exchange.GetTicker).Last + 10, 0.1) Log(id) }
    • 5. Modul zum Abrufen der Auftragsvergabe für das aktuelle Handelspaar

      img

      Dieses Modul gibt alle nicht abgeschlossenen Aufträge für das aktuelle Handelspaar zurück. Die zurückgegebene Struktur ist eine Liste (Array), die von Modulen des Listentyps verarbeitet werden kann (Durchlaufoperationen usw.).
      Beispiel: Wir modifizieren das obige Beispiel für das Bestellmodul [4] leicht und ändern den bei der Bestellung hinzugefügten Preis von 10 Yuan in einen Preisabzug von 10 Yuan. Die Order wird nicht sofort ausgeführt, sondern bleibt in der Kauf- und Verkaufstiefe (also auf einer bestimmten Ebene zwischen Kauf 1, Kauf 2 und Kauf N) hängen, sodass die Order in einer schwebenden Order auf ihre Ausführung wartet.
      Anschließend verwenden wir das Modul „Get the current trading pair’s anvertrauen order“, um eine Liste der Aufträge im Status PENDING (auf Ausführung wartend) zu erhalten.
      Um zu vermeiden, dass Aufträge unter nachfolgenden Marktbedingungen ausgeführt werden und die endgültige Beobachtung des Backtests beeinträchtigt wird, verwenden wir nach der Ausführung des Moduls „Holen Sie sich den Auftrag des aktuellen Handelspaars“ und dem Ausdrucken der Auftragsliste sofort die Funktion „Ausnahme auslösen“. "-Modul, um das Programm zu stoppen.

      img

      Backtesting zeigt:
      img

      Der Preis der Kauforder liegt 10 Yuan unter dem aktuellen Preis, daher wird die Transaktion nicht sofort abgeschlossen.
      Holen Sie sich anschließend die zur Ausführung anstehenden Aufträge und drucken Sie diese aus.
      Schließlich wird eine Ausnahme ausgelöst, um das Programm zu stoppen.

      Das gesamte zusammengestellte Modul ist wie der Aufruf einer JavaScript-Strategie:

      function main () { var id = exchange.Buy(_C(exchange.GetTicker).Last - 10, 0.1) Log(id) Log(exchange.GetOrders()) throw "stop" }
    • 6. Modul „Bestellung stornieren“

      img

      Dieses Modul wird zum Stornieren einer Bestellung verwendet.

      Es gibt viele Szenarien, in denen dies beim Schreiben von Richtlinien erforderlich ist:

      Stornieren Sie alle derzeit ausstehenden Bestellungen.

      Dies erfordert zweifellos die Verwendung des „Auftragsstornierungsmoduls“. Während wir das Auftragsstornierungsmodul lernen, können wir [5] verwenden, um das Modul für die Betrauungsorder des aktuellen Handelspaars zu erhalten und sie zu kombinieren, um diese Funktion zu erreichen.

      Um zunächst die Stornierung aller Bestellungen zu testen, ist es nicht ganz offensichtlich, eine Bestellung aufzugeben. Wir beginnen mit der Aufgabe von zwei Bestellungen mit unterschiedlichen Preisen und Mengen, um die beiden Bestellungen unterscheiden zu können.

      img

      Verwenden Sie das Modul „Jedes Element in der Liste durchlaufen“ im Modul vom Typ „Schleife“, um die Aufträge in der aktuellen Liste ausstehender Aufträge zu durchlaufen.
      img
      Während der Durchquerung wird jede abgerufene Reihenfolge der variablen Modulreihenfolge zugewiesen (erstellt im variablen Modultyp, wie unten gezeigt:)
      img
      Verwenden Sie das Werkzeugtypmodul:
      img
      Nehmen Sie die Auftrags-ID heraus und übergeben Sie sie an die Zapfenposition (konkave Position) des Moduls zur Auftragsstornierung. Das Modul zur Auftragsstornierung führt dann den Stornierungsauftrag aus.

      Backtest-Lauf:
      img

      Beschreibung der JavaScript-Richtlinie verwenden:

      function main () { var id = exchange.Buy(_C(exchange.GetTicker).Last - 10, 0.1) Log(id) var id2 = exchange.Buy(_C(exchange.GetTicker).Last - 12, 0.2) Log(id2) var orders = exchange.GetOrders() Log(orders) for (var i in orders) { var order = orders[i] Log(exchange.CancelOrder(order.Id)) } }
    • 7. Ein Modul zum Abrufen detaillierter Informationen zu einer Bestellung basierend auf der Bestellnummer

      img

      Dieses Modul kann detaillierte Bestellinformationen zurückgeben, indem es ein variables Bestell-ID-Modul mit der Zapfenlochposition verbindet.

      img

      Achten Sie auf die Reihenfolge, die nach der Ausführung zurückgegeben wird:
      img

      Vergleicht man die Ergebnisse mit dem Laufbeispiel [5], so ist festzustellen, dass es sich bei dem ausgedruckten Auftrag um eine eigenständige Auftragsinformation handelt.[] In eckige Klammern eingeschlossen.
      Da Beispiel [5] eine Liste zurückgibt, wird in diesem Beispiel nur eine einzelne Bestellinformation zurückgegeben (erhalten anhand der ID-Variablenmodul an der vom Modul übergebenen Zapfenposition).

      Das obige Beispiel entspricht der Ausführung einer JavaScript-Richtlinie:

      function main () { var id = exchange.Buy(_C(exchange.GetTicker).Last - 10, 0.1) Log(exchange.GetOrder(id)) }
    • 8. Futures-Handelsmodul

      Wir werden die oben genannten Module nacheinander studieren und den Testaustausch auf Rohstoff-Futures einrichten.

      Backtesting-Einstellungen:
      img
      Das folgende Beispiel führt einen Backtest dieses Setups durch.

      • Modul zur Beurteilung des Verbindungsstatus zwischen CTP-Rohstoff-Futures und Futures-Unternehmensservern

        img

        Rohstoff-Futures haben Öffnungs- und Schließzeiten. Wenn der Markt geschlossen ist, können Sie keine Verbindung herstellen.

      • Einrichten des Vertragsmoduls

        img

        Wenn das Börsenobjekt als Terminbörse konfiguriert ist und Sie den Vertrag nicht festlegen und die Marktinformationen nicht direkt abrufen, wird ein Fehler gemeldet:
        img

        Wir haben den Vertrag auf MA909 festgelegt, den aktuellen Hauptvertrag für Methanol.
        img
        Auf diese Weise wird der neueste Preiswert im aktuellen Tick-Markt des MA909-Kontrakts ermittelt.

      • Einrichten des Orderrichtungsmoduls für den Futures-Handel

        Im Ausführungsreihenfolgemodul
        img
        Die Auftragsrichtung muss angegeben werden, da Futures Folgendes haben:
        kaufen: eine Long-Position eröffnen
        verkaufen: eine Short-Position eröffnen
        closebuy: Long-Position schließen
        closesell: Short-Position schließen
        Vier Richtungen (Rohstoff-Futures haben zwei weitere Richtungen: closebuy_today schließt Long-Positionen heute, closesell_today schließt Short-Positionen heute).

        Wenn das Auftragsmodul beispielsweise auf Kaufen eingestellt ist, dann gibt es zwei Bedeutungen: Öffnen einer Long-Position und Schließen einer Short-Position, was zu Mehrdeutigkeiten führt.
        Daher wird das Modul „Set Futures Trading Order Direction“ benötigt, um eine klare Orderrichtung festzulegen.

        img

        Backtesting zeigt:
        img

        Wie der JavaScript-Strategiecode:

        function main () { while (true) { if (exchange.IO("status")) { exchange.SetContractType("MA909") Log(exchange.GetTicker().Last) exchange.SetDirection("buy") Log(exchange.Buy(1000, 1)) throw "stop" } else { Log("未连接商品期货前置机") } Sleep(1000) } }
    • 9. Modul für den Handel mit Kryptowährungs-Futures

      Die Verwendung von digitalen Währungs-Futures ist grundsätzlich die gleiche wie die Verwendung von Rohstoff-Futures in [8] oben.

      • Am Beispiel von OKEX kann der Vertragscode wie folgt lauten:

        • this_week : diese Woche
        • next_week : nächste Woche
        • Viertel: Viertel
        • tauschen: unbefristet
      • BitMEX :

        • XBTUSD
        • ETHUSD
      • Einstellen des Leverage-Moduls

        img

        Wird verwendet, um den Hebel für digitale Währungs-Futures festzulegen.

        # 注意 : 回测不支持。

        Wie in der JavaScript-Strategie:

        function main () { exchange.SetMarginLevel(10) }

Visualisierungsbeispielstrategie:

Weitere Strategien finden Sie unter: https://www.fmz.com/square

Weitere Artikel dieser Reihe

Langweilige Programmierung lässt sich mithilfe von Bausteinen ganz einfach erledigen. Probieren Sie es aus, es ist sehr interessant!

Related Recommendations
Comment
All comments (2)

    学了一个多月编程还是写不了策略,,现在全靠积木了!

    7 years ago

    感谢支持,这个系列文章会继续做的。
    其实根据每个范例后面对应的JavaScript策略代码,很容易就能掌握用JS 写策略的。

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