Tài nguyên đang được tải lên... tải...

Các nhà phát minh nâng cấp API nền tảng giao dịch định lượng: nâng cao trải nghiệm thiết kế chiến lược

Tác giả:Những nhà phát minh định lượng - những giấc mơ nhỏ, Tạo: 2024-06-28 09:08:29, Cập nhật: 2024-11-01 10:08:12

[TOC]

img

Lời mở đầu

Sau 9 năm công nghệ lặp đi lặp lại, nền tảng giao dịch định lượng đã được tái cấu trúc nhiều lần, mặc dù chúng tôi có thể không nhận thấy như người dùng. Trong hai năm qua, nền tảng đã được tối ưu hóa và nâng cấp nhiều về trải nghiệm người dùng, bao gồm nâng cấp toàn diện giao diện người dùng, phong phú hơn các công cụ giao dịch định lượng thường sử dụng, và thêm nhiều hỗ trợ dữ liệu quay lại.

Để thiết kế chính sách dễ dàng hơn, logic giao dịch rõ ràng hơn và dễ sử dụng hơn cho người mới bắt đầu, nền tảng đã nâng cấp giao diện API mà chính sách sử dụng. Sử dụng phiên bản mới nhất của người quản lý có thể bật các tính năng mới.

Vì vậy, qua bài viết này, hãy cùng chúng tôi xem qua những cập nhật nâng cấp giao diện và những thay đổi cần thiết để phù hợp với API hiện tại khi sử dụng các chính sách cũ.

Một, thêm API

exchange.GetTickers函数

Đối với việc thiết kế các chiến lược đa dạng, các chiến lược giám sát thị trường toàn thị trường. Giao diện thị trường tổng hợp này là rất cần thiết để giúp các chiến lược dễ dàng phát triển hơn và tránh lặp lại bánh xe. Các nhà phát minh của nền tảng giao dịch định lượng đã đóng gói các API như sàn giao dịch.

Nếu một sàn giao dịch không có giao diện này (một sàn giao dịch riêng lẻ), hãy gọiexchange.GetTickers()Khi báo cáo sai: Không hỗ trợ.

Chức năng này không có bất kỳ tham số nào và sẽ trả về dữ liệu thị trường thực tế của tất cả các loại trong giao diện thị trường của sàn giao dịch.

exchange.GetTickers()Chức năng này làexchange.GetTicker()Các phiên bản yêu cầu đầy đủ của các hàm (xem kỹ, sự khác biệt giữa hai tên hàm chỉ là số đơn).

Chúng tôi đã thử nghiệm môi trường bằng OKX Live Simulator:

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函数

Tăngexchange.CreateOrder()Các chức năng được xem là trọng tâm của việc nâng cấp này.exchange.CreateOrder()Tính năng lớn nhất của hàm là chỉ định trực tiếp trong các tham số của hàm loại, hướng của đơn đặt hàng. Điều này không còn phụ thuộc vào các thiết lập giao dịch hiện tại của hệ thống.

Trong các trường hợp giao dịch đa dạng, sự phức tạp của thiết kế được giảm đáng kể trong các trường hợp đồng thời.exchange.CreateOrder()Và chúng ta có 4 tham số là:symbolsidepriceamount

Kiểm tra môi trường sử dụng 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

Và chúng ta chỉ sử dụng 3 lần.exchange.CreateOrder()Các lệnh tương lai được gọi theo ba loại khác nhau, theo các hướng khác nhau.

exchange.GetHistoryOrders函数

Tăngexchange.GetHistoryOrders()Chức năng này được sử dụng để truy cập vào lịch sử giao dịch của một số loại, cũng cần hỗ trợ giao diện giao dịch.

Các giao diện được thực hiện bởi các sàn giao dịch khác nhau rất khác nhau để truy vấn lịch sử đơn đặt hàng:

  • Một số hỗ trợ truy vấn chia trang, một số không.
  • Một số giao dịch không truy vấn tất cả các thời gian cửa sổ tìm kiếm, tức là các đơn đặt hàng vượt quá N ngày;
  • Hầu hết các sàn giao dịch đều hỗ trợ tìm kiếm thời gian nhất định, một số không.

Đối với các giao diện như vậy để đóng gói với mức độ tương thích tối đa, trong thực tế sử dụng cần phải xem xét liệu nó có phù hợp với nhu cầu, kỳ vọng của chính sách hay không.

Các thông tin chi tiết về các chức năng không được mô tả ở đây, bạn có thể xem hướng dẫn ngữ pháp trong tài liệu API:

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

Các thử nghiệm sử dụng môi trường thực tế tiền mặt của Bitcoin:

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函数

Phiên bản cũ của hàm lấy dữ liệu lưu trữ làexchange.GetPosition()◎ Việc nâng cấp này đã thêm vào một chức năng lấy kho mới để phù hợp hơn với ngữ nghĩa đặt tên của hàm:exchange.GetPositions()│ đồng thời vẫn tương thích / nâng cấp chức năng GetPosition │

Lưu ý rằng hai tên hàm chỉ khác nhau với một cuối s, vì GetPositions phù hợp hơn với ngữ nghĩa, nên đề nghị sử dụng GetPositions.

exchange.GetPositions()Các hàm có ba dạng gọi:

  • exchange.GetPositions Khi không truyền bất kỳ tham số nào,Giao dịch / Mã hợp đồngCài đặt, yêu cầu tất cả các loại dữ liệu lưu trữ ở kích thước hiện tại.

  • exchange.GetPositions ((ETH_USDT.swap) Khi chỉ định thông tin về giống cụ thể (bản định dạng như ETH_USDT.swap được định nghĩa bởi nền tảng FMZ), dữ liệu lưu trữ của giống cụ thể được yêu cầu. Ví dụ:BTC_USD.swapETH_USDT.swapETH_USDT.quarterVà rồi. BTC_USD.swap: Hợp đồng bất kỳ giá trị nào của BTC. ETH_USDT.swap: Hợp đồng vĩnh cửu U-bit của ETH. ETH_USDC.swap: Hợp đồng vĩnh viễn USDC của ETH. (Ngoài USDT, bạn có thể chỉ định các loại tiền tệ khác, không nêu thêm) ETH_USDT.quarter: tỷ lệ giao dịch U của ETH trong quý khoảng. BTC_USD. BTC-USD-201226-24250-C: Hợp đồng quyền chọn tiền tệ tại chỗ của BTC.

  • exchange.GetPositions (USDT.swap) Theo phạm vi kích thước được chỉ định, yêu cầu dữ liệu lưu trữ cho tất cả các giống. USDT.swap: U là phạm vi hợp đồng vĩnh viễn. USDT.futures: U tỷ lệ giao dịch chính khoảng. USDC.swap: USDC tại chỗ phạm vi hợp đồng vĩnh viễn. (Ngoài USDT, bạn có thể chỉ định các loại tiền tệ khác, không thêm lời nói) USDC.futures: Khoảng tỷ lệ giao dịch USDC tại chỗ. USD.swap: phạm vi hợp đồng vĩnh cửu bằng tiền tệ. USD.futures: tỷ lệ hối đoái tiền tệ. USDT.option:U là một hợp đồng quyền chọn tại chỗ. USD.option: phạm vi hợp đồng quyền chọn tiền tệ.

    Một số sàn giao dịch đặc biệt phân chia các khía cạnh hợp đồng: USDT.futures_combo:Futures_Deribit là một sàn giao dịch tiền tệ. USD.futures_ff:Tỷ lệ giao dịch chứng khoán hỗn hợp của sàn giao dịch Futures_Kraken USD.swap_pf:Futures_Kraken là một sàn giao dịch chứng khoán hỗn hợp.

    Đối với các kích thước không được hỗ trợ bởi giao diện API giao dịch, các cuộc gọi sẽ trả lại một giá trị trống.

Kiểm tra môi trường sử dụng 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

Khi truyền vàoexchange.GetPositions()Các tham số của hàm làETH_USDT.swapTrong khi đó, bạn có thể truy cập dữ liệu lưu trữ của các hợp đồng vĩnh cửu U-bit của ETH.

Khi không truyềnexchange.GetPositions()Các tham số của hàm có thể lấy dữ liệu nắm giữ của tất cả các hợp đồng vĩnh cửu U-bit được đưa ra trực tuyến trên sàn giao dịch (vì cặp giao dịch hiện tại là BTC_USDT, hợp đồng là swap, theo cặp giao dịch hiện tại, yêu cầu phạm vi hợp đồng), tại thời điểm này tương đương với cuộc gọiexchange.GetPositions("USDT.swap"), chỉ định một phạm vi yêu cầu.

exchange.GetFundings函数

Chức năng GetFundings được bổ sung để lấy tỷ lệ vốn của các hợp đồng vĩnh viễn trên sàn giao dịch tương lai. Chức năng có một ký hiệu tham số. Chức năng trả về một mảng cấu trúc Funding.

  • Đặt tham số biểu tượng: Trả về các số liệu cấu trúc thông tin về tỷ lệ tài chính cho các loại được chỉ định (Array Funding), tham số biểu tượng có thể được đặt trong một phạm vi, tương tự như các hàm GetOrders / GetPositions.
  • Không chỉ định các tham số biểu tượng: Trả về tất cả các kiểu dữ liệu theo kích thước của cặp giao dịch hiện tại, theo kích thước của mã hợp đồng, cơ chế như hàm GetOrders/GetPositions.
  • Nếu một sàn giao dịch phải chỉ định một giống cụ thể, các tham số biểu tượng, tức là mã của giống cụ thể, phải được truyền, ví dụ:BTC_USDT.swap│ Không truyền tham số hoặc hàm phạm vi truyền sẽ trả lại lỗi symbol tham số không được hỗ trợ.

2 Ứng dụng API nâng cấp

exchange.GetTicker函数

Chức năng hành độngexchange.GetTicker()Việc nâng cấp này chủ yếu là để tăng các tham số symbol. Điều này cho phép chức năng này tách khỏi các cặp giao dịch hiện tại, thông tin giống hợp đồng trực tiếp theo các tham số được chỉ định, yêu cầu dữ liệu thị trường. Dễ dàng viết mã.

Các tham sốsymbolĐối với các đối tượng giao dịchexchangeCó nhiều hình thức khác nhau:

  • Đối tượng giao dịch trực tiếp Định dạng là:AAA_BBB, AAA cho biết là baseCurrency là đồng tiền giao dịch, BBB cho biết là quoteCurrency là đồng tiền định giá. Tên của đồng tiền đều được viết bằng chữ cái lớn. Ví dụ: cặp giao dịch BTC_USDT.
  • Đối tượng giao dịch tương lai Định dạng là:AAA_BBB.XXX, AAA là đồng tiền giao dịch cơ sở, BBB là đồng tiền báo giá, và XXX là mã hợp đồng, ví dụ như giao dịch hợp đồng vĩnh viễn. Các tên tiền tệ đều được viết bằng chữ cái lớn và mã hợp đồng bằng chữ cái nhỏ. Ví dụ: BTC_USDT.swap, hợp đồng vĩnh cửu U-bit của BTC.

Các thử nghiệm trong môi trường thực sử dụng sàn giao dịch tương lai đồng xu:

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

Đơn giản hơn nữa, các thiết kế dữ liệu thị trường với một loạt các giống được chỉ định sẽ được đơn giản hóa.

exchange.GetDepth函数

Tương tự như hàm GetTickerexchange.GetDepth()Chức năng này cũng đã thêm các tham số symbol.

Các thử nghiệm trong môi trường thực sử dụng sàn giao dịch tương lai đồng xu:

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函数

Tương tự như hàm GetTickerexchange.GetTrades()Chức năng này cũng thêm tham số symbol. Có thể thực hiện chỉ định giống trực tiếp khi yêu cầu dữ liệu giao dịch thị trường.

Các thử nghiệm trong môi trường thực sử dụng sàn giao dịch tương lai đồng xu:

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

Tăng cấp này cũng phù hợp với thông quaexchange.Go()Chức năng đồng thời gọi nền tảng API để truyền thông tin về giống được chỉ định bởi tham số symbol.

exchange.GetRecords函数

Các chức năng GetRecords đã thực hiện một sự thay đổi lớn trong lần này, ngoài việc hỗ trợ thông tin về các loại dữ liệu đường K được yêu cầu trực tiếp bởi các tham số biểu tượng. Các tham số period ban đầu được sử dụng để chỉ định chu kỳ đường K được giữ lại, và một tham số limit được thêm vào để chỉ định chiều dài đường K mong muốn trong thời gian yêu cầu. Đồng thời, tương thích với các phiên bản cũ của GetRecords.

exchange.GetRecords()Cách gọi hàm:

  • exchange.GetRecords Khi không chỉ định bất kỳ tham số nào khi yêu cầu dữ liệu K-line của các giống đối tượng giao dịch / hợp đồng tương ứng với hiện tại, chu kỳ K-line là chu kỳ K-line mặc định được đặt tại giao diện truy cập lại chiến lược hoặc thực tế.
  • exchange.GetRecords ((60 * 15) Khi chỉ chỉ định các tham số chu kỳ K-line, yêu cầu dữ liệu K-line của cặp giao dịch / mã hợp đồng tương ứng hiện tại.
  • exchange.GetRecords (( BTC_USDT.swap)) Khi chỉ chỉ định thông tin giống, yêu cầu dữ liệu K-line của giống, chu kỳ K-line là chu kỳ K-line mặc định được đặt tại giao diện truy cập lại chiến lược hoặc đĩa thực.
  • exchange.GetRecords ((BTC_USDT.swap, 60 * 60)) Xác định thông tin giống, xác định chu kỳ đường K cụ thể yêu cầu dữ liệu đường K.
  • exchange.GetRecords ((BTC_USDT.swap, 60, 1000) Xác định thông tin giống, chỉ định chu kỳ đường K cụ thể, chỉ định chiều dài đường K được mong muốn thu thập thường xuyên. Lưu ý rằng khi tham số limit vượt quá chiều dài tối đa của một lần yêu cầu của sàn giao dịch, sẽ có yêu cầu chia trang (tức là nhiều lần gọi giao diện K-line của sàn giao dịch).

Các thử nghiệm trong môi trường thực sử dụng sàn giao dịch tương lai đồng xu:

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函数

Các chức năng GetOrders cũng được thêm vàosymbolCác tham số, có thể chỉ định một giống cụ thể, truy vấn các đơn đặt hàng chưa hoàn thành của giống đó; cũng hỗ trợ truy vấn các đơn đặt hàng chưa hoàn thành của tất cả các giống trong phạm vi kích thước được chỉ định.

exchange.GetOrders()Các cách gọi hàm là:

  • exchange.GetOrders Đối với các sàn giao dịch tương lai: khi không truyền bất kỳ thông số nào, theo giá hiện tạiGiao dịch / Mã hợp đồngThiết lập, yêu cầu tất cả các đơn đặt hàng chưa hoàn thành trong toàn bộ phạm vi kích thước hiện tại.
    Đối với sàn giao dịch mặt hàng: Khi không gửi bất kỳ thông số nào, yêu cầu tất cả các loại hàng mặt hàng chưa hoàn thành (đặt hàng chờ) ‖.
  • exchange.GetOrders ((BTC_USDT.swap) hoặc exchange.GetOrders ((BTC_USDT)) Đối với sàn giao dịch tương lai: exchange.GetOrders (BTC_USDT.swap), hãy truy vấn tất cả các đơn đặt hàng chưa hoàn tất ( đang chờ) cho các hợp đồng USDT tại BTC. Đối với sàn giao dịch hiện tại: exchange.GetOrders ( BTC_USDT), hãy truy vấn tất cả các đơn đặt hàng chưa hoàn thành ( USDT) cho cặp giao dịch hiện tại BTC_USDT.
  • Chỉ hỗ trợ cho sàn giao dịch tương lai exchange.GetOrders (USDT.swap) chỉ định phạm vi kích thước yêu cầu tất cả các loại đơn đặt hàng chưa hoàn thành ( hang list) Phạm vi phân vùng chiều phù hợp với phạm vi trong hàm GetPositions. Ví dụ: exchange.GetOrders (USDT.swap) yêu cầu các đơn đặt hàng chưa hoàn tất của tất cả các loại trong phạm vi hợp đồng vĩnh viễn của U.

Kiểm tra môi trường sử dụng 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) +  "`")
}
  • Khi không truyền tham số, yêu cầu tất cả các loại lệnh chưa hoàn thành trong phạm vi kích thước của cặp giao dịch hiện tại (BTC_USDT), mã hợp đồng (swap) (đặt hàng) (đặt hàng).
  • Đặt tham sốETH_USDT.swapKhi tham số, yêu cầu ETH tại USDT của các hợp đồng vĩnh cửu chưa hoàn thành (đặt hàng).
  • Đưa vào chuỗi"USDT.swap"Khi yêu cầu tất cả các đơn đặt hàng chưa hoàn thành của USDT trong hợp đồng vĩnh cửu, bạn có thể tham gia vào các cuộc gọi trực tuyến của USDT.

exchange.GetPosition函数

Vẫn tương thích với tên gọi hàm lấy lưu trữ cũ, cũng thêm tham số symbol để có thể chỉ định thông tin về các loại dữ liệu lưu trữ được yêu cầu cụ thể.exchange.GetPositions()Có một số người nói rằng:

exchange.IO函数

Đối vớiexchange.IO("api", ...)Phương thức gọi hàm, nâng cấp cho tất cả các đối tượng giao dịch hỗ trợ chuyển trực tiếp đầy đủ các chức năng địa chỉ yêu cầu.

Ví dụ, bạn muốn gọi OKX:

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

Hỗ trợ ghi địa chỉ cơ sở trực tiếphttps://www.okx.com, không cần phải chuyển địa chỉ cơ sở trước khi gọi hàm IO.

Kiểm tra môi trường sử dụng 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

3. Ảnh hưởng của giao diện API

exchange.GetOrder函数

Sự nâng cấp này ảnh hưởng chủ yếu đếnexchange.GetOrder(id)Các tham số của hàmid, id thay đổi từ lệnh id của sàn giao dịch ban đầu thành một định dạng chuỗi chứa các loại giao dịch. Tất cả các lệnh được đóng gói trên nền tảng FMZ đều có định dạng này.

Ví dụ:

  • Định nghĩa của lệnh giao dịch trong lệnh giao dịch là:123456Trước khi nâng cấp này, nếu bạn muốn gọi hàm GetOrder, thì ID lệnh được truyền là123456
  • Mã sản phẩm được đặt tên bởi sàn giao dịch được xác định trong lệnh giao dịch:BTC-USDT‖ Lưu ý rằng đây là mã loại giao dịch được đặt tên bởi sàn giao dịch, chứ không phải là cặp giao dịch được xác định bởi nền tảng FMZ.

Sau khi nâng cấp,exchange.GetOrder(id)Các hàm cần phải nhập thông số id được định dạng như sau:BTC-USDT,123456

  • Trước tiên, hãy giải thích tại sao chúng tôi thiết kế như vậy: Vì chức năng CreateOrder được nâng cấp để chỉ ra đơn hàng giống trực tiếp (các loại đơn hàng và các cặp giao dịch hiện tại có thể khác nhau, mã hợp đồng), nếu ID đơn hàng được trả về không chứa thông tin giống thì ID đơn hàng sẽ không được sử dụng. Vì không biết loại hàng đó là gì khi giao dịch cụ thể. Hầu hết các đơn hàng giao dịch, các đơn hàng rút tiền đều cần chỉ định các tham số mô tả mã giống.

  • Làm thế nào để kết hợp những ảnh hưởng này: Nếu lệnh đặt hàng được sử dụng bởi hàm exchange.IO trực tiếp gọi giao diện đặt hàng của sàn giao dịch để đặt hàng, giá trị trả về thường có biểu tượng gốc của sàn giao dịch (mã giống) và id lệnh gốc. Tương tự như vậy, nếu sử dụng giao diện đặt hàng được đóng gói trên nền tảng FMZ, chỉ cần xóa mã giống và dấu chấm khi cần sử dụng ID gốc của đơn đặt hàng, vì phần đầu của OrderId là mã giống giao dịch.

exchange.CancelOrder函数

Việc nâng cấp nàyexchange.CancelOrder()Tác động của hàmexchange.GetOrder()Chức năng tương tự.

exchange.Buy函数

Việc nâng cấp nàyexchange.Buy()Tác động của hàmexchange.GetOrder()Chức năng tương tự.exchange.Buy()Các chức năng trả về lệnh Id cho cấu trúc mới, ví dụ như ID trả về khi đặt hàng tương lai trên sàn giao dịch OKX:LTC-USDT-SWAP,1578360858053058560

exchange.Sell函数

Việc nâng cấp nàyexchange.Sell()Tác động của hàmexchange.GetOrder()Chức năng tương tự.exchange.Sell()Các chức năng trả về lệnh Id cho cấu trúc mới, ví dụ như ID trả về khi đặt hàng tương lai trên sàn giao dịch OKX:ETH-USDT-SWAP,1578360832820125696

exchange.GetPosition函数

Chỉ các đối tượng giao dịch tương lai hỗ trợ chức năng này, với tên gọi exchange.GetPosition (), và thêm exchange.GetPositions (), cả hai hoạt động hoàn toàn phù hợp.

Định nghĩa cũ: exchange.GetPosition () hàm, không chỉ định bất kỳ tham số nào khi gọi, lấy dữ liệu nắm giữ của cặp giao dịch hiện tại, các hợp đồng cụ thể được đặt theo mã hợp đồng.

Điều chỉnh, sau khi thay đổi, định nghĩa mới: exchange.GetPosition () chức năng, không chỉ định bất kỳ tham số nào khi gọi, lấy giữ tất cả các giống các cặp giao dịch được thiết lập hiện tại, trong phạm vi kích thước được xác định bởi mã hợp đồng.

Ví dụ, cặp giao dịch hiện tại là BTC_USDT, mã hợp đồng là swap.

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

Chức năng này sẽ yêu cầu dữ liệu lưu trữ hợp đồng vĩnh cửu U của tất cả các loại tiền tệ.

exchange.GetOrders函数

Một, đối với các sàn giao dịch trực tiếp:

Định nghĩa cũ: exchange.GetOrders (), không chỉ định bất kỳ tham số nào khi gọi, lấy tất cả các lệnh chưa hoàn thành trong cặp giao dịch hiện tại.

Điều chỉnh, sau khi thay đổi, định nghĩa mới: exchange.GetOrders () hàm, không chỉ định bất kỳ tham số nào khi gọi, lấy là tất cả các giao dịch hiện tại cho các loại lệnh chưa hoàn thành.

2. Đối với sàn giao dịch tương lai:

Định nghĩa cũ: exchange.GetOrders () hàm, không chỉ định bất kỳ tham số nào khi được gọi, lấy tất cả các đơn đặt hàng chưa hoàn thành của các hợp đồng cụ thể được đặt theo mã hợp đồng.

Điều chỉnh, sau khi thay đổi, định nghĩa mới: exchange.GetOrders () chức năng, không chỉ định bất kỳ tham số nào khi gọi, lấy tất cả các đơn đặt hàng chưa hoàn thành trong phạm vi kích thước được xác định bởi mã hợp đồng.

Ví dụ, cặp giao dịch hiện tại là BTC_USD, mã hợp đồng là quarter.

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

Chức năng này sẽ yêu cầu dữ liệu đơn đặt hàng chưa hoàn thành về tỷ lệ giao dịch tiền tệ của tất cả các loại tiền tệ.

4, điều chỉnh cấu trúc

Các cấu trúc ticker

Bản cập nhật này cho cấu trúc Ticker đã thêm một trường Symbol để ghi lại thông tin về loại cấu trúc Ticker hiện tại.exchange.GetTicker()Các biểu tượng của các hàm được định dạng một cách hoàn toàn phù hợp.

Order cấu trúc

Bản cập nhật này cho cấu trúc Order đã thêm một trường Symbol, định dạng trường tương tự như các cấu trúc khác.exchange.GetTicker()Các biểu tượng của hàm được định dạng hoàn toàn giống nhau. Bản cập nhật này cũng sửa đổi các trường Id của cấu trúc Order để ghi lại thông tin giống, thông tin đặt hàng ban đầu theo định dạng mới.exchange.GetOrder()Định nghĩa của lệnh Id trong hàm, không được mô tả thêm ở đây.

Cấu trúc vị trí

Bản cập nhật này cho cấu trúc Position đã thêm một trường Symbol, được định dạng theo định dạng tương tự như các cấu trúc khác.exchange.GetTicker()Các biểu tượng của các hàm được định dạng một cách hoàn toàn phù hợp.

Cơ cấu tài trợ

Chức năng GetFundings trả về một mảng cấu trúc Funding.

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

5. Hệ thống kiểm tra lại

Để đáp ứng nhu cầu của người dùng, nâng cấp này sẽ hỗ trợ khả năng tương thích với ổ đĩa thực và hệ thống tra cứu sẽ hoàn thành việc điều chỉnh trong vòng một tuần. Nếu mã chính sách cá nhân bị ảnh hưởng, xin vui lòng thay đổi điều chỉnh theo hướng dẫn của bài viết này.

Theo chính sách nâng cấp giao diện API của nền tảng này, các giao diện API trong hệ thống trả lời của nền tảng đã được cập nhật đồng bộ; Ngoài ra, hệ thống trả lời hỗ trợ thêm:

  • Hỗ trợ nhiều sàn giao dịch kiểm tra lại dữ liệu hơn.
  • Hỗ trợ tất cả các loại dữ liệu kiểm tra lại trên sàn giao dịch.
  • U-bit, giao dịch tiền tệ, giao dịch hỗn hợp hợp đồng bền vững.
  • Các đối tượng giao dịch giao dịch chuyển đổi được hỗ trợ trong thời gian kiểm tra lại.
  • Hệ thống kiểm tra thêm hỗ trợ cho các chức năng mới như chức năng GetTickers, chức năng GetMarkets.

Hoạt động bổ sung

1, Account cấu trúc thêm trường Equity, UPnL

Chức năng thành viên đối với đối tượng giao dịch tương laiGetAccountTrở lạiAccountCấu trúc đã được mở rộng.

  • Thẩm quyền Tổng lợi nhuận hiện tại của các loại tiền tệ tài sản bảo đảm, ngoại trừ các sàn giao dịch tương lai đặc biệt không hỗ trợ, hầu hết đều hỗ trợ lĩnh vực này.
  • UPnL Tất cả các vị trí nắm giữ hiện tại của các loại tiền tệ tài sản bảo đảm đều không đạt được lợi nhuận, ngoại trừ các sàn giao dịch tương lai rất riêng biệt không hỗ trợ, hầu hết đều hỗ trợ lĩnh vực này.

2, SetMarginLevel hàm nâng cấp biểu tượng hỗ trợ

Các 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ụ thử nghiệm:

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, hàm GetMarkets trả về cấu trúc thị trường thêm CtValCcy

  • Các trườngCtValCcyCác đơn vị giá trị của một hợp đồng được ghi lại, đơn vị giá trị của một hợp đồng có thể là: BTC, USD, ETH, vv.
  • Các trườngCtValGhi lại giá trị tương ứng của một hợp đồng trên sàn giao dịch với loại giao dịch đó, bằng đơn vịCtValCcyVí dụ:CtValCác bạn có thể tham khảo bài viết này.CtValCcy"BTC" là một hợp đồng có giá trị 0.01 BTC.

Thêm nữa

Wa-emmnn_Tôi nói chuyện với robot mới của tôi, ID trả về cũng có tên giao dịch, nghiên cứu lâu, và thông tin nhật ký sau khi đặt hàng không hiển thị bây giờ, cũng là vì bản cập nhật của người quản lý?

Thanh Trẻ/upload/asset/2ffc0f961149326b78aed.png Có phải vấn đề này là do bản cập nhật giao diện này không?

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

NanSegPhía trước

Wa-emmnn_Được rồi.

Những nhà phát minh định lượng - những giấc mơ nhỏĐược rồi, hãy thử qua bên này nhé. Cám ơn bạn đã hỏi.

Wa-emmnn_Đúng vậy, extMsg1, extMsg2 không hiển thị.

Những nhà phát minh định lượng - những giấc mơ nhỏXin chào, Order ID là một thay đổi bắt buộc, vì nâng cấp trực tiếp chỉ định giống để đặt hàng, Order ID phải bao gồm thông tin giống, nếu không không có thể xác định được lệnh này là giống nào, không thể gọi khi rút ("vì hầu hết các sàn giao dịch cần chỉ định giống và chỉ định ID khi rút"). Bạn nói rằng thông tin sau lệnh không hiển thị, nghĩa là: exchange.Buy ((price, amount, extMsg1, extMsg2) khi gọi, extMsg1, extMsg2 không hiển thị trong nhật ký?

Những nhà phát minh định lượng - những giấc mơ nhỏXin chào, bạn gửi cài đặt giao dịch hiện tại, cặp giao dịch, cài đặt mã hợp đồng.

Nhà phát minh định lượngXin gửi chi tiết mã thử nghiệm và cấu hình vào đơn, kỹ sư sẽ trả lời bạn ngay lập tức.

Những nhà phát minh định lượng - những giấc mơ nhỏCác sàn giao dịch có một số sự khác biệt lớn và mức độ hỗ trợ khác nhau, điều này sẽ được nghiên cứu xem có khả thi hay không.

Những nhà phát minh định lượng - những giấc mơ nhỏNếu bạn có vấn đề, hãy gửi đơn xin việc hoặc để ý.