[TOC]

Nền tảng giao dịch định lượng Inventor đã trải qua 9 năm cải tiến công nghệ và được xây dựng lại nhiều lần, mặc dù chúng ta, với tư cách là người dùng, có thể không nhận ra điều đó. Trong hai năm qua, nền tảng này đã có nhiều tối ưu hóa và nâng cấp về mặt trải nghiệm người dùng, bao gồm nâng cấp toàn diện giao diện UI, làm phong phú thêm các công cụ giao dịch định lượng thường dùng và bổ sung thêm hỗ trợ dữ liệu kiểm tra ngược.
Để việc thiết kế chiến lược trở nên thuận tiện hơn, logic giao dịch rõ ràng hơn và giúp người mới bắt đầu dễ dàng hơn, nền tảng đã nâng cấp giao diện API mà chiến lược sử dụng. Sử dụng phiên bản mới nhất của máy chủ để kích hoạt các tính năng mới này. Nền tảng này vẫn tương thích với các lệnh gọi đến giao diện cũ ở mức độ lớn nhất có thể. Thông tin về các tính năng giao diện API mới đã được cập nhật vào tài liệu API của Nền tảng giao dịch định lượng Inventor:
Vì vậy, hãy cùng xem nhanh những giao diện nào đã được nâng cấp và những thay đổi nào là cần thiết để làm cho các chiến lược cũ tương thích với API hiện tại.
Để thiết kế các chiến lược đa dạng và các chiến lược giám sát toàn bộ tình hình thị trường. Giao diện thị trường tổng hợp này rất cần thiết để giúp phát triển các chiến lược dễ dàng hơn và tránh việc phải làm lại từ đầu. Nền tảng giao dịch định lượng của nhà phát minh này bao gồm các API trao đổi như vậy.
Nếu trao đổi không có giao diện này (trao đổi cá nhân), hãy gọiexchange.GetTickers()Một thông báo lỗi sẽ được báo cáo: Không được hỗ trợ.
Hàm này không có bất kỳ tham số nào và sẽ trả về dữ liệu thị trường theo thời gian thực của tất cả các loại trong giao diện thị trường tổng hợp của sàn giao dịch. Có thể hiểu đơn giản như sau:
exchange.GetTickers()Chức năng làexchange.GetTicker()Phiên bản đầy đủ của hàm (sự khác biệt giữa hai tên hàm là số ít và số nhiều).
Chúng tôi sử dụng môi trường mô phỏng điểm OKX để thử nghiệm:
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
}

Mớiexchange.CreateOrder()Chức năng là trọng tâm của bản nâng cấp này.exchange.CreateOrder()Chức năng quan trọng nhất của hàm là chỉ định trực tiếp kiểu và hướng của thứ tự trong các tham số của hàm. Theo cách này, nó không còn phụ thuộc vào các thiết lập hệ thống hiện tại như cặp giao dịch, mã hợp đồng, hướng giao dịch, v.v.
Độ phức tạp của thiết kế được giảm đáng kể trong các tình huống lệnh giao dịch nhiều sản phẩm và các tình huống đồng thời.exchange.CreateOrder()Bốn tham số của hàm làsymbol、side、price、amount。
Kiểm tra bằng môi trường mô phỏng tương lai 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)
}

Việc này chỉ mất 3 lầnexchange.CreateOrder()Lệnh gọi hàm này đặt ba lệnh tương lai có các loại và hướng khác nhau.
Mớiexchange.GetHistoryOrders()Chức năng này được sử dụng để lấy các lệnh giao dịch lịch sử của một sản phẩm nhất định. Chức năng này cũng yêu cầu sự hỗ trợ của giao diện trao đổi.
Để truy vấn các lệnh lịch sử, các giao diện được triển khai bởi nhiều sàn giao dịch khác nhau rất khác nhau:
Các giao diện như vậy được đóng gói với mức độ tương thích cao nhất và trong quá trình sử dụng thực tế, cần chú ý xem chúng có đáp ứng được các yêu cầu và kỳ vọng của chiến lược hay không.
Mô tả chức năng chi tiết không được nhắc lại ở đây, bạn có thể tham khảo hướng dẫn cú pháp trong tài liệu API:
https://www.fmz.com/syntax-guide#fun_exchange.gethistoryorders
Đã thử nghiệm bằng môi trường giao dịch giao ngay Binance:
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) + "`")
}

Phiên bản cũ của chức năng thu thập dữ liệu vị trí là:exchange.GetPosition(). Để phù hợp hơn với ngữ nghĩa đặt tên hàm, bản nâng cấp này bổ sung một hàm mới để lấy vị trí:exchange.GetPositions(). Đồng thời, nó vẫn tương thích/được nâng cấp với hàm GetPosition.
Lưu ý rằng hai tên hàm chỉ khác nhau ở chữ s theo sau. Vì GetPositions chính xác hơn về mặt ngữ nghĩa nên bạn nên sử dụng GetPositions trong tương lai.
exchange.GetPositions()Có ba dạng gọi hàm:
exchange.GetPositions() Khi không có tham số nào được truyền, thì hiện tạiCặp giao dịch / Mã hợp đồngYêu cầu dữ liệu vị trí của tất cả các giống trong chiều hiện tại.
exchange.GetPositions(“ETH_USDT.swap”)
Khi chỉ định thông tin sản phẩm cụ thể (định dạng ETH_USDT.swap được nền tảng FMZ xác định), hãy yêu cầu dữ liệu vị thế của sản phẩm cụ thể.
Ví dụ:BTC_USD.swap、ETH_USDT.swap、ETH_USDT.quarterChờ đợi.
BTC_USD.swap: Hợp đồng vĩnh viễn dựa trên tiền tệ của BTC.
ETH_USDT.swap: Hợp đồng vĩnh viễn dựa trên U của ETH.
ETH_USDC.swap: Hợp đồng vĩnh viễn ký quỹ bằng USDC dành cho ETH. (Ngoài USDT, bạn cũng có thể chỉ định quoteCurrency khác, điều này sẽ không được nhắc lại ở đây)
ETH_USDT.quarter: Hợp đồng giao hàng theo quý dựa trên U của ETH.
BTC_USD.BTC-USD-201226-24250-C: Hợp đồng quyền chọn ký quỹ bằng đồng BTC.
exchange.GetPositions(“USDT.swap”) Yêu cầu dữ liệu vị trí cho tất cả các ký hiệu theo phạm vi kích thước đã chỉ định. USDT.swap: Phạm vi hợp đồng vĩnh viễn dựa trên U. USDT.futures: Phạm vi hợp đồng giao hàng dựa trên chữ U. USDC.swap: Phạm vi hợp đồng vĩnh viễn ký quỹ bằng USDC. (Ngoài USDT, bạn cũng có thể chỉ định quoteCurrency khác, điều này sẽ không được nhắc lại ở đây) USDC.futures: Phạm vi hợp đồng tương lai ký quỹ bằng USDC. USD.swap: Phạm vi hợp đồng vĩnh viễn dựa trên tiền tệ. USD.futures: Phạm vi hợp đồng tương lai dựa trên tiền tệ. USDT.option: Phạm vi hợp đồng quyền chọn dựa trên chữ U. USD.option: Phạm vi hợp đồng quyền chọn dựa trên tiền tệ.
Một số phân chia kích thước hợp đồng trao đổi đặc biệt: USDT.futures_combo:Tổ hợp CFD của sàn giao dịch Futures_Deribit. USD.futures_ff:Hợp đồng giao hàng ký quỹ hỗn hợp của sàn giao dịch Futures_Craken. USD.swap_pf: Hợp đồng tương lai vĩnh viễn ký quỹ kết hợp trên sàn giao dịch Kraken.
Đối với các kích thước không được giao diện API trao đổi hỗ trợ, lỗi sẽ được báo cáo và giá trị null sẽ được trả về khi gọi.
Kiểm tra bằng môi trường mô phỏng tương lai 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) + "`")
}

Khi đếnexchange.GetPositions()Các tham số của hàm làETH_USDT.swapKhi bạn sử dụng hợp đồng vĩnh viễn dựa trên ETH U, bạn có thể nhận được dữ liệu vị thế của hợp đồng vĩnh viễn dựa trên ETH U.
Khi không nhập khẩuexchange.GetPositions()Khi hàm được sử dụng như một tham số, dữ liệu vị trí của tất cả các hợp đồng vĩnh viễn ký quỹ U được niêm yết trên sàn giao dịch có thể được lấy (vì cặp giao dịch hiện tại là BTC_USDT và hợp đồng là hoán đổi, yêu cầu dựa trên cặp giao dịch hiện tại và phạm vi kích thước hợp đồng). Điều này tương đương với việc gọiexchange.GetPositions("USDT.swap"), chỉ định phạm vi yêu cầu.
Chức năng GetFundings mới được thêm vào có thể lấy được tỷ lệ tài trợ của các hợp đồng vĩnh viễn trên sàn giao dịch tương lai. Hàm này có một tham số là symbol. Hàm này trả về một mảng các cấu trúc tài trợ.
BTC_USDT.swap. Nếu không có tham số nào được truyền hoặc một phạm vi nào đó được truyền vào hàm, một thông báo lỗi sẽ được hiển thị cho biết tham số ký hiệu không được hỗ trợ.Chức năng thị trườngexchange.GetTicker()Bản nâng cấp này chủ yếu bổ sung các tham số biểu tượng. Điều này cho phép chức năng yêu cầu dữ liệu thị trường trực tiếp theo thông tin sản phẩm được chỉ định bởi các tham số, bất kể cặp giao dịch và mã hợp đồng hiện tại. Đơn giản hóa quá trình viết mã. Đồng thời, nó vẫn tương thích với phương thức gọi mà không cần truyền tham số và tương thích với các chiến lược nền tảng cũ ở mức độ lớn nhất.
tham sốsymbolĐối với các đối tượng trao đổiexchangeCó nhiều định dạng khác nhau cho giao ngay/tương lai:
AAA_BBBAAA đại diện cho baseCurrency, tức là loại tiền tệ giao dịch, và BBB đại diện cho quoteCurrency, tức là loại tiền tệ định giá. Tên tiền tệ đều được viết hoa.
Ví dụ: cặp giao dịch giao ngay BTC_USDT.AAA_BBB.XXX, AAA đại diện cho baseCurrency, tức là loại tiền tệ giao dịch, BBB đại diện cho quoteCurrency, tức là loại tiền tệ định giá và XXX đại diện cho mã hợp đồng, chẳng hạn như hợp đồng hoán đổi vĩnh viễn. Tên tiền tệ đều được viết hoa và mã hợp đồng được viết thường.
Ví dụ: BTC_USDT.swap, hợp đồng vĩnh viễn dựa trên chữ U của BTC.Đã thử nghiệm bằng môi trường trực tiếp của 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
}

Việc yêu cầu một loạt dữ liệu thị trường cho một mã thông báo cụ thể đã trở nên đơn giản hơn nhiều.
Giống như hàm GetTickerexchange.GetDepth()Lần này, hàm này cũng thêm một tham số ký hiệu. Có thể chỉ định loại trực tiếp khi yêu cầu dữ liệu độ sâu.
Đã thử nghiệm bằng môi trường trực tiếp của 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"))
}

Giống như hàm GetTickerexchange.GetTrades()Lần này, hàm này cũng thêm một tham số ký hiệu. Có thể trực tiếp chỉ định sản phẩm khi yêu cầu dữ liệu giao dịch thị trường.
Đã thử nghiệm bằng môi trường trực tiếp của 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) + "`")
}

Bản nâng cấp này cũng tương thích vớiexchange.Go()Khi hàm đồng thời gọi giao diện API nền tảng, tham số ký hiệu được truyền vào để chỉ định thông tin sản phẩm.
Lần này, hàm GetRecords đã được điều chỉnh đáng kể, ngoài việc hỗ trợ tham số ký hiệu để trực tiếp chỉ định thông tin loại của dữ liệu K-line được yêu cầu. Tham số chu kỳ ban đầu được giữ lại để chỉ định chu kỳ đường K và tham số giới hạn được thêm vào để chỉ định độ dài đường K dự kiến khi yêu cầu. Nó cũng tương thích với phiên bản cũ của hàm GetRecords chỉ truyền vào tham số dấu chấm.
exchange.GetRecords()Cách gọi hàm:
Đã thử nghiệm bằng môi trường trực tiếp của 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相邻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)
}

Hàm GetOrders cũng thêmsymbolTham số, bạn có thể chỉ định một sản phẩm cụ thể và truy vấn các đơn hàng chưa hoàn thành (đơn hàng đang chờ xử lý) của sản phẩm đó; bạn cũng có thể truy vấn các đơn hàng chưa hoàn thành (đơn hàng đang chờ xử lý) của tất cả các sản phẩm trong phạm vi kích thước đã chỉ định.
exchange.GetOrders()Hàm này có thể được gọi theo những cách sau:
Kiểm tra bằng môi trường mô phỏng tương lai OKX:
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) + "`")
}
ETH_USDT.swapTham số, yêu cầu các lệnh chưa được thực hiện (lệnh đang chờ xử lý) của hợp đồng vĩnh viễn ký quỹ USDT của ETH."USDT.swap"Yêu cầu tất cả các lệnh đang chờ xử lý (lệnh chờ) của hợp đồng vĩnh viễn ký quỹ bằng USDT.Nó vẫn tương thích với cách đặt tên hàm thu thập vị trí cũ và cũng thêm tham số ký hiệu có thể chỉ định thông tin loại của dữ liệu vị trí cụ thể được yêu cầu. Sử dụng chức năng vàexchange.GetPositions()Hoàn toàn nhất quán.
vìexchange.IO("api", ...)Phương pháp gọi hàm đã được nâng cấp để hỗ trợ truyền trực tiếp toàn bộ địa chỉ yêu cầu cho tất cả các đối tượng trao đổi.
Ví dụ, nếu bạn muốn gọi giao diện OKX:
GET https://www.okx.com /api/v5/account/max-withdrawal ccy: BTC
Hỗ trợ ghi trực tiếp vào địa chỉ cơ sởhttps://www.okx.com, không cần phải chuyển đổi địa chỉ cơ sở trước khi gọi hàm IO.
Kiểm tra bằng môi trường mô phỏng tương lai OKX:
function main() {
exchange.IO("simulate", true)
return exchange.IO("api", "GET", "https://www.okx.com/api/v5/account/max-withdrawal", "ccy=BTC")
}

Bản nâng cấp này chủ yếu ảnh hưởng đếnexchange.GetOrder(id)Tham số chức năngidTham số id được thay đổi từ id lệnh giao dịch ban đầu thành định dạng chuỗi chứa loại giao dịch. Tất cả ID đơn hàng được đóng gói trên nền tảng FMZ đều có định dạng này.
Ví dụ:
123456
Trước khi nâng cấp này, nếu bạn muốn gọi hàm GetOrder, ID đơn hàng được truyền vào là123456。BTC-USDT。
Xin lưu ý rằng những gì được đề cập ở đây là mã sản phẩm giao dịch do sàn giao dịch đặt tên, không phải cặp giao dịch do nền tảng FMZ xác định.Sau khi nâng cấp này,exchange.GetOrder(id)Định dạng của id tham số mà hàm cần truyền vào được điều chỉnh thành:BTC-USDT,123456。
Trước tiên, tôi xin giải thích lý do tại sao lại thực hiện thiết kế này: Do chức năng CreateOrder đã được nâng cấp lần này để chỉ định trực tiếp sản phẩm cần đặt lệnh (sản phẩm được đặt có thể khác với cặp giao dịch và mã hợp đồng hiện tại), nếu ID lệnh trả về không chứa thông tin sản phẩm. Khi đó ID đơn hàng này sẽ không khả dụng. Bởi vì khi bạn kiểm tra đơn hàng, bạn không biết đơn hàng đó thuộc loại (hợp đồng) nào. Hầu hết các sàn giao dịch đều yêu cầu chỉ định các tham số mô tả mã sản phẩm khi kiểm tra và hủy đơn hàng.
Làm thế nào để tương thích với hiệu ứng này: Nếu bạn sử dụng hàm exchange.IO để gọi trực tiếp giao diện đặt hàng của sàn giao dịch để đặt hàng, giá trị trả về thường chứa ký hiệu gốc của sàn giao dịch (mã sản phẩm) và ID đơn hàng gốc. Sau đó, nối hai lệnh này bằng dấu phẩy tiếng Anh sẽ cung cấp cho bạn ID đơn hàng do nền tảng FMZ xác định. Tương tự như vậy, nếu bạn sử dụng giao diện lệnh được đóng gói bởi nền tảng FMZ để đặt lệnh, vì phần đầu của ID lệnh là mã sản phẩm giao dịch, nếu bạn cần sử dụng ID lệnh gốc, bạn chỉ cần xóa mã sản phẩm và dấu phẩy.
Bản nâng cấp này dành choexchange.CancelOrder()Tác động của các chức năng vàexchange.GetOrder()Các chức năng đều giống nhau.
Bản nâng cấp này dành choexchange.Buy()Tác động của các chức năng vàexchange.GetOrder()Các chức năng đều giống nhau.exchange.Buy()ID lệnh được hàm trả về là một cấu trúc mới, ví dụ, ID trả về khi đặt lệnh tương lai trên sàn giao dịch OKX:LTC-USDT-SWAP,1578360858053058560。
Bản nâng cấp này dành choexchange.Sell()Tác động của các chức năng vàexchange.GetOrder()Các chức năng đều giống nhau.exchange.Sell()ID lệnh được hàm trả về là một cấu trúc mới, ví dụ, ID trả về khi đặt lệnh tương lai trên sàn giao dịch OKX:ETH-USDT-SWAP,1578360832820125696。
Chỉ các đối tượng trao đổi tương lai hỗ trợ chức năng này. Đối với chức năng exchange.GetPosition() để lấy dữ liệu vị trí, một tên mới exchange.GetPositions() được thêm vào và hành vi của chúng hoàn toàn giống nhau.
Định nghĩa cũ: hàm exchange.GetPosition(). Khi được gọi mà không chỉ định bất kỳ tham số nào, hàm này sẽ lấy dữ liệu vị trí của hợp đồng cụ thể được đặt theo cặp giao dịch hiện tại và mã hợp đồng.
Sau khi điều chỉnh và sửa đổi, định nghĩa mới là: hàm exchange.GetPosition(). Khi được gọi mà không chỉ định bất kỳ tham số nào, nó sẽ lấy vị trí của tất cả các loại trong phạm vi kích thước được xác định bởi cặp giao dịch và mã hợp đồng hiện tại.
Ví dụ, cặp giao dịch hiện tại là BTC_USDT và mã hợp đồng là swap. Lúc này hãy gọi:
exchange.GetPosition() // 等价于调用 exchange.GetPosition("USDT.swap")
Chức năng này sẽ yêu cầu dữ liệu vị thế của hợp đồng tương lai ký quỹ U của tất cả các loại tiền tệ.
Định nghĩa cũ: hàm exchange.GetOrders(). Khi được gọi mà không chỉ định bất kỳ tham số nào, hàm này sẽ truy xuất tất cả các lệnh đang chờ xử lý cho cặp giao dịch hiện tại.
Sau khi điều chỉnh và sửa đổi, định nghĩa mới là: hàm exchange.GetOrders(). Khi được gọi mà không chỉ định bất kỳ tham số nào, nó sẽ lấy các lệnh chưa hoàn thành của tất cả các cặp giao dịch giao ngay.
Định nghĩa cũ: hàm exchange.GetOrders(). Khi được gọi mà không chỉ định bất kỳ tham số nào, hàm này sẽ truy xuất tất cả các lệnh chưa hoàn thành của hợp đồng cụ thể được đặt theo cặp giao dịch hiện tại và mã hợp đồng.
Sau khi điều chỉnh và sửa đổi, định nghĩa mới là: hàm exchange.GetOrders(). Khi được gọi mà không chỉ định bất kỳ tham số nào, nó sẽ lấy tất cả các lệnh chưa hoàn thành trong phạm vi kích thước được xác định bởi cặp giao dịch và mã hợp đồng hiện tại.
Ví dụ, cặp giao dịch hiện tại là BTC_USD và mã hợp đồng là quarter. Lúc này hãy gọi:
exchange.GetOrders() // 等价于调用 exchange.GetOrders("USD.futures")
Chức năng này sẽ yêu cầu dữ liệu lệnh chưa thanh toán của tất cả các hợp đồng tương lai ký quỹ bằng tiền xu.
Bản cập nhật này thêm trường Biểu tượng vào cấu trúc Mã chứng khoán, ghi lại thông tin thị trường của sản phẩm trong cấu trúc Mã chứng khoán hiện tại. Định dạng của trường này làexchange.GetTicker()Định dạng tham số ký hiệu của hàm hoàn toàn giống nhau.
Bản cập nhật này thêm một trường Symbol vào cấu trúc Order. Định dạng của trường này giống nhưexchange.GetTicker()Định dạng tham số ký hiệu của hàm hoàn toàn giống nhau. Bản cập nhật này cũng sửa đổi trường Id của cấu trúc Đơn hàng để ghi lại thông tin sản phẩm và thông tin đơn hàng gốc theo định dạng ID đơn hàng mới. tham khảoexchange.GetOrder()Mô tả về ID đơn hàng trong chức năng sẽ không được lặp lại ở đây.
Bản cập nhật này thêm một trường Symbol vào cấu trúc Position. Định dạng của trường này giống nhưexchange.GetTicker()Định dạng tham số ký hiệu của hàm hoàn toàn giống nhau.
Hàm GetFundings trả về một mảng các cấu trúc tài trợ.
{
"Info": {...}, // 交易所资金费率接口原始应答数据
"Symbol": "BTC_USDT.swap", // FMZ平台定义的品种名称
"Interval": 28800000, // 8小时间隔,单位毫秒
"Time": 1729728000000, // 本期资金费率收取时间
"Rate": 0.0001, // 资金费率,即 0.01 %
}
Để đáp ứng nhu cầu của người dùng, bản nâng cấp này trước tiên sẽ tương thích với thị trường thực tế và hệ thống kiểm tra ngược sẽ được điều chỉnh trong vòng một tuần. Nếu mã chiến lược riêng lẻ bị ảnh hưởng, vui lòng làm theo hướng dẫn trong bài viết này để thực hiện thay đổi và điều chỉnh
Theo bản nâng cấp giao diện API của chiến lược nền tảng, các giao diện API trong hệ thống kiểm thử ngược của nền tảng đã được cập nhật đồng bộ; ngoài ra, hệ thống kiểm thử ngược đã bổ sung hỗ trợ cho:
Các hàm thành viên cho các đối tượng trao đổi tương laiGetAccountTrở lạiAccountCấu trúc đã được mở rộng thêm nhiều trường.
Hàm thành viên SetMarginLevel của đối tượng giao dịch tương lai đã được nâng cấp để thêm biểu tượng tham số.
Ví dụ kiểm tra:
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)
}
CtValCcyGhi lại đơn vị giá trị của hợp đồng. Đơn vị giá trị của hợp đồng có thể là: BTC, USD, ETH, v.v.CtValGhi lại giá trị của một hợp đồng của sản phẩm giao dịch này trên sàn giao dịch, theo đơn vịCtValCcyTiền tệ của hồ sơ thực địa. Ví dụ:CtVallà 0,01,CtValCcy“BTC” nghĩa là một hợp đồng có giá trị 0,01 BTC.