Type/to search
8
Follow
1364
Followers
古い戦略をWebSocketマーケットインターフェースにシームレスに接続する方法を段階的に説明します
Original
Created 2019-09-26 15:47:53  Updated 2024-12-17 20:38:08
 3
 3806

img

古い戦略をWebSocketマーケットインターフェースにシームレスに接続する方法を段階的に説明します

Inventor定量取引プラットフォーム戦略スクエアインターネットには興味深い戦略がたくさんあります。当時、ほとんどのデジタル通貨取引所はrestプロトコルのAPIインターフェース、多くの戦略はこれに基づいていますrestインターフェース、市場の更新が遅くなることがあります。さらに、最近いくつかの取引所が登場した。restインターフェース障害が発生すると、ポリシーが使用できなくなります。ポリシーが変更された場合は、websocketインターフェースのサポートには、戦略コードへの特定の変更が必要であり、これは通常面倒です (戦略を変更するのは、それを書き直すよりもはるかに困難です)。
同じ戦略を変更せずに使用するにはどうすればよいですか?websocketマーケットインターフェースはどうですか?
これは、Inventor Quantitative Trading Platform の強力な柔軟性を完全に実証しています。次のことが可能です。

    1. 「テンプレート ライブラリ」戦略を使用します。
    1. はいexchange.GetTicker マーケット情報を取得するための関数フック操作。

これにより、戦略はwebsocketマーケットインターフェースによって駆動されるデータが実行中です。
使用されるコーディング言語JavaScript言語。

分析戦略

たとえば、古典的な古い戦略「アイスブレーカー」を修正したいとします。

ポリシーアドレス

まず戦略コードを見て、この戦略がティック市場の状況によって駆動され、主にtickerデータではBuySellLastこれらの属性は、tickerデータは FMZ プラットフォームの API 関数から取得されます。exchange.GetTicker 得る。こうすれば目標は明確になります。exchange.GetTicker関数Hook必要なのは、操作(つまり、別のバージョンで書き直して置き換えること)だけです。
ただし、Icebreaker 戦略を書き換えると戦略に影響が出るため、書き換えることはできません。私たちが求めているのは、シームレスな接続です。 !
だから次の主人公が登場する必要がある。

テンプレートライブラリ機能とinit機能調整

「テンプレート ライブラリ」を作成し、名前を付けます。SeamlessConnWS、初期コードをクリアします。

img

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

  • IsUsedWebSocket
  • Hook_GetTicker@IsUsedWebSocket

img

有効か無効かを制御するために使用します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 テンプレート アドレス

使い方

とても簡単です!バンドルSeamlessConnWSテンプレートを独自の戦略ライブラリにコピーした後は、図に示すように、「Icebreaker」戦略でそれを参照するだけで済みます。

img

確認して保存すれば完了です。

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

実行します:
img

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

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

このようにして、戦略コードを 1 行も変更する必要はなく、Websocket マーケット インターフェイスと戦略のシームレスな統合が実現されます。

この例は使用目的のみexchange.GetTicker市場インターフェース機能の戦略について説明します。他の市場インターフェースとしては、exchange.GetDepthexchange.GetTradesexchange.GetRecordsいつもと同じルーチンです!サンプルテンプレートSeamlessConnWSさらに拡張することも可能です。

テンプレート内の特定のリンクの場合websocket実装ではDial必要に応じて調整できる機能 (API ドキュメントのダイヤル機能を参照)。例えば、read()関数指定パラメータ-2つまり、戻るだけですwebsocket接続はバッファ内の最新のデータを受信します。

読んでくれてありがとう

Related Recommendations
Comment
All comments (3)

    梦哥,能多一点python版本的么?

    7 years ago

    好的 感谢建议。

    7 years ago

    好东西,应该早点分享嘛。。。

    7 years ago
  • 1
iPhone Download
Forums
PINE Language
© 2015 - ∞ INVENTOR PTE LTD (SG)