Sumber dimuat naik... memuat...

Sumber data tersuai

Sistem backtesting Platform Dagangan Kuantum FMZ menyokong sumber data tersuai, sistem backtesting menggunakanGETkaedah untuk meminta URL tersuai (URL yang boleh diakses awam) untuk mendapatkan sumber data luaran untuk backtest. Parameter permintaan tambahan adalah seperti berikut:

Parameter Makna Penjelasan
simbol Nama Simbol Data pasaran spot, seperti:BTC_USDT, data pasaran niaga hadapan, seperti:BTC_USDT.swap, data kadar pembiayaan kontrak jangka panjang, seperti:BTC_USDT.funding, data indeks harga kontrak kekal niaga hadapan, seperti:BTC_USDT.index
eid Pertukaran seperti OKX, Futures_OKX
bulat Ketepatan Data Benar bermaksud bahawa ketepatan tertentu ditakrifkan dalam data yang dimasukkan kembali oleh sumber data tersuai.round=true
tempoh Tempoh data K-line (milisaat) seperti:60000adalah tempoh 1 minit
kedalaman Tahap Kedalaman 1-20
perdagangan Sama ada perlu untuk membahagikan data benar(1) / salah(0)
daripada Masa Mula cap masa unix
kepada Masa Akhir cap masa unix
butiran Permintaan data untuk butiran simbol Benar bermaksud bahawa ia perlu disediakan oleh sumber data tersuai. Permintaan yang dihantar oleh FMZ Quant Trading Platform Backtesting System ke sumber data tersuai ditetapkan sebagai:detail=true
adat Parameter ini boleh diabaikan

Apabila sumber data objek pertukaran spot dan pertukaran niaga hadapan ditetapkan kepada sumber data tersuai (feeder), sistem backtesting menghantar permintaan kepada perkhidmatan sumber data tersuai:

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

Format Data

Format yang dikembalikan mestilah salah satu daripada dua format berikut (yang akan dikenali oleh sistem secara automatik):

  • Tahap simulasi Tick, berikut adalah contoh data 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]
        ]
    }
    
  • Bot tahap centang, berikut adalah contoh data JSON: Tick-level data backtest (mengandung maklumat mengenai kedalaman pasaran, dan format kedalaman adalah pelbagai[price, volume]Ia boleh mempunyai pelbagai tahap kedalaman,asksuntuk pesanan harga yang semakin meningkat,bidsuntuk urutan harga menurun).

    {
        "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]
        ]
    }
    
Lapangan Penerangan
butiran Maklumat terperinci mengenai jenis data yang diminta,

termasuk nama mata wang yang diisytiharkan, nama mata wang dagangan, ketepatan, kuantiti pesanan minimum, dan sebagainya. Schema. Ia menentukan sifat-sifat lajur dalam data array, yang sensitif huruf besar dan hanya terhad kepada masa, terbuka, tinggi, rendah, dekat, vol, meminta, tawaran, perdagangan Data. Struktur lajur, data yang direkodkan mengikut skema tetapan.

medan butiran

Lapangan Penerangan
eid ID Bursa, sila ambil perhatian bahawa tempat dan niaga hadapan
Pertukaran tertentu mempunyai eid yang berbeza.
simbol Kod produk dagangan
nama samaran Simbol dalam pertukaran yang sepadan dengan semasa
Kod produk dagangan
Mata wang asas Mata Wang Dagangan
hargaCurrency Mata wang yang ditandatangani
MarginWaluta Mata Wang Margin
asasKetepatan Keakuratan Mata Wang Transaksi
QuotePrecision Keakuratan Mata Wang Harga
MinQty Jumlah Perintah Minimum
MaxQty Jumlah Perintah Maksimum
MinNotional Jumlah Perintah Minimum
maxNotional Jumlah Perintah Maksimum
hargaTick Lonjakan Harga
volumeTick Nilai perubahan minimum kuantiti pesanan (satu lompatan dalam
kuantiti pesanan)
marginLevel Nilai Leverage Futures
kontrakJenis Untuk kontrak kekal yang ditetapkan untuk:swap, yang

sistem backtest akan terus menghantar kadar pembiayaan dan indeks harga permintaan.

Atribut lajur khasasks, bids, trades:

Lapangan Penerangan Catatan
permintaan / tawaran [harga, jumlah],...] Sebagai contoh, data dalam

KesemuaLive Trading Level Tickcontoh data:[[9531300, 10]]∙∙ Perdagangan. Waktu, Arah, Harga, Volume. contohnya, data dalamLive Trading Level Tickcontoh data:[[1564315200000, 0, 9531300, 10]] |

Apabila backtesting kontrak kekal di bursa niaga hadapan, adat sumber data juga memerlukan data kadar pembiayaan tambahan dan harga Sistem backtesting akan terus menghantar permintaan untuk kadar pembiayaan hanya apabila data pasaran yang diminta dikembalikan dan medan butiran dalam struktur yang dikembalikan mengandungi"contractType": "swap"Pasangan kunci-nilai.

Apabila sistem backtesting menerima data kadar pembiayaan, ia akan terus menghantar permintaan untuk data indeks harga.

Struktur data kadar pembiayaan adalah seperti berikut:

{
    "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
        ]
        // ...
    ]
}
  • Julat antara tempoh bersebelahan adalah 8 jam
  • Sebagai contoh, kadar pembiayaan Binance dikemas kini setiap 8 jam. Adakah data kadar pembiayaan -16795? Kerana seperti data K-line, untuk mengelakkan kehilangan ketepatan titik terapung semasa penghantaran rangkaian, data menggunakan jenis bilangan bulat; data kadar pembiayaan juga boleh negatif.

Contoh permintaan data kadar pembiayaan dari backtesting sistem adalah:

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

Struktur data indeks harga adalah seperti berikut:


{
    "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],
        // ...
    ]
}

Contoh permintaan data indeks harga yang dihantar oleh backtesting sistem adalah:

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

Contoh untuk Sumber Data tersuai

Tentukan alamat sumber data, contohnya,http://120.24.2.20:9090/data. Program perkhidmatan sumber data tersuai ditulis menggunakanGolang:

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)
}

Strategi ujian,JavaScriptcontoh:

/*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)
}
Simpan Tetapan Backtest Enjin Ujian Kembali Lokal