Type/to search
8
Follow
1364
Followers
Visualisierungsmodul zum Erstellen einer Handelsstrategie – erster Blick
Original
Created 2019-07-08 09:23:59  Updated 2024-12-23 17:57:33
 7
 8305

img

Visualisierungsmodul zum Erstellen einer Handelsstrategie – erster Blick

Visuelle Programmierung war für Entwickler von Softwaretools schon immer ein erstrebenswertes Ziel, auch im Bereich des quantitativen Handels.
Denn der „What you see is what you get“-Ansatz der Visualisierung senkt die technische Hürde für die Programmierentwicklung enorm.
Benutzer müssen sich nicht mehr mit einer Menge langweiliger Codes herumschlagen. Sie müssen nur ihren Verstand, ihre Vorstellungskraft und ihr logisches Denken einsetzen und sich auf das eigentliche Geschäft konzentrieren.
Sie können jedes gewünschte Programm realisieren, ist das nicht großartig?

Dann betreten wir gemeinsam das Gebiet der visuellen Programmierung quantitativer Handelsstrategien!

  • Erster Erfinder der quantisierten visuellen Programmierung

    Registrieren Sie nach der Anmeldung bei https://www.fmz.com ein Konto (wenn Sie bereits registriert sind, melden Sie sich direkt an) und klicken Sie auf: Control Center->Richtlinienbibliothek->Neue Richtlinie.

    img

    Wir erkennen eine erste Visualisierungsstrategie.
    Es werden nur die Kontobestandsinformationen der standardmäßig konfigurierten Börse ausgegeben (das erste im Backtest oder Roboter hinzugefügte Börsenobjekt).
    (Wie unten gezeigt)

    img

    Bevor wir den Einsatz der Visualisierung erlernen, können wir zunächst einige Designkonzepte der Visualisierung verstehen.

    • 1. Spleißen

      Bei genauer Betrachtung fällt auf, dass die Module allesamt über Zapfen (konkav) und Nuten (konvex) verfügen, wodurch die Module „verbunden“ und „verknüpft“ werden können.
      Wenn die durch zwei Module dargestellten Funktionscodes miteinander verbunden werden können, werden diese zusammengesteckt, indem man die Zapfenlöcher der beiden Module einander näher bringt.

      img

    • 2. Moduleinstellungen und Anpassungen

      Einige Module haben spezielle Einstellungen, zum Beispiel:

      img

      Sie können das Modul „Projekt“ auf der linken Seite auf das Modul „Verbinden“ ziehen, um dort eine Zapfenverbindungsposition hinzuzufügen und so eine Stelle zum Verbinden von Text hinzuzufügen.
      Auf diese Weise können Sie durch Klicken auf das kleine Zahnrad einige Anpassungen und Einstellungen am Modul vornehmen.

    • 3. Standard-Eingabeparameter des Moduls

      Einige Module erfordern Eingabeparameter, die Werte, Zeichenfolgen usw. sein können.
      Wenn Sie keine Variablen als Eingabeparameter des Moduls hinzufügen, wird das Modul gemäß den Standardeingabeparametern ausgeführt.

      img
      Ein Berechnungsmodul wie dieses zum Finden von Quadratwurzeln gibt die Berechnungsergebnisse dieses Moduls aus.
      img
      Wie Sie sehen, wird, wenn der Eingabeparameter fehlt, der Standardwert 9 als Eingabeparameter verwendet, um die Quadratwurzel aus 9 zu berechnen.
      img

      Wenn Sie ein variables Modul als Eingabeparameter verwenden möchten, können Sie das variable Modul natürlich direkt mit der Zapfenloch- und Schlitzposition verbinden.
      img

    • 4. Bedienung

      Das Modul kann mit der linken Maustaste angeklickt und gezogen werden.
      Module können mit Strg+C kopiert und mit Strg+V eingefügt werden, genauso bequem wie das Kopieren und Einfügen von Code oder Text.
      Mithilfe des Mausrads lässt sich der Arbeitsbereich vergrößern bzw. verkleinern, dabei werden auch alle Module vergrößert bzw. verkleinert.
      Klicken Sie auf einen leeren Bereich im Operationsbereich, halten Sie die Maustaste gedrückt und ziehen Sie, um den Operationsbereich zu verschieben.
      Der Papierkorb auf der rechten Seite zeichnet die Module auf, die kürzlich gelöscht wurden.
      Vergessen Sie vor allem nicht, nach dem Zusammenstellen der Modulstrategie auf „Speichern“ zu klicken.

  • Einführung in das Modul „Visualisierungstools“

    Sie können sehen, dass es auf der linken Seite des visuellen Bearbeitungsbereichs viele Modulkategorien gibt und in jeder Kategorie viele visuelle Module verfügbar sind.

    img Es gibt insgesamt 11 Kategorien.

    • Werkzeugmodul:

      img


      • 1. Ausgabeinformationen:

        Dieses Modul wird normalerweise in Kombination mit Textmodulen verwendet, wie unten gezeigt:
        img
        Sie können eine Zeichenfolge in das Textklassenmodul eingeben, sodass beim Ausführen des Moduls „Informationen ausgeben“ der Zeichenfolgeninhalt im Textmodul gedruckt wird.
        img
        Backtesting:
        img

        Wie JavaScript-Sprachcode:

        function main(){ Log("你好,可视化编程!") }

      • 2. WeChat-Push:

        Dieses Modul sieht genauso aus wie „Informationen ausgeben“, außer dass es Informationen ausgibt und sie an das WeChat-Konto sendet, das an das aktuelle Konto gebunden ist.
        img
        img

        Wie JavaScript-Sprachcode:

        function main () { Log("微信推送!@") }

      • 3. Eine Ausnahme auslösen

        Das Modul „throw exception“ ermöglicht es dem Programm, einen Fehler auszulösen und dann die Programmausführung zu stoppen (ohne Code zur Ausnahmebehandlung zu schreiben).
        img

        Dies ähnelt der JavaScript-Strategie, bei der die Funktion „throw“ (auszugebender String) direkt in der Hauptfunktion ausgeführt wird.

        function main () { throw "第一句就抛出异常,让程序停止!" }

        Backtesting-Ergebnisse:
        img
        Es wird normalerweise häufiger beim Debuggen verwendet, beispielsweise wenn Sie möchten, dass das Programm unter einer bestimmten Bedingung angehalten wird und zu diesem Zeitpunkt einige Daten zur einfacheren Beobachtung gedruckt werden.
        Oder Sie können an den Stellen im Codefluss, an denen Probleme auftreten können, ein Ausnahmen auslösendes Modul platzieren, sodass das Programm Fehler melden und einige Fehler erkennen kann.


      • 4. Winterschlaf

        Ruhezustandsmodul
        img
        Wie in der JavaScript-Strategie:

        function main () { Sleep(1000 * 5) }

        Testen Sie das Ruhezustandsmodul:
        img
        Backtesting-Ergebnisse:
        img


      • 5. Einnahmen aus dem Drucken

        img

        Dieses Modul ähnelt der LogProfit-Funktion der Inventor Quantitative Trading Platform API. Es druckt das Gewinnprotokoll und zeichnet automatisch die Gewinnkurve basierend auf den Eingabeparametern.

        Zum Beispiel:
        img
        Die Ausführung des Backtests wird unten dargestellt:
        img
        Der entsprechende JavaScript-Richtliniencode lautet wie folgt:

        function main () { LogProfit(1) Sleep(1000 * 5) LogProfit(2) Sleep(1000 * 5) LogProfit(3) Sleep(1000 * 5) LogProfit(2) Sleep(1000 * 5) LogProfit(5) }

        Es kann an jeder beliebigen Stelle eingefügt werden, an der Sie Umsatzinformationen ausgeben möchten.


      • 6. Schleife

        img
        Das Loop-Modul kann eine Reihe von gespleißten Modulkombinationen umschließen und diese Modulkombination in einer Schleife ausführen lassen.

        prüfen:
        img
        Backtesting-Ergebnisse:
        img
        Es ist ersichtlich, dass nachdem das Loop-Modul die Modulkombination bestehend aus Print Profit und Sleep umschließt, die Modulkombination kontinuierlich ausgeführt wird.


      • 7. Schleifenausführung alle N Sekunden

        img
        Die Verwendung dieses Moduls ist grundsätzlich die gleiche wie die des Loop-Moduls, der einzige Unterschied besteht darin, dass dieses Modul über eine integrierte Schlaffunktion verfügt.
        img


      • 8. Präzisionsverarbeitung

        img
        Dieses Modul kann verwendet werden, wenn variable Module oder numerische Werte die Genauigkeit steuern müssen. Der numerische Wert des Eingabeparameterteils wird gemäß den Einstellungen als numerischer Wert der angegebenen Dezimalstellen ausgegeben.

        Beispielsweise wird die Zahl 3,1415926535897 präzise verarbeitet.
        img

        Backtesting zeigt:
        img


      • 9. Löschen Sie das Protokoll

        img

        Wird zum Löschen von Protokollen verwendet. Abhängig von den Eingabeparametern kann ein Teil der Protokolle beibehalten werden.
        Wie in der API-Dokumentation:

        LogReset()

      • 10. Löschen Sie das Einkommensprotokoll

        img

        Wird zum Löschen des Umsatzprotokolls verwendet. Abhängig von den Eingabeparametern kann ein Teil des Protokolls beibehalten werden.
        Wie in der API-Dokumentation:

        LogProfitReset()

      Nachfolgend sind einige häufig verwendete Werkzeugmodule aufgeführt.

      • 11. Funktionsmodul zum Erhalten eines bestimmten Attributs des Marktes

        img

        Dieses Toolmodul muss in Verbindung mit dem Marktmodul im „Handelsmodultyp“ verwendet werden, wie in der Abbildung gezeigt:
        img

        Verwenden Sie das Ausgabeinformationsmodul, um den neuesten Transaktionspreis des neuesten Tickermarkts auszugeben:
        img

        Backtesting zeigt:
        img

        Wie der JavaScript-Strategiecode:

        function main () { Log(exchange.GetTicker().Last) }
      • 12. Modul zum Abrufen der Attribute eines bestimmten Balkens mit K-Liniendaten

        img

        Dieses Modul muss auch zusammen mit dem K-Line-Datenerfassungsmodul im „Handelsmodultyp“ verwendet werden.

        Erstellen Sie zunächst ein variables Modul und nennen Sie es: K-line.
        img
        Holen Sie sich dann die K-Line-Daten, verwenden Sie das K-Line-Datenmodul, um sie abzurufen, und weisen Sie sie dem variablen Modul zu: "K-Line".
        img
        Verwenden Sie dann das Listenlängenmodul im „Listenmodultyp“, um die Länge des variablen K-Linienmoduls zu erhalten, mit dem angegeben wird, von welchem ​​Balken der K-Linie Daten abgerufen werden sollen.
        img
        Zusammennähen, wie gezeigt:
        img
        Wenn der Backtest ausgeführt wird, wird der Zeitstempel des letzten K-Line-Balkens ausgedruckt.
        img

      • 13. Modul zur Erfassung von Auftragsdaten im Auftragsbuch

        img

        Es muss außerdem zusammen mit dem Modul „Get Depth Data“ im „Transaction Module Type“ verwendet werden.

        img

        Setzen Sie den Index auf 0, legen Sie eine Verkaufsorder fest und erhalten Sie die Informationen zur Verkaufsorder.

        img

        Wie der JavaScript-Strategiecode:

        function main () { Log(exchange.GetDepth().Asks[0]) }
      • 14. Modul zum Abrufen eines bestimmten Attributs in Asset-Informationen

        img
        Dieses Modul muss zusammen mit dem Modul „Get Asset Information“ verwendet werden.
        img

        Beispiel: Drucken Sie die Anzahl der auf dem Girokonto verfügbaren Münzen aus
        img

        Backtesting zeigt:
        img

        Wie in der JavaScript-Strategie:

        function main () { Log(exchange.GetAccount().Stocks) }
      • 15. Modul zum Abrufen eines bestimmten Attributs in Bestelldaten

        img

        Dieses Modul wird verwendet, um den Wert eines bestimmten Attributs in den Auftragsdaten abzurufen, beispielsweise den Preis oder die Menge des ersten Verkaufs im Auftragsbuch (Beispiel Nummer 13).
        img

        Backtesting-Ergebnisse:
        img
        Wie in der JavaScript-Strategie:

        function main () { Log(exchange.GetDepth().Asks[0].Price) }

        Es kann auch verwendet werden, um ein bestimmtes Attribut in den Bestellinformationen abzurufen, die vom „Modul „Bestelldetails abfragen““ zurückgegeben werden (was im erweiterten Abschnitt erläutert wird).

      • 16. Modul zum Abrufen der Attribute einer bestimmten Position in den Positionsinformationen

        img

        Ebenso sollte es zusammen mit dem „Get Futures Position Module“ verwendet werden. Es ist zu beachten, dass die vom Get Futures Position Module zurückgegebenen Positionsdaten ein Array (Liste) sind, also eine Datenstruktur, die Positionen verschiedener Kontrakte und Richtungen enthält. . Daher müssen Sie bei der Verwendung den Index angeben.

        Nachdem wir so viel gelernt haben, kombinieren wir eine Absicherungsoperation, das heißt, sichern wir sowohl kurzfristige als auch Terminkontrakte gleichzeitig ab.
        Wir tätigen eine positive Arbitrageabsicherung, das heißt, wir eröffnen einen Short-Forward-Kontrakt, 1 Kontrakt, und eröffnen kurzfristig einen Long-Kontrakt.

        img

        Backtesting-Ergebnisse:
        img

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 (7)

    指标里没有cci,我如果要用cci是不是就不能用这个可视化去创建

    4 years ago

    这个系列里的文章有讲如何实现自定义的模块。

    4 years ago

    除了深入,初识,进阶这三个还有本系列其他的文章吗,为什么我没找到自定义模块和指标模块用法呢

    4 years ago

    请问可视化中的指标模块是怎么使用的

    5 years ago

    这个系列文章可以看完,又讲。

    5 years ago

    好的,谢谢。找到了

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