Es gibt viele interessante Strategien auf der Platzseite (https://www.fmz.com/squareZu dieser Zeit benutzten die meisten Kryptowährungsbörsen die API-Schnittstellerest
Die meisten Strategien basieren auf derrest
Der 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 notenloserest
Interface 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
Ausführung einer exchange.GetTicker
.
So, ohne den Strategie-Code zu ändern, lassen Sie die Strategie mit den Daten getrieben und gedrückt durch diewebsocket
Marktschnittstelle.
Die Code-Schreibsprache verwendet die JavaScript-Programmiersprache.
Zum Beispiel, wenn wir eine klassische Strategie
Strategieadresse:https://www.fmz.com/strategy/9929
Wir wollen uns den Strategie-Code ansehen und feststellen, dass die Strategietick
Es verwendet hauptsächlich die Eigenschaften vonBuy
, Sell
, undLast
in derticker
Daten.ticker
die Daten werden durch die API-Funktion der FMZ Quant-Plattform erfasst:exchange.GetTicker
Das Ziel ist jetzt klar, wir können dieexchange.GetTicker
Funktion mitHook
Betrieb (d. h. Ersetzung durch eine andere Version).
Allerdings können wir es nicht in den
Also brauchen wir den nächsten Protagonisten zum Debüt.
Wir erstellen eine
Setzen Sie dann 2 Parameter auf dieSeamlessConnWS
template.
Diese beiden werden verwendet, um zu kontrollieren, ob diewebsocket
Die Funktion "Anzeige" ist eine Funktion, in der die Anzeige eine spezifische Anzeige-Schnittstelle öffnet.hook
für dieexchange.GetTicker
Daher müssen wir den Parameter aktivieren.Hook_GetTicker
) derGetTicker
Schnittstelle zumwebsocket
mode.
Sobald die Vorlage erstellt ist, können wir einen spezifischen Zugriff auf die Exchangewebsocket
Der spezifische Code wird hier nicht beschrieben, Sie können sich auf dieSeamlessConnWS
Der Code (bereits Open Source) und die offizielle API-Dokumentation von FMZ Quant.init
Funktion 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 diewebsocket
Der Markt wird von zwei Börsen, nämlich Binance und Huobi, ausgestattet.init
Die Funktion des SeamlessConnWS
Vorlageinit
Der Markt wird in den letzten Jahren zunächst durch die tatsächliche Entwicklung der
Wir können den Inhalt derexchange.GetTicker
Funktion mit dem Code der Verwendung derwebsocket
Sie werden von der Websocket-Markt-Lösung abgerufen.
SeamlessConnWS
Modelladresse:https://www.fmz.com/strategy/167755
Ein Kinderspiel!SeamlessConnWS
Sie können einfach die
Bitte klicken Sie auf die Schablone "Check" und auf die Schaltfläche "Save".
Erstellen Sie einen
Öffnen Sie die Steuerparameter auf derSeamlessConnWS
template.
Lassen Sie es laufen:
Um die gedrehten Daten leicht zu sehen, haben wir in Zeile 157 speziell einen Druckprotokollcode hinzugefügt, der die vom Exchange gedruckten Daten ausgibt.
Anzeige im Roboterprotokoll:
Auf diese Weise müssen wir keine Zeile des Strategiecodes modifizieren und erreichen eine nahtlose Anbindung an diewebsocket
Marktschnittstelle.
Dieses Beispiel ist nur für die Strategie der Nutzung derexchange.GetTicker
Funktion der Marktschnittstelle, andere Marktschnittstellen wieexchange.GetDepth
, exchange.GetTrades
undexchange.GetRecords
Für die StandardvorlageSeamlessConnWS
, können Sie versuchen, es weiter zu erweitern.
Für die Durchführung der spezifischen Verbindungwebsocket
in der Vorlage dieDial
Die 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 diewebsocket
Verbindung akzeptiert.
Danke fürs Lesen.