Sumber daya yang dimuat... Pemuatan...

Sumber Data Khusus

Sistem backtesting dari FMZ Quant Trading Platform mendukung sumber data khusus, sistem backtesting menggunakanGETmetode untuk meminta URL khusus (URL yang dapat diakses publik) untuk mendapatkan sumber data eksternal untuk backtest.

Parameter Makna Penjelasan
lambang Nama Simbol Data pasar spot, seperti:BTC_USDT, data pasar berjangka, seperti:BTC_USDT.swap, data tingkat pendanaan kontrak jangka panjang berjangka, seperti:BTC_USDT.funding, data indeks harga kontrak perpetual berjangka, seperti:BTC_USDT.index
eid Pertukaran seperti OKX, Futures_OKX
bulat Keakuratan Data Benar berarti bahwa presisi spesifik didefinisikan dalam data yang dikembalikan oleh sumber data kustom. Permintaan yang dikirim oleh FMZ Quant Trading Platform Backtesting System ke sumber data kustom ditetapkan sebagai:round=true
periode Periode data K-line (milisekund) seperti:60000adalah periode 1 menit
kedalaman Tingkat kedalaman 1-20
perdagangan Apakah Perlu Pembagian Data benar (1) / salah (2)
dari Waktu Mulai timestamp unix
untuk Waktu Akhir timestamp unix
detail Permintaan data untuk rincian simbol Benar berarti bahwa itu perlu disediakan oleh sumber data kustom. Permintaan yang dikirim oleh FMZ Quant Trading Platform Backtesting System ke sumber data kustom ditetapkan sebagai:detail=true
adat Parameter ini dapat diabaikan

Ketika sumber data dari spot exchange dan obyek futures exchange diatur ke sumber data khusus (feeder), sistem backtesting mengirim permintaan ke layanan sumber data khusus:

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 harus salah satu dari dua format berikut (yang akan dikenali oleh sistem secara otomatis):

  • Tingkat 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]
        ]
    }
    
  • Tick tingkat bot, berikut adalah contoh data JSON: Tick-level backtest data (mengandung informasi tentang kedalaman pasar, dan format kedalaman adalah array[price, volume]. Itu bisa memiliki beberapa tingkat kedalaman,asksuntuk urutan kenaikan harga,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 Deskripsi
detail Informasi rinci tentang jenis data yang diminta,

termasuk nama mata uang denominasi, mata uang perdagangan, presisi, jumlah pesanan minimum, dll. Schema. Ini menentukan atribut kolom dalam data. array, yang sensitif huruf besar dan hanya terbatas pada waktu, terbuka, tinggi, rendah, dekat, volume, meminta, tawaran, perdagangan data. Struktur kolom, data yang tercatat sesuai dengan skema Pengaturan.

bidang detail

Lapangan Deskripsi
eid Exchange Id, harap dicatat bahwa spot dan berjangka dari
Pertukaran tertentu memiliki eid yang berbeda.
lambang Kode produk perdagangan
alias Simbol dalam pertukaran yang sesuai dengan saat ini
Kode produk perdagangan
Mata uang dasar Mata uang perdagangan
Kutipan Mata uang Mata Uang Denominasi
marginMata uang Mata uang margin
dasarPrecision Akurasi Mata Uang Transaksi
QuotePrecision Keakuratan Harga Mata Uang
MinQty Jumlah pesanan minimum
maxQty Jumlah pesanan maksimum
MinNotional Jumlah pesanan minimum
Max Nominal Jumlah pesanan maksimum
hargaTick Lonjakan Harga
volumeTick Nilai perubahan minimum dari jumlah pesanan (satu lompatan dalam
jumlah pesanan)
marginLevel Nilai Leverage Futures
kontrakJenis Untuk kontrak jangka panjang yang ditetapkan untuk:swap, yang

sistem backtest akan terus mengirim tingkat pendanaan dan indeks harga permintaan.

Atribut kolom khususasks, bids, trades:

Lapangan Deskripsi Pengamatan
permintaan / penawaran [harga, volume],...] Sebagai contoh, data di

yangLive Trading Level TickContoh data:[[9531300, 10]]Percayalah. {\fnCandara\fs55\b1\4cH000000\4aH80}tuk perdagangan {\fnCandara\fs55\b1\4cH000000\4aH80}untuk contoh, data dalamLive Trading Level TickContoh data:[[1564315200000, 0, 9531300, 10]] |

Ketika backtesting kontrak abadi di bursa berjangka, kustom sumber data juga membutuhkan data tingkat pendanaan tambahan dan harga Sistem backtesting akan terus mengirim permintaan untuk tingkat pendanaan hanya ketika data pasar yang diminta dikembalikan dan bidang detail dalam struktur yang dikembalikan berisi"contractType": "swap"Pasangan kunci-nilai.

Ketika sistem backtesting menerima data tingkat pendanaan, terus mengirimkan permintaan untuk data indeks harga.

Struktur data tingkat pendanaan adalah sebagai 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
        ]
        // ...
    ]
}
  • Interval antara periode berdekatan adalah 8 jam
  • Misalnya, Binance's funding rate diperbarui setiap 8 jam. Apakah data tingkat pendanaan -16795? Karena seperti data K-line, untuk menghindari hilangnya presisi titik terapung selama transmisi jaringan, data menggunakan tipe bilangan bulat; data tingkat pendanaan juga dapat negatif.

Contoh permintaan data tingkat pendanaan 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 sebagai 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 dikirim 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 Khusus

Tentukan alamat sumber data, misalnya,http://120.24.2.20:9090/data. Program layanan sumber data khusus 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 pengujian,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 Pengaturan Backtest Mesin Backtest Lokal