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-07-24 12:00:40

[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.

Hướng dẫn ngữ pháp:https://www.fmz.com/syntax-guideHướng dẫn sử dụng:https://www.fmz.com/user-guide

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 giữ 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 │

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

  • exchange.GetPositions (tạm dịch: Khi không truyền bất kỳ tham số nào, yêu cầu giữ dữ liệu theo cài đặt mã cặp giao dịch / hợp đồng 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.
  • exchange.GetPositions (tạm dịch: Yêu cầu tất cả dữ liệu lưu trữ về kích thước hiện tại có thể truy cập giao diện giao dịch.

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("")

    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.

img

Khi truyền vàoexchange.GetPositions()Các tham số của hàm là một chuỗi trống.""Khi đó, bạn có thể truy cập dữ liệu lưu trữ của tất cả các hợp đồng của U.

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 trực tiếp truy vấn các loại đang chưa hoàn thành đặt hàng (đặt hàng); cũng hỗ trợ truy vấn tất cả các loại đặt hàng (không phân loại); tương thích với cách gọi ban đầu.

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

  • exchange.GetOrders Tìm tất cả các đơn đặt hàng chưa hoàn thành với mã giao dịch/hợp đồng hiện tại.
  • exchange.GetOrders (đánh giá BTC_USDT.swap) Tìm kiếm tất cả các đơn đặt hàng chưa hoàn thành tại USDT tại BTC.
  • exchange.GetOrders Tìm kiếm tất cả các đơn đặt hàng chưa hoàn thành trong phân vùng kích thước hiện tại của sàn giao dịch (được phân vùng theo kích thước giao diện API của sàn giao dịch).

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", ""]) {
        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) +  "`")
}

img

Khi không truyền tham số, mặc định yêu cầu cặp giao dịch BTC_USDT hiện tại, tất cả các danh sách chờ chưa hoàn thành của hợp đồng chuyển đổi vĩnh viễn.

img

Đặt tham sốETH_USDT.swapKhi tham số, yêu cầu tất cả các hợp đồng vĩnh viễn chưa hoàn thành trong cặp giao dịch ETH_USDT.

img

Nhập vào các chuỗi trống""Khi yêu cầu tất cả các hợp đồng tại USDT, tất cả các danh sách chưa hoàn thành.

升级exchange.GetPosition函数

Vẫn tương thích với các chức năng lấy tên lưu trữ cũ, cũng đã thêm các tham số symbol để chỉ định thông tin giống của dữ liệu lưu trữ được yêu cầu cụ thể. Các khía cạnh sử dụng hàm và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ừ phiên bản ban đầu của giao dịch lệnh id thành một định dạng chuỗi chứa các loại giao dịch. Tất cả các đơn đặt hàng được đóng gói trên nền tảng FMZ đều được định dạng theo đị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

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, một trường ghi lại thông tin về thị trường của cấu trúc Ticker hiện tại. Dạng này được định dạng theoexchange.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 các hàm được định dạng một cách hoàn toàn phù hợp. Bản cập nhật này cũng thay đổi trường Id của cấu trúc Order để ghi lại thông tin về giống, thông tin đặt hàng ban đầu với định dạng mới của Order Id.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.

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.

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)
}

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 để ý.