Webソケット引用口インターフェースをドッキングする古い戦略をどのようにさせるかを教えます

作者: リン・ハーン優しさ, 作成日:2019年10月08日 14:56:58, 更新日:2023年11月06日 19:41:28

img

このページには多くの興味深い戦略があります (https://www.fmz.com/squareその頃,ほとんどの仮想通貨取引所の API インターフェースは,rest多くの戦略は,restまた,取引所による値の更新が遅いケースもありました.rest戦略が正しく機能できないことが原因です.

戦略が変更される限り,webソケットインターフェースのサポートを追加するには,戦略コードにいくつかの変更が必要であり,これは通常かなり面倒である (戦略を変更する難しさは,それを書き直すよりもはるかに高い).

Webソケット市場コートインターフェースを使うことができます.

FMZ Quantプラットフォームの柔軟性はこうです

  • テンプレートクラスライブラリを使用します.

  • フック取引を行うとき,exchange.GetTicker.

戦略のコードを変更することなく,データによって駆動され,押しwebsocket市場インターフェース

コード書き言語はJavaScriptプログラミング言語を使用しています.

分析戦略

例えば クラシックな戦略を修正する必要があるとき Icebreaker

戦略アドレス:https://www.fmz.com/strategy/9929

戦略のコードを見てみましょう 戦略はtick市場価格を評価する.Buy, SellそしてLastについてtickerデータtickerFMZ Quant プラットフォームの API 機能でデータを取得します.exchange.GetTicker目標が明確になったexchange.GetTicker機能するHook操作 (つまり,別のバージョンに置き換える)

戦略の論理に影響します. Webソケットにシームレスにドッキングしたいのです.

次の主人公がデビューする

テンプレートクラスライブラリ関数とinit関数は一緒に動作する

テンプレートクラスライブラリを作ります.

img

2つのパラメータを設定します.SeamlessConnWS template.

  • IsUsedWebSocket をインストールする
  • Hook_GetTicker@IsUsedWebSocket をインストールする

img

この2つは,websocketこの項目の制限により,我々は,ただ,この操作を入力します.hook実施するexchange.GetTickerインターフェース.したがって,我々はパラメータを有効にする必要があります ((Hook_GetTicker) についてGetTickerインターフェースwebsocket mode.

交換への特定のアクセスを書き込むことができます.websocket特定の引用符に購読し,その後,交換の機能コードがデータをプッシュするのを待つ. 特定のコードはここで説明されていません.SeamlessConnWSFMZ Quant の公式 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("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)
            }
        }
        // ... 
        
    }
}

このテンプレートでは,websocket2つの取引所の市場インターフェースであるBinanceとHuobi.initIcebreaker戦略を呼び出すとき,SeamlessConnWSテンプレートinit実際の市場運営の進展の中で最初に実行されます.

代替できるのですexchange.GetTicker機能とコードを使用するwebsocketWebソケット市場へのシームレスなドッキングを実現する.

SeamlessConnWSテンプレートアドレス:https://www.fmz.com/strategy/167755

どう使うか

ケーキのピース!SeamlessConnWS図示のように, Icebreaker 戦略を使って参照できます.

img

テンプレートチェックをクリックし,保存ボタンをクリックしてください.

取引先が取引ペアを選びます 取引先が取引ペアを選びます

img

制御パラメータを開くSeamlessConnWS template.

img

実行してください:

img

157行にプリントログコードを 追加しました 交換によってプリントされたデータを出力します

img

ロボットログの表示:

img

戦略コードのどの行も修正する必要はありません.websocket市場インターフェース

この例は,exchange.GetTicker市場インターフェース機能,その他の市場インターフェース,例えばexchange.GetDepth, exchange.GetTradesそしてexchange.GetRecords標準のテンプレートではSeamlessConnWS更に拡大してみてください

特別リンクの実施についてwebsocketテンプレートで,Dial例えば,パラメータ -2 を指定できます. このパラメータは,read()バッファーの最新のデータのみを返します.websocket接続が受付しました

読んでくれてありがとう


関連性

もっと