Sumber dimuat naik... memuat...

Penjelasan terperinci FMZ Quant API Peningkatan: Meningkatkan Pengalaman Reka Bentuk Strategi

Penulis:FMZ~Lydia, Dicipta: 2024-07-05 09:44:08, Dikemas kini: 2024-09-20 08:52:30

[TOC]

img

Pengantar

Selepas 9 tahun pengulangan teknikal, Platform Perdagangan Kuantiti FMZ telah dibina semula berkali-kali, walaupun sebagai pengguna kita mungkin tidak menyedarinya. Dalam dua tahun yang lalu, platform ini telah membuat banyak pengoptimuman dan peningkatan dari segi pengalaman pengguna, termasuk peningkatan yang komprehensif antara muka UI, pengayaan alat perdagangan kuantitatif yang biasa digunakan, dan penambahan lebih banyak sokongan data backtesting.

Untuk membuat reka bentuk strategi lebih mudah, logik perdagangan lebih jelas, dan lebih mudah untuk pemula untuk memulakan, platform ini telah menaik taraf antara muka API yang digunakan oleh strategi. Docker yang menggunakan versi terbaru dapat mengaktifkan ciri-ciri baru ini. Platform ini masih serasi dengan panggilan antara muka lama sejauh mungkin. Maklumat mengenai ciri-ciri baru antara muka API telah dikemas kini ke dokumentasi API Platform Dagangan Kuantum FMZ:

Panduan sintaks:https://www.fmz.com/syntax-guidePanduan Pengguna:https://www.fmz.com/user-guide

Jadi mari kita lihat dengan cepat antarmuka yang telah dinaik taraf dan apa perubahan yang diperlukan untuk menggunakan strategi lama untuk menjadikannya serasi dengan API semasa.

1. Antara muka API baru

Tambah pertukaran.GetTickers fungsi

Untuk merancang strategi pelbagai produk dan strategi pemantauan pasaran yang lengkap, antara muka pasaran agregat adalah penting. Untuk menjadikan strategi lebih mudah untuk membangunkan dan mengelakkan mencipta semula peristiwa, Platform Dagangan Kuantum FMZ merangkumi API pertukaran jenis ini.

Jika pertukaran tidak mempunyai antara muka ini (pertukaran individu), apabila memanggilexchange.GetTickers(), mesej ralat dipaparkan: Tidak disokong.

Fungsi ini tidak mempunyai sebarang parameter dan ia akan mengembalikan data pasaran masa nyata semua jenis dalam antara muka pasaran agregat bursa.

exchange.GetTickers()fungsi adalah versi permintaan penuh ciriexchange.GetTicker()fungsi (lihat dengan teliti, perbezaan antara kedua-dua nama fungsi ini hanya tunggal dan jamak).

Kami menggunakan persekitaran simulasi titik OKX untuk ujian:

function main() {
    exchange.IO("simulate", true)

    var tickers = exchange.GetTickers()
    if (!tickers) {
        throw "tickers error"
    }

    var tbl = {type: "table", title: "test tickers", cols: ["Symbol", "High", "Open", "Low", "Last", "Buy", "Sell", "Time", "Volume"], rows: []}
    for (var i in tickers) {
        var ticker = tickers[i]
        tbl.rows.push([ticker.Symbol, ticker.High, ticker.Open, ticker.Low, ticker.Last, ticker.Buy, ticker.Sell, ticker.Time, ticker.Volume])
    }

    LogStatus("`" + JSON.stringify(tbl) +  "`")
    return tickers.length
}

img

Tambah pertukaran.CreateOrder fungsi

Yang baru ditambahkanexchange.CreateOrder()fungsi adalah tumpuan peningkatan ini.exchange.CreateOrder()adalah untuk menentukan jenis dan arah pesanan dalam parameter fungsi secara langsung. Dengan cara ini, ia tidak lagi bergantung kepada pasangan dagangan semasa, kod kontrak, arah dagangan dan tetapan lain sistem.

Dalam senario penempatan pesanan perdagangan pelbagai spesies dan senario serentak, kerumitan reka bentuk sangat dikurangkan.exchange.CreateOrder()fungsi adalahsymbol, side, price, amount.

Ujian menggunakan persekitaran simulasi niaga hadapan OKX:

function main() {
    exchange.IO("simulate", true)

    var id1 = exchange.CreateOrder("ETH_USDT.swap", "buy", 3300, 1)
    var id2 = exchange.CreateOrder("BTC_USDC.swap", "closebuy", 70000, 1)
    var id3 = exchange.CreateOrder("LTC_USDT.swap", "sell", 110, 1)

    Log("id1:", id1, ", id2:", id2, ", id3:", id3)
}

img

Dengan cara ini, hanya tigaexchange.CreateOrder()panggilan fungsi digunakan untuk meletakkan tiga pesanan niaga hadapan pelbagai jenis dan arah.

Tambah pertukaran.GetHistoryOrders fungsi

Yang baru ditambahkanexchange.GetHistoryOrders()Fungsi ini juga memerlukan sokongan antara muka pertukaran.

Untuk menanyakan pesanan sejarah, antara muka yang dilaksanakan oleh pelbagai pertukaran sangat berbeza:

  • Sesetengah menyokong pertanyaan bertaburan, sementara yang lain tidak;
  • Sesetengah bursa mempunyai tempoh tetingkap pertanyaan, iaitu pesanan yang lebih tua daripada N hari tidak boleh ditanyakan;
  • Kebanyakan pertukaran menyokong pertanyaan pada masa yang ditentukan, tetapi ada yang tidak; Antara muka sedemikian disusun dengan tahap keserasian yang tertinggi, dan dalam penggunaan sebenar, perhatian harus diberikan kepada sama ada mereka memenuhi keperluan dan jangkaan strategi.

Penerangan fungsi terperinci tidak diulangi di sini, anda boleh merujuk manual sintaks dalam dokumentasi API:

https://www.fmz.com/syntax-guide#fun_exchange.gethistoryorders

Diuji menggunakan persekitaran dagangan Binance:

function main() {
    var orders = exchange.GetHistoryOrders("ETH_USDT")

    // Write to chart
    var tbl = {type: "table", title: "test GetHistoryOrders", cols: ["Symbol", "Id", "Price", "Amount", "DealAmount", "AvgPrice", "Status", "Type", "Offset", "ContractType"], rows: []}
    for (var order of orders) {
        tbl.rows.push([order.Symbol, order.Id, order.Price, order.Amount, order.DealAmount, order.AvgPrice, order.Status, order.Type, order.Offset, order.ContractType])
    }
    
    LogStatus("orders.length:", orders.length, "\n", "`" + JSON.stringify(tbl) +  "`")
}

img

Tambah pertukaran.GetPositions fungsi

Versi lama fungsi pemerolehan data kedudukan adalahexchange.GetPosition(). Kemas kini ini menambah fungsi pemerolehan kedudukan baru untuk lebih sesuai dengan semantik penamaan fungsi:exchange.GetPositions(). Pada masa yang sama, ia masih serasi / dinaik taraf dengan fungsi GetPosition.

Perhatikan bahawa kedua-dua nama fungsi hanya berbeza dengan s terakhir. Kerana GetPositions lebih tepat secara semantik, disyorkan untuk menggunakan GetPositions pada masa akan datang.

Peraturanexchange.GetPositions()Fungsi mempunyai tiga bentuk panggilan:

  • pertukaran.GetPositions ((() Apabila tiada parameter lulus, data kedudukan semua jenis dalam dimensi semasa diminta mengikut tetapan arusPasangan dagangan / Kod kontrak.

  • pertukaran.GetPositions ((ETH_USDT.swap) Apabila menentukan maklumat produk tertentu (format ETH_USDT.swap ditakrifkan oleh platform FMZ), minta data kedudukan produk tertentu. Contohnya:BTC_USD.swap, ETH_USDT.swap, ETH_USDT.quarter, dan lain-lain BTC_USD.swap: Kontrak kekal berasaskan mata wang BTC. ETH_USDT.swap: kontrak kekal berasaskan ETH. ETH_USDT.quarter: Kontrak penghantaran suku tahunan ETH berdasarkan U. BTC_USD.BTC-USD-201226-24250-C: Kontrak opsyen berasaskan duit syiling BTC.

  • pertukaran.GetPositions ((USDT.swap) Minta data kedudukan untuk semua produk mengikut julat dimensi yang ditentukan. USDT.swap: Julat kontrak kekal berasaskan U. USDT.futures: Julat kontrak penghantaran berasaskan U. USD.swap: Julat kontrak kekal berasaskan syiling. USD.futures: Julat kontrak penghantaran berasaskan syiling. USDT.option: Julat kontrak opsyen berasaskan U. USD.option: Julat kontrak opsyen berasaskan duit syiling.

    Beberapa bahagian dimensi kontrak pertukaran khas: USDT.futures_combo: Futures_Deribit pertukarans kontrak gabungan spread. USD.futures_ff: Futures_Kraken exchanges kontrak penghantaran margin campuran. USD.swap_pf: Futures_Kraken exchanges kontrak kekal margin campuran. Untuk dimensi yang tidak disokong oleh antara muka API pertukaran, satu ralat akan dilaporkan dan nilai sifar akan dikembalikan apabila dipanggil.

Ujian menggunakan persekitaran simulasi niaga hadapan OKX:

function main() {
    exchange.IO("simulate", true)

    exchange.SetCurrency("BTC_USDT")
    exchange.SetContractType("swap")

    var p1 = exchange.GetPositions()
    var p2 = exchange.GetPositions("BTC_USDT.swap")

    var tbls = []
    for (var positions of [p1, p2]) {
        var tbl = {type: "table", title: "test GetPosition/GetPositions", cols: ["Symbol", "Amount", "Price", "FrozenAmount", "Type", "Profit", "Margin", "ContractType", "MarginLevel"], rows: []}
        for (var p of positions) {
            tbl.rows.push([p.Symbol, p.Amount, p.Price, p.FrozenAmount, p.Type, p.Profit, p.Margin, p.ContractType, p.MarginLevel])
        } 
        tbls.push(tbl)
    }

    LogStatus("`" + JSON.stringify(tbls) +  "`")
}

img

Apabila parameter yang diteruskan kepadaexchange.GetPositions()fungsi ialahETH_USDT.swap, data kedudukan kontrak kekal berasaskan U ETH boleh diperoleh.

Apabila parameterexchange.GetPositions()Jika anda tidak menghantar data yang tidak dikesan, data kedudukan semua kontrak kekal berasaskan U yang disenaraikan di bursa boleh diperoleh (kerana pasangan dagangan semasa adalah BTC_USDT dan kontrak adalah swap, permintaan berdasarkan pasangan dagangan semasa dan julat dimensi kontrak).exchange.GetPositions("USDT.swap")dan menentukan julat permintaan.

2. Peningkatan Antara muka API

Update pertukaran.GetTicker fungsi

Peningkatan utama fungsi pasaranexchange.GetTicker()Ini membolehkan fungsi untuk meminta data pasaran secara langsung mengikut maklumat produk yang ditentukan oleh parameter tanpa pasangan dagangan semasa dan kod kontrak. Ia memudahkan proses penulisan kod. Pada masa yang sama, ia masih serasi dengan kaedah panggilan tanpa lulus parameter, dan serasi dengan strategi platform lama sejauh mungkin.

Parametersymbolmempunyai format yang berbeza untuk spot/futures untuk objek pertukaranexchange:

  • Objek pertukaran spot Formatnya ialah:AAA_BBB, AAA mewakili baseCurrency, iaitu mata wang dagangan, dan BBB mewakili quoteCurrency, iaitu mata wang penetapan harga. Sebagai contoh: pasangan dagangan spot BTC_USDT.
  • Objek pertukaran niaga hadapan Formatnya ialah:AAA_BBB.XXX, AAA mewakili baseCurrency, iaitu mata wang dagangan, BBB mewakili quoteCurrency, iaitu mata wang penetapan harga, dan XXX mewakili kod kontrak, seperti pertukaran kontrak kekal. Sebagai contoh: BTC_USDT.swap, kontrak kekal berasaskan U BTC. Diuji menggunakan persekitaran langsung Binance Futures:
var symbols = ["BTC_USDT.swap", "BTC_USDT.quarter", "BTC_USD.swap", "BTC_USD.next_quarter", "ETH_USDT.swap"]

function main() {
    exchange.SetCurrency("ETH_USD")
    exchange.SetContractType("swap")

    var arr = []
    var t = exchange.GetTicker()
    arr.push(t)

    for (var symbol of symbols) {
        var ticker = exchange.GetTicker(symbol)
        arr.push(ticker)
    }

    var tbl = {type: "table", title: "test GetTicker", cols: ["Symbol", "High", "Open", "Low", "Last", "Buy", "Sell", "Time", "Volume"], rows: []}
    for (var ticker of arr) {
        tbl.rows.push([ticker.Symbol, ticker.High, ticker.Open, ticker.Low, ticker.Last, ticker.Buy, ticker.Sell, ticker.Time, ticker.Volume])
    }

    LogStatus("`" + JSON.stringify(tbl) +  "`")
    return arr
}

img

Meminta kumpulan data pasaran untuk simbol tertentu telah menjadi lebih mudah.

Kemas kini pertukaran.GetDepth fungsi

Sama seperti fungsi GetTicker,exchange.GetDepth()fungsi juga menambah parameter simbol. ini membolehkan kita untuk menentukan simbol secara langsung apabila meminta data kedalaman.

Diuji menggunakan persekitaran langsung Binance Futures:

function main() {
    exchange.SetCurrency("LTC_USD")
    exchange.SetContractType("swap")

    Log(exchange.GetDepth())
    Log(exchange.GetDepth("ETH_USDT.quarter"))
    Log(exchange.GetDepth("BTC_USD.swap"))
}

img

Mengemas kini fungsi pertukaran.GetTrades

Sama seperti fungsi GetTicker,exchange.GetTrades()fungsi juga menambah parameter simbol. ini membolehkan kita untuk menentukan simbol secara langsung apabila meminta data transaksi pasaran.

Diuji menggunakan persekitaran langsung Binance Futures:

function main() {
    var arr = []
    var arrR = []
    var symbols = ["LTC_USDT.swap", "ETH_USDT.quarter", "BTC_USD.swap"]    

    for (var symbol of symbols) {
        var r = exchange.Go("GetTrades", symbol)
        arrR.push(r)
    }

    for (var r of arrR) {
        arr.push(r.wait())
    }
    
    var tbls = []
    for (var i = 0; i < arr.length; i++) {
        var trades = arr[i]
        var symbol = symbols[i]

        var tbl = {type: "table", title: symbol, cols: ["Time", "Amount", "Price", "Type", "Id"], rows: []}
        for (var trade of trades) {
            tbl.rows.push([trade.Time, trade.Amount, trade.Price, trade.Type, trade.Id])
        }

        tbls.push(tbl)
    }

    LogStatus("`" + JSON.stringify(tbls) +  "`")
}

img

Peningkatan ini juga serasi dengan parameter simbol yang ditentukan olehexchange.Go()fungsi apabila memanggil antara muka API platform secara serentak.

Kemas kini pertukaran.GetRecords fungsi

Fungsi GetRecords telah disesuaikan dengan baik kali ini. Selain menyokong parameter simbol untuk menentukan maklumat jenis data K-line yang diminta secara langsung, parameter tempoh asal dikekalkan untuk menentukan tempoh K-line, dan parameter had ditambah untuk menentukan panjang K-line yang diharapkan ketika meminta. Pada masa yang sama, ia juga serasi dengan versi lama fungsi GetRecords yang hanya lulus dalam parameter tempoh.

Kaedah panggilanexchange.GetRecords()Fungsi adalah:

  • pertukaran.GetRecords() Jika tiada parameter ditentukan, data K-line produk yang sepadan dengan pasangan dagangan semasa/kod kontrak diminta.
  • pertukaran.GetRecords ((60 * 15) Apabila hanya parameter tempoh K-line ditentukan, data K-line produk yang sepadan dengan kod pasangan dagangan/kontrak semasa diminta.
  • pertukaran.GetRecords ((BTC_USDT.swap) Apabila hanya maklumat produk ditentukan, data K-line produk yang ditentukan diminta. Tempoh K-line adalah tempoh K-line lalai yang ditetapkan dalam antara muka backtesting strategi atau dalam perdagangan langsung.
  • pertukaran.GetRecords ((BTC_USDT.swap, 60 * 60) Tentukan maklumat produk dan tempoh garis K khusus untuk meminta data garis K.
  • exchange.GetRecords ((BTC_USDT.swap, 60, 1000) Tentukan maklumat produk, tentukan tempoh garis K tertentu, dan tentukan panjang garis K yang dijangkakan untuk meminta data garis K. Perhatikan bahawa apabila parameter had melebihi panjang maksimum permintaan tunggal dari pertukaran, permintaan pengejar akan dihasilkan (iaitu, beberapa panggilan ke antara muka K-line pertukaran).

Diuji menggunakan persekitaran langsung Binance Futures:

function main() {
    exchange.SetCurrency("ETH_USDT")
    exchange.SetContractType("swap")
    
    var r1 = exchange.GetRecords()
    var r2 = exchange.GetRecords(60 * 60)
    var r3 = exchange.GetRecords("BTC_USDT.swap")
    var r4 = exchange.GetRecords("BTC_USDT.swap", 60)
    var r5 = exchange.GetRecords("LTC_USDT.swap", 60, 3000)

    Log("r1 time difference between adjacent bars:", r1[1].Time - r1[0].Time, "Milliseconds, Bar length:", r1.length)
    Log("r2 time difference between adjacent bars:", r2[1].Time - r2[0].Time, "Milliseconds, Bar length:", r2.length)
    Log("r3 time difference between adjacent bars:", r3[1].Time - r3[0].Time, "Milliseconds, Bar length:", r3.length)
    Log("r4 time difference between adjacent bars:", r4[1].Time - r4[0].Time, "Milliseconds, Bar length:", r4.length)
    Log("r5 time difference between adjacent bars:", r5[1].Time - r5[0].Time, "Milliseconds, Bar length:", r5.length)
}

img

Kemas kini fungsi Exchange.GetOrders

Fungsi GetOrders juga menambahsymbolparameter, yang boleh digunakan untuk menentukan simbol tertentu dan menyoal pesanan yang belum selesai (pesanan menunggu) simbol itu; ia juga menyokong menyoal pesanan yang belum selesai (pesanan menunggu) semua simbol dalam julat dimensi yang ditentukan.

Peraturanexchange.GetOrders()fungsi boleh dipanggil dengan cara berikut:

  • pertukaran.GetOrders() Untuk bursa niaga hadapan: Apabila tiada parameter yang dilalui, semua pesanan yang belum selesai (pesanan menunggu) untuk semua instrumen dalam julat dimensi semasa diminta mengikut parameter semasaPasangan dagangan / Kod kontraktetapan. Untuk pertukaran spot: Apabila tiada parameter yang diteruskan, permintaan dibuat untuk semua pesanan yang belum selesai (pesanan menunggu) semua produk spot.
  • exchange.GetOrders ((BTC_USDT.swap) atau exchange.GetOrders ((BTC_USDT) Untuk bursa niaga hadapan: exchange.GetOrders ((BTC_USDT.swap), tanyakan semua pesanan yang belum selesai (pesanan menunggu) untuk kontrak kekal berasaskan BTCs USDT. Untuk pertukaran spot: exchange.GetOrders ((BTC_USDT), tanyakan semua pesanan yang belum selesai (pesanan yang menunggu) untuk pasangan perdagangan spot BTC_USDT.
  • Hanya disokong untuk pertukaran niaga hadapan.GetOrders ((USDT.swap) menentukan julat dimensi untuk meminta pesanan yang belum selesai (pesanan menunggu) untuk semua jenis Julat dimensi adalah konsisten dengan julat dalam fungsi GetPositions. Sebagai contoh: exchange.GetOrders ((USDT.swap) meminta semua pesanan yang belum selesai (pesanan menunggu) dari semua jenis dalam julat kontrak kekal berasaskan U.

Ujian menggunakan persekitaran simulasi niaga hadapan OKX:

function main() {
    exchange.IO("simulate", true)

    exchange.SetCurrency("BTC_USDT")
    exchange.SetContractType("swap")

    // Write to chart
    var tbls = []
    for (var symbol of ["null", "ETH_USDT.swap", "USDT.swap"]) {
        var tbl = {type: "table", title: symbol, cols: ["Symbol", "Id", "Price", "Amount", "DealAmount", "AvgPrice", "Status", "Type", "Offset", "ContractType"], rows: []}

        var orders = null
        if (symbol == "null") {
            orders = exchange.GetOrders()
        } else {
            orders = exchange.GetOrders(symbol)
        }

        for (var order of orders) {
            tbl.rows.push([order.Symbol, order.Id, order.Price, order.Amount, order.DealAmount, order.AvgPrice, order.Status, order.Type, order.Offset, order.ContractType])
        }

        tbls.push(tbl)
    }
    
    LogStatus("`" + JSON.stringify(tbls) +  "`")
}

Apabila tidak ada parameter yang diteruskan, pesanan yang belum selesai (pesanan menunggu) dari semua jenis dalam julat dimensi pasangan dagangan semasa (BTC_USDT) dan kod kontrak (swap) diminta.

Apabila parameterETH_USDT.swapdiperuntukkan, pesanan yang belum selesai (pesanan menunggu) kontrak kekal berasaskan USDT ETH diminta.

Apabila tali"USDT.swap"Apabila pesanan tidak selesai (pesanan yang menunggu) semua kontrak kekal berasaskan USDT diminta.

Kemas kini fungsi pertukaran.GetPosition

Ia masih serasi dengan penamaan fungsi pemerolehan kedudukan lama, dan juga menambah parameter simbol, yang boleh menentukan maklumat jenis data kedudukan tertentu yang diminta. Penggunaan fungsi ini adalah sama sepertiexchange.GetPositions().

Kemas kiniexchange.IOfungsi

Untukexchange.IO("api", ...)panggilan fungsi, semua objek pertukaran telah dinaik taraf untuk menyokong penyampaian langsung alamat permintaan lengkap. Sebagai contoh, jika anda ingin memanggil antara muka OKX:

// Dapatkanhttps://www.okx.com/api/v5/akaun/max-withdrawal ccy: BTC

Menyokong penulisan langsung ke alamat pangkalanhttps://www.okx.comtanpa perlu menukar alamat asas terlebih dahulu dan kemudian memanggil fungsi IO.

Ujian menggunakan persekitaran simulasi niaga hadapan OKX:

function main() {
    exchange.IO("simulate", true)

    return exchange.IO("api", "GET", "https://www.okx.com/api/v5/account/max-withdrawal", "ccy=BTC")
}

img

3. Kesan Antara muka API

Mempengaruhi pertukaran.GetOrder fungsi

Peningkatan ini terutamanya mempengaruhi parameteriddaripadaexchange.GetOrder(id)parameter id diubah dari id pesanan pertukaran asal kepada format rentetan yang mengandungi produk perdagangan. Semua ID pesanan yang dikemas dalam platform FMZ adalah dalam format ini.

Contohnya:

  • ID pesanan asal pertukaran yang ditakrifkan dalam pesanan pertukaran adalah:123456Sebelum peningkatan ini, jika anda ingin memanggil fungsi GetOrder, perintah Id yang dihantar adalah123456.
  • Kod produk yang dinamakan oleh bursa yang ditakrifkan dalam pesanan pertukaran:BTC-USDT. Perhatikan bahawa ini merujuk kepada kod produk dagangan yang dinamakan oleh bursa, bukan pasangan dagangan yang ditakrifkan oleh platform FMZ.

Selepas peningkatan ini, format id parameter yang perlu diteruskan ke dalamexchange.GetOrder(id)Fungsi disesuaikan dengan:BTC-USDT,123456.

Pertama, izinkan saya menerangkan mengapa reka bentuk ini dibuat: Kerana fungsi CreateOrder telah dinaik taraf untuk menentukan jenis pesanan secara langsung (jenis pesanan yang diletakkan mungkin berbeza dengan pasangan dagangan dan kod kontrak yang ditetapkan pada masa ini). Jika ID pesanan yang dikembalikan tidak mengandungi maklumat jenis, maka ID pesanan ini tidak dapat digunakan. Kerana ketika memeriksa pesanan, kita tidak tahu jenis (kontrak) pesanan itu. Kebanyakan pertukaran memerlukan spesifikasi parameter yang menerangkan kod jenis ketika memeriksa dan membatalkan pesanan.

Bagaimana untuk menjadi serasi dengan kesan ini: Jika anda menggunakanexchange.IOfungsi untuk memanggil antara muka pesanan pertukaran secara langsung untuk meletakkan pesanan, nilai yang dikembalikan biasanya mengandungi simbol asal pertukaran (kod produk) dan id pesanan asal. Kemudian menggabungkan kedua-duanya dengan koma bahasa Inggeris akan menjadi ID pesanan yang mematuhi definisi platform FMZ. Begitu juga, jika anda menggunakan antarmuka pesanan yang dikapsulkan platform FMZ untuk membuat pesanan, kerana permulaan ID pesanan adalah kod produk perdagangan, jika anda perlu menggunakan ID pesanan asal, hanya hapus kod produk dan koma.

Mempengaruhi fungsi pertukaran.BatalOrder

Kesan peningkatan ini padaexchange.CancelOrder()fungsi adalah sama denganexchange.GetOrder() function.

Mempengaruhi fungsi pertukaran.Beli

Kesan peningkatan ini padaexchange.Buy()fungsi adalah sama denganexchange.GetOrder()fungsi. ID pesanan yang dikembalikan olehexchange.Buy()fungsi adalah struktur baru, contohnya, ID yang dikembalikan apabila meletakkan pesanan niaga hadapan di bursa OKX adalah:LTC-USDT-SWAP,1578360858053058560.

Mempengaruhi fungsi pertukaran.

Kesan peningkatan ini padaexchange.Sell()fungsi adalah sama denganexchange.GetOrder()fungsi. ID pesanan yang dikembalikan olehexchange.Sell()fungsi adalah struktur baru, contohnya, ID yang dikembalikan apabila meletakkan pesanan niaga hadapan di bursa OKX adalah:ETH-USDT-SWAP,1578360832820125696.

Mempengaruhi pertukaran.GetPosition fungsi

Hanya objek pertukaran niaga hadapan menyokong fungsi ini. Untuk fungsi exchange.GetPosition( untuk mendapatkan data kedudukan, nama exchange.GetPositions( baru ditambahkan, dan kedua-dua tingkah laku sama persis.

Definisi lama: fungsi exchange.GetPosition(, apabila dipanggil tanpa menentukan sebarang parameter, memperoleh data kedudukan kontrak tertentu yang ditetapkan oleh pasangan dagangan semasa dan kod kontrak. Selepas penyesuaian dan pengubahsuaian, definisi baru: fungsi exchange.GetPosition(, apabila dipanggil tanpa menentukan sebarang parameter, memperoleh kedudukan semua jenis dalam julat dimensi yang ditentukan oleh pasangan dagangan dan kod kontrak yang ditetapkan semasa.

Sebagai contoh, pasangan dagangan semasa adalah BTC_USDT dan kod kontrak adalah swap. Pada masa ini, hubungi:

exchange.GetPosition() // Equivalent to calling exchange.GetPosition("USDT.swap")

Fungsi ini akan meminta data kedudukan kontrak kekal berasaskan U semua mata wang.

Mempengaruhi pertukaran.GetOrders fungsi

  1. Untuk pertukaran spot:

Definisi lama: fungsi exchange.GetOrders(), apabila dipanggil tanpa menentukan sebarang parameter, mendapat semua pesanan yang belum selesai dari pasangan dagangan semasa. Selepas penyesuaian dan pengubahsuaian, definisi baru adalah: fungsi exchange.GetOrders(), apabila dipanggil tanpa menentukan sebarang parameter, mendapat pesanan yang belum selesai dari semua pasangan dagangan segera.

  1. Untuk pertukaran niaga hadapan:

Definisi lama: fungsi exchange.GetOrders(, apabila dipanggil tanpa menentukan sebarang parameter, mendapat semua pesanan yang belum selesai kontrak tertentu yang ditetapkan oleh pasangan dagangan semasa dan kod kontrak. Selepas penyesuaian dan pengubahsuaian, definisi baru adalah: fungsi exchange.GetOrders(), apabila dipanggil tanpa menentukan sebarang parameter, mendapat semua pesanan yang belum selesai dari julat dimensi yang ditentukan oleh pasangan dagangan semasa dan kod kontrak.

Sebagai contoh, pasangan dagangan semasa adalah BTC_USD dan kod kontrak adalah suku.

exchange.GetOrders()   // Equivalent to calling exchange.GetOrders("USD.futures")

Fungsi ini akan meminta data pesanan yang belum selesai dari semua kontrak niaga hadapan berasaskan syiling.

4. Penyesuaian Struktur

Struktur Ticker

Kemas kini ini menambah medan Simbol ke struktur Ticker, yang merakam maklumat pasaran struktur Ticker semasa. Format medan ini adalah sama dengan format parameter simbolexchange.GetTicker() function.

Struktur Perintah

Kemas kini ini menambah medan Simbol untuk struktur Perintah, dan format medan ini adalah sama dengan format parameter simbolexchange.GetTicker()fungsi. Kemas kini ini juga mengubah suai medan ID struktur pesanan, merakam maklumat produk dan maklumat pesanan asal dalam format ID pesanan baru.exchange.GetOrder()fungsi, yang tidak akan diulangi di sini.

Struktur Kedudukan

Kemas kini ini menambah medan Simbol ke struktur Kedudukan. Format medan ini adalah sama dengan format parameter simbolexchange.GetTicker() function.

5. Sistem Ujian Kembali

Menurut peningkatan antara muka API strategi platform, sistem pengujian belakang platform telah dikemas kini secara serentak; Di samping itu, sistem pengujian belakang telah menambah sokongan untuk:

  • Menyokong lebih banyak pertukaran backtesting data.
  • Menyokong data backtesting untuk semua jenis pertukaran.
  • Perdagangan campuran untuk penghantaran berasaskan U, berasaskan mata wang, dan kontrak kekal.
  • Objek pertukaran niaga hadapan menyokong menukar pasangan dagangan semasa pengujian belakang.

Pembaruan Tambahan

1. Bidang baru Ekuiti dan UPnL dalam struktur Akaun

Tanah-tanahAccountstruktur dikembalikan olehGetAccountfungsi ahli objek pertukaran niaga hadapan telah diperluaskan.

  • Ekuiti Jumlah ekuiti mata wang aset margin semasa. Kecuali beberapa bursa niaga hadapan yang tidak menyokong medan ini, kebanyakan bursa menyokong medan ini. Ia digunakan terutamanya untuk mengira keuntungan dan kerugian margin akaun masa nyata.

  • UPnL Keuntungan dan kerugian yang belum direalisasikan dari semua kedudukan yang dipegang dalam mata wang aset margin semasa.

2. fungsi SetMarginLevel dinaik taraf untuk menyokong parameter simbol

Fungsi ahli SetMarginLevel objek pertukaran niaga hadapan telah dinaik taraf dan simbol parameter telah ditambah.

Contoh ujian:

function main() {
    exchange.SetCurrency("ETH_USDT")
    exchange.SetContractType("swap")
    
    // The current trading pair is ETH_USDT, the contract code is swap, and the leverage value is set to 10
    exchange.SetMarginLevel(10)
    
    // Directly specify the trading pair BTC_USDT, contract code swap, and set the leverage value to 20
    exchange.SetMarginLevel("BTC_USDT.swap", 20)
}

3. Struktur pasaran yang dikembalikan oleh fungsi GetMarkets menambah medan CtValCcy

LapanganCtValCcymencatatkan unit nilai kontrak. Unit nilai kontrak boleh menjadi: BTC, USD, ETH, dll. LapanganCtValmencatat nilai kontrak produk dagangan di bursa, dan unit adalah mata wang yang dicatatkan dalamCtValCcycontohnya:CtValadalah 0.01 danCtValCcyadalah BTC, yang bermaksud bahawa kontrak bernilai 0.01 BTC.


Lebih lanjut