
Inventor定量取引プラットフォーム戦略スクエアインターネットには興味深い戦略がたくさんあります。当時、ほとんどのデジタル通貨取引所はrestプロトコルのAPIインターフェース、多くの戦略はこれに基づいていますrestインターフェース、市場の更新が遅くなることがあります。さらに、最近いくつかの取引所が登場した。restインターフェース障害が発生すると、ポリシーが使用できなくなります。ポリシーが変更された場合は、websocketインターフェースのサポートには、戦略コードへの特定の変更が必要であり、これは通常面倒です (戦略を変更するのは、それを書き直すよりもはるかに困難です)。
同じ戦略を変更せずに使用するにはどうすればよいですか?websocketマーケットインターフェースはどうですか?
これは、Inventor Quantitative Trading Platform の強力な柔軟性を完全に実証しています。次のことが可能です。
exchange.GetTicker マーケット情報を取得するための関数フック操作。これにより、戦略はwebsocketマーケットインターフェースによって駆動されるデータが実行中です。
使用されるコーディング言語JavaScript言語。
たとえば、古典的な古い戦略「アイスブレーカー」を修正したいとします。
まず戦略コードを見て、この戦略がティック市場の状況によって駆動され、主にtickerデータではBuy、Sell、Lastこれらの属性は、tickerデータは FMZ プラットフォームの API 関数から取得されます。exchange.GetTicker 得る。こうすれば目標は明確になります。exchange.GetTicker関数Hook必要なのは、操作(つまり、別のバージョンで書き直して置き換えること)だけです。
ただし、Icebreaker 戦略を書き換えると戦略に影響が出るため、書き換えることはできません。私たちが求めているのは、シームレスな接続です。 !
だから次の主人公が登場する必要がある。
init機能調整「テンプレート ライブラリ」を作成し、名前を付けます。SeamlessConnWS、初期コードをクリアします。

そしてSeamlessConnWSテンプレートは2つのパラメータを設定します

有効か無効かを制御するために使用しますwebsocketインターフェース機能、特定の市場インターフェースの開設を制御および指定します。この例では、スペースが限られているため、exchange.GetTickerインターフェースはフック操作を実行します。パラメータは有効になっているだけですGetTickerインターフェースは、Websocket モードの制御パラメータである Hook_GetTicker です。
テンプレートを作成したら、テンプレートにアクセスする特定の取引所を記述できます。websocketインターフェース、特定の見積もりをサブスクライブし、取引所がデータをプッシュするのを待ちます。具体的なコードはここでは繰り返しません。SeamlessConnWS コード (公開) と API ドキュメントを参照してください。注目すべきはテンプレートですinit関数とグローバル変数_DictConnectCreater、_ConnMap:
コード:
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)
}
}
// ...
}
}
このテンプレートでは 2 つの交換のみが実装されていることがわかります。websocket市場インターフェースは Binance Spot と Huobi Spot です。initこの機能は、「アイスブレーカー」戦略を参照できるようにするものですSeamlessConnWSテンプレートを作成した後、実際のディスクを実行するときに最初に実行するのは、init自動的にexchange.GetTicker関数の内容を次のように置き換えます。websocketシームレスな接続を実現するためのインターフェースコードの実装websocket引用文。
とても簡単です!バンドルSeamlessConnWSテンプレートを独自の戦略ライブラリにコピーした後は、図に示すように、「Icebreaker」戦略でそれを参照するだけで済みます。

確認して保存すれば完了です。
「Icebreaker」戦略のリアルタイム ロボットを作成し、取引所として Binance を選択します
。
開けるSeamlessConnWSテンプレートのパラメータを制御します。

実行します:

プッシュされたデータを見やすくするために、取引所によってプッシュされたデータを出力する print ログ コード 157 行目に追加しました。

ロボットのログには次のように表示されます:

このようにして、戦略コードを 1 行も変更する必要はなく、Websocket マーケット インターフェイスと戦略のシームレスな統合が実現されます。
この例は使用目的のみexchange.GetTicker市場インターフェース機能の戦略について説明します。他の市場インターフェースとしては、exchange.GetDepth、exchange.GetTrades 、exchange.GetRecordsいつもと同じルーチンです!サンプルテンプレートSeamlessConnWSさらに拡張することも可能です。
テンプレート内の特定のリンクの場合websocket実装ではDial必要に応じて調整できる機能 (API ドキュメントのダイヤル機能を参照)。例えば、read()関数指定パラメータ-2つまり、戻るだけですwebsocket接続はバッファ内の最新のデータを受信します。
読んでくれてありがとう