Erweiterung der benutzerdefinierten Vorlage durch Visual (Blockly) Strategy Editing

Schriftsteller:- Ich bin ein Idiot., Erstellt: 2022-04-27 10:01:48, Aktualisiert: 2022-04-27 10:12:55

Erweiterung der benutzerdefinierten Vorlage durch visuelle (blöckige) Strategiebearbeitung

Wie erweitern Sie die benutzerdefinierte Bibliothek, die Sie für die visuellen Strategien benötigen? Zum Beispiel möchte ich den MA-Indikator berechnen, aber das System kommt nur mit:

img

Wie kann ich diesen Indikatoren einen benutzerdefinierten Code hinzufügen? Nehmen wir zum Beispiel das Hinzufügen eines benutzerdefinierten MA-Indikatorberechnungsmoduls, um zu erklären, wie das Visualisierungsmodul erweitert wird.

Kryptowährungs-Spot-Handelsvorlage

Lassen Sie uns über die Vorlage Cryptocurrency Spot Trading Library sprechen; die Adresse lautet:https://www.fmz.com/strategy/10989- Ich weiß nicht. Obwohl diese Vorlage eine JavaScript-Versionsvorlage der FMZ-Plattform ist (für Studenten, die das Konzept der Vorlage nicht verstehen, können Sie die FMZ API-Dokumentation für weitere Details besuchen:https://www.fmz.com/api#template- Ich weiß. Die Kommentare am Anfang der Vorlage enthalten den Code, der das Visualisierungsmodul definiert, und der Code der JavaScript-Vorlage kann im definierten Code referenziert werden.

Kryptowährungs-Spothandel Bibliothek; die Visualisierung Definition am Anfang:

/*blockly
    {
        "type": "ext_Trade",
        "message0": "%1 symbol amount %2|%1 Coins %2",
        "args0": [{
            "type": "field_dropdown",
            "options": [
                ["bid|Buy", "Buy"],
                ["ask|Sell", "Sell"]
            ]
        }, {
            "type": "input_value",
            "check": "Number"
        }],
        "template": "(function(){var r = $.%1(%2); return r ? r.amount : 0; })()",
        "order": "ORDER_ATOMIC",
        "output": "Number",
        "colour": 85
    }, {
        "type": "ext_CancelPendingOrders",
        "message0": "cancel %1 orders|Cancel %1 Orders",
        "args0": [{
            "type": "field_dropdown",
            "name": "TYPE",
            "options": [
                ["all|All", " "],
                ["buy order|Buy", "ORDER_TYPE_BUY"],
                ["sell order|Sell", "ORDER_TYPE_SELL"]
            ]
        }],
        "previousStatement": null,
        "nextStatement": null,
        "template": "$.CancelPendingOrders(%1);",
        "colour": 85
    }, {
        "type": "ext_Cross",
        "message0": "calculate cross period %1 and %2|Cross Period %1 and %2",
        "inputsInline": true,
        "args0": [{
            "type": "input_value"
        }, {
            "type": "input_value"
        }],
        "template": "$.Cross(%1,%2)",
        "order": "ORDER_ATOMIC",
        "output": "Number"
    }, {
        "type": "ext_GetAccount",
        "message0": "obtain asset information|GetAccount",
        "template": "$.GetAccount()",
        "order": "ORDER_ATOMIC",
        "output": null
    }
*/

Entsprechend den Modulen in der visuellen (blockartigen) Bearbeitungsseite:img

Erstellen Sie ein benutzerdefiniertes Modul zur Berechnung von MA

Mit dem vorgefertigten Beispiel ist es sehr einfach, es selbst zu konstruieren, genau wie man es mechanisch kopiert.

Zuerst erstellen Sie eine neue Vorlage in der JavaScript-Sprache.img

Bearbeiten Sie den Vorlagecode.

/*blockly
    {
        "type": "ext_testA",
        "message0": "testA|testA",
        "template": "function(){return 99;}()",
        "order": "ORDER_ATOMIC",
        "output": "Number"
    },{
        "type": "ext_MA",
        "message0": "MA period %1| MA Period %1",
        "args0": [{
            "type": "input_value",
            "check": "Number"
        }],
        "template": "(function(){var r = exchange.GetRecords(); return (!r || r.length < %1) ? false : TA.MA(r, %1); })()",
        "order": "ORDER_ATOMIC",
        "output": null,
        "colour": 85
    }
*/
  • Typ: Um einen Modultyp durch Attribut zu definieren und das Modul durch Benennung zu definieren.
  • Message0: Anzeige des Textes auf einem Modul
  • Vorlage: der von einem Modul ausgeführte Code
  • Ausgang: der von einem Modul exportierte Typ
  • args0: der von einem Modul importierte Parameter; im Moduldefinitionscode ist %1 der erste importierte Parameter und %2 der zweite.

Nach der Bearbeitung der neuen Vorlage speichern Sie sie. In der Strategie, in der wir diese Vorlage verwenden müssen, überprüfen Sie die Vorlage.img

Sie können sehen, dass es zwei zusätzliche Module gibt:

  • img

    Das Modul heißt: testA. Schauen wir uns den Ausführungscode an:img

    function(){return 99;}()
    

    Es ist eine sehr einfache JavaScript-Funktion, die beim Ausführen einen Wert von 99 zurückgibt.

  • img

    Das Modul mit dem Namen: MA-Periode.

    img

    (function(){var r = exchange.GetRecords(); return (!r || r.length < %1) ? false : TA.MA(r, %1); })()
    

    Der Code ist ein anonymer Funktionsaufruf. Die anonyme Funktion führt zuerst die Operation aus, um die K-Liniendaten zu erhalten, nämlich die K-Liniendatenr. Dann, je nachdem, ob die erlangte rnulloder ob die Länge derrist kleiner als der Parameter%1Importiert auf das Modul, Richter zurückfalseoder das durchTA.MA(r, %1).

Es ist bereit für den nächsten Einsatz.

Test zur Berechnung des MA-Indikators

Visuelle Strategiebearbeitung:img

Betrieb:img

Es kann festgestellt werden, dass die durch den MA-Indikator berechneten Daten wie gewünscht ermittelt wurden.

Das obige ist nur ein Beispiel für das Design des Visualisierungsmoduls, so dass Sie die Vorlagefunktion verwenden können, um selbst zu erweitern.


Mehr