Bringen Sie Ihnen Schritt für Schritt bei, wie Sie eine alte Strategie nahtlos mit der WebSocket-Marktschnittstelle verbinden

Erstellt in: 2019-09-26 15:47:53, aktualisiert am: 2024-12-17 20:38:08
comments   3
hits   3049

Bringen Sie Ihnen Schritt für Schritt bei, wie Sie eine alte Strategie nahtlos mit der WebSocket-Marktschnittstelle verbinden

Bringen Sie Ihnen Schritt für Schritt bei, wie Sie eine alte Strategie nahtlos mit der WebSocket-Marktschnittstelle verbinden

Auf der Inventor Quantitative Trading PlattformStrategieplatzEs gibt viele interessante Strategien im Internet. Damals nutzten die meisten digitalen WährungsbörsenrestDie API-Schnittstelle des Protokolls, viele Strategien basieren aufrestSchnittstelle, manchmal sind die Marktaktualisierungen langsam. Darüber hinaus sind in letzter Zeit einige Börsen aufgetauchtrestEin Schnittstellenfehler führt dazu, dass die Richtlinie unbrauchbar wird. Wenn die Richtlinie geändert wird, fügen Sie hinzuwebsocketDie Schnittstellenunterstützung erfordert bestimmte Änderungen am Strategiecode, was normalerweise problematisch ist (eine Änderung der Strategie ist viel schwieriger als ihr Neuschreiben). Wie kann ich die gleiche Strategie verwenden, ohne sie zu ändern?websocketWas ist mit der Marktschnittstelle? Dies zeigt deutlich die enorme Flexibilität der Inventor Quantitative Trading Platform. Wir können:

  • 1. Nutzen Sie die Strategie „Vorlagenbibliothek“.
  • 2. Jaexchange.GetTicker Funktions-Hook-Operation zum Abrufen von Marktinformationen.

Dies ermöglicht die Steuerung der Strategie durchwebsocketDie über die Marktschnittstelle gesteuerten Daten werden ausgeführt. Verwendete ProgrammierspracheJavaScriptSprache.

Analytische Strategie

Zum Beispiel wollen wir eine klassische alte Strategie “Icebreaker” modifizieren

Richtlinienadresse

Schauen wir uns zunächst den Strategiecode an und stellen fest, dass die Strategie von den Tick-Marktbedingungen bestimmt wird und hauptsächlichtickerIn den DatenBuySellLastDiese Eigenschaften,tickerDie Daten werden über die API-Funktion der FMZ-Plattform bezogen:exchange.GetTicker Erhalten. Damit ist das Ziel klar.exchange.GetTickerFunktionHookDer Vorgang (d. h. das Überschreiben durch eine andere Version und anschließende Ersetzen) ist alles, was erforderlich ist. Wir können die Icebreaker-Strategie jedoch nicht umschreiben, da dies Auswirkungen auf die Strategie hätte. Was wir wollen, ist eine nahtlose Verbindung! ! Der nächste Protagonist muss also her.

Vorlagenbibliothek Funktion undinitFunktionskoordination

Wir erstellen eine „Vorlagenbibliothek“ und nennen sie:SeamlessConnWS, löschen Sie den Anfangscode.

Bringen Sie Ihnen Schritt für Schritt bei, wie Sie eine alte Strategie nahtlos mit der WebSocket-Marktschnittstelle verbinden

Dann geben SieSeamlessConnWSDie Vorlage legt 2 Parameter fest

  • IsUsedWebSocket
  • Hook_GetTicker@IsUsedWebSocket

Bringen Sie Ihnen Schritt für Schritt bei, wie Sie eine alte Strategie nahtlos mit der WebSocket-Marktschnittstelle verbinden

Wird verwendet, um zu steuern, ob die Funktion aktiviert oder deaktiviert wird.websocketSchnittstellenfunktion, Steuerung und Festlegung der Öffnung spezifischer Marktschnittstellen. In diesem Beispiel können aus Platzgründen nurexchange.GetTickerDie Schnittstelle führt Hook-Operationen aus. Die Parameter werden also nur aktiviert,GetTickerDie Schnittstelle ist der Steuerparameter des Websocket-Modus: Hook_GetTicker.

Sobald die Vorlage erstellt ist, können Sie die spezifische Börse, auf die zugegriffen werden soll, in die Vorlage schreiben.websocketSchnittstelle, abonnieren Sie bestimmte Kurse und warten Sie dann, bis die Börse Daten überträgt. Der spezifische Code wird hier nicht wiederholt. Sie können auf den SeamlessConnWS-Code (öffentlich verfügbar) und die API-Dokumentation verweisen. Was Sie sich ansehen müssen, ist die VorlageinitFunktionen und globale Variablen_DictConnectCreater_ConnMap

Code:

var _DictConnectCreater = {
    "Huobi" : WSConnecter_Huobi,
    "Binance" : WSConnecter_Binance,
}

var _ConnMap = {}

function init () {
    if (IsUsedWebSocket) {
        var connectCreater = null
        if (exchanges.length != 1) {
            Log("切换为ws接口只针对 exchange 交易所对象(即第一个添加的交易所对象)")
        }
        var isFound = false 
        for (var name in _DictConnectCreater) {
            if (exchange.GetName() == name) {
                connectCreater = _DictConnectCreater[name]
                isFound = true
            }
        }

        if (!isFound) {
            throw "没有找到实现"
        }
        
        if (Hook_GetTicker) {
            var symbol = exchange.GetCurrency()
            _ConnMap.GetTicker = connectCreater("GetTicker", symbol)
            exchange.GetTicker = function () {
                return _C(_ConnMap.GetTicker.Read)
            }
        }
        // ... 
        
    }
}

Sie können sehen, dass diese Vorlage nur 2 Austausche implementiert.websocketDie Marktschnittstellen sind Binance Spot und Huobi Spot.initDie Funktion besteht darin, die „Icebreaker“-Strategie zu referenzierenSeamlessConnWSNachdem die Vorlage erstellt wurde, wird beim Ausführen der realen Festplatte als erstes Folgendes ausgeführt:initFunktion, die automatischexchange.GetTickerErsetzen Sie den Funktionsinhalt durchwebsocketImplementierung des Schnittstellencodes zur Erzielung einer nahtlosen VerbindungwebsocketZitate.

SeamlessConnWS-Vorlagenadresse

Wie man es benutzt

Es ist ganz einfach! BündelnSeamlessConnWSNachdem Sie die Vorlage in Ihre eigene Strategiebibliothek kopiert haben, müssen Sie sie nur noch in der „Icebreaker“-Strategie referenzieren, wie in der Abbildung gezeigt:

Bringen Sie Ihnen Schritt für Schritt bei, wie Sie eine alte Strategie nahtlos mit der WebSocket-Marktschnittstelle verbinden

Prüfen, speichern, fertig.

Erstellen Sie einen Echtzeitroboter für die „Icebreaker“-Strategie und wählen Sie Binance als Börse Bringen Sie Ihnen Schritt für Schritt bei, wie Sie eine alte Strategie nahtlos mit der WebSocket-Marktschnittstelle verbinden . OffenSeamlessConnWSKontrollieren Sie die Parameter auf der Vorlage. Bringen Sie Ihnen Schritt für Schritt bei, wie Sie eine alte Strategie nahtlos mit der WebSocket-Marktschnittstelle verbinden

Führen Sie es aus: Bringen Sie Ihnen Schritt für Schritt bei, wie Sie eine alte Strategie nahtlos mit der WebSocket-Marktschnittstelle verbinden

Um die Anzeige der gepushten Daten zu vereinfachen, habe ich in Zeile 157 einen Druckprotokollcode hinzugefügt, der die von der Börse gepushten Daten ausgibt. Bringen Sie Ihnen Schritt für Schritt bei, wie Sie eine alte Strategie nahtlos mit der WebSocket-Marktschnittstelle verbinden

Das Roboterprotokoll zeigt: Bringen Sie Ihnen Schritt für Schritt bei, wie Sie eine alte Strategie nahtlos mit der WebSocket-Marktschnittstelle verbinden

Auf diese Weise muss keine einzige Zeile Strategiecode geändert werden und es wird eine nahtlose Integration der WebSocket-Marktschnittstelle und der Strategie erreicht.

Dieses Beispiel dient nur zurexchange.GetTickerDie Strategie der Marktschnittstellenfunktion wird erläutert. Andere Marktschnittstellen wieexchange.GetDepthexchange.GetTradesexchange.GetRecordsEs ist die gleiche Routine! Für die BeispielvorlageSeamlessConnWS, welches noch weiter ausgebaut werden kann.

Für bestimmte Links in VorlagenwebsocketDie Implementierung verwendetDialFunktion (siehe API-Dokumentation Wählfunktion), welche je nach Bedarf angepasst werden kann. Sie können beispielsweiseread()Funktion angegebene Parameter-2, das heißt nur zurückgebenwebsocketDie Verbindung empfängt die neuesten Daten in ihrem Puffer.

Vielen Dank fürs Lesen