Sumber daya yang dimuat... Pemuatan...

Inventor Quantitative Trading Platform API Upgrade: Meningkatkan Pengalaman Desain Strategi

Penulis:Penemu Kuantitas - Mimpi Kecil, Dibuat: 2024-06-28 09:08:29, Diperbarui: 2024-11-01 10:08:12

[TOC]

img

Pengantar

Penemu Quantitative Trading Platform telah melakukan beberapa perombakan setelah 9 tahun iterasi teknologi, meskipun kami sebagai pengguna mungkin tidak menyadarinya. Dalam dua tahun terakhir, platform telah melakukan banyak optimasi dan peningkatan dalam hal pengalaman pengguna, termasuk peningkatan antarmuka UI yang komprehensif, alat perdagangan kuantitatif yang banyak digunakan, dan menambahkan lebih banyak dukungan data retargeting.

Untuk membuat desain kebijakan lebih mudah, logika transaksi lebih jelas, dan lebih mudah untuk pemula, platform telah meningkatkan antarmuka API yang digunakan oleh kebijakan. Penggunaan host versi terbaru dapat mengaktifkan fitur-fitur baru ini. Platform masih sangat kompatibel dengan panggilan antarmuka lama.

Jadi, mari kita lihat bersama di artikel ini apa saja pembaruan upgrade antarmuka yang ada dan apa saja perubahan yang diperlukan untuk menggunakan kebijakan lama untuk kompatibel dengan API saat ini.

1 - Perangkat Lunak Baru

exchange.GetTickers函数

Untuk merancang strategi multi-varietas, strategi pemantauan pasar keseluruhan. Antarmuka pasar agregat ini sangat penting untuk membuat strategi lebih mudah dikembangkan dan menghindari perkalian roda. Penemu platform perdagangan kuantitatif membungkus API seperti pasar.

Jika sebuah bursa tidak memiliki antarmuka seperti itu (bursa individu), panggilanexchange.GetTickers()"Saya tidak akan mendukungnya", tulisnya.

Fungsi ini tidak memiliki parameter apa pun dan akan mengembalikan data pasar real-time dari semua varietas pasar yang terakumulasi di antarmuka pasar.

exchange.GetTickers()Fungsi ini adalahexchange.GetTicker()Versi yang diminta dari berbagai jenis fungsi (lihat dengan seksama, perbedaan antara kedua nama fungsi ini hanya merupakan bilangan tunggal).

Kami menggunakan OKX untuk menguji lingkungan simulasi disk langsung:

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

exchange.CreateOrder函数

Tumbuhexchange.CreateOrder()Fungsi dapat dianggap sebagai fokus dari upgrade ini.exchange.CreateOrder()Fungsi yang paling penting adalah menentukan jenis, arah, dan lain-lain yang akan dipesan secara langsung dalam parameter fungsi. Dengan demikian, tidak ada lagi pengaturan yang bergantung pada pasangan transaksi, kode kontrak, arah transaksi, dan lain-lain yang saat ini ditetapkan oleh sistem.

Dalam skenario transaksi multi-varietas, pengurangan kompleksitas desain sangat signifikan dalam skenario simultan.exchange.CreateOrder()Jadi kita bisa melihat bahwa fungsi ini memiliki empat parameter.symbolsidepriceamount

Percobaan lingkungan menggunakan OKX futures simulator:

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

Jadi kita hanya menggunakan tiga kali.exchange.CreateOrder()Fungsi panggilan menghasilkan tiga jenis pesanan berjangka yang berbeda arah.

exchange.GetHistoryOrders函数

Tumbuhexchange.GetHistoryOrders()Fungsi ini digunakan untuk mendapatkan pesanan transaksi historis jenis tertentu, yang juga membutuhkan dukungan antarmuka bursa.

Untuk menelusuri order sejarah, antarmuka yang diimplementasikan oleh berbagai bursa sangat berbeda:

  • Beberapa mendukung, beberapa tidak.
  • Beberapa transaksi tidak dapat dihubungi selama semua periode jendela permintaan, yaitu pesanan yang berlangsung lebih dari N hari.
  • Sebagian besar bursa mendukung permintaan waktu tertentu, sementara beberapa tidak.

Untuk mengemas antarmuka jenis ini dengan tingkat kompatibilitas maksimum, dalam penggunaan praktis perlu diperhatikan apakah mereka sesuai dengan kebutuhan, harapan, dan kebijakan.

Fungsi yang lebih rinci tidak akan dijelaskan di sini, Anda dapat melihat panduan tata bahasa di dokumen API:

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

Percobaan menggunakan Binance Real-Time Display Environment:

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

    // 写入图表
    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

exchange.GetPositions函数

Versi lama dari fungsi capture hold data adalahexchange.GetPosition()◎ Untuk lebih sesuai dengan semantik nama fungsi, upgrade ini menambahkan fungsi pemegang saham baru:exchange.GetPositions()│ namun tetap kompatibel/meng-upgrade fungsi GetPosition│

Perhatikan bahwa kedua nama fungsi hanya berbeda dengan akhir s, karena GetPositions lebih sesuai dengan semantik, maka disarankan untuk menggunakan GetPositions di semua lanjutan.

exchange.GetPositions()Fungsi memiliki tiga bentuk panggilan:

  • exchange.GetPositions (dalam bahasa Inggris). Jika tidak ada parameter yang ditransfer,Perdagangan / Kode KontrakSetelan ini meminta data penyimpanan untuk semua varietas dengan dimensi saat ini.

  • exchange.GetPositions (http://ETH_USDT.swap) Ketika informasi varietas tertentu (format seperti ETH_USDT.swap yang didefinisikan oleh platform FMZ) ditentukan, data penyimpanan varietas tertentu diminta. Contoh:BTC_USD.swapETH_USDT.swapETH_USDT.quarterDan seterusnya. BTC_USD.swap: Kontrak permanen pada mata uang BTC. ETH_USDT.swap: Kontrak permanen U-bit ETH. ETH_USDC.swap: Kontrak permanen di tempat USDC ETH. (Selain USDT, Anda dapat menentukan mata uang quote yang berbeda, tidak disebutkan lagi) ETH_USDT.quarter: Rasio transaksi U-bit ETH per kuartal sekitar. BTC_USD. BTC-USD-201226-24250-C: Kontrak opsi biner BTC.

  • exchange.GetPositions ((USDT.swap) Data penyimpanan untuk semua varietas diminta sesuai dengan kisaran dimensi yang ditentukan. USDT.swap: Ubit jangkauan kontrak permanen. USDT.futures: Rentang perkiraan nilai tukar U. USDC.swap: USDC dalam jangkauan kontrak permanen. USDC.futures:Rentang perkiraan rasio pertukaran USDC. USD.swap: jangkauan kontrak permanen dengan mata uang asli. USD.futures: Rasio pertukaran mata uang saat ini. USDT.option:Skop kontrak opsi lokal U. USD.option: Skala kontrak opsi mata uang.

    Beberapa bursa khusus yang memiliki dimensi kontrak: USDT.futures_combo:Futures_Deribit adalah sebuah bursa saham yang bergerak di bidang perdagangan forex. USD.futures_ff:Futures_Kraken memperdagangkan saham saham campuran. USD.swap_pf:Futures_Kraken adalah bursa saham yang mengekspor kontrak jangka panjang sekuritas campuran.

    Untuk dimensi yang tidak didukung oleh API pertukaran, panggilan akan memberikan kesalahan dan mengembalikan nilai kosong.

Percobaan lingkungan menggunakan OKX futures simulator:

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

Saat masukexchange.GetPositions()Dan parameternya adalahETH_USDT.swapPada saat yang sama, Anda dapat mendapatkan data kepemilikan kontrak permanen U-bit ETH.

Saat tidak masukexchange.GetPositions()Pada saat parameter fungsi, Anda dapat mendapatkan data kepemilikan semua kontrak permanen U-bit yang diposting di bursa (karena pasangan transaksi saat ini adalah BTC_USDT, kontrak adalah swap, sesuai dengan pasangan transaksi saat ini, permintaan rentang kontrak), saat ini sama dengan panggilan.exchange.GetPositions("USDT.swap"), tentukan jangkauan permintaan.

exchange.GetFundings函数

Fungsi GetFundings yang baru ditambahkan dapat mendapatkan tingkat dana dari kontrak jangka panjang di bursa berjangka. Fungsi ini memiliki simbol parameter. Fungsi ini mengembalikan suatu Array Struktur Funding.

  • Atur parameter simbol: Kembali ke Array struktur informasi tingkat dana untuk varietas tertentu (Array Pendanaan), parameter simbol dapat diatur dalam kisaran, mirip dengan parameter simbol fungsi GetOrders/GetPositions.
  • Tidak menentukan parameter simbol: Mengikuti dimensi pasangan transaksi saat ini, kode kontrak mengembalikan semua jenis data pada dimensi saat ini, mekanisme seperti fungsi GetOrders/GetPositions.
  • Jika sebuah bursa harus menentukan varietas tertentu, maka parameter simbol, yaitu kode untuk varietas tertentu, harus diteruskan, misalnya:BTC_USDT.swap│ Tidak mengirimkan parameter atau fungsi jangkauan pengiriman akan memberikan kesalahan symbol parameter tidak didukung │

2. Perbaikan antarmuka API

exchange.GetTicker函数

Fungsi operasiexchange.GetTicker()Upgrade ini terutama menambahkan parameter simbol. Fungsi ini dapat lepas dari pasangan transaksi saat ini, kode kontrak langsung sesuai dengan informasi varietas yang ditentukan oleh parameter, meminta data pasar. Proses penulisan kode disederhanakan.

ParametersymbolUntuk obyek bursaexchangeIni adalah bentuk yang berbeda dari spot/futures:

  • Objek Bursa Langsung Formatnya adalah:AAA_BBB, AAA mewakili mata uang dasar, dan BBB mewakili mata uang quote. Nama mata uang dituliskan dengan huruf besar. Contoh: BTC_USDT Pasangan perdagangan langsung.
  • Objek Bursa Berjangka Formatnya adalah:AAA_BBB.XXXAAA adalah mata uang dasar, BBB adalah mata uang quote, dan XXX adalah kode kontrak, seperti swap kontrak permanen. Nama mata uang dituliskan dengan huruf besar dan kode kontrak dituliskan dengan huruf kecil. Contoh: BTC_USDT.swap, kontrak jangka panjang U-bit BTC.

Percobaan di lingkungan real-time dengan mata uang kripto:

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

Permintaan untuk desain data pasar untuk kelompok varietas tertentu menjadi lebih sederhana.

exchange.GetDepth函数

Sama seperti fungsi GetTickerexchange.GetDepth()Fungsi ini juga menambahkan parameter simbol. Fungsi ini memungkinkan untuk secara langsung menentukan varietas saat meminta data kedalaman.

Percobaan di lingkungan real-time dengan mata uang kripto:

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

exchange.GetTrades函数

Sama seperti fungsi GetTickerexchange.GetTrades()Fungsi ini juga menambahkan parameter simbol. Fungsi ini memungkinkan untuk secara langsung menentukan varietas saat meminta data transaksi pasar.

Percobaan di lingkungan real-time dengan mata uang kripto:

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

Upgrade ini juga kompatibel denganexchange.Go()Fungsi tersebut menginvokasi platform API secara bersamaan saat mengirimkan informasi varietas yang ditentukan oleh parameter simbol.

exchange.GetRecords函数

Fungsi GetRecords membuat perubahan besar pada saat ini, selain mendukung informasi varietas data baris K yang diminta secara langsung oleh parameter simbol. Parameter periode yang digunakan untuk menentukan periode baris K tetap dipertahankan, dan parameter limit ditambahkan untuk menentukan panjang baris K yang diinginkan untuk periode permintaan.

exchange.GetRecords()Cara memanggil fungsi:

  • exchange.GetRecords (dalam bahasa Inggris). K-line data dari varietas yang sesuai dengan pasangan transaksi/kode kontrak saat diminta tanpa menentukan parameter apa pun. Periode K-line adalah siklus K-line default yang ditetapkan pada waktu antarmuka atau real-time.
  • exchange.GetRecords ((60 * 15) Ketika parameter siklus K-line saja ditentukan, data K-line dari varietas yang sesuai dengan pasangan transaksi/kode kontrak saat ini diminta.
  • exchange.GetRecords (http://www.exchange.getRecords.com/) Ketika hanya informasi varietas yang ditentukan, data K-line yang diminta untuk menentukan varietas, siklus K-line adalah siklus K-line default yang ditetapkan pada antarmuka pencarian strategi atau real disk.
  • exchange.GetRecords ((BTC_USDT.swap, 60 * 60)) Menentukan informasi varietas, menentukan siklus garis K tertentu, meminta data garis K.
  • exchange.GetRecords (http://www.exchange.getRecords.com/) Menentukan informasi varietas, menentukan siklus garis K tertentu, menunjuk pada panjang garis K yang diharapkan untuk mendapatkan data garis K permintaan secara berkala. Perhatikan bahwa ketika parameter limit melebihi panjang maksimum permintaan satu kali oleh bursa, maka akan terjadi permintaan split page (yaitu beberapa kali panggilan ke K-line interfaces bursa).

Percobaan di lingkungan real-time dengan mata uang kripto:

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相邻Bar时间差值:", r1[1].Time - r1[0].Time, "毫秒, Bar长度:", r1.length)
    Log("r2相邻Bar时间差值:", r2[1].Time - r2[0].Time, "毫秒, Bar长度:", r2.length)
    Log("r3相邻Bar时间差值:", r3[1].Time - r3[0].Time, "毫秒, Bar长度:", r3.length)
    Log("r4相邻Bar时间差值:", r4[1].Time - r4[0].Time, "毫秒, Bar长度:", r4.length)
    Log("r5相邻Bar时间差值:", r5[1].Time - r5[0].Time, "毫秒, Bar长度:", r5.length)
}

img

exchange.GetOrders函数

Fungsi GetOrders juga ditambahkansymbolParameter, yang dapat menentukan varietas tertentu, untuk menanyakan pesanan yang belum selesai dari varietas tersebut (daftar tersusun); juga mendukung untuk menanyakan pesanan yang belum selesai dari semua varietas dalam kisaran dimensi yang ditentukan (daftar tersusun).

exchange.GetOrders()Fungsi dapat dipanggil dengan cara berikut:

  • exchange.GetOrders (dalam bahasa Inggris). Untuk bursa berjangka: ketika tidak mengirimkan parameter apa pun, berdasarkan nilai saat iniPerdagangan / Kode KontrakPengaturan, meminta semua pesanan yang belum selesai ("daftar tertunda") untuk semua varietas dalam kisaran dimensi saat ini.
    Untuk bursa spot: meminta pesanan belum selesai untuk semua varietas spot jika tidak ada parameter yang dikirim.
  • exchange.GetOrders ((BTC_USDT.swap) atau exchange.GetOrders ((BTC_USDT) Untuk bursa berjangka: exchange.GetOrders, cari semua pesanan yang belum selesai (pending order) untuk kontrak abadi USDT milik BTC. Untuk bursa langsung: exchange.GetOrders, cari semua pesanan yang belum selesai (pending order) untuk pasangan BTC_USDT.
  • Hanya mendukung exchange.GetOrders (USDT.swap) untuk bursa futures. Jangkauan pembagian dimensi sesuai dengan jangkauan dalam fungsi GetPositions. Contoh: exchange.GetOrders (USDT.swap) Minta order yang belum selesai untuk semua varietas dalam jangkauan kontrak permanen Ubit.

Percobaan lingkungan menggunakan OKX futures simulator:

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

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

    // 写入图表
    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) +  "`")
}
  • Saat tidak mengirim parameter, permintaan order belum selesai (pending order) untuk semua varietas dalam rentang dimensi pasangan transaksi saat ini (BTC_USDT), kode kontrak (swap).
  • Parameter yang ditentukanETH_USDT.swapParameter ini meminta USDT untuk kontrak permanen yang belum selesai (pending order) di tempat ETH.
  • Mengirimkan string"USDT.swap"Saat ini, USDT telah merilis sebuah aplikasi untuk merilis semua pesanan yang belum selesai (yang tersusun) untuk USDT.

exchange.GetPosition函数

Masih kompatibel dengan nama fungsi pengambilan penyimpanan lama, juga menambahkan parameter simbol, yang dapat menentukan informasi varietas data penyimpanan yang diminta secara khusus.exchange.GetPositions()Saya tidak tahu apa yang terjadi.

exchange.IO函数

Untukexchange.IO("api", ...)Cara panggilan fungsi, yang ditingkatkan untuk semua objek bursa yang mendukung fungsi alamat permintaan lengkap yang langsung ditransfer.

Misalnya, jika Anda ingin memanggil OKX:

GEThttps://www.okx.com/api/v5/account/max-withdrawal ccy: BTC

Dukungan untuk menulis alamat database langsunghttps://www.okx.com, Anda tidak perlu mengganti alamat basis untuk memanggil fungsi IO.

Percobaan lingkungan menggunakan OKX futures simulator:

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

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

img

Efek dari API

exchange.GetOrder函数

Ini adalah peningkatan yang sangat mempengaruhi.exchange.GetOrder(id)Parameter fungsiidParameter,id diubah dari original order id untuk menjadi format string yang berisi varietas transaksi. Semua order Id yang dikemas di platform FMZ adalah untuk format ini.

Misalnya:

  • ID pesanan asli dari bursa yang didefinisikan dalam order bursa adalah:123456Sebelum upgrade ini, untuk memanggil fungsi GetOrder, order id yang dikirim adalah123456
  • Kode produk dengan nama bursa yang didefinisikan dalam pesanan bursa:BTC-USDTSaya tidak tahu. Perhatikan bahwa ini adalah jenis kode perdagangan yang dinamakan oleh bursa, bukan pasangan perdagangan yang didefinisikan oleh platform FMZ.

"Saya tidak tahu apa yang terjadi", katanya.exchange.GetOrder(id)Format parameter id yang ingin ditransfer fungsi disesuaikan dengan:BTC-USDT,123456

  • Pertama, jelaskan mengapa desain ini dibuat: Karena ini adalah upgrade dari fungsi CreateOrder yang secara langsung menentukan jenis order (varietas order dan pasangan transaksi yang saat ini diatur, kode kontrak mungkin berbeda), jika ID order yang dikembalikan tidak berisi informasi jenis; maka ID order ini tidak akan dapat digunakan; karena tidak diketahui jenis order (kontrak) pada saat order tertentu; sebagian besar order dan invoice di bursa memerlukan parameter yang menggambarkan kode jenis.

  • Bagaimana cara mengombinasikan dampak ini: Jika pesanan menggunakan fungsi exchange.IO yang secara langsung memanggil antarmuka pesanan untuk melakukan pesanan, nilai yang dikembalikan biasanya memiliki simbol asli (kode varietas) dan id pesanan asli. Jika keduanya digabungkan dengan koma bahasa Inggris, maka itu sesuai dengan definisi platform FMZ. Demikian pula, jika menggunakan antarmuka pemesanan yang terbungkus pada platform FMZ, karena bagian awal OrderId adalah kode varietas transaksi, hanya perlu menghapus kode varietas dan koma jika Anda ingin menggunakan Order OriginalId.

exchange.CancelOrder函数

Peningkatan ini untukexchange.CancelOrder()Efek Fungsi danexchange.GetOrder()Fungsi yang sama.

exchange.Buy函数

Peningkatan ini untukexchange.Buy()Efek Fungsi danexchange.GetOrder()Fungsi yang sama.exchange.Buy()Id pesanan yang dikembalikan oleh fungsi untuk struktur baru, misalnya Id yang dikembalikan saat pesanan di bursa berjangka OKX:LTC-USDT-SWAP,1578360858053058560

exchange.Sell函数

Peningkatan ini untukexchange.Sell()Efek Fungsi danexchange.GetOrder()Fungsi yang sama.exchange.Sell()Id pesanan yang dikembalikan oleh fungsi untuk struktur baru, misalnya Id yang dikembalikan saat pesanan di bursa berjangka OKX:ETH-USDT-SWAP,1578360832820125696

exchange.GetPosition函数

Hanya objek bursa berjangka yang mendukung fungsi ini, dan keduanya berperilaku sama untuk mendapatkan fungsi penyimpanan data yang disebut exchange.GetPosition (), dan yang baru disebut exchange.GetPositions ().

Definisi lama: fungsi exchange.GetPosition, tanpa menentukan parameter apa pun, mendapatkan data kepemilikan dari pasangan transaksi saat ini, yang ditetapkan oleh kode kontrak.

Perubahan, definisi baru: fungsi exchange.GetPosition ((), yang tidak menentukan parameter apapun saat dipanggil, mengambil semua varietas yang dimiliki oleh pasangan transaksi yang saat ini ditetapkan, dalam kisaran dimensi yang ditentukan oleh kode kontrak.

Misalnya, pasangan yang sedang ditransfer adalah BTC_USDT, dan kode kontraknya adalah swap.

exchange.GetPosition() // 等价于调用 exchange.GetPosition("USDT.swap")

Fungsi ini meminta data penyimpanan kontrak permanen U-bit dari semua mata uang.

exchange.GetOrders函数

1. Untuk bursa saham:

Definisi lama: fungsi exchange.GetOrders ((), ketika tidak menentukan parameter apa pun yang dipanggil, mengambil semua pesanan yang belum selesai pada pasangan transaksi saat ini.

Perubahan, definisi baru: exchange.GetOrders () fungsi, ketika tidak menentukan parameter panggilan, yang diperoleh adalah semua transaksi langsung untuk varietas pesanan yang belum selesai.

2. Untuk bursa berjangka:

Definisi lama: fungsi exchange.GetOrders, ketika tidak menentukan parameter apa pun, mengambil semua pesanan yang belum selesai untuk pasangan transaksi saat ini, kontrak kode tertentu yang ditetapkan.

Perubahan, definisi baru: exchange.GetOrders () Fungsi, tanpa menentukan parameter panggilan, mengambil semua pesanan yang belum selesai pada saat ini pengaturan pasangan transaksi, dalam kisaran dimensi yang ditentukan oleh kode kontrak.

Misalnya, pasangan yang sedang ditransfer adalah BTC_USD, dan kode kontraknya adalah quarter.

exchange.GetOrders()   // 等价于调用 exchange.GetOrders("USD.futures")

Fungsi ini akan meminta data pesanan yang belum selesai tentang rasio pertukaran mata uang untuk semua mata uang.

4. Penyesuaian struktur

Struktur Ticker

Pembaruan ini menambahkan kolom Simbol ke struktur Ticker, yang mencatat informasi tentang jenis struktur Ticker saat ini.exchange.GetTicker()Format parameter simbol fungsi sangat konsisten.

Struktur Orde

Pembaharuan ini menambahkan kolom Simbol ke struktur Order, yang memiliki format yang sama denganexchange.GetTicker()Format parameter simbol fungsi ini sangat konsisten. Pembaruan ini juga mengubah bidang Id dari struktur Order untuk mencatat informasi varietas, informasi pesanan asli, dan informasi pesanan dengan format Order Id baru.exchange.GetOrder()Penjelasan tentang perintah Id dalam fungsi, tidak lagi dibahas di sini.

Struktur Posisi

Pembaharuan ini menambahkan kolom Simbol ke struktur Posisi, yang memiliki format yang sama dengan kolom yang ada di bagian atas.exchange.GetTicker()Format parameter simbol fungsi sangat konsisten.

Struktur pendanaan

Fungsi GetFundings mengembalikan suatu Array Struktur Funding.

{
    "Info": {...},               // 交易所资金费率接口原始应答数据
    "Symbol": "BTC_USDT.swap",   // FMZ平台定义的品种名称
    "Interval": 28800000,        // 8小时间隔,单位毫秒
    "Time": 1729728000000,       // 本期资金费率收取时间
    "Rate": 0.0001,              // 资金费率,即 0.01 %
}

Sistem pengukuran kembali

Upgrade ini untuk memenuhi kebutuhan pengguna, pertama-tama kompatibel dengan hard drive, dan sistem retesting akan selesai menyesuaikan dalam waktu satu minggu. Jika kode kebijakan individu terpengaruh, silakan lakukan perubahan sesuai dengan artikel ini.

Menurut platform ini kebijakan API upgrade, setiap API di platform ini retesting sistem telah disinkronkan dengan update yang selesai; Selain itu, retesting sistem baru mendukung:

  • Perangkat lunak ini mendukung lebih banyak data retesting dari bursa.
  • Ini mendukung semua jenis data retesting di bursa.
  • Ubit, pengiriman uang, perdagangan campuran kontrak permanen.
  • Pada periode review, objek bursa barang mendukung pasangan transaksi pertukaran.
  • Sistem Retesting menambahkan dukungan untuk fungsi baru seperti GetTickers, GetMarkets, dan lainnya.

Pembaharuan

1, Account Struktur Bidang Baru Ekuitas, UPnL

Fungsi anggota untuk obyek bursa berjangkaGetAccountKembaliAccountStruktur telah diperluas.

  • Ekuitas Saat ini, sebagian besar dari mata uang yang tidak didukung oleh bursa berjangka, sebagian besar mendukung bidang ini.
  • UPnL Semua posisi yang saat ini dipegang dalam mata uang aset berjangka mengalami kerugian yang belum terwujud, kecuali beberapa bursa berjangka yang tidak mendukung, sebagian besar mendukung segmen tersebut.

2 ̊ Dukungan parameter simbol untuk meningkatkan fungsi SetMarginLevel

Fungsi SetMarginLevel yang merupakan anggota dari obyek bursa berjangka telah ditingkatkan dengan menambahkan simbol parameter.

Contoh uji coba:

function main() {
    exchange.SetCurrency("ETH_USDT")
    exchange.SetContractType("swap")
    
    // 当前交易对为ETH_USDT,合约代码为swap,设置杠杆值为10
    exchange.SetMarginLevel(10)
    
    // 直接指定交易对BTC_USDT,合约代码swap,设置杠杆值20
    exchange.SetMarginLevel("BTC_USDT.swap", 20)
}

3, Fungsi GetMarkets mengembalikan struktur pasar dengan menambahkan bidang CtValCcy

  • BidangCtValCcyUntuk mencatat satuan nilai kontrak, satuan nilai kontrak dapat berupa: BTC, USD, ETH, dll.
  • BidangCtValMencatat nilai kontrak yang sesuai dengan varietas transaksi di bursa, dalam satuanCtValCcyMata uang yang tercatat di kolom tersebut.CtValSaya tidak tahu apa yang terjadi.CtValCcy"BTC" berarti kontrak dengan nilai 0.01 BTC.

Lebih banyak

Wa-emmnn_Saya bertanya apa yang terjadi dengan robot baru saya, ID kembali dengan nama pasangan transaksi, saya telah meneliti untuk waktu yang lama, dan informasi log setelah pesanan tidak muncul sekarang, karena pembaruan administrator?

Yang kecil./upload/asset/2ffc0f961149326b78aed.png Apakah masalah ini disebabkan oleh pembaruan ini?

eknemuse 希望exchange.Buy函数能增加开止损单的功能。。

NanSegGaris depan

Wa-emmnn_Baiklah.

Penemu Kuantitas - Mimpi KecilBaiklah, cobalah di sini. Terima kasih atas pertanyaannya.

Wa-emmnn_Ya, extMsg1, extMsg2 tidak muncul.

Penemu Kuantitas - Mimpi KecilHalo, ID pesanan ini adalah perubahan yang harus dilakukan, karena upgrade langsung menentukan jenis order, ID pesanan harus berisi informasi jenis, jika tidak tidak dapat menentukan jenis pesanan ini, tidak dapat dipanggil saat penarikan ((karena sebagian besar bursa perlu menentukan jenis saat penarikan, dan menentukan ID)). Anda mengatakan bahwa pesan setelah pesanan tidak muncul, yaitu: exchange.Buy ((price, amount, extMsg1, extMsg2) ketika dipanggil, apakah extMsg1, extMsg2 tidak muncul di log?

Penemu Kuantitas - Mimpi KecilHalo, Anda dapat mengirim pengaturan bursa, pasangan perdagangan, dan kode kontrak saat ini.

Penemu KuantitasKirimkan detail kode dan konfigurasi uji coba ke formulir kerja, dan insinyur akan membalas Anda pada saat pertama.

Penemu Kuantitas - Mimpi KecilPerbedaan antara mekanisme persyaratan dan dukungan di bursa yang berbeda-beda, dan ini adalah penelitian untuk melihat apakah itu mungkin.

Penemu Kuantitas - Mimpi KecilTerima kasih atas dukungannya, jika ada masalah, kirimkan formulir atau komentar.