[TOC]
발명가들의 양자 거래 플랫폼은 9년 동안 기술적인 반복을 거쳐 여러 차례 재구성되었다. 그러나 사용자로서 우리는 아마 알아차리지 못했을 것이다. 지난 2년 동안 플랫폼은 사용자 경험에 대한 많은 최적화와 업그레이드를 실시했다. UI의 전체적인 업그레이드, 자주 사용되는 양자 거래 도구의 풍부함, 그리고 더 많은 회색 데이터 지원을 추가했다.
전략 설계가 더 편리하고 거래 논리가 더 명확하고 초보자도 쉽게 사용할 수 있도록 플랫폼은 정책이 사용하는 API 인터페이스를 업그레이드했습니다. 최신 버전의 호스트를 사용하여 새로운 기능을 활성화 할 수 있습니다. 플랫폼은 여전히 오래된 인터페이스의 호출을 최대한 호환합니다.
그럼 이 글을 통해 어떤 인터페이스 업그레이드 업데이트가 있는지, 그리고 현재 API를 호환하기 위해 오래된 정책을 사용하는 데 필요한 변경 사항에 대해 알아보자.
다종양 전략, 전시장 시장을 모니터링하는 전략을 설계하는 데 필수적이다. 이러한 통합시장 인터페이스는 전략을 더 쉽게 개발하기 위해 필수적이며, 반복적인 휠을 피하기 위해 필수적이다. 발명자는 양적 거래 플랫폼을 거래소와 같은 API로 포장했다.
만약 거래소가 이러한 인터페이스 (개인 거래소) 를 가지고 있지 않다면exchange.GetTickers()
이 글은 다른 글과 비교해 볼 수 있습니다.
이 함수는 어떤 매개 변수도 없이 거래소에서 모든 종류의 시장 데이터를 실시간으로 반환한다.
exchange.GetTickers()
이 함수들은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
}
새로운exchange.CreateOrder()
이 업그레이드의 핵심은 함수입니다.exchange.CreateOrder()
함수의 최대 기능은 바로 함수의 매개 변수에서 주문할 품종, 방향 등을 지정하는 것이다. 이렇게 하면 시스템 현재 설정된 거래 쌍, 계약 코드, 거래 방향 등에 의존하지 않는다.
다중 거래 시나리오에서 단일 시나리오에서 설계 복잡성을 크게 감소시킵니다.exchange.CreateOrder()
이 함수의 4개의 매개변수는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)
}
3번만 사용했습니다.exchange.CreateOrder()
함수 호출은 세 가지 다른 종류, 다른 방향의 선물 주문을 가져옵니다.
새로운exchange.GetHistoryOrders()
이 함수는 특정 품종의 역사 거래 주문을 얻기 위해 사용되며, 이 함수는 또한 거래소 인터페이스 지원이 필요합니다.
역사 주문을 검색하는 데 있어서, 거래소마다 구현된 인터페이스가 매우 다양합니다:
이러한 인터페이스를 최대한 호환성으로 포장하기 위해서는 실제 사용에서는 정책의 요구와 기대에 부합하는지 여부에 대한 주의가 필요합니다.
자세한 함수 설명은 여기서 더 이상 설명되지 않습니다. API 문서의 문법 설명서를 참조하십시오:
https://www.fmz.com/syntax-guide#fun_exchange.gethistoryorders
이 프로젝트의 주제는 '동시화폐 현장환경 테스트'입니다.
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) + "`")
}
이전 버전의 데이터 저장 함수는exchange.GetPosition()
▲ 이 업그레이드에서는 함수의 이름에 더 잘 어울리는 새로운 취득 보유 함수를 추가했습니다:exchange.GetPositions()
▲ 동시에 GetPosition 함수를 호환/ 업그레이드합니다.
두 함수 이름의 차이점은 하나의 끝의 s일 뿐이라는 점에 유의하십시오.
exchange.GetPositions()
함수는 세 가지 형태의 호출이 있습니다.
exchange.GetPositions (역주) 어떤 변수를 전달하지 않을 때,거래 / 계약 코드이 설정은 현재 차원의 모든 품종의 저장 데이터를 요청합니다.
exchange.GetPositions (BTC_USD.swap
、ETH_USDT.swap
、ETH_USDT.quarter
그리고 또 다른.
BTC_USD.swap: BTC의 원자본 상속 계약.
ETH_USDT.swap: ETH의 U비트 상속 계약.
ETH_USDC.swap:ETH의 USDC 본래 상속계약. (USDT 이외에도 다른 quoteCurrency를 지정할 수 있습니다. 더 이상 언급되지 않습니다.)
ETH_USDT.quarter:ETH의 U자본 분기 거래율은 약.
BTC_USD.BTC-USD-201226-24250-C: BTC의 코인 로켓 옵션 계약.
exchange.GetPositions (
다른 거래소와 비교해 볼 때, USDT.futures_combo:Futures_Deribit 거래소의 차이 포트폴리오 계약. USD.futures_ff:Futures_Kraken 거래소의 혼합 보증금 거래 비율 약. USD.swap_pf:Futures_Kraken 거래소의 혼합 보증금 상속 계약.
거래소 API가 지원하지 않는 차원의 경우 호출 시 오류가 발생하여 빈값을 반환합니다.
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) + "`")
}
그리고 그 후exchange.GetPositions()
이 함수의 변수는ETH_USDT.swap
이 경우, ETH의 U-비트 상속 계약 보유 데이터를 얻을 수 있습니다.
만약 이 신호가 전달되지 않는다면exchange.GetPositions()
함수의 매개 변수에서 거래소가 온라인에 올린 모든 U-비트 영구 계약의 보유 데이터를 얻을 수 있습니다. (현재 거래 쌍이 BTC_USDT이기 때문에, 계약은 현재 거래 쌍, 계약 범위 요청에 따라 교환됩니다.)exchange.GetPositions("USDT.swap")
, 요청 범위를 지정합니다.
새로 추가된 GetFundings 함수는 선물 거래소의 상속 계약에 대한 자본 요금을 얻을 수 있다. 함수는 변수 심볼을 가지고 있다. 함수는 Funding 구조 배열을 반환한다.
BTC_USDT.swap
▲변수를 전달하지 않거나 전송 범위 함수는 symbol 변수를 지원하지 않습니다.행렬 함수exchange.GetTicker()
이 업그레이드는 주로 심볼 매개 변수를 추가한다. 이 함수는 현재 거래 쌍, 계약 코드와 매개 변수 지정된 품종 정보를 직접적으로 분리하여 시장 데이터를 요청할 수 있도록 한다. 코드 작성 과정을 단순화한다.
매개 변수symbol
거래소 대상exchange
다른 형태의 현금/예상 상품입니다:
AAA_BBB
, AAA는 거래 통화를 의미하며, BBB는 quoteCurrency를 의미하며, 통화 이름은 모두 대문자로 쓰인다.
예를 들어: BTC_USDT 현금 거래 쌍.AAA_BBB.XXX
,AAA는 거래 통화, BBB는 요금 통화,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
}
특정 품종의 시장 데이터 디자인을 요청하는 것이 더 간단합니다.
이 함수와 같은 함수exchange.GetDepth()
함수는 또한 symbol 파라미터를 추가한다. 깊이 데이터를 요청할 때 직접 품종을 지정할 수 있다.
이 프로젝트의 주제는
function main() {
exchange.SetCurrency("LTC_USD")
exchange.SetContractType("swap")
Log(exchange.GetDepth())
Log(exchange.GetDepth("ETH_USDT.quarter"))
Log(exchange.GetDepth("BTC_USD.swap"))
}
이 함수와 같은 함수exchange.GetTrades()
함수에는 symbol 파라미터도 추가되어 있다. 시장 거래 데이터를 요청할 때 직접 품종을 지정할 수 있다.
이 프로젝트의 주제는
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) + "`")
}
이 업그레이드 또한 호환성을 통과했습니다.exchange.Go()
함수 동시 호출 플랫폼 API 인터페이스에서 symbol 파라미터 지정 품종 정보를 전달합니다.
GetRecords 함수는 심볼 매개 변수를 직접 요청에 지정하는 K선 데이터의 종류 정보를 지원하는 것 외에도 큰 변화를 가했다. K선 주기를 지정하는 원래의 기간 매개 변수를 유지, 또한 요청 기간을 원하는 K선 길이를 지정하는 한계 매개 변수를 추가했다. 또한 구 버전의 GetRecords 함수의 호환성 또한 기간 주기 매개 변수를 전송하는 방식으로만 호출한다.
exchange.GetRecords()
함수를 호출하는 방법:
이 프로젝트의 주제는
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)
}
또한 GetOrders 함수가 추가되었습니다.symbol
매개 변수, 특정 품종을 지정하여 그 품종의 미완성 주문을 검색할 수 있다. 또한 지정된 차원 범위의 모든 품종의 미완성 주문을 검색할 수 있다.
exchange.GetOrders()
함수를 호출하는 방법은 다음과 같습니다.
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.swap
파라미터에서, ETH를 요청하는 USDT의 상속 계약의 부결된 주문 (挂单)."USDT.swap"
이 문서는 모든 USDT 상속 계약의 미완성 주문을 요청합니다.여전히 구식 저장함수 이름화와 호환되며, 또한 특정 요청된 저장 데이터의 종류 정보를 지정할 수 있는 심볼 매개 변수를 추가하였다.exchange.GetPositions()
이 글은 이쪽의 글입니다.
이 문제에 대해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")
}
이 업그레이드는 주로 영향을 미쳤습니다.exchange.GetOrder(id)
함수의 매개 변수id
,id 매개 변수는 원래의 거래소 주문 id에서 거래 품종을 포함하는 문자열 형식으로 변경되었습니다. FMZ 플랫폼에서 모든 포괄된 주문 Id는이 형식으로 변경되었습니다.
예를 들어:
123456
이 업그레이드 이전에는 GetOrder 함수를 호출할 때 입력된 OrderId는123456
。BTC-USDT
ᅳ
참고: 여기서는 FMZ 플랫폼에 정의된 거래 쌍이 아니라 거래소 이름이 붙은 거래 품종 코드입니다.그리고 이 업그레이드 후,exchange.GetOrder(id)
함수가 입력해야 하는 변수 id의 형식은 다음과 같이 조정됩니다.BTC-USDT,123456
。
이 디자인은 왜 그렇게 되었는지 설명해 드리겠습니다. 이번 업그레이드에서 CreateOrder 함수는 직접 품종을 지정하기 때문에, 귀환된 주문 ID가 품종 정보를 포함하지 않으면 해당 주문 ID는 사용할 수 없습니다. 특정 주문에 해당하는 품종이 무엇인지 알 수 없기 때문에, 대부분의 거래소 청구서와 취소에는 품종 코드를 설명하는 매개 변수를 지정해야 합니다.
어떻게 이런 영향력을 합쳐야 할까요? 하위 주문은 교환.IO 함수가 직접 거래소 하위 주문 인터페이스를 호출하여 주문을 하려면, 반환 값은 일반적으로 거래소의 원시 기호 (종 코드) 와 원시 주문 id를 포함합니다. 두 가지를 영어 코마로拼接하면 FMZ 플랫폼 정의에 맞는 주문 Id입니다. 또한 FMZ 플랫폼에서 포장된 하부 주문 인터페이스를 사용하는 경우 하부 주문이 가능하며, 주문Id의 시작 부분은 거래 품종 코드이기 때문에, 주문의 원본Id을 사용하는 것이 필요한 경우 품종 코드와 코마를 제거하는 것만으로도 가능합니다.
이 업그레이드는exchange.CancelOrder()
함수의 영향과exchange.GetOrder()
같은 함수입니다.
이 업그레이드는exchange.Buy()
함수의 영향과exchange.GetOrder()
같은 함수입니다.exchange.Buy()
함수가 반환하는 명령 Id는 OKX 거래소 선물 주문 시 반환되는 새로운 구조의 Id입니다.LTC-USDT-SWAP,1578360858053058560
。
이 업그레이드는exchange.Sell()
함수의 영향과exchange.GetOrder()
같은 함수입니다.exchange.Sell()
함수가 반환하는 명령 Id는 OKX 거래소 선물 주문 시 반환되는 새로운 구조의 Id입니다.ETH-USDT-SWAP,1578360832820125696
。
선물 거래소 객체만 이 함수를 지원하고 있으며, 보유 데이터 함수를 획득하는 데는 exchange.GetPosition (), 새로운 exchange.GetPositions ()) 라는 이름을 붙였으며, 둘은 완전히 일치합니다.
이전 정의:exchange.GetPosition ((() 함수, 어떤 매개 변수도 지정하지 않은 채 호출할 때, 현재 거래 쌍, 계약 코드 설정의 특정 계약의 보유 데이터를 얻는다.
조정, 변경 후, 새로운 정의:exchange.GetPosition ((() 함수, 어떤 파라미터도 지정하지 않은 채 호출할 때, 현재 설정된 거래 쌍, 계약 코드에서 정의된 차원 범위의 모든 품종의 보유를 얻는다.
예를 들어, 현재 거래 쌍은 BTC_USDT이며 계약 코드는 swap입니다.
exchange.GetPosition() // 等价于调用 exchange.GetPosition("USDT.swap")
이 함수는 모든 화폐의 U비트 영구 계약 보유 데이터를 요청합니다.
1. 현금 거래소에 대해:
이전 정의:exchange.GetOrders ()) 함수는 어떤 매개 변수도 지정하지 않고 호출할 때, 현재 트랜잭션 쌍의 모든 미완성 주문을 얻는다.
변경 후, 새로운 정의:exchange.GetOrders (,) 함수, 어떤 매개 변수를 지정하지 않은 호출에서, 모든 현상 거래에 대한 품종의 완료되지 않은 주문을 얻는다.
2, 선물 거래소에 대해:
이전 정의:exchange.GetOrders ()) 함수는 어떤 매개 변수도 지정하지 않고 호출할 때, 현재 거래 쌍, 계약 코드 설정의 특정 계약에 대한 모든 미완성 주문을 얻는다.
조정, 변경 후, 새로운 정의:exchange.GetOrders ((() 함수, 어떤 매개 변수를 지정하지 않은 호출에서 현재 설정된 거래 쌍, 계약 코드에서 정의된 차원 범위에서 모든 미완성 주문을 가져옵니다.
예를 들어, 현재 거래 쌍은 BTC_USD이며 계약 코드는 quarter입니다.
exchange.GetOrders() // 等价于调用 exchange.GetOrders("USD.futures")
이 함수는 모든 화폐의 화폐 현금 교환 비율에 대한 미완성 주문 데이터를 요청합니다.
이 업데이트는 티커 구조에 현재 티커 구조가 어떤 품종에 해당하는지 정보를 기록하는 심볼 필드를 추가했습니다.exchange.GetTicker()
함수의 기호 매개 변수 형식은 완전히 일치합니다.
이 업데이트는 Order 구조에 Symbol 필드를 추가했습니다.exchange.GetTicker()
함수의 기호 매개 변수 형식은 완전히 일치한다. 이 업데이트는 또한 Order 구조물의 Id 필드를 변경하여 새로운 Order Id 형식으로 품종 정보, 원본 주문 정보를 기록한다. 참조.exchange.GetOrder()
함수에서 OrderId의 설명은 여기서 더 이상 설명되지 않습니다.
이 업데이트는 포지션 구조에 심볼 필드를 추가했습니다.exchange.GetTicker()
함수의 기호 매개 변수 형식은 완전히 일치합니다.
GetFundings 함수는 Funding 구조물 배열을 반환합니다.
{
"Info": {...}, // 交易所资金费率接口原始应答数据
"Symbol": "BTC_USDT.swap", // FMZ平台定义的品种名称
"Interval": 28800000, // 8小时间隔,单位毫秒
"Time": 1729728000000, // 本期资金费率收取时间
"Rate": 0.0001, // 资金费率,即 0.01 %
}
이 업그레이드는 사용자의 요구를 충족시키기 위해 먼저 실제 디스크에 호환되며, 리코드 시스템은 일주일 이내에 적응을 완료합니다. 개별 정책 코드가 영향을 받으면 이 문서 설명에 따라 변경을 조정하십시오.
이 플랫폼 전략 API 인터페이스 업그레이드에 따라, 플랫폼의 검색 시스템 내의 모든 API 인터페이스가 동기화 업데이트 완료되었습니다. 또한 검색 시스템 새로운 지원:
선물 거래소 객체의 멤버 함수GetAccount
다시 돌아왔다Account
구조는 필드를 확장했습니다.
선물 거래소 객체의 구성원 함수 SetMarginLevel에 대한 업그레이드, 매개 변수 기호가 추가되었다.
예를 들어:
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)
}
CtValCcy
계약의 가치 단위를 기록합니다. 계약의 가치 단위는 BTC, USD, ETH 등이 될 수 있습니다.CtVal
거래 품종에 해당하는 거래소의 계약에 해당하는 가치를 기록합니다.CtValCcy
필드에 기록된 화폐.CtVal
그리고 그 다음에는CtValCcy
"BTC"는 0.01 BTC의 계약에 해당합니다.와-엠
에크네무스 希望exchange.Buy函数能增加开止损单的功能。。
와-엠
발명가들의 수량화 - 작은 꿈네, 이쪽에서 테스트해보세요. 질문 주셔서 감사합니다. 이쪽에서 빨리 처리하겠습니다.
와-엠
발명가들의 수량화 - 작은 꿈안녕하세요, 주문 ID는 필수적인 변화입니다. 왜냐하면 직접 품종을 지정하는 주문을 업그레이드했기 때문에 주문 ID에는 품종 정보가 포함되어야합니다. 그렇지 않으면 어떤 품종인지 확인 할 수 없으며 취소 시 호출 할 수 없습니다. 당신이 말한 다음 주문 후의 문자는 표시되지 않습니다. 즉: exchange.Buy ((price, amount, extMsg1, extMsg2) 를 호출할 때, extMsg1, extMsg2가 로그에 표시되지 않는가?
발명가들의 수량화 - 작은 꿈안녕하세요, 현재 거래소 설정, 거래 쌍, 계약 코드 설정을 보내십시오.
발명가 양자화테스트 코드와 구성의 세부사항을 본 문서에 보내 주시기 바랍니다. 엔지니어는 첫 번째 시간에 응답합니다.
발명가들의 수량화 - 작은 꿈거래소의 조건화 메커니즘과 같은 차이가 크며 지원 정도가 다양합니다.
발명가들의 수량화 - 작은 꿈지원에 감사드립니다. 이용에 문제가 있다면 신청서를 보내거나 메시지를 보낼 수 있습니다.