ウェブソケットにシームレス接続する 古い戦略のインターフェースを教えます

作者: リン・ハーン小さな夢, 作成日:2019年09月26日 15:47:53, 更新日:2023年10月18日 19:54:36

img

ウェブソケットにシームレス接続する 古い戦略のインターフェースを教えます

発明者による量化取引プラットフォームの戦略広場デジタル通貨の取引所が基本的には使われていた 面白い戦略がいくつかありますrestソフトウェアのAPIは,restまた,最近,いくつかの取引所も登場しています.restインターフェース障害により,ポリシーが使用できない場合. ポリシーを変更した場合,websocketインターフェースのサポートでは,ポリシーコードに変更を加えることが必要であり,通常は比較的に面倒である (ポリシー変更は書き直すよりもはるかに難しい). 戦略を変えることなく,それを活用する方法websocketビジネス・インターフェースはどうでしょう? 発明者による量化取引プラットフォームの柔軟性が示されています.

  • 1、 "テンプレート・ライブラリ"のポリシーを使用します.
  • 2 はいexchange.GetTickerこの関数は,この関数で取得される.

戦略を変更することなく, 戦略をコードの1行で実行します.websocketビジネスインターフェイスが送ったデータドライブが起動. プログラミング言語の使用JavaScript言語は.

分析戦略

例えば,昔から使われてきた"アイスブレイカー"の戦略を改めたいのです.

戦略アドレス

まず,戦略コードを見てみましょう. この戦略は,チーク市場によって動かされ,tickerデータをBuySellLastこの2つの属性はtickerFMZプラットフォームのAPI関数:exchange.GetTicker目標が明確になり,我々はこのプロジェクトをexchange.GetTicker関数Hook操作 (つまり,別のバージョンに書き換えて置き換える) ができます. しかし,我々は Icebreaker の戦略を改定することはできません,それは戦略に影響を与えます,我々はシームレスな結合を望んでいます! 舞台に登場する主人公が登場します.

テンプレート・ライブラリとinit関数の協働

模範類データベースを作りました.縫い目のないコーンWS初期コードを空にしてください.

img

そして,縫い目のないコーンWSテンプレートは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取引インターフェースは,それぞれコイン現金,トークン現金である.initこの関数は"Icebreaker"の戦略を引用するものです.縫い目のないコーンWSテンプレートの後ろで,実装台を実行するときに,最初に実行されます.initこの関数は,自動で実行できます.exchange.GetTicker機能の内容が使用に替わるwebsocketインターフェースのコード実装によりシームレスなペアリングを実現するwebsocket行動する.

SeamlessConnWSのテンプレートアドレス

どう使うか

簡単なことです!縫い目のないコーンWSテンプレートが自分のポリシーデータベースにコピーされた後",Ice Breaker"のポリシー参照のみでできます.

img

選択して保存します.

"アイスブレイカー"戦略 リアルタイムのロボット 取引所がBinanceを選びimg│ │ 起動縫い目のないコーンWSテンプレートの制御パラメータ.img

実行する:img

推し進出のデータを簡単に表示するために,私は157行に専念し,印刷日記のコードを追加し,取引所からの推し進出を出力します.img

ロボットの日記に表示される:img

この方法では,一行のポリシーコードを修正することなく,websocket行業インターフェースとポリシーシームレスペリングを使用します.

この例はexchange.GetTicker経路インターフェース関数の戦略が説明される,他の経路インターフェースは,例えばexchange.GetDepthexchange.GetTradesexchange.GetRecords模範の模範の模範の模範の模範です縫い目のないコーンWS更に拡大する.

模様の特定のリンクwebsocket実現,利用Dial関数 (※APIドキュメントの Dial 関数を参照) は,必要に応じて調整できます.read()関数指定パラメータ-2戻るだけですwebsocket接続されたデータを受け取るバッファローンの最新のデータ.

ありがとうございました


関連性

もっと

コングコン009モンゴー,Python版を少し追加してくれないか?

婚約者も素晴らしいもの,早めに共有すべきです.

小さな夢ありがとうございました.