리소스 로딩... 로딩...

FMZ 퀀트 API 업그레이드의 자세한 설명: 전략 설계 경험을 개선

저자:FMZ~리디아, 창작: 2024-07-05 09:44:08, 업데이트: 2024-09-20 08:52:30

[TOC]

img

전문

9 년의 기술적 반복 후, FMZ 양자 거래 플랫폼은 사용자가 그것을 알아차리지 못했지만 여러 번 재구성되었습니다. 지난 2 년 동안 플랫폼은 사용자 경험 측면에서 많은 최적화와 업그레이드를 수행했으며, UI 인터페이스의 포괄적 인 업그레이드, 일반적으로 사용되는 양적 거래 도구의 풍부화 및 더 많은 백테스팅 데이터 지원을 추가했습니다.

전략 설계가 더 편리하고, 거래 논리가 더 명확하고, 초보자가 쉽게 시작할 수 있도록 하기 위해, 플랫폼은 전략에 의해 사용되는 API 인터페이스를 업그레이드했습니다. 최신 버전을 사용하는 도커는 이러한 새로운 기능을 활성화 할 수 있습니다. 플랫폼은 여전히 오래된 인터페이스 호출과 최대 범위에서 호환됩니다. API 인터페이스의 새로운 기능에 대한 정보는 FMZ 퀀트 트레이딩 플랫폼의 API 문서에 업데이트되었습니다:

문법 안내:https://www.fmz.com/syntax-guide사용자 안내:https://www.fmz.com/user-guide

그래서 어떤 인터페이스가 업그레이드 되었는지, 그리고 어떤 변화가 필요한지 빠르게 살펴봅시다.

1. 새로운 API 인터페이스

추가 교환.GetTickers 기능

멀티 제품 전략과 완전한 시장 모니터링 전략을 설계하기 위해서는 집계된 시장 인터페이스가 필수적입니다. 전략을 개발하고 이벤트를 재발견하는 것을 피하기 위해 FMZ 퀀트 트레이딩 플랫폼은 이러한 유형의 교환 API를 포괄합니다.

만약 거래소가 이 인터페이스를 가지고 있지 않다면 (개인 거래소), 호출할 때exchange.GetTickers(), 오류 메시지가 표시됩니다: 지원되지 않습니다.

이 함수는 어떤 매개 변수도 없으며 거래소의 집계 시장 인터페이스에서 모든 품종의 실시간 시장 데이터를 반환합니다. 간단하게 이해 할 수 있습니다.

exchange.GetTickers()function는 전체 기능의 요청 버전입니다exchange.GetTicker()함수 (주의 깊게 보세요, 이 두 함수 이름의 차이점은 단수와 복수입니다.)

우리는 OKX 스팟 시뮬레이션 환경을 테스트를 위해 사용합니다.

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

추가 교환.CreateOrder 함수

새로 추가된exchange.CreateOrder()이 업그레이드의 중심입니다.exchange.CreateOrder()명령의 종류와 방향을 함수 매개 변수에서 직접 지정하는 것입니다. 이렇게하면 현재 거래 쌍, 계약 코드, 거래 방향 및 시스템의 다른 설정에 더 이상 의존하지 않습니다.

다종 거래 주문 배치 시나리오와 동시 시나리오에서 설계 복잡성은 크게 감소합니다.exchange.CreateOrder()함수들은symbol, side, price, amount.

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

이렇게 하면 3명만exchange.CreateOrder()함수 호출은 다양한 종류와 방향의 세 개의 선물 주문을 배치하는 데 사용되었습니다.

추가 교환.GetHistoryOrders 함수

새로 추가된exchange.GetHistoryOrders()이 함수는 또한 교환 인터페이스의 지원을 필요로 합니다.

역사적인 주문을 검색하기 위해, 다양한 거래소에서 구현된 인터페이스는 크게 다릅니다.

  • 일부에서는 페이지화된 질의를 지원하고, 다른 일부는 지원하지 않습니다.
  • 일부 거래소는 질의 창 기간을 가지고 있습니다. 즉, N일보다 오래된 주문은 질의를 할 수 없습니다.
  • 대부분의 거래소는 특정 시간에 질의를 지원하지만 일부는 지원하지 않습니다. 이러한 인터페이스는 가장 높은 수준의 호환성으로 포괄되며 실제 사용에서는 전략의 요구와 기대에 부응하는지 여부에주의를 기울여야합니다.

자세한 함수 설명은 여기에 반복되지 않습니다, 당신은 API 문서의 문법 설명서를 참조할 수 있습니다:

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

바이낸스 스팟 거래 환경을 사용하여 테스트:

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

추가 교환.GetPositions 함수

위치 데이터 획득 기능의 오래된 버전은exchange.GetPosition()이 업그레이드는 함수 명칭 의미와 더 잘 일치하도록 새로운 위치 획득 함수를 추가합니다:exchange.GetPositions(). 동시에, 그것은 여전히 GetPosition 기능과 호환 / 업그레이드 됩니다.

두 함수 이름이 마지막 s로만 다르다는 점에 유의하십시오. GetPositions가 의미적으로 더 정확하기 때문에 앞으로 GetPositions를 사용하는 것이 좋습니다.

exchange.GetPositions()함수는 세 가지 호출 형태를 가지고 있습니다.

  • 교환.GetPositions() 어떤 매개 변수도 전달되지 않을 때, 현재 차원의 모든 품종의 위치 데이터는 현재의 설정에 따라 요청됩니다.거래 쌍 / 계약 코드.

  • exchange.GetPositions ((ETH_USDT.swap) 특정 제품 정보를 지정할 때 (ETH_USDT.swap의 형식은 FMZ 플랫폼에 의해 정의됩니다.) 특정 제품의 위치 데이터를 요청합니다. 예를 들어:BTC_USD.swap, ETH_USDT.swap, ETH_USDT.quarter, 등등 BTC_USD.swap: BTC의 통화 기반의 영구 계약. ETH_USDT.swap: ETH의 U 기반 상시계약. ETH_USDT.quarter: ETH의 U 기반의 분기 배송 계약. BTC_USD.BTC-USD-201226-24250-C: BTC 동전 기반 옵션 계약.

  • 교환.GetPositions ((USDT.swap) 지정된 차원 범위에 따라 모든 제품의 위치 데이터를 요청합니다. USDT.swap: U에 기반한 영구계약 범위 USDT.futures: U 기반 배송 계약 범위 USD.swap: 동전 기반의 영구 계약 범위. USD.futures: 코인 기반 배송 계약 범위 USDT.option: U 기반 옵션 계약 범위. USD.option: 코인 기반 옵션 계약 범위

    일부 특별 교환 계약 차원 부문: USDT.futures_combo: 선물_데리비트 거래소의 스프레드 조합 계약. USD.futures_ff: 퓨처스_크라켄 거래소 혼합 마진 배달 계약. USD.swap_pf: 선물_크래켄 거래소 혼합 마진 영구 계약. 교환 API 인터페이스에서 지원되지 않는 차원의 경우 오류가 보고되고 호출 시 null 값이 반환됩니다.

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

img

매개 변수가exchange.GetPositions()함수는ETH_USDT.swap, ETH의 U 기반 영구 계약의 위치 데이터를 얻을 수 있습니다.

그 매개 변수가exchange.GetPositions()기능이 전달되지 않으면 거래소에 나열된 모든 U 기반 영구 계약의 위치 데이터가 얻을 수 있습니다. (현재 거래 쌍은 BTC_USDT이고 계약은 교환이기 때문에 요청은 현재 거래 쌍과 계약 차원 범위에 기반합니다.)exchange.GetPositions("USDT.swap")그리고 요청 범위를 지정합니다.

2. API 인터페이스 업그레이드

업데이트 교환.GetTicker 함수

시장 기능의 주요 개선exchange.GetTicker()이 함수는 현재 거래 쌍과 계약 코드 없이 매개 변수에 의해 지정된 제품 정보에 따라 직접 시장 데이터를 요청할 수 있습니다. 이 함수는 코드 작성 프로세스를 단순화합니다. 동시에 매개 변수를 전달하지 않고 통화 방법과 여전히 호환되며, 오래된 플랫폼 전략과 최대 범위에서 호환됩니다.

매개 변수symbol거래 대상에 대한 포트/퓨처드의 다른 형식이 있습니다.exchange:

  • 스팟 교환 대상 형식은 다음과 같습니다.AAA_BBB, AAA는 baseCurrency, 즉 거래 통화, 그리고 BBB는 quoteCurrency, 즉 가격화폐를 나타냅니다. 통화 이름은 모두 대문자로 되어 있습니다. 예를 들어: BTC_USDT 현금 거래 쌍.
  • 선물 거래 대상 형식은 다음과 같습니다.AAA_BBB.XXX, AAA는 baseCurrency, 즉 거래 통화, BBB는 quoteCurrency, 즉 가격화, XXX는 영구 계약 교환과 같은 계약 코드를 나타냅니다. 통화 이름은 모두 대문자로 표시되며 계약 코드는 소문자로 표시됩니다. 예를 들어: BTC_USDT.swap, BTC의 U 기반 영구 계약. 바이낸스 선물 라이브 환경을 사용하여 테스트:
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

특정 기호에 대한 시장 데이터 팩을 요청하는 것은 훨씬 더 간단해졌습니다.

업데이트 교환.GetDepth 함수

GetTicker 함수와 비슷하게,exchange.GetDepth()함수 또한 기호 매개 변수를 추가합니다. 이것은 깊이 데이터를 요청할 때 기호를 직접 지정할 수 있습니다.

바이낸스 선물 라이브 환경을 사용하여 테스트:

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

업데이트 교환.GetTrades 함수

GetTicker 함수와 비슷하게,exchange.GetTrades()이 함수는 또한 기호 매개 변수를 추가합니다. 이것은 시장 거래 데이터를 요청할 때 기호를 직접 지정할 수 있습니다.

바이낸스 선물 라이브 환경을 사용하여 테스트:

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

이 업그레이드는 또한exchange.Go()플랫폼 API 인터페이스를 동시에 호출할 때 기능.

업데이트 교환.GetRecords 함수

이번엔 GetRecords 함수가 크게 조정되었다. 요청된 K-라인 데이터의 타입 정보를 직접 지정하기 위한 기호 매개 변수를 지원하는 것 외에도, K-라인 기간을 지정하기 위한 원래 기간 매개 변수는 유지되고, 요청할 때 예상되는 K-라인 길이를 지정하기 위한 한계 매개 변수는 추가된다. 동시에, 그것은 단지 기간 매개 변수에 통과하는 GetRecords 함수의 오래된 버전과도 호환된다.

호출 방법exchange.GetRecords()함수는:

  • 교환.GetRecords() 매개 변수가 지정되지 않으면 현재 거래 쌍/계약 코드에 해당하는 제품의 K-라인 데이터가 요청됩니다. K-라인 기간은 전략 백테스팅 인터페이스 또는 라이브 거래에서 설정된 기본 K-라인 기간입니다.
  • 교환.GetRecords ((60 * 15) K-라인 기간 매개 변수만 지정되면 현재 거래 쌍/계약 코드에 해당하는 상품의 K-라인 데이터를 요청합니다.
  • exchange.GetRecords (BTC_USDT.swap) 제품 정보만 지정되면 지정된 제품의 K-라인 데이터가 요청됩니다. K-라인 기간은 전략 백테스팅 인터페이스 또는 라이브 거래에서 설정된 기본 K-라인 기간입니다.
  • exchange.GetRecords ((BTC_USDT.swap, 60 * 60) 제품 정보와 특정 K-라인 기간을 지정하여 K-라인 데이터를 요청합니다.
  • exchange.GetRecords ((BTC_USDT.swap, 60, 1000) 제품 정보, 특정 K-라인 기간 및 K-라인 데이터를 요청하기 위해 예상되는 K-라인 길이를 지정하십시오. 제한 매개 변수가 교환에서 단일 요청의 최대 길이를 초과하면 페이징 요청이 생성된다는 점에 유의하십시오 (즉 교환 K-라인 인터페이스에 복수의 호출).

바이낸스 선물 라이브 환경을 사용하여 테스트:

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

업데이트 교환.GetOrders 함수

또한 GetOrders 함수는symbol매개 변수, 특정 기호를 지정하고 그 기호의 미완성 주문을 검색하는 데 사용할 수 있습니다. 또한 지정된 차원 범위 내의 모든 기호의 미완성 주문 (미완성 주문) 을 검색하는 것을 지원합니다.

exchange.GetOrders()함수는 다음과 같은 방법으로 호출될 수 있습니다.

  • 교환.GetOrders() 미래에셋 거래소: 매개 변수가 전달되지 않을 경우, 현재 차원 범위의 모든 도구에 대한 모든 미수 주문 (예정된 주문) 은 현재 기준에 따라 요청됩니다.거래 쌍 / 계약 코드설정 스팟 거래: 매개 변수가 전달되지 않을 경우 모든 스팟 상품의 모든 미수 주문 (오징어 주문) 에 대한 요청이 이루어집니다.
  • exchange.GetOrders ((BTC_USDT.swap) 또는 exchange.GetOrders ((BTC_USDT) 미래에셋 거래소: exchange.GetOrders ((BTC_USDT.swap), BTC의 USDT 기반 상속 계약에 대한 모든 미수 주문 (예정 주문) 을 검색합니다. 스팟 거래소: exchange.GetOrders ((BTC_USDT), BTC_USDT 스팟 거래 쌍에 대한 모든 미수 주문 (계속 주문) 을 검색합니다.
  • 선물 거래소에만 지원됩니다.GetOrders ((USDT.swap) 는 모든 품종에 대한 미수 주문을 요청하기 위한 차원 범위를 지정합니다. 차원 범위는 GetPositions 함수의 범위와 일치합니다. 예를 들어: exchange.GetOrders ((USDT.swap) 는 U 기반 영구 계약 범위의 모든 품종의 모든 부과된 주문 (중계 주문) 을 요청합니다.

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

매개 변수가 전달되지 않을 경우 현재 거래 쌍 (BTC_USDT) 및 계약 코드 (스) 의 차원 범위의 모든 종류의 미완성 주문 (중계 주문) 이 요청됩니다.

매개 변수가ETH_USDT.swap정해진 경우, ETH의 USDT 기반 상시계약의 미완성 주문 (중계 주문) 이 요청됩니다.

그 string이"USDT.swap"통과되면 모든 USDT 기반 상시 계약의 미완성 주문 (중계 주문) 이 요청됩니다.

업데이트 교환.GetPosition 함수

그것은 여전히 오래된 위치 획득 함수 명칭과 호환되며, 또한 특정 요청된 위치 데이터의 타입 정보를 지정할 수 있는 기호 매개 변수를 추가합니다. 이 함수의 사용은exchange.GetPositions().

업데이트exchange.IO기능

에 대해exchange.IO("api", ...)함수 호출, 모든 교환 객체는 완전한 요청 주소를 직접 전달하는 것을 지원하도록 업그레이드되었습니다. 예를 들어, OKX 인터페이스를 호출하려면:

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

기본 주소로 직접 쓰기를 지원합니다https://www.okx.com먼저 기본 주소를 변경하고 IO 함수를 호출하지 않아도 됩니다.

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. API 인터페이스 영향

교환.GetOrder 기능에 영향을 미칩니다.

이 업그레이드는 주로 매개 변수에 영향을 미칩니다.idexchange.GetOrder(id)기능. id 매개 변수는 원래 교환 주문 id에서 거래 제품을 포함하는 문자열 형식으로 변경됩니다. FMZ 플랫폼의 모든 캡슐화된 주문 ID는 이 형식으로 되어 있습니다.

예를 들어:

  • 교환 명령에 정의된 교환의 원래 명령 Id는:123456이 업그레이드 전에, 당신이 GetOrder 함수를 호출하려면, 명령 Id가 전달되는123456.
  • 교환 명령에 정의된 거래소에서 지정된 제품 코드:BTC-USDT- 네 참고로 이것은 FMZ 플랫폼에 의해 정의된 거래 쌍이 아니라 거래소에서 지정된 거래 제품 코드입니다.

이 업그레이드 후, 패러미터 id의 형식은exchange.GetOrder(id)함수는 다음과 같이 조정됩니다.BTC-USDT,123456.

먼저 이 디자인이 왜 이루어졌는지 설명해 드리겠습니다. Because the CreateOrder function has been upgraded to specify the type of order directly (placed order type may be different from the currently set trading pair and contract code). 반환된 주문 ID가 유형 정보를 포함하지 않으면이 주문 ID는 사용할 수 없을 것입니다. 왜냐하면 주문을 확인 할 때 주문이 어떤 유형 (계약) 에 해당하는지 알 수 없기 때문입니다. 대부분의 거래소는 주문을 확인하고 취소 할 때 타입 코드를 설명하는 매개 변수를 지정해야합니다.

이 충격에 어떻게 대응할 수 있을까요? 이 약물을 사용하는 경우exchange.IO교환 주문 인터페이스를 직접 호출하여 주문을 할 수 있는 기능, 반환 값은 일반적으로 교환의 원래 기호 (제품 코드) 와 원래 주문 id를 포함합니다. 다음 영어 쉼표로 둘을 연결하면 FMZ 플랫폼의 정의에 맞는 주문 ID가됩니다. 마찬가지로, 당신이 FMZ 플랫폼 캡슐화 주문 인터페이스를 사용 하 여 주문을 할 경우, 주문 ID의 시작은 거래 제품 코드이기 때문에, 당신은 원래 주문 ID를 사용 해야 하는 경우, 그냥 제품 코드와 koma를 삭제 합니다.

교환에 영향을 미칩니다.

이 업그레이드의 영향exchange.CancelOrder()함수와 동일합니다exchange.GetOrder() function.

교환에 영향을 미칩니다. 구매 기능

이 업그레이드의 영향exchange.Buy()함수와 동일합니다exchange.GetOrder()기능. 주문 ID가 반환됩니다exchange.Buy()함수는 새로운 구조입니다. 예를 들어, OKX 거래소에 선물 주문을 할 때 반환되는 ID는:LTC-USDT-SWAP,1578360858053058560.

교환에 영향을 미칩니다. 판매 기능

이 업그레이드의 영향exchange.Sell()함수와 동일합니다exchange.GetOrder()기능. 주문 ID가 반환됩니다exchange.Sell()함수는 새로운 구조입니다. 예를 들어, OKX 거래소에 선물 주문을 할 때 반환되는 ID는:ETH-USDT-SWAP,1578360832820125696.

교환.GetPosition 함수에 영향을 미칩니다.

오직 선물 교환 객체만이 이 함수를 지원한다. 위치 데이터를 얻기 위한 exchange.GetPosition() 함수를 위해, 새로운 exchange.GetPositions() 이름을 추가하고, 두 동작은 정확히 동일하다.

오래된 정의: exchange.GetPosition() 함수는 매개 변수를 지정하지 않고 호출되면 현재 거래 쌍과 계약 코드에 의해 설정된 특정 계약의 위치 데이터를 얻습니다. 조정 및 수정 후, 새로운 정의: exchange.GetPosition( () 함수는 매개 변수를 지정하지 않고 호출되면 현재 설정된 거래 쌍과 계약 코드에 의해 결정된 차원 범위 내의 모든 품종의 위치를 얻습니다.

예를 들어, 현재 거래 쌍은 BTC_USDT이고 계약 코드는 swap입니다.

exchange.GetPosition() // Equivalent to calling exchange.GetPosition("USDT.swap")

이 함수는 모든 통화의 U 기반 상시 계약의 위치 데이터를 요청합니다.

교환에 영향을 미칩니다.GetOrders 함수

  1. 스팟 거래의 경우:

오래된 정의: exchange.GetOrders() 함수는 매개 변수를 지정하지 않고 호출되면 현재 거래 쌍의 모든 완료되지 않은 주문을 얻습니다. 조정 및 수정 후, 새로운 정의는: exchange.GetOrders() 함수, 어떤 매개 변수를 지정하지 않고 호출 할 때, 모든 스팟 거래 쌍의 완료되지 않은 주문을 얻습니다.

  1. 미래에셋 거래소:

오래된 정의: exchange.GetOrders() 함수는 매개 변수를 지정하지 않고 호출되면 현재 거래 쌍과 계약 코드가 설정한 특정 계약의 모든 완료되지 않은 주문을 얻습니다. 조정 및 수정 후, 새로운 정의는: exchange.GetOrders() 함수, 어떤 매개 변수를 지정하지 않고 호출 할 때, 현재 거래 쌍과 계약 코드에 의해 결정 된 차원 범위의 모든 미완성 주문을 얻습니다.

예를 들어, 현재 거래 쌍은 BTC_USD이고 계약 코드는 분자입니다.

exchange.GetOrders()   // Equivalent to calling exchange.GetOrders("USD.futures")

이 함수는 모든 코인 기반 선물 계약의 미결 주문 데이터를 요청합니다.

4. 구조적 조정

틱러 구조

이 업데이트는 현재 트커 구조의 시장 정보를 기록하는 트커 구조에 기호 필드를 추가합니다. 이 필드의 형식은 정확히 같은exchange.GetTicker() function.

순서 구조

이 업데이트는 Order 구조에 Symbol 필드를 추가합니다. 이 필드의 형식은exchange.GetTicker()기능. 이 업데이트는 또한 주문 구조의 ID 필드를 수정하여 제품 정보와 원래 주문 정보를 새로운 주문 ID 형식으로 기록합니다.exchange.GetOrder()그 기능을 여기서 반복하지 않겠습니다.

위치 구조

이 업데이트는 위치 구조에 기호 필드를 추가합니다. 이 필드의 형식은exchange.GetTicker() function.

5. 백테스팅 시스템

플랫폼 전략 API 인터페이스 업그레이드에 따라 플랫폼의 백테스팅 시스템은 동기적으로 업데이트되었습니다. 또한 백테스팅 시스템은 다음을 지원합니다.

  • 더 많은 교환 백테스팅 데이터를 지원합니다.
  • 모든 종류의 교환에 대한 백테스팅 데이터를 지원합니다.
  • U를 기반으로 한, 통화 기반 배달, 그리고 영구 계약에 대한 혼합 거래.
  • 선물 거래소 객체는 백테스팅 중에 거래 쌍을 전환하는 것을 지원합니다.

추가적 업데이트

1. 계정 구조에서 새로운 필드 주식 및 UPnL

농장Account구조로 반환GetAccount미래에셋거래 대상의 구성원 기능이 확장되었습니다.

  • 자기자본 현재 마진 자산 화폐의 총 자금. 이 필드를 지원하지 않는 몇 가지 선물 거래소를 제외하고 대부분의 거래소가 이 필드를 지원합니다. 주로 실시간 계정 마진 이익과 손실을 계산하는 데 사용됩니다.

  • UPnL 현재 마진 자산 통화에 보유된 모든 포지션의 실현되지 않은 이익과 손실. 대부분의 선물 거래소는 이 분야를 지원합니다.

2. SetMarginLevel 함수는 기호 매개 변수를 지원하도록 업그레이드되었습니다.

선물 거래소 객체의 멤버 함수 SetMarginLevel가 업그레이드되었으며 매개 변수 기호가 추가되었습니다.

테스트 예제:

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

3. GetMarkets 함수에서 반환된 시장 구조는 CtValCcy 필드를 추가했습니다.

필드CtValCcy계약의 가치 단위를 기록합니다. 계약의 가치 단위는 BTC, USD, ETH 등이 될 수 있습니다. 필드CtVal거래소에 거래 상품의 계약의 가치를 기록하고, 단위는 거래소에 기록된 통화입니다.CtValCcy예를 들어:CtVal0.01이며,CtValCcyBTC, 즉 계약의 가치는 0.01 BTC입니다.


더 많은