Die Ressourcen sind geladen. Beförderung...

Lehren Sie, wie man eine alte Strategie Docking der Websocket Zitate Schnittstelle

Schriftsteller:Gutes, Erstellt: 2019-10-08 14:56:58, Aktualisiert: 2023-11-06 19:41:28

img

Es gibt viele interessante Strategien auf der Platzseite (https://www.fmz.com/squareZu dieser Zeit benutzten die meisten Kryptowährungsbörsen die API-SchnittstellerestDie meisten Strategien basieren auf derrestDer Markt ist in den meisten Fällen in der Lage, die notenlosen Börsen zu erfassen, und es gibt auch einige Fälle, in denen die Börsen die notenloserestInterface in naher Zukunft versagt hat, was zu einer Strategie führt, die nicht ordnungsgemäß funktioniert.

Solange die Strategie modifiziert wird, erfordert das Hinzufügen von Unterstützung für die Websocket-Schnittstelle einige Änderungen am Strategiecode, was in der Regel eher problematisch ist (die Schwierigkeit, die Strategie zu ändern, ist viel höher als das Umschreiben).

Wie können wir nicht ändern, die Strategie Code, sondern verwenden Sie die Websocket-Markt-Zitat-Schnittstelle?

Hier ist die volle Flexibilität der FMZ Quant Plattform, die wir verwenden können:

  • Verwenden Sie die Strategie template class library.

  • Ausführung einer Hook-Operation für Börsennotierungen mit der Funktion:exchange.GetTicker.

So, ohne den Strategie-Code zu ändern, lassen Sie die Strategie mit den Daten getrieben und gedrückt durch diewebsocketMarktschnittstelle.

Die Code-Schreibsprache verwendet die JavaScript-Programmiersprache.

Analysestrategie

Zum Beispiel, wenn wir eine klassische Strategie Icebreaker ändern müssen

Strategieadresse:https://www.fmz.com/strategy/9929

Wir wollen uns den Strategie-Code ansehen und feststellen, dass die StrategietickEs verwendet hauptsächlich die Eigenschaften vonBuy, Sell, undLastin dertickerDaten.tickerdie Daten werden durch die API-Funktion der FMZ Quant-Plattform erfasst:exchange.GetTickerDas Ziel ist jetzt klar, wir können dieexchange.GetTickerFunktion mitHookBetrieb (d. h. Ersetzung durch eine andere Version).

Allerdings können wir es nicht in den Icebreaker Strategiecode umschreiben, es wird die Strategie Logik beeinflussen, wir wollen die nahtlose Anbindung an die Websocket!

Also brauchen wir den nächsten Protagonisten zum Debüt.

Die template class library Funktion und die init Funktion arbeiten zusammen

Wir erstellen eine Template-Klasse-Bibliothek mit dem Namen: SeamlessConnWS

img

Setzen Sie dann 2 Parameter auf dieSeamlessConnWS template.

  • IsUsedWebSocket wird verwendet
  • Hook_GetTicker@IsUsedWebSocket

img

Diese beiden werden verwendet, um zu kontrollieren, ob diewebsocketDie Funktion "Anzeige" ist eine Funktion, in der die Anzeige eine spezifische Anzeige-Schnittstelle öffnet.hookfür dieexchange.GetTickerDaher müssen wir den Parameter aktivieren.Hook_GetTicker) derGetTickerSchnittstelle zumwebsocket mode.

Sobald die Vorlage erstellt ist, können wir einen spezifischen Zugriff auf die Exchanges schreibenwebsocketDer spezifische Code wird hier nicht beschrieben, Sie können sich auf dieSeamlessConnWSDer Code (bereits Open Source) und die offizielle API-Dokumentation von FMZ Quant.initFunktion in der Vorlage und globale Variablen_DictConnectCreater, _ConnMap:

Code Teil:

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

var _ConnMap = {}

function init () {
    if (IsUsedWebSocket) {
        var connectCreater = null
        if (exchanges.length != 1) {
            Log("Switching to the ws interface only for the "exchange" exchange object (ie, the first added exchange object)")
        }
        var isFound = false 
        for (var name in _DictConnectCreater) {
            if (exchange.GetName() == name) {
                connectCreater = _DictConnectCreater[name]
                isFound = true
            }
        }

        if (!isFound) {
            throw "Did not find an implementation"
        }
        
        if (Hook_GetTicker) {
            var symbol = exchange.GetCurrency()
            _ConnMap.GetTicker = connectCreater("GetTicker", symbol)
            exchange.GetTicker = function () {
                return _C(_ConnMap.GetTicker.Read)
            }
        }
        // ... 
        
    }
}

Es kann festgestellt werden, dass diese Vorlage nur diewebsocketDer Markt wird von zwei Börsen, nämlich Binance und Huobi, ausgestattet.initDie Funktion des Icebreaker-Strategies besteht darin, sicherzustellen, dassSeamlessConnWSVorlageinitDer Markt wird in den letzten Jahren zunächst durch die tatsächliche Entwicklung der

Wir können den Inhalt derexchange.GetTickerFunktion mit dem Code der Verwendung derwebsocketSie werden von der Websocket-Markt-Lösung abgerufen.

SeamlessConnWSModelladresse:https://www.fmz.com/strategy/167755

Wie man es benutzt

Ein Kinderspiel!SeamlessConnWSSie können einfach die Icebreaker Strategie verwenden, um darauf zu verweisen, wie in der Abbildung gezeigt:

img

Bitte klicken Sie auf die Schablone "Check" und auf die Schaltfläche "Save".

Erstellen Sie einen Icebreaker Strategie Echtzeit-Roboter, die Börse wählt das Handelspaar.

img

Öffnen Sie die Steuerparameter auf derSeamlessConnWS template.

img

Lassen Sie es laufen:

img

Um die gedrehten Daten leicht zu sehen, haben wir in Zeile 157 speziell einen Druckprotokollcode hinzugefügt, der die vom Exchange gedruckten Daten ausgibt.

img

Anzeige im Roboterprotokoll:

img

Auf diese Weise müssen wir keine Zeile des Strategiecodes modifizieren und erreichen eine nahtlose Anbindung an diewebsocketMarktschnittstelle.

Dieses Beispiel ist nur für die Strategie der Nutzung derexchange.GetTickerFunktion der Marktschnittstelle, andere Marktschnittstellen wieexchange.GetDepth, exchange.GetTradesundexchange.GetRecordsFür die StandardvorlageSeamlessConnWS, können Sie versuchen, es weiter zu erweitern.

Für die Durchführung der spezifischen Verbindungwebsocketin der Vorlage dieDialDie Funktion "Dial" kann nach Bedarf angepasst werden. Zum Beispiel können Sie den Parameter -2 für dieread()Funktion, die nur die neuesten Daten im Puffer zurückgibt, die diewebsocketVerbindung akzeptiert.

Danke fürs Lesen.


Verwandt

Mehr