Type/to search
8
Follow
1364
Followers
Penjelasan terperinci tentang peningkatan API Platform Perdagangan Kuantitatif Inventor: Meningkatkan pengalaman desain strategi
Original
Created 2024-06-28 09:08:29  Updated 2024-11-01 10:08:12
 12
 2568

img

Kata pengantar

Platform Perdagangan Kuantitatif Inventor telah mengalami 9 tahun iterasi teknologi dan telah direkonstruksi berkali-kali, meskipun sebagai pengguna kita mungkin tidak menyadarinya. Dalam dua tahun terakhir, platform ini telah melakukan banyak pengoptimalan dan peningkatan dalam hal pengalaman pengguna, termasuk peningkatan menyeluruh pada antarmuka UI, memperkaya alat perdagangan kuantitatif yang umum digunakan, dan menambahkan lebih banyak dukungan data pengujian ulang.

Untuk membuat desain strategi lebih mudah, logika perdagangan lebih jelas, dan lebih mudah bagi pemula untuk memulai, platform meningkatkan antarmuka API yang digunakan oleh strategi. Gunakan versi terbaru host Anda untuk mengaktifkan fitur-fitur baru ini. Platform tetap kompatibel dengan panggilan ke antarmuka lama semaksimal mungkin. Informasi tentang fitur antarmuka API baru telah diperbarui ke dokumentasi API Platform Perdagangan Kuantitatif Inventor:

Jadi mari kita lihat sekilas antarmuka mana yang telah ditingkatkan dan perubahan apa yang diperlukan untuk membuat strategi lama kompatibel dengan API saat ini.

1. Antarmuka API baru

fungsi exchange.GetTickers

Untuk merancang strategi multi-variasi dan strategi pemantauan situasi pasar secara menyeluruh. Antarmuka pasar agregat ini penting untuk mempermudah pengembangan strategi dan menghindari penemuan kembali roda. Platform perdagangan kuantitatif milik penemu merangkum API bursa tersebut.

Jika bursa tidak memiliki antarmuka ini (bursa individual), hubungiexchange.GetTickers()Pesan kesalahan akan dilaporkan: Tidak didukung.

Fungsi ini tidak memiliki parameter apa pun dan akan mengembalikan data pasar waktu nyata dari semua jenis dalam antarmuka pasar agregat bursa. Secara sederhana, hal ini dapat dipahami sebagai:

exchange.GetTickers()Fungsinya adalahexchange.GetTicker()Versi lengkap fungsi (perbedaan antara dua nama fungsi adalah bentuk tunggal dan jamak).

Kami menggunakan lingkungan simulasi spot OKX untuk pengujian:

javascript
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

fungsi pertukaran.CreateOrder

Baruexchange.CreateOrder()Fungsi menjadi fokus peningkatan ini.exchange.CreateOrder()Fungsi yang paling penting dari fungsi tersebut adalah untuk secara langsung menentukan jenis dan arah perintah dalam parameter fungsi. Dengan cara ini, tidak lagi bergantung pada pengaturan sistem saat ini seperti pasangan perdagangan, kode kontrak, arah perdagangan, dll.

Kompleksitas desain sangat berkurang dalam skenario pesanan perdagangan multiproduk dan skenario bersamaan.exchange.CreateOrder()Empat parameter fungsi tersebut adalahsymbolsidepriceamount

Uji coba menggunakan lingkungan simulasi berjangka OKX:

javascript
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

Ini hanya butuh 3 kaliexchange.CreateOrder()Pemanggilan fungsi menempatkan tiga order berjangka dengan jenis dan arah yang berbeda.

fungsi pertukaran.GetHistoryOrders

Baruexchange.GetHistoryOrders()Fungsi ini digunakan untuk memperoleh pesanan transaksi historis dari suatu produk tertentu. Fungsi ini juga memerlukan dukungan antarmuka pertukaran.

Untuk menanyakan pesanan historis, antarmuka yang diterapkan oleh berbagai bursa sangat bervariasi:

  • Beberapa mendukung kueri berhalaman, sementara yang lain tidak;
  • Beberapa bursa memiliki periode jendela kueri, yaitu, pesanan yang lebih dari N hari tidak dapat dikueri;
  • Sebagian besar bursa mendukung pengajuan pertanyaan pada waktu tertentu, tetapi beberapa tidak;

Antarmuka semacam itu dienkapsulasi dengan tingkat kompatibilitas tertinggi, dan dalam penggunaan aktual, perhatian harus diberikan pada apakah antarmuka tersebut memenuhi persyaratan dan harapan strategi.

Deskripsi fungsi terperinci tidak diulang di sini, Anda dapat merujuk ke manual sintaksis dalam dokumentasi API:

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

Diuji menggunakan lingkungan perdagangan spot Binance:

javascript
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

fungsi exchange.GetPositions

Versi lama fungsi akuisisi data posisi adalah:exchange.GetPosition(). Untuk lebih mencocokkan semantik penamaan fungsi, peningkatan ini menambahkan fungsi baru untuk memperoleh posisi:exchange.GetPositions(). Pada saat yang sama, masih kompatibel/ditingkatkan dengan fungsi GetPosition.

Perhatikan bahwa kedua nama fungsi tersebut hanya berbeda pada akhiran s. Karena GetPositions lebih tepat secara semantik, sebaiknya Anda menggunakan GetPositions di masa mendatang.

exchange.GetPositions()Ada tiga bentuk pemanggilan fungsi:

  • exchange.GetPositions()
    Ketika tidak ada parameter yang dilewatkan, arusPasangan Perdagangan / Kode KontrakMeminta data posisi semua varietas dalam dimensi saat ini.

  • exchange.GetPositions("ETH_USDT.swap")
    Saat menentukan informasi produk tertentu (format ETH_USDT.swap ditentukan oleh platform FMZ), mintalah data posisi produk tertentu.
    Contoh:BTC_USD.swapETH_USDT.swapETH_USDT.quarterTunggu.
    BTC_USD.swap: Kontrak berjangka abadi berbasis mata uang BTC.
    ETH_USDT.swap: Kontrak abadi ETH berbasis U.
    ETH_USDC.swap: Kontrak perpetual dengan margin USDC untuk ETH. (Selain USDT, Anda juga dapat menentukan quoteCurrency yang berbeda, yang tidak akan diulang di sini)
    ETH_USDT.quarter: Kontrak pengiriman triwulanan ETH berbasis U.
    BTC_USD.BTC-USD-201226-24250-C: Kontrak opsi margin koin BTC.

  • exchange.GetPositions("USDT.swap")
    Meminta data posisi untuk semua simbol sesuai dengan rentang dimensi yang ditentukan.
    USDT.swap: Rentang kontrak abadi berbasis U.
    USDT.futures: Kisaran kontrak pengiriman berdenominasi U.
    USDC.swap: Kisaran kontrak perpetual dengan margin USDC. (Selain USDT, Anda juga dapat menentukan quoteCurrency yang berbeda, yang tidak akan diulang di sini)
    USDC.futures: Kisaran kontrak berjangka bermargin USDC.
    USD.swap: Rentang kontrak abadi berbasis mata uang.
    USD.futures: Kisaran kontrak berjangka berbasis mata uang.
    USDT.option: Rentang kontrak opsi berbasis U.
    USD.option: Rentang kontrak opsi berbasis mata uang.

    Beberapa divisi dimensi kontrak pertukaran khusus:
    USDT.futures_combo:Kombinasi CFD bursa Futures_Deribit.
    USD.futures_ff:Kontrak pengiriman margin campuran bursa Futures_Craken.
    USD.swap_pf: Futures_Kontrak margin-hibrida berjangka di bursa Kraken.

    Untuk dimensi yang tidak didukung oleh antarmuka API pertukaran, kesalahan akan dilaporkan dan nilai null akan dikembalikan saat pemanggilan.

Uji coba menggunakan lingkungan simulasi berjangka OKX:

javascript
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()Parameter fungsinya adalahETH_USDT.swapSaat Anda menggunakan kontrak perpetual berbasis ETH U, Anda bisa mendapatkan data posisi kontrak perpetual berbasis ETH U.

Saat tidak diimporexchange.GetPositions()Ketika fungsi ini digunakan sebagai parameter, data posisi semua kontrak perpetual U-margin yang terdaftar di bursa dapat diperoleh (karena pasangan perdagangan saat ini adalah BTC_USDT dan kontraknya adalah swap, permintaan didasarkan pada pasangan perdagangan saat ini dan rentang dimensi kontrak). Ini setara dengan memanggilexchange.GetPositions("USDT.swap"), tentukan cakupan permintaan.

fungsi exchange.GetFundings

Fungsi GetFundings yang baru ditambahkan dapat memperoleh tingkat pendanaan kontrak abadi di bursa berjangka. Fungsi tersebut mengambil satu simbol parameter. Fungsi ini mengembalikan serangkaian struktur Pendanaan.

  • Tentukan parameter simbol: Mengembalikan susunan informasi tingkat pendanaan (Array pendanaan) dari produk yang ditentukan. Parameter simbol dapat ditetapkan ke suatu rentang, mirip dengan parameter simbol fungsi GetOrders/GetPositions.
  • Tanpa menentukan parameter simbol: mengembalikan semua data produk dari dimensi saat ini sesuai dengan dimensi tempat pasangan perdagangan dan kode kontrak saat ini berada. Mekanismenya sama dengan fungsi GetOrders/GetPositions.
  • Jika bursa harus menentukan suatu produk tertentu, maka parameter simbol harus disertakan, yaitu kode produk tertentu, misalnya:BTC_USDT.swap. Jika tidak ada parameter yang dilewatkan atau suatu rentang dilewatkan ke dalam fungsi, pesan kesalahan akan ditampilkan yang menyatakan bahwa parameter simbol tidak didukung.

2. Peningkatan antarmuka API

fungsi GetTicker pertukaran

Fungsi pasarexchange.GetTicker()Peningkatan ini terutama menambahkan parameter simbol. Fungsi ini dapat digunakan untuk meminta data pasar secara langsung sesuai dengan informasi produk yang ditentukan oleh parameter, terlepas dari pasangan perdagangan dan kode kontrak saat ini. Menyederhanakan proses penulisan kode. Pada saat yang sama, ia masih kompatibel dengan metode pemanggilan tanpa meneruskan parameter, dan kompatibel dengan strategi platform lama secara maksimal.

parametersymbolUntuk objek pertukaranexchangeAda beberapa format untuk spot/future:

  • Objek Pertukaran Spot
    Formatnya adalah:AAA_BBBAAA melambangkan baseCurrency, yakni mata uang transaksi, dan BBB melambangkan quoteCurrency, yakni mata uang penetapan harga. Nama mata uang semuanya ditulis dengan huruf kapital.
    Misalnya: pasangan perdagangan spot BTC_USDT.
  • Objek Bursa Berjangka
    Formatnya adalah:AAA_BBB.XXX, AAA melambangkan baseCurrency, yakni mata uang transaksi, BBB melambangkan quoteCurrency, yakni mata uang penetapan harga, dan XXX melambangkan kode kontrak, seperti swap kontrak abadi. Nama mata uang semuanya ditulis dengan huruf besar, sedangkan kode kontrak ditulis dengan huruf kecil.
    Misalnya: BTC_USDT.swap, kontrak abadi BTC berbasis U.

Diuji menggunakan lingkungan langsung Binance Futures:

javascript
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 sejumlah data pasar untuk simbol tertentu menjadi jauh lebih mudah.

fungsi exchange.GetDepth

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

Diuji menggunakan lingkungan langsung Binance Futures:

javascript
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

fungsi pertukaran.GetTrades

Sama seperti fungsi GetTickerexchange.GetTrades()Fungsi ini juga menambahkan parameter simbol kali ini. Dimungkinkan untuk langsung menentukan produk saat meminta data transaksi pasar.

Diuji menggunakan lingkungan langsung Binance Futures:

javascript
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 kompatibel denganexchange.Go()Ketika fungsi tersebut memanggil antarmuka API platform secara bersamaan, parameter simbol diteruskan untuk menentukan informasi produk.

fungsi exchange.GetRecords

Fungsi GetRecords telah disesuaikan secara signifikan kali ini, selain mendukung parameter simbol untuk secara langsung menentukan informasi jenis data K-line yang diminta. Parameter periode asli dipertahankan untuk menentukan periode K-line, dan parameter batas ditambahkan untuk menentukan panjang K-line yang diharapkan saat meminta. Ini juga kompatibel dengan fungsi GetRecords versi lama yang hanya memasukkan parameter periode.

exchange.GetRecords()Cara memanggil fungsi:

  • exchange.GetRecords()
    Jika tidak ada parameter yang ditentukan, data K-line dari produk yang sesuai dengan kode kontrak/pasangan perdagangan saat ini akan diminta. Periode K-line adalah periode K-line default yang ditetapkan dalam antarmuka pengujian ulang strategi atau dalam perdagangan riil.
  • exchange.GetRecords(60 * 15)
    Jika hanya parameter periode K-line yang ditentukan, data K-line produk yang sesuai dengan pasangan perdagangan/kode kontrak saat ini diminta.
  • exchange.GetRecords("BTC_USDT.swap")
    Jika hanya informasi produk yang ditentukan, data K-line dari produk yang ditentukan akan diminta. Periode K-line adalah periode K-line default yang ditetapkan dalam antarmuka pengujian ulang strategi atau dalam perdagangan riil.
  • exchange.GetRecords("BTC_USDT.swap", 60 * 60)
    Tentukan informasi produk dan periode K-line spesifik untuk meminta data K-line.
  • exchange.GetRecords("BTC_USDT.swap", 60, 1000)
    Tentukan informasi produk, periode K-line tertentu, dan panjang K-line yang diinginkan untuk meminta data K-line.
    Perlu diperhatikan bahwa ketika parameter batas melebihi panjang maksimum permintaan tunggal dari bursa, permintaan paging akan dibuat (yakni beberapa panggilan ke antarmuka K-line bursa).

Diuji menggunakan lingkungan langsung Binance Futures:

javascript
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

fungsi GetOrders pertukaran

Fungsi GetOrders juga menambahkansymbolParameter, Anda dapat menentukan produk tertentu dan menanyakan pesanan yang belum selesai (pesanan tertunda) dari produk tersebut; Anda juga dapat menanyakan pesanan yang belum selesai (pesanan tertunda) dari semua produk dalam rentang dimensi yang ditentukan.

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

  • exchange.GetOrders()
    Untuk bursa berjangka: Ketika tidak ada parameter yang dilewatkan,Pasangan Perdagangan / Kode KontrakMinta semua pesanan terbuka (pesanan tertunda) untuk semua simbol dalam rentang dimensi saat ini.
    Untuk bursa spot: Jika tidak ada parameter yang dilewatkan, permintaan dibuat untuk semua pesanan yang belum diselesaikan (pesanan tertunda) dari semua produk spot.
  • tukar.GetOrders("BTC_USDT.swap") atau tukar.GetOrders("BTC_USDT")
    Untuk bursa berjangka: exchange.GetOrders("BTC_USDT.swap") untuk menanyakan semua pesanan yang belum selesai (pesanan tertunda) untuk kontrak perpetual bermargin USDT BTC.
    Untuk bursa spot: exchange.GetOrders("BTC_USDT"), tanyakan semua pesanan yang belum selesai (pesanan tertunda) untuk pasangan perdagangan spot BTC_USDT.
  • Hanya didukung untuk bursa berjangka exchange.GetOrders("USDT.swap") Meminta pesanan yang belum terpenuhi (pesanan tertunda) dari semua jenis dalam rentang dimensi yang ditentukan
    Rentang pembagian dimensi konsisten dengan rentang dalam fungsi GetPositions.
    Misalnya: exchange.GetOrders("USDT.swap") meminta semua pesanan yang belum terpenuhi (pesanan tertunda) dari semua jenis dalam rentang kontrak abadi bermargin USDT.

Uji coba menggunakan lingkungan simulasi berjangka OKX:

javascript
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) + "`") }
  • Jika tidak ada parameter yang dilewatkan, pesanan yang belum selesai (pesanan tertunda) dari semua jenis dalam rentang dimensi pasangan perdagangan saat ini (BTC_USDT) dan kode kontrak (swap) diminta.
  • Menentukan ParameterETH_USDT.swapParameter, meminta pesanan yang belum terpenuhi (pending order) dari kontrak perpetual bermargin USDT ETH.
  • Melewati sebuah string"USDT.swap"Minta semua pesanan yang belum diselesaikan (pesanan tertunda) untuk kontrak perpetual bermargin USDT.

fungsi exchange.GetPosition

Masih kompatibel dengan penamaan fungsi akuisisi posisi lama, dan juga menambahkan parameter simbol, yang dapat menentukan informasi jenis data posisi spesifik yang diminta. Penggunaan fungsi danexchange.GetPositions()Benar-benar konsisten.

Fungsi exchange.IO

untukexchange.IO("api", ...)Metode pemanggilan fungsi telah ditingkatkan untuk mendukung penyampaian langsung alamat permintaan lengkap untuk semua objek pertukaran.

Misalnya, jika Anda ingin memanggil antarmuka OKX:

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

Mendukung penulisan langsung ke alamat dasarhttps://www.okx.com, tidak perlu mengganti alamat dasar sebelum memanggil fungsi IO.

Uji coba menggunakan lingkungan simulasi berjangka OKX:

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

img

3. Dampak antarmuka API

fungsi pertukaran.GetOrder

Peningkatan ini terutama mempengaruhiexchange.GetOrder(id)Parameter FungsiidParameter id diubah dari id order pertukaran asli ke format string yang berisi jenis perdagangan. Semua ID pesanan yang dikemas pada platform FMZ berada dalam format ini.

Misalnya:

  • Id pesanan asli pertukaran yang ditetapkan dalam pesanan pertukaran adalah:123456
    Sebelum peningkatan ini, jika Anda ingin memanggil fungsi GetOrder, ID pesanan yang diteruskan adalah123456
  • Simbol produk yang diberi nama di bursa yang ditetapkan dalam perintah bursa:BTC-USDT
    Harap dicatat bahwa yang disebutkan di sini adalah kode produk perdagangan yang ditetapkan oleh bursa, bukan pasangan perdagangan yang ditentukan oleh platform FMZ.

Setelah peningkatan ini,exchange.GetOrder(id)Format id parameter yang perlu diteruskan oleh fungsi disesuaikan menjadi:BTC-USDT,123456

  • Pertama-tama, izinkan saya menjelaskan mengapa desain ini dibuat:
    Karena fungsi CreateOrder telah ditingkatkan kali ini untuk secara langsung menentukan produk yang akan dipesan (produk yang dipesan mungkin berbeda dari pasangan perdagangan dan kode kontrak yang ditetapkan saat ini), jika ID pesanan yang dikembalikan tidak berisi informasi produk. Maka ID pesanan ini tidak dapat digunakan. Karena ketika Anda memeriksa pesanan, Anda tidak tahu jenis (kontrak) pesanan tersebut. Sebagian besar bursa mengharuskan penentuan parameter yang menjelaskan kode produk saat memeriksa dan membatalkan pesanan.

  • Cara mengakomodasi efek ini:
    Jika Anda menggunakan fungsi exchange.IO untuk langsung memanggil antarmuka pesanan bursa untuk melakukan pemesanan, nilai yang dikembalikan umumnya berisi simbol asli bursa (kode produk) dan ID pesanan asli. Kemudian menggabungkan keduanya dengan koma bahasa Inggris akan memberi Anda ID pesanan yang ditentukan oleh platform FMZ.
    Demikian pula, jika Anda menggunakan antarmuka pesanan yang dienkapsulasi oleh platform FMZ untuk melakukan pemesanan, karena awal ID pesanan adalah kode produk perdagangan, jika Anda perlu menggunakan ID pesanan asli, Anda hanya perlu menghapus kode produk dan koma.

fungsi pertukaran.CancelOrder

Peningkatan ini untukexchange.CancelOrder()Dampak fungsi danexchange.GetOrder()Fungsinya sama.

fungsi tukar.beli

Peningkatan ini untukexchange.Buy()Dampak fungsi danexchange.GetOrder()Fungsinya sama.exchange.Buy()ID pesanan yang dikembalikan oleh fungsi tersebut adalah struktur baru, misalnya, ID yang dikembalikan saat menempatkan pesanan berjangka di bursa OKX:LTC-USDT-SWAP,1578360858053058560

fungsi tukar.jual

Peningkatan ini untukexchange.Sell()Dampak fungsi danexchange.GetOrder()Fungsinya sama.exchange.Sell()ID pesanan yang dikembalikan oleh fungsi tersebut adalah struktur baru, misalnya, ID yang dikembalikan saat menempatkan pesanan berjangka di bursa OKX:ETH-USDT-SWAP,1578360832820125696

fungsi exchange.GetPosition

Hanya objek bursa berjangka yang mendukung fungsi ini. Untuk fungsi exchange.GetPosition() guna memperoleh data posisi, nama baru exchange.GetPositions() ditambahkan, dan perilakunya sama persis.

Definisi lama: fungsi exchange.GetPosition(). Ketika dipanggil tanpa menentukan parameter apa pun, fungsi ini memperoleh data posisi kontrak tertentu yang ditetapkan oleh pasangan perdagangan dan kode kontrak saat ini.

Setelah penyesuaian dan modifikasi, definisi baru adalah: fungsi exchange.GetPosition(). Ketika dipanggil tanpa menentukan parameter apa pun, fungsi ini memperoleh posisi semua varietas dalam rentang dimensi yang ditentukan oleh pasangan perdagangan dan kode kontrak yang ditetapkan saat ini.

Misalnya, pasangan perdagangan saat ini adalah BTC_USDT dan kode kontraknya adalah swap. Pada saat ini hubungi:

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

Fungsi ini akan meminta data posisi kontrak perpetual U-margin semua mata uang.

fungsi GetOrders pertukaran

  1. Untuk bursa spot:

Definisi lama: fungsi exchange.GetOrders(). Bila dipanggil tanpa menentukan parameter apa pun, fungsi ini akan mengambil semua pesanan yang belum diselesaikan untuk pasangan perdagangan saat ini.

Setelah penyesuaian dan modifikasi, definisi baru adalah: fungsi exchange.GetOrders(). Ketika dipanggil tanpa menentukan parameter apa pun, fungsi ini memperoleh order yang belum diselesaikan dari semua pasangan perdagangan spot.

  1. Untuk bursa berjangka:

Definisi lama: fungsi exchange.GetOrders(). Bila dipanggil tanpa menentukan parameter apa pun, fungsi ini akan mengambil semua pesanan yang belum diselesaikan dari kontrak tertentu yang ditetapkan oleh pasangan perdagangan dan kode kontrak saat ini.

Setelah penyesuaian dan modifikasi, definisi baru adalah: fungsi exchange.GetOrders(). Ketika dipanggil tanpa menentukan parameter apa pun, fungsi ini akan memperoleh semua pesanan yang belum selesai dalam rentang dimensi yang ditentukan oleh pasangan perdagangan dan kode kontrak yang ditetapkan saat ini.

Misalnya, pasangan perdagangan saat ini adalah BTC_USD dan kode kontraknya adalah kuartal. Pada saat ini hubungi:

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

Fungsi ini akan meminta data pesanan terutang dari semua kontrak berjangka margin koin.

4. Penyesuaian struktural

Struktur Ticker

Pembaruan ini menambahkan bidang Simbol ke struktur Ticker, yang mencatat informasi pasar produk dari struktur Ticker saat ini. Format bidang ini adalahexchange.GetTicker()Format parameter simbol fungsinya sama persis.

Struktur Pesanan

Pembaruan ini menambahkan bidang Simbol ke struktur Pesanan. Format bidang ini sama denganexchange.GetTicker()Format parameter simbol fungsinya sama persis. Pembaruan ini juga mengubah bidang Id dari struktur Pesanan untuk mencatat informasi produk dan informasi pesanan asli dalam format ID pesanan baru. merujuk keexchange.GetOrder()Deskripsi ID pesanan dalam fungsi tidak akan diulang di sini.

Struktur Jabatan

Pembaruan ini menambahkan bidang Simbol ke struktur Posisi. Format bidang ini sama denganexchange.GetTicker()Format parameter simbol fungsinya sama persis.

Struktur Pendanaan

Fungsi GetFundings mengembalikan serangkaian struktur Pendanaan.

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

5. Sistem pengujian ulang

Untuk memenuhi kebutuhan pengguna, peningkatan ini akan terlebih dahulu disesuaikan dengan pasar riil, dan sistem pengujian ulang akan disesuaikan dalam waktu seminggu. Jika kode strategi individual terpengaruh, harap ikuti petunjuk dalam artikel ini untuk membuat perubahan dan penyesuaian

Sesuai dengan peningkatan antarmuka API strategi platform, antarmuka API dalam sistem pengujian ulang platform telah diperbarui secara sinkron; selain itu, sistem pengujian ulang telah menambahkan dukungan untuk:

  • Mendukung lebih banyak data pengujian ulang pertukaran.
  • Mendukung pengujian ulang data semua jenis bursa.
  • Perdagangan campuran berbasis U, pengiriman berbasis mata uang, dan kontrak abadi.
  • Objek bursa berjangka mendukung peralihan pasangan perdagangan selama pengujian ulang.
  • Sistem pengujian ulang menambahkan dukungan untuk fungsi baru seperti fungsi GetTickers dan fungsi GetMarkets.

Pembaruan Tambahan

1. Menambahkan bidang Ekuitas dan UPnL ke struktur Akun

Fungsi anggota untuk objek pertukaran berjangkaGetAccountKembaliAccountStrukturnya telah diperluas dengan bidang.

  • Equity
    Total ekuitas mata uang aset margin saat ini. Kecuali beberapa bursa berjangka yang tidak mendukung bidang ini, sebagian besar bursa mendukung bidang ini. Terutama digunakan untuk menghitung laba dan rugi margin akun secara real-time.
  • UPnL
    Keuntungan dan kerugian yang belum terealisasi dari semua posisi yang dimiliki dalam mata uang aset margin saat ini. Kecuali beberapa bursa berjangka yang tidak mendukung bidang ini, sebagian besar bursa mendukung bidang ini.

2. Fungsi SetMarginLevel meningkatkan dukungan parameter simbol

Fungsi anggota SetMarginLevel dari objek bursa berjangka telah ditingkatkan untuk menambahkan simbol parameter.

Contoh pengujian:

javascript
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. Tambahkan bidang CtValCcy ke struktur Pasar yang dikembalikan oleh fungsi GetMarkets

  • LapanganCtValCcyCatat unit nilai suatu kontrak. Unit nilai suatu kontrak dapat berupa: BTC, USD, ETH, dll.
  • LapanganCtValCatat nilai satu kontrak produk perdagangan ini di bursa, dalam satuanCtValCcyMata uang catatan lapangan. Misalnya:CtValadalah 0,01,CtValCcy"BTC" berarti satu kontrak bernilai 0,01 BTC.
Comment
All comments (12)

    我说我新开的机器人怎么回事,返回ID还带交易对名称,研究了好久,还有下单后缀的log信息现在不显示了,也是因为托管者更新的缘故吗?

    2 years ago

    您好,订单ID这个是迫不得已的改动,因为升级了直接指定品种下单,订单ID中就必须包含品种信息,否则无法确定这个订单是哪个品种的,在撤单的时候无法调用(因为大多数交易所撤单的时候需要指定品种,并且指定ID)。
    您说的下单后缀信息不显示,是指:exchange.Buy(price, amount, extMsg1, extMsg2)调用时,extMsg1, extMsg2 不在日志上显示吗?

    2 years ago

    对的,extMsg1, extMsg2不显示了。

    2 years ago

    好的,这边测试下看下。感谢您提出问题。这边会尽快处理。

    2 years ago

    好UwU

    2 years ago

    img

    请问这个问题是这次接口更新导致的吗?

    2 years ago

    您好,您发下当前的交易所设置、交易对、合约代码设置。

    2 years ago

    请详细发送测试代码与配置到工单,工程师会在第一时间回复您

    2 years ago

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

    2 years ago

    交易所的条件单机制等差别有些大,支持程度各不相同,这个这边调研下看是否可行。

    2 years ago

    前排围观

    2 years ago

    感谢支持,如果有使用问题,发工单或留言都可以。

    2 years ago
  • 1
iPhone Download
Forums
PINE Language
© 2015 - ∞ INVENTOR PTE LTD (SG)