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

Giải thích chi tiết về FMZ Quant API nâng cấp: Cải thiện kinh nghiệm thiết kế chiến lược

Tác giả:FMZ~Lydia, Tạo: 2024-07-05 09:44:08, Cập nhật: 2024-07-25 15:15:03

[TOC]

img

Giải thích chi tiết về FMZ Quant API nâng cấp: Cải thiện kinh nghiệm thiết kế chiến lược

Lời giới thiệu

Sau 9 năm lặp lại kỹ thuật, nền tảng giao dịch lượng tử FMZ đã được xây dựng lại nhiều lần, mặc dù với tư cách là người dùng chúng tôi có thể đã không nhận thấy nó. Trong hai năm qua, nền tảng đã thực hiện rất nhiều tối ưu hóa và nâng cấp về 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ú các công cụ giao dịch định lượng thường được sử dụng và thêm hỗ trợ dữ liệu kiểm tra lại.

Để thiết kế chiến lược thuận tiện hơn, logic giao dịch rõ ràng hơn và dễ dàng hơn cho người mới bắt đầu, nền tảng đã nâng cấp giao diện API được sử dụng bởi chiến lược. Dockers sử dụng phiên bản mới nhất có thể kích hoạt các tính năng mới này. Nền tảng vẫn tương thích với các cuộc gọi giao diện cũ ở mức độ lớn nhất. Thông tin về các tính năng mới của giao diện API đã được cập nhật vào tài liệu API của nền tảng giao dịch FMZ Quant:

Hướng dẫn cú pháp:https://www.fmz.com/syntax-guideHướng dẫn người dùng:https://www.fmz.com/user-guide

Vì vậy, chúng ta hãy nhanh chóng xem xét các giao diện nào đã được nâng cấp và những thay đổi cần thiết để sử dụng các chiến lược cũ để làm cho chúng tương thích với API hiện tại.

1. giao diện API mới

Thêm trao đổi.GetTickers chức năng

Để thiết kế các chiến lược đa sản phẩm và các chiến lược giám sát thị trường đầy đủ, giao diện thị trường tổng hợp là điều cần thiết. Để làm cho chiến lược dễ dàng hơn để phát triển và tránh tái phát minh các sự kiện, nền tảng giao dịch FMZ Quant kết hợp loại API trao đổi này.

Nếu sàn giao dịch không có giao diện này (các sàn giao dịch cá nhân), khi gọiexchange.GetTickers(), một thông báo lỗi được hiển thị: Không được hỗ trợ.

Chức năng này không có bất kỳ thông số và nó sẽ trả về dữ liệu thị trường 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.

exchange.GetTickers()là phiên bản yêu cầu đầy đủ tính năng củaexchange.GetTicker()chức năng (xem cẩn thận, sự khác biệt giữa hai tên chức năng này chỉ là đơn 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
}

img

Thêm chức năng Exchange.CreateOrder

Những người mới được thêm vàoexchange.CreateOrder()chức năng là trọng tâm của nâng cấp này.exchange.CreateOrder()là để chỉ định loại và hướng của lệnh trong các tham số chức năng trực tiếp. theo cách này, nó không còn phụ thuộc vào cặp giao dịch hiện tại, mã hợp đồng, hướng giao dịch và các cài đặt khác của hệ thống.

Trong các kịch bản đặt lệnh giao dịch đa loài và các kịch bản đồng thời, sự phức tạp của thiết kế được giảm đáng kể.exchange.CreateOrder()chức năng làsymbol, side, price, amount.

Kiểm tra sử dụ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)
}

img

Bằng cách này, chỉ có baexchange.CreateOrder()Các cuộc gọi hàm được sử dụng để đặt ba lệnh tương lai của các loại và hướng khác nhau.

Thêm chức năng Exchange.GetHistoryOrders

Những người mới được thêm vàoexchange.GetHistoryOrders()chức năng được sử dụng để có được các lệnh giao dịch lịch sử của một số nhất định. chức năng cũng đòi hỏi sự hỗ trợ của giao diện trao đổi.

Để truy vấn các đơn đặt hàng lịch sử, 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:

  • Một số hỗ trợ các truy vấn trang, trong khi những người khác không;
  • Một số sàn giao dịch có thời gian cửa sổ truy vấn, nghĩa là các đơn đặt hàng cũ hơn N ngày không thể được truy vấn;
  • Hầu hết các sàn giao dịch hỗ trợ truy vấn tại thời điểm cụ thể, nhưng một số không; 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 việc sử dụng thực tế, nên chú ý đến việc chúng có đáp ứng 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 lặp 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

Kiểm tra bằng môi trường giao dịch Binance:

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

    // Write to chart
    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

Thêm trao đổi.GetPositions chức năng

Phiên bản cũ của chức năng thu thập dữ liệu vị trí làexchange.GetPosition(). Bản nâng cấp này thêm một chức năng mua lại vị trí mới để phù hợp hơn với ngữ nghĩa đặt tên chức năng:exchange.GetPositions()Đồng thời, nó vẫn tương thích / nâng cấp với chức năng GetPosition.

Cácexchange.GetPositions()hàm có ba hình thức gọi:

  • trao đổi.GetPositions ((() Khi không có tham số nào được truyền, dữ liệu vị trí được yêu cầu dựa trên các cài đặt mã cặp giao dịch / hợp đồng hiện tại.
  • exchange.GetPositions ((ETH_USDT.swap) Khi xác định thông tin cụ thể về sản phẩm (công thức của ETH_USDT.swap được xác định bởi nền tảng FMZ), yêu cầu dữ liệu vị trí của sản phẩm cụ thể.
  • trao đổi.GetPositions("") Yêu cầu giao diện vị trí trao đổi để có được tất cả các kích thước hiện tại của dữ liệu vị trí. Kiểm tra sử dụ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("")

    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 tham số được chuyển sangexchange.GetPositions()chức năng làETH_USDT.swap, dữ liệu vị trí của hợp đồng vĩnh viễn dựa trên U của ETH có thể được thu thập.

img

Khi tham số được chuyển sangexchange.GetPositions()chức năng là một chuỗi trống , dữ liệu vị trí của tất cả các hợp đồng dựa trên U có thể được lấy.

2. API Interface nâng cấp

Cập nhật trao đổi.GetTicker chức năng

Cải tiến chính của chức năng thị trườngexchange.GetTicker()Đ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 tham số mà không cần cặp giao dịch và mã hợp đồng hiện tại. Nó đơ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 pháp gọi mà không cần thông qua các tham số, và tương thích với chiến lược nền tảng cũ ở mức độ lớn nhất.

Các thông sốsymbolcó các định dạng khác nhau cho giao dịch tức thời/tương lai đối với đối tượng trao đổiexchange:

  • Đối tượng trao đổi tại chỗ Định dạng là:AAA_BBB, AAA đại diện cho baseCurrency, tức là tiền tệ giao dịch, và BBB đại diện cho quoteCurrency, tức là tiền tệ định giá. Ví dụ: cặp giao dịch giao ngay BTC_USDT.
  • Đối tượng trao đổi hợp đồng tương lai Định dạng là:AAA_BBB.XXX, AAA đại diện cho baseCurrency, tức là tiền tệ giao dịch, BBB đại diện cho quoteCurrency, tức là tiền tệ định giá, và XXX đại diện cho mã hợp đồng, chẳng hạn như trao đổi hợp đồng vĩnh cửu. Ví dụ: BTC_USDT.swap, hợp đồng vĩnh viễn dựa trên U của BTC. Kiểm tra bằng môi trường 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
}

img

Yêu cầu một lô dữ liệu thị trường cho một biểu tượng cụ thể đã trở nên đơn giản hơn nhiều.

Cập nhật trao đổi.GetDepth chức năng

Tương tự như chức năng GetTicker,exchange.GetDepth()Điều này cho phép chúng ta chỉ định trực tiếp biểu tượng khi yêu cầu dữ liệu độ sâu.

Kiểm tra bằng môi trường 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"))
}

img

Cập nhật chức năng Exchange.GetTrades

Tương tự như chức năng GetTicker,exchange.GetTrades()Điều này cho phép chúng ta chỉ định biểu tượng trực tiếp khi yêu cầu dữ liệu giao dịch thị trường.

Kiểm tra bằng môi trường 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) +  "`")
}

img

Nâng cấp này cũng tương thích với các tham số biểu tượng được chỉ định bởiexchange.Go()chức năng khi gọi giao diện API nền tảng đồng thời.

Cập nhật trao đổi.GetRecords chức năng

Chức năng GetRecords đã được điều chỉnh rất nhiều lần này. Ngoài việc hỗ trợ tham số ký hiệu để chỉ định trực tiếp thông tin loại dữ liệu đường K được yêu cầu, tham số thời gian ban đầu được giữ lại để chỉ định thời gian đường K, và một tham số giới hạn được thêm để chỉ định chiều dài đường K dự kiến khi yêu cầu. Đồng thời, nó cũng tương thích với phiên bản cũ của chức năng GetRecords chỉ đi qua trong tham số thời gian.

Phương pháp gọi củaexchange.GetRecords()chức năng là:

  • trao đổi.GetRecords() Nếu không có tham số nào được chỉ định, dữ liệu K-line của sản phẩm tương ứng với mã cặp giao dịch / hợp đồng hiện tại được yêu cầu. Thời gian K-line là thời gian K-line mặc định được đặt trong giao diện backtesting chiến lược hoặc trong giao dịch trực tiếp.
  • trao đổi.GetRecords ((60 * 15) Khi chỉ chỉ định tham số thời gian K-line, dữ liệu K-line của sản phẩm tương ứng với mã cặp giao dịch/hợp đồng hiện tại được yêu cầu.
  • exchange.GetRecords ((BTC_USDT.swap) Khi chỉ có thông tin sản phẩm được chỉ định, dữ liệu đường K của sản phẩm được chỉ định được yêu cầu. Thời gian đường K là thời gian đường K mặc định được đặt trong giao diện backtesting chiến lược hoặc trong giao dịch trực tiếp.
  • exchange.GetRecords ((BTC_USDT.swap, 60 * 60) Xác định thông tin sản phẩm và thời gian K-line cụ thể để yêu cầu dữ liệu K-line.
  • exchange.GetRecords ((BTC_USDT.swap, 60, 1000) Xác định thông tin sản phẩm, xác định thời gian K-line cụ thể và xác định chiều dài K-line dự kiến để yêu cầu dữ liệu K-line. Lưu ý rằng khi tham số giới hạn vượt quá chiều dài tối đa của một yêu cầu duy nhất từ sàn giao dịch, một yêu cầu báo hiệu sẽ được tạo ra (tức là nhiều cuộc gọi đến giao diện đường K của sàn giao dịch).

Kiểm tra bằng môi trường 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 time difference between adjacent bars:", r1[1].Time - r1[0].Time, "Milliseconds, Bar length:", r1.length)
    Log("r2 time difference between adjacent bars:", r2[1].Time - r2[0].Time, "Milliseconds, Bar length:", r2.length)
    Log("r3 time difference between adjacent bars:", r3[1].Time - r3[0].Time, "Milliseconds, Bar length:", r3.length)
    Log("r4 time difference between adjacent bars:", r4[1].Time - r4[0].Time, "Milliseconds, Bar length:", r4.length)
    Log("r5 time difference between adjacent bars:", r5[1].Time - r5[0].Time, "Milliseconds, Bar length:", r5.length)
}

img

Cập nhật Exchange.GetOrders chức năng

Chức năng GetOrders cũng thêmsymbolcác tham số, có thể chỉ định loại lệnh chưa hoàn thành hiện tại (đặt hàng đang chờ) được truy vấn trực tiếp; nó cũng hỗ trợ truy vấn tất cả các lệnh đang chờ (bất kể loại); và tương thích với phương pháp gọi ban đầu.

Cácexchange.GetOrders()hàm có thể được gọi theo những cách sau:

  • trao đổi.GetOrders ((() Tìm kiếm tất cả các lệnh chưa hoàn tất cho mã cặp giao dịch/hợp đồng hiện tại.
  • exchange.GetOrders ((BTC_USDT.swap) Tìm kiếm tất cả các đơn đặt hàng chưa hoàn tất cho các hợp đồng vĩnh viễn có ký quỹ USDT trên BTC.
  • trao đổi.GetOrders("") truy vấn tất cả các đơn đặt hàng chưa hoàn thành trong kích thước hiện tại của sàn giao dịch (được chia theo kích thước giao diện API sàn giao dịch).

Kiểm tra sử dụ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")

    // Write to chart
    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 có tham số nào được thông qua, yêu cầu mặc định là cho tất cả các lệnh đang chờ chưa hoàn tất của cặp giao dịch BTC_USDT hiện tại và hợp đồng chuyển đổi vĩnh viễn.

img

KhiETH_USDT.swapNếu tham số được chỉ định, tất cả các lệnh đang chờ của hợp đồng vĩnh viễn của cặp giao dịch ETH_USDT được yêu cầu.

img

Khi một chuỗi trống""được thông qua, tất cả các lệnh chưa hoàn thành của tất cả các hợp đồng ký quỹ USDT được yêu cầu.

Cập nhật trao đổi.GetPosition chức năng

Nó vẫn tương thích với chức năng định vị vị trí cũ và cũng thêm tham số biểu tượng, có thể xác định thông tin loại của dữ liệu vị trí cụ thể được yêu cầu. Việc sử dụng hàm này là chính xác giống nhưexchange.GetPositions().

Cập nhậtexchange.IOchức năng

Đối vớiexchange.IO("api", ...)gọi hàm, tất cả các đối tượng trao đổi đã được nâng cấp để hỗ trợ chuyển trực tiếp các địa chỉ yêu cầu hoàn chỉnh. Ví dụ, nếu bạn muốn gọi giao diện OKX:

// GEThttps://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.commà không cần phải thay đổi địa chỉ cơ sở trước và sau đó gọi chức năng IO.

Kiểm tra sử dụ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")
}

img

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

Ảnh hưởng đến trao đổi.GetOrder chức năng

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

Ví dụ:

  • ID lệnh ban đầu của giao dịch được xác định trong lệnh giao dịch là:123456Trước khi nâng cấp này, nếu bạn muốn gọi chức năng GetOrder, lệnh Id được chuyển vào là123456.
  • Mã sản phẩm được trao đổi xác định trong lệnh trao đổi:BTC-USDT. Lưu ý rằng điều này đề cập đến mã sản phẩm giao dịch được trao đổi, chứ không phải cặp giao dịch được xác định bởi nền tảng FMZ.

Sau khi nâng cấp này, định dạng của ID tham số cần được truyền vàoexchange.GetOrder(id)chức năng được điều chỉnh để:BTC-USDT,123456.

Trước tiên, hãy để tôi giải thích tại sao thiết kế này được thực hiện: Bởi vì chức năng CreateOrder đã được nâng cấp để chỉ định loại lệnh trực tiếp (loại lệnh được đặt có thể khác với cặp giao dịch và mã hợp đồng được đặt hiện tại). Nếu ID lệnh được trả lại không chứa thông tin loại, thì ID lệnh này sẽ không thể sử dụng được. Bởi vì khi kiểm tra lệnh, chúng ta không biết loại (hợp đồng) lệnh là cho loại nào. Hầu hết các sàn giao dịch yêu cầu xác định các tham số mô tả mã loại khi kiểm tra và hủy lệnh.

Làm thế nào để phù hợp với tác động này: Nếu bạn sử dụngexchange.IOchức năng để gọi giao diện lệnh trao đổi trực tiếp để đặt đơn đặt hàng, giá trị trả về thường chứa biểu tượng ban đầu của sàn giao dịch (mã sản phẩm) và ID đơn đặt hàng ban đầu. Sau đó liên kết hai với dấu phẩy tiếng Anh sẽ là ID đơn đặt hàng phù hợp với định nghĩa của nền tảng FMZ. Tương tự như vậy, nếu bạn sử dụng giao diện đặt hàng được đóng gói trên nền tảng FMZ để đặt hàng, vì đầu của ID đặt hàng là mã sản phẩm giao dịch, nếu bạn cần sử dụng ID đặt hàng ban đầu, chỉ cần xóa mã sản phẩm và dấu phẩy.

Ảnh hưởng đến trao đổi.Hủy lệnh chức năng

Tác động của việc nâng cấp nàyexchange.CancelOrder()chức năng là giống nhưexchange.GetOrder() function.

Ảnh hưởng đến trao đổi.Buying function

Tác động của việc nâng cấp nàyexchange.Buy()chức năng là giống nhưexchange.GetOrder()chức năng. Đơn đặt hàng ID trả về bởiexchange.Buy()chức năng là một cấu trúc mới, ví dụ, ID được trả về khi đặt lệnh tương lai trên sàn giao dịch OKX là:LTC-USDT-SWAP,1578360858053058560.

Ảnh hưởng đến trao đổi.Hoạt động bán hàng

Tác động của việc nâng cấp nàyexchange.Sell()chức năng là giống nhưexchange.GetOrder()chức năng. Đơn đặt hàng ID trả về bởiexchange.Sell()chức năng là một cấu trúc mới, ví dụ, ID được trả về khi đặt lệnh tương lai trên sàn giao dịch OKX là:ETH-USDT-SWAP,1578360832820125696.

4. Điều chỉnh cấu trúc

Cấu trúc ticker

Bản cập nhật này thêm một trường Symbol vào cấu trúc Ticker, ghi lại thông tin thị trường của cấu trúc Ticker hiện tại. Định dạng của trường này là chính xác giống như các biểu tượng định dạng tham số củaexchange.GetTicker() function.

Cấu trúc thứ tự

Bản cập nhật này thêm một trường biểu tượng vào cấu trúc Order, và định dạng của trường này chính xác giống như định dạng tham số biểu tượng củaexchange.GetTicker()chức năng. Bản cập nhật này cũng sửa đổi trường ID của cấu trúc đặt hàng, ghi lại thông tin sản phẩm và thông tin đặt hàng ban đầu trong định dạng ID đặt hàng mới.exchange.GetOrder()chức năng, mà sẽ không được lặp lại ở đây.

Cấu trúc vị trí

Bản cập nhật này thêm một trường biểu tượng vào cấu trúc vị trí.exchange.GetTicker() function.

5. Hệ thống kiểm tra ngược

Để đáp ứng nhu cầu của người dùng, nâng cấp này trước tiên sẽ tương thích với giao dịch trực tiếp, và hệ thống kiểm tra lại sẽ được điều chỉnh trong vòng một tuần. Nếu mã chiến lược cá nhân 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.

Các thông tin bổ sung

1. Các lĩnh vực mới Equity và UPnL trong cấu trúc tài khoản

Các lĩnh vực củaAccountcấu trúc được trả về bởiGetAccountCác chức năng của đối tượng giao dịch tương lai đã được mở rộng.

  • Tài sản Tổng vốn chủ sở hữu của đồng tiền tài sản ký quỹ hiện tại. Ngoại trừ một vài sàn giao dịch tương lai không hỗ trợ lĩnh vực này, hầu hết các sàn giao dịch đều hỗ trợ lĩnh vực này. Nó chủ yếu được sử dụng để tính toán lợi nhuận và lỗ ký quỹ tài khoản thời gian thực.

  • UPnL Lợi nhuận và lỗ chưa thực hiện của tất cả các vị trí được giữ trong đồng tiền tài sản ký quỹ hiện tại.

2. Chức năng SetMarginLevel được nâng cấp để hỗ trợ tham số biểu tượng

Chức năng thành viên SetMarginLevel của đối tượng trao đổi tương lai đã được nâng cấp và biểu tượng tham số đã được thêm vào.

Ví dụ thử nghiệm:

function main() {
    exchange.SetCurrency("ETH_USDT")
    exchange.SetContractType("swap")
    
    // The current trading pair is ETH_USDT, the contract code is swap, and the leverage value is set to 10
    exchange.SetMarginLevel(10)
    
    // Directly specify the trading pair BTC_USDT, contract code swap, and set the leverage value to 20
    exchange.SetMarginLevel("BTC_USDT.swap", 20)
}

Thêm nữa