資源の読み込みに... 荷物...

カスタムデータソース

FMZ 量子取引プラットフォームのバックテストシステムは,カスタムデータソースをサポートし,バックテストシステムは,GETバックテストのための外部データソースを取得するためにカスタム URL (公開アクセス可能な URL) を要求する方法.追加の要求パラメータは以下のとおりです.

パラメーター 意味 解説
シンボル シンボルの名前 スポット市場データ:BTC_USDT, 将来の市場データ,例えば:BTC_USDT.swap, 期日期永続契約の資金提供率データ,例えば:BTC_USDT.funding, 期貨永続契約価格指数データ,例えば:BTC_USDT.index
イード 交換 OKX,Futures_OKX など
丸い データ の 正確性 True は,カスタムデータソースから返信されるデータで特定の精度が定義されていることを意味します. FMZ 量子取引プラットフォームバックテストシステムからカスタムデータソースに送信されるリクエストは,以下のように固定されます.round=true
期間 K線データ期間 (ミリ秒) 例えば:600001分間の期間です
深さ 深度レベル 1-20
取引 データを分割する必要性 true ((1) / false ((0) となる
から 開始時間 UNIX タイムスタンプ
終わり の 時 UNIX タイムスタンプ
詳細 シンボルの詳細を要求するデータ true は,カスタムデータソースによって提供される必要があることを意味します. FMZ 量子取引プラットフォームバックテストシステムによってカスタムデータソースに送信されるリクエストは,以下のように固定されます.detail=true
カスタム このパラメータは無視できます.

スポット取引所と先物取引所のデータソースがカスタムデータソース (フィーダー) に設定された場合,バックテストシステムはカスタムデータソースサービスに要求を送信します:

http://customserver:9090/data?custom=0&depth=20&detail=true&eid=Bitget&from=1351641600&period=86400000&round=true&symbol=BTC_USDT&to=1611244800&trades=1
http://customserver:9090/data?custom=0&depth=20&detail=true&eid=Futures_OKX&from=1351641600&period=86400000&round=true&symbol=BTC_USDT.swap&to=1611244800&trades=1

データ形式

返信形式は次の2つの形式の1つでなければならない ( システムによって自動的に認識されます)

  • シミュレーションレベル Tick,以下は JSON データの一例です.

    {
        "detail": {
            "eid": "Binance",
            "symbol": "BTC_USDT",
            "alias": "BTCUSDT",
            "baseCurrency": "BTC",
            "quoteCurrency": "USDT",
            "marginCurrency": "USDT",
            "basePrecision": 5,
            "quotePrecision": 2,
            "minQty": 0.00001,
            "maxQty": 9000,
            "minNotional": 5,
            "maxNotional": 9000000,
            "priceTick": 0.01,
            "volumeTick": 0.00001,
            "marginLevel": 10
        },
        "schema":["time", "open", "high", "low", "close", "vol"],
        "data":[
            [1564315200000, 9531300, 9531300, 9497060, 9497060, 787],
            [1564316100000, 9495160, 9495160, 9474260, 9489460, 338]
        ]
    }
    
  • JSON データの一例です. Tickレベルバックテストデータ (市場深度に関する情報を含み,深度形式は[price, volume]複数の深さのレベルを持つことができますasks価格上昇順序の場合bids値下がり順序で).

    {
        "detail": {
            "eid": "Binance",
            "symbol": "BTC_USDT",
            "alias": "BTCUSDT",
            "baseCurrency": "BTC",
            "quoteCurrency": "USDT",
            "marginCurrency": "USDT",
            "basePrecision": 5,
            "quotePrecision": 2,
            "minQty": 0.00001,
            "maxQty": 9000,
            "minNotional": 5,
            "maxNotional": 9000000,
            "priceTick": 0.01,
            "volumeTick": 0.00001,
            "marginLevel": 10
        },
        "schema":["time", "asks", "bids", "trades", "close", "vol"],
        "data":[
            [1564315200000, [[9531300, 10]], [[9531300, 10]], [[1564315200000, 0, 9531300, 10]], 9497060, 787],
            [1564316100000, [[9531300, 10]], [[9531300, 10]], [[1564316100000, 0, 9531300, 10]], 9497060, 787]
        ]
    }
    
フィールド 記述
詳細 要求されるデータタイプに関する詳細な情報

通貨の名前を含む 取引通貨,精度,最低注文量などです データの列の属性を指定します. アレイは小数字感受性があり 時間に限定されています 高い,低い,閉じる,ボリューム,要求,オファー,取引 スキーマに従って記録されたデータです セットアップ

詳細フィールド

フィールド 記述
イード スポットと先物
ある種の交換には 異なる効果があります
シンボル 取引商品コード
偽名 交換の記号は,現在の
取引商品コード
ベース通貨 取引通貨
コート 通貨 定額通貨
マージン 通貨 マージン通貨
ベース 精度 取引通貨の正確性
引用 精度 価格設定通貨の正確性
ミニ 最低注文量
最大Qty 最大注文量
ミノノショナル 最低注文量
マックスノショナルの オーダーの最大額
価格 タグ 価格上昇
音量 チェック オーダー数量の最小変更値 (一回
注文量)
マージンレベル ローナンスローナンス
契約型 永続契約については,以下のように設定します.swapについて

資金調達の率と価格指数を送信する 頼むのです

特殊列属性asks, bids, trades:

フィールド 記述 コメント
要求 / 申し出 [価格,容量...] 例えば,

についてLive Trading Level Tickデータ例:[[9531300, 10]]素晴らしいです 取引をします. 取引の時間,方向,価格,量, 例えば,データLive Trading Level Tickデータ例:[[1564315200000, 0, 9531300, 10]] |

フューチャー取引所の永続契約のバックテストでは,カスタム 資金提供率と価格に関する追加データも必要です バックテストシステムはリクエストを送信し続けます 要求された市場データが返される場合に限る資金提供率 返された構造の詳細欄には"contractType": "swap"キー値ペア

バックテストシステムに資金提供率のデータを受け取ると, 価格指数データへの要請を継続する.

資金調達の割合のデータ構造は以下のとおりです.

{
    "detail": {
        "eid": "Futures_Binance",
        "symbol": "BTC_USDT.funding",
        "alias": "BTC_USDT.funding",
        "baseCurrency": "BTC",
        "quoteCurrency": "USDT",
        "marginCurrency": "",
        "basePrecision": 8,
        "quotePrecision": 8,
        "minQty": 1,
        "maxQty": 10000,
        "minNotional": 1,
        "maxNotional": 100000000,
        "priceTick": 1e-8,
        "volumeTick": 1e-8,
        "marginLevel": 10
    },
    "schema": [
        "time",
        "open",
        "high",
        "low",
        "close",
        "vol"
    ],
    "data": [
        [
            1584921600000,
            -16795,
            -16795,
            -16795,
            -16795,
            0
        ],
        [
            1584950400000,
            -16294,
            -16294,
            -16294,
            -16294,
            0
        ]
        // ...
    ]
}
  • 隣接する期間の間隔は8時間です
  • 例えば,Binanceの資金提供率は 8時間ごとに更新されます. 資金提供率は -16795ですか? K線データと同様に,ネットワーク伝送中に浮点精度の喪失を避けるため,データは整数型を使用します. 資金調達の割合データもマイナスかもしれません.

バックテストからの資金調達のデータ要求の例 システムとは

http://customserver:9090/data?custom=0&depth=20&detail=true&eid=Futures_Binance&from=1351641600&period=86400000&round=true&symbol=BTC_USDT.funding&to=1611244800&trades=0

価格指数データ構造は以下のとおりです.


{
    "detail": {
        "eid": "Futures_Binance",
        "symbol": "BTC_USDT.index",
        "alias": "BTCUSDT",
        "baseCurrency": "BTC",
        "quoteCurrency": "USDT",
        "contractType": "index",
        "marginCurrency": "USDT",
        "basePrecision": 3,
        "quotePrecision": 1,
        "minQty": 0.001,
        "maxQty": 1000,
        "minNotional": 0,
        "maxNotional": 1.7976931348623157e+308,
        "priceTick": 0.1,
        "volumeTick": 0.001,
        "marginLevel": 10,
        "volumeMultiple": 1
    },
    "schema": [
        "time",
        "open",
        "high",
        "low",
        "close",
        "vol"
    ],
    "data": [
        [1584921600000, 58172, 59167, 56902, 58962, 0],
        [1584922500000, 58975, 59428, 58581, 59154, 0],
        // ...
    ]
}

バックテストによって送信された価格指数データ要求の例 システムとは

http://customserver:9090/data?custom=0&depth=20&detail=true&eid=Futures_Binance&from=1351641600&period=86400000&round=true&symbol=BTC_USDT.index&to=1611244800&trades=0

カスタムデータソースの例

データ源アドレスを指定します.http://120.24.2.20:9090/data. カスタムデータソースサービスプログラムは,Golang:

package main

import (
    "fmt"
    "net/http"
    "encoding/json"
)

func Handle (w http.ResponseWriter, r *http.Request) {
    // e.g. set on backtest DataSourse: http://xxx.xx.x.xx:9090/data

    // request: GET http://xxx.xx.x.xx:9090/data?custom=0&depth=20&detail=true&eid=OKX&from=1584921600&period=86400000&round=true&symbol=BTC_USDT&to=1611244800&trades=1
    //              http://xxx.xx.x.xx:9090/data?custom=0&depth=20&detail=true&eid=Futures_Binance&from=1599958800&period=3600000&round=true&symbol=BTC_USDT.swap&to=1611244800&trades=0
    fmt.Println("request:", r)

    // response
    defer func() {
        // response data
        /* e.g. data
        {
            "detail": {
                "eid": "Binance",
                "symbol": "BTC_USDT",
                "alias": "BTCUSDT",
                "baseCurrency": "BTC",
                "quoteCurrency": "USDT",
                "marginCurrency": "USDT",
                "basePrecision": 5,
                "quotePrecision": 2,
                "minQty": 0.00001,
                "maxQty": 9000,
                "minNotional": 5,
                "maxNotional": 9000000,
                "priceTick": 0.01,
                "volumeTick": 0.00001,
                "marginLevel": 10
            },
            "schema": [
                "time",
                "open",
                "high",
                "low",
                "close",
                "vol"
            ],
            "data": [
                [1610755200000, 3673743, 3795000, 3535780, 3599498, 8634843151],
                [1610841600000, 3599498, 3685250, 3385000, 3582861, 8015772738],
                [1610928000000, 3582499, 3746983, 3480000, 3663127, 7069811875],
                [1611014400000, 3662246, 3785000, 3584406, 3589149, 7961130777],
                [1611100800000, 3590194, 3641531, 3340000, 3546823, 8936842292],
                [1611187200000, 3546823, 3560000, 3007100, 3085013, 13500407666],
                [1611273600000, 3085199, 3382653, 2885000, 3294517, 14297168405],
                [1611360000000, 3295000, 3345600, 3139016, 3207800, 6459528768],
                [1611446400000, 3207800, 3307100, 3090000, 3225990, 5797803797],
                [1611532800000, 3225945, 3487500, 3191000, 3225420, 8849922692]
            ]
        }
        */
        
        // /* Simulation level Tick
        ret := map[string]interface{}{
            "detail": map[string]interface{}{
                "eid": "Binance",
                "symbol": "BTC_USDT",
                "alias": "BTCUSDT",
                "baseCurrency": "BTC",
                "quoteCurrency": "USDT",
                "marginCurrency": "USDT",
                "basePrecision": 5,
                "quotePrecision": 2,
                "minQty": 0.00001,
                "maxQty": 9000,
                "minNotional": 5,
                "maxNotional": 9000000,
                "priceTick": 0.01,
                "volumeTick": 0.00001,
                "marginLevel": 10,
            },
            "schema": []string{"time","open","high","low","close","vol"},
            "data": []interface{}{
                []int64{1610755200000, 3673743, 3795000, 3535780, 3599498, 8634843151},  // 1610755200000 : 2021-01-16 08:00:00
                []int64{1610841600000, 3599498, 3685250, 3385000, 3582861, 8015772738},  // 1610841600000 : 2021-01-17 08:00:00
                []int64{1610928000000, 3582499, 3746983, 3480000, 3663127, 7069811875},
                []int64{1611014400000, 3662246, 3785000, 3584406, 3589149, 7961130777},
                []int64{1611100800000, 3590194, 3641531, 3340000, 3546823, 8936842292},
                []int64{1611187200000, 3546823, 3560000, 3007100, 3085013, 13500407666},
                []int64{1611273600000, 3085199, 3382653, 2885000, 3294517, 14297168405},
                []int64{1611360000000, 3295000, 3345600, 3139016, 3207800, 6459528768},
                []int64{1611446400000, 3207800, 3307100, 3090000, 3225990, 5797803797},
                []int64{1611532800000, 3225945, 3487500, 3191000, 3225420, 8849922692},
            },
        }
        // */

        /* Bot level Tick
        ret := map[string]interface{}{
            "detail": map[string]interface{}{
                "eid": "Binance",
                "symbol": "BTC_USDT",
                "alias": "BTCUSDT",
                "baseCurrency": "BTC",
                "quoteCurrency": "USDT",
                "marginCurrency": "USDT",
                "basePrecision": 5,
                "quotePrecision": 2,
                "minQty": 0.00001,
                "maxQty": 9000,
                "minNotional": 5,
                "maxNotional": 9000000,
                "priceTick": 0.01,
                "volumeTick": 0.00001,
                "marginLevel": 10,
            },
            "schema": []string{"time", "asks", "bids", "trades", "close", "vol"},
            "data": []interface{}{
                []interface{}{1610755200000, []interface{}{[]int64{9531300, 10}}, []interface{}{[]int64{9531300, 10}}, []interface{}{[]int64{1610755200000, 0, 9531300, 10}}, 9497060, 787},
                []interface{}{1610841600000, []interface{}{[]int64{9531300, 15}}, []interface{}{[]int64{9531300, 15}}, []interface{}{[]int64{1610841600000, 0, 9531300, 11}}, 9497061, 789},                
            },
        }
        */

        b, _ := json.Marshal(ret)
        w.Write(b)
    }()
}
func main () {
    fmt.Println("listen http://localhost:9090")
    http.HandleFunc("/data", Handle)
    http.ListenAndServe(":9090", nil)
}

試験戦略JavaScript例:

/*backtest
start: 2021-01-16 08:00:00
end: 2021-01-22 00:00:00
period: 1d
basePeriod: 1d
exchanges: [{"eid":"OKX","currency":"BTC_USDT","feeder":"http://120.24.2.20:9090/data"}]
args: [["number",2]]
*/

function main() {
    var ticker = exchange.GetTicker()
    var records = exchange.GetRecords()
    Log(exchange.GetName(), exchange.GetCurrency())
    Log(ticker)
    Log(records)
}
バックテスト設定を保存 ローカルバックテストエンジン