Handshake lehrt Sie, wie man eine alte Strategie, eine nahtlose Pairing-Websocket-Markt-Schnittstelle gibt

Schriftsteller:Kleine Träume, Erstellt: 2019-09-26 15:47:53, Aktualisiert: 2023-10-18 19:54:36

img

Handshake lehrt Sie, wie man eine alte Strategie, eine nahtlose Pairing-Websocket-Markt-Schnittstelle gibt

Die Erfinder der quantitativen HandelsplattformenDas StrategieplatzEs gibt eine Menge interessanter Strategien, die man damals anhand von virtuellen Währungsaustauschs praktizierte.restDie API-Schnittstellen der Protokolle, viele Strategien basieren aufrestIn den letzten Jahren haben sich einige Börsen auch in den letzten Jahren entwickelt.restEin Interface-Fehler, der die Politik unbrauchbar macht.websocketDie Unterstützung der Schnittstelle erfordert eine gewisse Veränderung des Strategiekodes, die in der Regel viel schwieriger ist (die Änderung der Politik ist viel schwieriger als das Neuschreiben). Wie kann man seine Strategie nicht ändern, aber sie trotzdem nutzen?websocketWas ist mit der Kommunikationsoberfläche? Hier zeigt sich die große Flexibilität der Quantitative Trading Plattformen der Erfinder.

  • 1. Verwenden Sie die "Template-Klasse-Library"-Lösung.
  • Zwei, jaexchange.GetTickerDie Funktion Hook wird von der Funktion Hook abgerufen.

Das bedeutet, dass man die Strategie ohne eine Codezeile zu verändern, um die Strategie zu ändern.websocketDie Daten-Antriebe, die von der Geschäftsoberfläche getrieben werden, werden ausgeführt. Verwendung von ProgrammiersprachenJavaScriptDie Sprache.

Analyse-Strategien

Zum Beispiel wollen wir eine alte, klassische Strategie ändern: "Eisbrecher".

Strategische Adresse

Wir schauen uns zunächst den Code der Strategie an und sehen, dass diese Strategie von der Ticket-Markt getrieben wird, die hauptsächlich von den US-amerikanischen Anbietern verwendet wird.tickerIn den DatenBuySellLastDiese EigenschaftentickerDie Daten stammen von einer API-Funktion der FMZ-Plattform:exchange.GetTickerWir haben die Möglichkeit, diese Art von Kommunikation zu nutzen.exchange.GetTickerFunktionenHookDie Funktion (d.h. das Umschreiben in eine andere Version und deren Ersatz) ist möglich. Aber wir können es nicht in der Icebreaker-Strategie umschreiben, weil das die Strategie beeinflussen würde, wir wollen eine nahtlose Verbindung! Ich habe eine Frage, die ich mir nicht stellen kann.

Die Funktionen der "Template Library" undinitKooperation von Funktionen

Wir haben eine "Template-Klasse-Bibliothek" erstellt, die wir nennen:Nahtloses KNOWSDas ist ein sehr schwieriger Fall.

img

Dann geben SieNahtloses KNOWSDie Vorlage setzt zwei Parameter ein.

  • IsUsedWebSocket wird verwendet
  • Hook_GetTicker@IsUsedWebSocket

img

Es wird verwendet, um zu steuern, ob es eingeschaltet wird.websocketInterface-Funktionen, die eine spezifische Branchen-Interface steuern.exchange.GetTickerDie Schnittstelle ist für die Hook-Operation vorgesehen.GetTickerDie Schnittstelle ist ein Kontrollparameter im Websocket-Modus: Hook_GetTicker.

Die Vorlage ist erstellt, und Sie können in der Vorlage spezifische Anschlüsse auf die Börse schreiben.websocketSie können die Funktionscodes von SeamlessConnectWWS (sofern öffentlich zugänglich) und der API-Dokumentation nachlesen. Sie müssen sich die Template ansehen.initFunktionen und globale Variablen_DictConnectCreater_ConnMap

Der 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 zwei Börsen umsetzt.websocketDie Transaktionsschnittstelle ist die Währung für Bargeld und Token für Bargeld.initDie Funktion ist dazu da, die Icebreaker-Strategie zu zitieren.Nahtloses KNOWSNach der Vorlage, wenn die Festplatte läuft, wird zuerst ausgeführtinitFunktionen, die automatisch geschaltet werden könnenexchange.GetTickerFunktionsinhalte werden für Nutzung verwendetwebsocketDie Code-Implementierung der Schnittstelle ermöglicht eine nahtlose VerknüpfungwebsocketIch bin nicht derjenige, der das tut.

SeamlessConnWS-Template-Adresse

Wie man sie nutzt

Es ist ganz einfach!Nahtloses KNOWSNach dem Kopieren der Vorlage in die eigene Politikbücherei können Sie nur auf die "Eisbrecher"-Strategie verweisen, wie hier:

img

Sie können es einfach auswählen, speichern und so weiter.

Die Strategie des "Eisbrechers" ist es, einen Roboter auf der Tischplatte zu erstellen, und die Börse wählt Binance.imgDas ist nicht wahr. EröffnenNahtloses KNOWSDie Kontrollparameter in der Vorlage.img

Wir haben es geschafft:img

Um Ihnen die Daten zu erleichtern, die von den Börsen gesendet werden, habe ich speziell 157 Zeilen Code hinzugefügt, um die Daten der Börsen zu produzieren.img

Der Roboter-Log zeigt:img

Dies ermöglicht eine nahtlose Verknüpfung von Websocket-Markt-Interfaces und Strategien, ohne dass eine Linie von Policy-Code geändert wird.

Dies ist nur für den Einsatzexchange.GetTickerEine Erklärung der Strategien für die Brancheninterface-Funktion, andere Brancheninterfaces wieexchange.GetDepthexchange.GetTradesexchange.GetRecordsDas ist die gleiche Methode.Nahtloses KNOWSDas ist ein großes Problem.

Links zu bestimmten TemplateswebsocketDie Implementierung und NutzungDialFunktionen (siehe API-Dokumentation Dial-Funktion), die je nach Bedarf angepasst werden können.read()Funktionsparameter-2Das heißt, nur zurück.websocketDie neuesten Daten in der Bufferzone der Datenanbindung.

Danke fürs Lesen.


Verwandt

Mehr

- Das ist nicht wahr.Monk, gibt es noch eine Python-Version?

Auch die BrautDas ist eine gute Sache, die früher geteilt werden sollte.

Kleine TräumeDas ist gut, danke für die Tipps.