重要前提
安装AI Skills的关键前提是:必须科学上网,且开启TUN模式,这一点至关重要,直接决定安装能否顺利完成,在此郑重提醒三遍:科学上网,科学上网,科学上网。查看完整安装教程 →
npx skills add https://github.com/ccxt/ccxt --skill ccxt-go在 Go 项目中集成加密货币交易所的 CCXT 使用综合指南。
go get github.com/ccxt/ccxt/go/v4
go get github.com/ccxt/ccxt/go/v4/pro
package main
import (
"fmt"
"github.com/ccxt/ccxt/go/v4/binance"
)
func main() {
exchange := binance.New()
markets, err := exchange.LoadMarkets()
if err != nil {
panic(err)
}
ticker, err := exchange.FetchTicker("BTC/USDT")
if err != nil {
panic(err)
}
fmt.Println(ticker)
}
package main
import (
"fmt"
"github.com/ccxt/ccxt/go/v4/pro/binance"
)
func main() {
exchange := binance.New()
defer exchange.Close()
for {
ticker, err := exchange.WatchTicker("BTC/USDT")
if err != nil {
panic(err)
}
fmt.Println(ticker.Last) // 实时更新!
}
}
广告位招租
在这里展示您的产品或服务
触达数万 AI 开发者,精准高效
| 功能 | REST API | WebSocket API |
|---|---|---|
| 用途 | 一次性查询、下单 | 实时监控、实时价格推送 |
| 导入路径 | github.com/ccxt/ccxt/go/v4/{exchange} | github.com/ccxt/ccxt/go/v4/pro/{exchange} |
| 方法 | Fetch* (FetchTicker, FetchOrderBook) | Watch* (WatchTicker, WatchOrderBook) |
| 速度 | 较慢 (HTTP 请求/响应) | 较快 (持久连接) |
| 频率限制 | 严格 (1-2 次请求/秒) | 更宽松 (连续流) |
| 最佳适用场景 | 交易、账户管理 | 价格监控、套利检测 |
重要提示: 所有方法都返回 (result, error) - 务必检查错误!
import "github.com/ccxt/ccxt/go/v4/binance"
// 公共 API (无需认证)
exchange := binance.New()
exchange.EnableRateLimit = true // 推荐!
// 私有 API (需要认证)
exchange := binance.New()
exchange.ApiKey = "YOUR_API_KEY"
exchange.Secret = "YOUR_SECRET"
exchange.EnableRateLimit = true
import "github.com/ccxt/ccxt/go/v4/pro/binance"
// 公共 WebSocket
exchange := binance.New()
defer exchange.Close()
// 私有 WebSocket (需要认证)
exchange := binance.New()
exchange.ApiKey = "YOUR_API_KEY"
exchange.Secret = "YOUR_SECRET"
defer exchange.Close()
// 加载所有可用的交易对
markets, err := exchange.LoadMarkets()
if err != nil {
panic(err)
}
// 访问市场信息
btcMarket := exchange.Market("BTC/USDT")
fmt.Println(btcMarket.Limits.Amount.Min) // 最小订单数量
// 单个行情
ticker, err := exchange.FetchTicker("BTC/USDT")
if err != nil {
panic(err)
}
fmt.Println(ticker.Last) // 最新价格
fmt.Println(ticker.Bid) // 最佳买价
fmt.Println(ticker.Ask) // 最佳卖价
fmt.Println(ticker.Volume) // 24小时交易量
// 多个行情 (如果支持)
tickers, err := exchange.FetchTickers([]string{"BTC/USDT", "ETH/USDT"})
// 完整订单簿
orderbook, err := exchange.FetchOrderBook("BTC/USDT", nil)
if err != nil {
panic(err)
}
fmt.Println(orderbook.Bids[0]) // [价格, 数量]
fmt.Println(orderbook.Asks[0]) // [价格, 数量]
// 限制深度
limit := 5
orderbook, err := exchange.FetchOrderBook("BTC/USDT", &limit)
// 买入限价单
order, err := exchange.CreateLimitBuyOrder("BTC/USDT", 0.01, 50000, nil)
if err != nil {
panic(err)
}
fmt.Println(order.Id)
// 卖出限价单
order, err := exchange.CreateLimitSellOrder("BTC/USDT", 0.01, 60000, nil)
// 通用限价单
order, err := exchange.CreateOrder("BTC/USDT", "limit", "buy", 0.01, 50000, nil)
// 买入市价单
order, err := exchange.CreateMarketBuyOrder("BTC/USDT", 0.01, nil)
// 卖出市价单
order, err := exchange.CreateMarketSellOrder("BTC/USDT", 0.01, nil)
// 通用市价单
order, err := exchange.CreateOrder("BTC/USDT", "market", "sell", 0.01, nil, nil)
balance, err := exchange.FetchBalance()
if err != nil {
panic(err)
}
fmt.Println(balance["BTC"].Free) // 可用余额
fmt.Println(balance["BTC"].Used) // 订单占用余额
fmt.Println(balance["BTC"].Total) // 总余额
// 未成交订单
openOrders, err := exchange.FetchOpenOrders("BTC/USDT", nil, nil, nil)
// 已成交订单
closedOrders, err := exchange.FetchClosedOrders("BTC/USDT", nil, nil, nil)
// 所有订单 (未成交 + 已成交)
allOrders, err := exchange.FetchOrders("BTC/USDT", nil, nil, nil)
// 根据 ID 获取单个订单
order, err := exchange.FetchOrder(orderId, "BTC/USDT", nil)
// 最近的公共交易
limit := 10
trades, err := exchange.FetchTrades("BTC/USDT", nil, &limit, nil)
// 您的交易记录 (需要认证)
myTrades, err := exchange.FetchMyTrades("BTC/USDT", nil, nil, nil)
// 取消单个订单
err := exchange.CancelOrder(orderId, "BTC/USDT", nil)
// 取消某个交易对的所有订单
err := exchange.CancelAllOrders("BTC/USDT", nil)
import "github.com/ccxt/ccxt/go/v4/pro/binance"
exchange := binance.New()
defer exchange.Close()
for {
ticker, err := exchange.WatchTicker("BTC/USDT")
if err != nil {
panic(err)
}
fmt.Println(ticker.Last, ticker.Timestamp)
}
exchange := binance.New()
defer exchange.Close()
for {
orderbook, err := exchange.WatchOrderBook("BTC/USDT", nil)
if err != nil {
panic(err)
}
fmt.Println("最佳买价:", orderbook.Bids[0])
fmt.Println("最佳卖价:", orderbook.Asks[0])
}
exchange := binance.New()
defer exchange.Close()
for {
trades, err := exchange.WatchTrades("BTC/USDT", nil, nil, nil)
if err != nil {
panic(err)
}
for _, trade := range trades {
fmt.Println(trade.Price, trade.Amount, trade.Side)
}
}
exchange := binance.New()
exchange.ApiKey = "YOUR_API_KEY"
exchange.Secret = "YOUR_SECRET"
defer exchange.Close()
for {
orders, err := exchange.WatchOrders("BTC/USDT", nil, nil, nil)
if err != nil {
panic(err)
}
for _, order := range orders {
fmt.Println(order.Id, order.Status, order.Filled)
}
}
exchange := binance.New()
exchange.ApiKey = "YOUR_API_KEY"
exchange.Secret = "YOUR_SECRET"
defer exchange.Close()
for {
balance, err := exchange.WatchBalance()
if err != nil {
panic(err)
}
fmt.Println("BTC:", balance["BTC"])
fmt.Println("USDT:", balance["USDT"])
}
fetchTicker(symbol) - 获取单个交易对的行情fetchTickers([symbols]) - 一次性获取多个交易对的行情fetchBidsAsks([symbols]) - 获取多个交易对的最佳买/卖价fetchLastPrices([symbols]) - 获取最新价格fetchMarkPrices([symbols]) - 获取标记价格 (衍生品)fetchOrderBook(symbol, limit) - 获取订单簿fetchOrderBooks([symbols]) - 获取多个订单簿fetchL2OrderBook(symbol) - 获取二级订单簿fetchL3OrderBook(symbol) - 获取三级订单簿 (如果支持)fetchTrades(symbol, since, limit) - 获取公共交易记录fetchMyTrades(symbol, since, limit) - 获取您的交易记录 (需要认证)fetchOrderTrades(orderId, symbol) - 获取特定订单的交易记录fetchOHLCV(symbol, timeframe, since, limit) - 获取K线数据fetchIndexOHLCV(symbol, timeframe) - 获取指数价格 OHLCVfetchMarkOHLCV(symbol, timeframe) - 获取标记价格 OHLCVfetchPremiumIndexOHLCV(symbol, timeframe) - 获取溢价指数 OHLCVfetchBalance() - 获取账户余额 (需要认证)fetchAccounts() - 获取子账户fetchLedger(code, since, limit) - 获取账本历史fetchLedgerEntry(id, code) - 获取特定账本条目fetchTransactions(code, since, limit) - 获取交易记录fetchDeposits(code, since, limit) - 获取存款历史fetchWithdrawals(code, since, limit) - 获取提现历史fetchDepositsWithdrawals(code, since, limit) - 同时获取存款和提现记录createOrder(symbol, type, side, amount, price, params) - 创建订单 (通用)createLimitOrder(symbol, side, amount, price) - 创建限价单createMarketOrder(symbol, side, amount) - 创建市价单createLimitBuyOrder(symbol, amount, price) - 买入限价单createLimitSellOrder(symbol, amount, price) - 卖出限价单createMarketBuyOrder(symbol, amount) - 买入市价单createMarketSellOrder(symbol, amount) - 卖出市价单createMarketBuyOrderWithCost(symbol, cost) - 按指定成本买入createStopLimitOrder(symbol, side, amount, price, stopPrice) - 止损限价单createStopMarketOrder(symbol, side, amount, stopPrice) - 止损市价单createStopLossOrder(symbol, side, amount, stopPrice) - 止损单createTakeProfitOrder(symbol, side, amount, takeProfitPrice) - 止盈单createTrailingAmountOrder(symbol, side, amount, trailingAmount) - 跟踪止损 (金额)createTrailingPercentOrder(symbol, side, amount, trailingPercent) - 跟踪止损 (百分比)createTriggerOrder(symbol, side, amount, triggerPrice) - 触发单createPostOnlyOrder(symbol, side, amount, price) - 只做Maker单createReduceOnlyOrder(symbol, side, amount, price) - 只减仓单createOrders([orders]) - 一次性创建多个订单createOrderWithTakeProfitAndStopLoss(symbol, type, side, amount, price, tpPrice, slPrice) - OCO订单fetchOrder(orderId, symbol) - 获取单个订单fetchOrders(symbol, since, limit) - 获取所有订单fetchOpenOrders(symbol, since, limit) - 获取未成交订单fetchClosedOrders(symbol, since, limit) - 获取已成交订单fetchCanceledOrders(symbol, since, limit) - 获取已取消订单fetchOpenOrder(orderId, symbol) - 获取特定未成交订单fetchOrdersByStatus(status, symbol) - 按状态获取订单cancelOrder(orderId, symbol) - 取消单个订单cancelOrders([orderIds], symbol) - 取消多个订单cancelAllOrders(symbol) - 取消某个交易对的所有订单editOrder(orderId, symbol, type, side, amount, price) - 修改订单fetchBorrowRate(code) - 获取保证金借贷利率fetchBorrowRates([codes]) - 获取多个借贷利率fetchBorrowRateHistory(code, since, limit) - 历史借贷利率fetchCrossBorrowRate(code) - 全仓保证金借贷利率fetchIsolatedBorrowRate(symbol, code) - 逐仓保证金借贷利率borrowMargin(code, amount, symbol) - 借入保证金repayMargin(code, amount, symbol) - 偿还保证金fetchLeverage(symbol) - 获取杠杆倍数setLeverage(leverage, symbol) - 设置杠杆倍数fetchLeverageTiers(symbols) - 获取杠杆层级fetchMarketLeverageTiers(symbol) - 获取市场杠杆层级setMarginMode(marginMode, symbol) - 设置保证金模式 (全仓/逐仓)fetchMarginMode(symbol) - 获取保证金模式fetchPosition(symbol) - 获取单个持仓fetchPositions([symbols]) - 获取所有持仓fetchPositionsForSymbol(symbol) - 获取某个交易对的持仓fetchPositionHistory(symbol, since, limit) - 持仓历史fetchPositionsHistory(symbols, since, limit) - 多个持仓历史fetchPositionMode(symbol) - 获取持仓模式 (单向/对冲)setPositionMode(hedged, symbol) - 设置持仓模式closePosition(symbol, side) - 平仓closeAllPositions() - 平掉所有仓位fetchFundingRate(symbol) - 当前资金费率fetchFundingRates([symbols]) - 多个资金费率fetchFundingRateHistory(symbol, since, limit) - 资金费率历史fetchFundingHistory(symbol, since, limit) - 您的资金费用支付记录fetchFundingInterval(symbol) - 资金费率间隔fetchSettlementHistory(symbol, since, limit) - 结算历史fetchMySettlementHistory(symbol, since, limit) - 您的结算历史fetchOpenInterest(symbol) - 交易对的未平仓合约fetchOpenInterests([symbols]) - 多个未平仓合约fetchOpenInterestHistory(symbol, timeframe, since, limit) - 未平仓合约历史fetchLiquidations(symbol, since, limit) - 公共强平记录fetchMyLiquidations(symbol, since, limit) - 您的强平记录fetchOption(symbol) - 获取期权信息fetchOptionChain(code) - 获取期权链fetchGreeks(symbol) - 获取期权希腊值fetchVolatilityHistory(code, since, limit) - 波动率历史fetchUnderlyingAssets() - 获取标的资产fetchTradingFee(symbol) - 交易对的交易手续费fetchTradingFees([symbols]) - 多个交易对的交易手续费fetchTradingLimits([symbols]) - 交易限制fetchTransactionFee(code) - 交易/提现手续费fetchTransactionFees([codes]) - 多个币种的交易手续费fetchDepositWithdrawFee(code) - 存款/提现手续费fetchDepositWithdrawFees([codes]) - 多个币种的存款/提现手续费fetchDepositAddress(code, params) - 获取存款地址fetchDepositAddresses([codes]) - 多个存款地址fetchDepositAddressesByNetwork(code) - 按网络获取地址createDepositAddress(code, params) - 创建新的存款地址fetchDeposit(id, code) - 获取单笔存款记录fetchWithdrawal(id, code) - 获取单笔提现记录fetchWithdrawAddresses(code) - 获取提现地址fetchWithdrawalWhitelist(code) - 获取白名单withdraw(code, amount, address, tag, params) - 提现资金deposit(code, amount, params) - 存款资金 (如果支持)transfer(code, amount, fromAccount, toAccount) - 内部转账fetchTransfer(id, code) - 获取转账信息fetchTransfers(code, since, limit) - 获取转账历史fetchConvertCurrencies() - 可兑换的币种fetchConvertQuote(fromCode, toCode, amount) - 获取兑换报价createConvertTrade(fromCode, toCode, amount) - 执行兑换fetchConvertTrade(id) - 获取兑换交易记录fetchConvertTradeHistory(code, since, limit) - 兑换历史fetchMarkets() - 获取所有市场fetchCurrencies() - 获取所有币种fetchTime() - 获取交易所服务器时间fetchStatus() - 获取交易所状态fetchBorrowInterest(code, symbol, since, limit) - 已支付的借贷利息fetchLongShortRatio(symbol, timeframe, since, limit) - 多空比率fetchLongShortRatioHistory(symbol, timeframe, since, limit) - 多空比率历史所有 REST 方法都有对应的 WebSocket 版本,前缀为 watch*:
watchTicker(symbol) - 监控单个行情watchTickers([symbols]) - 监控多个行情watchOrderBook(symbol) - 监控订单簿更新watchOrderBookForSymbols([symbols]) - 监控多个订单簿watchTrades(symbol) - 监控公共交易watchOHLCV(symbol, timeframe) - 监控K线更新watchBidsAsks([symbols]) - 监控最佳买/卖价watchBalance() - 监控余额更新watchOrders(symbol) - 监控您的订单更新watchMyTrades(symbol) - 监控您的交易更新watchPositions([symbols]) - 监控持仓更新watchPositionsForSymbol(symbol) - 监控特定交易对的持仓标有 🔒 的方法需要 API 凭证:
create* 方法 (创建订单、地址)cancel* 方法 (取消订单)edit* 方法 (修改订单)fetchMy* 方法 (您的交易、订单)fetchBalance, fetchLedger, fetchAccountswithdraw, transfer, depositwatchBalance, watchOrders, watchMyTrades, watchPositions并非所有交易所都支持所有方法。使用前请检查:
// 检查方法是否支持
if (exchange.has['fetchOHLCV']) {
const candles = await exchange.fetchOHLCV('BTC/USDT', '1h')
}
// 检查多个功能
console.log(exchange.has)
// {
// fetchTicker: true,
// fetchOHLCV: true,
// fetchMyTrades: true,
// fetchPositions: false,
// ...
// }
fetch* - REST API 方法 (HTTP 请求)watch* - WebSocket 方法 (实时流)create* - 创建新资源 (订单、地址)cancel* - 取消现有资源edit* - 修改现有资源set* - 配置设置 (杠杆、保证金模式)*Ws 后缀 - WebSocket 变体 (部分交易所)CCXT 支持 HTTP、HTTPS 和 SOCKS 代理,适用于 REST 和 WebSocket 连接。
// HTTP 代理
exchange.httpProxy = 'http://your-proxy-host:port'
// HTTPS 代理
exchange.httpsProxy = 'https://your-proxy-host:port'
// SOCKS 代理
exchange.socksProxy = 'socks://your-proxy-host:port'
// 带认证的代理
exchange.httpProxy = 'http://user:pass@proxy-host:port'
WebSocket 连接也遵循代理设置:
exchange.httpsProxy = 'https://proxy:8080'
// WebSocket 连接将使用此代理
exchange.httpProxy = 'http://localhost:8080'
try {
await exchange.fetchTicker('BTC/USDT')
console.log('代理工作正常!')
} catch (error) {
console.error('代理连接失败:', error)
}
部分交易所提供 REST 方法的 WebSocket 变体,用于更快的下单和管理。这些方法使用 *Ws 后缀:
创建订单:
createOrderWs - 通过 WebSocket 创建订单 (比 REST 更快)createLimitOrderWs - 通过 WebSocket 创建限价单createMarketOrderWs - 通过 WebSocket 创建市价单createLimitBuyOrderWs - 通过 WebSocket 买入限价单createLimitSellOrderWs - 通过 WebSocket 卖出限价单createMarketBuyOrderWs - 通过 WebSocket 买入市价单createMarketSellOrderWs - 通过 WebSocket 卖出市价单createStopLimitOrderWs - 通过 WebSocket 创建止损限价单createStopMarketOrderWs - 通过 WebSocket 创建止损市价单createStopLossOrderWs - 通过 WebSocket 创建止损单createTakeProfitOrderWs - 通过 WebSocket 创建止盈单createTrailingAmountOrderWs - 通过 WebSocket 创建跟踪止损 (金额)createTrailingPercentOrderWs - 通过 WebSocket 创建跟踪止损 (百分比)createPostOnlyOrderWs - 通过 WebSocket 创建只做Maker单createReduceOnlyOrderWs - 通过 WebSocket 创建只减仓单管理订单:
editOrderWs - 通过 WebSocket 修改订单cancelOrderWs - 通过 WebSocket 取消订单 (比 REST 更快)cancelOrdersWs - 通过 WebSocket 取消多个订单cancelAllOrdersWs - 通过 WebSocket 取消所有订单获取数据:
fetchOrderWs - 通过 WebSocket 获取订单fetchOrdersWs - 通过 WebSocket 获取订单列表fetchOpenOrdersWs - 通过 WebSocket 获取未成交订单fetchClosedOrdersWs - 通过 WebSocket 获取已成交订单fetchMyTradesWs - 通过 WebSocket 获取您的交易记录fetchBalanceWs - 通过 WebSocket 获取余额fetchPositionWs - 通过 WebSocket 获取持仓fetchPositionsWs - 通过 WebSocket 获取所有持仓fetchPositionsForSymbolWs - 通过 WebSocket 获取特定交易对的持仓fetchTradingFeesWs - 通过 WebSocket 获取交易手续费使用 *Ws 方法当:
使用 REST 方法当:
REST API (较慢,更可靠):
const order = await exchange.createOrder('BTC/USDT', 'limit', 'buy', 0.01, 50000)
WebSocket API (较快,更低延迟):
const order = await exchange.createOrderWs('BTC/USDT', 'limit', 'buy', 0.01, 50000)
并非所有交易所都支持 WebSocket 交易方法:
if (exchange.has['createOrderWs']) {
// 交易所支持 WebSocket 下单
const order = await exchange.createOrderWs('BTC/USDT', 'limit', 'buy', 0.01, 50000)
} else {
// 回退到 REST
const order = await exchange.createOrder('BTC/USDT', 'limit', 'buy', 0.01, 50000)
}
import "os"
// 在实例化时设置
exchange := binance.New()
exchange.ApiKey = os.Getenv("BINANCE_API_KEY")
exchange.Secret = os.Getenv("BINANCE_SECRET")
exchange.EnableRateLimit = true
balance, err := exchange.FetchBalance()
if err != nil {
if _, ok := err.(*ccxt.AuthenticationError); ok {
fmt.Println("API 凭证无效")
} else {
panic(err)
}
} else {
fmt.Println("认证成功!")
}
BaseError
├─ NetworkError (可恢复 - 可重试)
│ ├─ RequestTimeout
│ ├─ ExchangeNotAvailable
│ ├─ RateLimitExceeded
│ └─ DDoSProtection
└─ ExchangeError (不可恢复 - 不要重试)
├─ AuthenticationError
├─ InsufficientFunds
├─ InvalidOrder
└─ NotSupported
import "github.com/ccxt/ccxt/go/v4/ccxt"
ticker, err := exchange.FetchTicker("BTC/USDT")
if err != nil {
switch e := err.(type) {
case *ccxt.NetworkError:
fmt.Println("网络错误 - 重试:", e.Message)
case *ccxt.ExchangeError:
fmt.Println("交易所错误 - 不要重试:", e.Message)
default:
fmt.Println("未知错误:", err)
}
}
order, err := exchange.CreateOrder("BTC/USDT", "limit", "buy", 0.01, 50000, nil)
if err != nil {
switch err.(type) {
case *ccxt.InsufficientFunds:
fmt.Println("余额不足")
case *ccxt.InvalidOrder:
fmt.Println("订单参数无效")
case *ccxt.RateLimitExceeded:
fmt.Println("达到频率限制 - 等待后重试")
time.Sleep(1 * time.Second)
case *ccxt.AuthenticationError:
fmt.Println("检查您的 API 凭证")
default:
panic(err)
}
}
import "time"
func fetchWithRetry(exchange *binance.Exchange, maxRetries int) (*ccxt.Ticker, error) {
for i := 0; i < maxRetries; i++ {
ticker, err := exchange.FetchTicker("BTC/USDT")
if err == nil {
return ticker, nil
}
if _, ok := err.(*ccxt.NetworkError); ok && i < maxRetries-1 {
fmt.Printf("重试 %d/%d\n", i+1, maxRetries)
time.Sleep(time.Duration(i+1) * time.Second) // 指数退避
} else {
return nil, err
}
}
return nil, fmt.Errorf("所有重试均失败")
}
exchange := binance.New()
exchange.EnableRateLimit = true // 自动限制请求频率
import "time"
exchange.FetchTicker("BTC/USDT")
time.Sleep(time.Duration(exchange.RateLimit) * time.Millisecond)
exchange.FetchTicker("ETH/USDT")
fmt.Println(exchange.RateLimit) // 请求间隔毫秒数
// 错误 - 忽略错误
ticker, _ := exchange.FetchTicker("BTC/USDT")
fmt.Println(ticker.Last) // 如果 ticker 为 nil 可能会 panic!
// 正确 - 检查错误
ticker, err := exchange.FetchTicker("BTC/USDT")
if err != nil {
panic(err)
}
fmt.Println(ticker.Last)
// 错误 - 缺少 /v4
import "github.com/ccxt/ccxt/go/binance" // 错误!
// 正确 - 必须包含 /v4
import "github.com/ccxt/ccxt/go/v4/binance"
// 正确 - WebSocket 使用 /v4/pro
import "github.com/ccxt/ccxt/go/v4/pro/binance"
// 错误 - 浪费频率限制
for {
ticker, _ := exchange.FetchTicker("BTC/USDT") // REST
fmt.Println(ticker.Last)
time.Sleep(1 * time.Second)
}
// 正确 - 使用 WebSocket
import "github.com/ccxt/ccxt/go/v4/pro/binance"
exchange := binance.New()
defer exchange.Close()
for {
ticker, err := exchange.WatchTicker("BTC/USDT") // WebSocket
if err != nil {
panic(err)
}
fmt.Println(ticker.Last)
}
// 错误 - 内存泄漏
exchange := binance.New()
ticker, _ := exchange.WatchTicker("BTC/USDT")
// 忘记关闭!
// 正确 - 总是 defer Close()
exchange := binance.New()
defer exchange.Close()
for {
ticker, err := exchange.WatchTicker("BTC/USDT")
if err != nil {
break
}
fmt.Println(ticker.Last)
}
// 错误的交易对格式
"BTCUSDT" // 错误 - 没有分隔符
"BTC-USDT" // 错误 - 短横线分隔符
"btc/usdt" // 错误 - 小写
// 正确的交易对格式
"BTC/USDT" // 统一的 CCXT 格式
1. "package github.com/ccxt/ccxt/go/v4/binance: cannot find package"
go get github.com/ccxt/ccxt/go/v42. "RateLimitExceeded"
exchange.EnableRateLimit = true3. "AuthenticationError"
4. "InvalidNonce"
5. "InsufficientFunds"
balance["BTC"].Free)6. "ExchangeNotAvailable"
// 启用详细日志
exchange.Verbose = true
// 检查交易所功能
fmt.Println(exchange.Has)
// map[string]bool{
// "fetchTicker": true,
// "fetchOrderBook": true,
// "createOrder": true,
// ...
// }
// 检查市场信息
market := exchange.Markets["BTC/USDT"]
fmt.Println(market)
// 检查最后的请求/响应
fmt.Println(exchange.LastHttpResponse)
fmt.Println(exchange.LastJsonResponse)
A comprehensive guide to using CCXT in Go projects for cryptocurrency exchange integration.
go get github.com/ccxt/ccxt/go/v4
go get github.com/ccxt/ccxt/go/v4/pro
package main
import (
"fmt"
"github.com/ccxt/ccxt/go/v4/binance"
)
func main() {
exchange := binance.New()
markets, err := exchange.LoadMarkets()
if err != nil {
panic(err)
}
ticker, err := exchange.FetchTicker("BTC/USDT")
if err != nil {
panic(err)
}
fmt.Println(ticker)
}
package main
import (
"fmt"
"github.com/ccxt/ccxt/go/v4/pro/binance"
)
func main() {
exchange := binance.New()
defer exchange.Close()
for {
ticker, err := exchange.WatchTicker("BTC/USDT")
if err != nil {
panic(err)
}
fmt.Println(ticker.Last) // Live updates!
}
}
| Feature | REST API | WebSocket API |
|---|---|---|
| Use for | One-time queries, placing orders | Real-time monitoring, live price feeds |
| Import | github.com/ccxt/ccxt/go/v4/{exchange} | github.com/ccxt/ccxt/go/v4/pro/{exchange} |
| Methods | Fetch* (FetchTicker, FetchOrderBook) | Watch* (WatchTicker, WatchOrderBook) |
| Speed | Slower (HTTP request/response) | Faster (persistent connection) |
Important: All methods return (result, error) - always check errors!
import "github.com/ccxt/ccxt/go/v4/binance"
// Public API (no authentication)
exchange := binance.New()
exchange.EnableRateLimit = true // Recommended!
// Private API (with authentication)
exchange := binance.New()
exchange.ApiKey = "YOUR_API_KEY"
exchange.Secret = "YOUR_SECRET"
exchange.EnableRateLimit = true
import "github.com/ccxt/ccxt/go/v4/pro/binance"
// Public WebSocket
exchange := binance.New()
defer exchange.Close()
// Private WebSocket (with authentication)
exchange := binance.New()
exchange.ApiKey = "YOUR_API_KEY"
exchange.Secret = "YOUR_SECRET"
defer exchange.Close()
// Load all available trading pairs
markets, err := exchange.LoadMarkets()
if err != nil {
panic(err)
}
// Access market information
btcMarket := exchange.Market("BTC/USDT")
fmt.Println(btcMarket.Limits.Amount.Min) // Minimum order amount
// Single ticker
ticker, err := exchange.FetchTicker("BTC/USDT")
if err != nil {
panic(err)
}
fmt.Println(ticker.Last) // Last price
fmt.Println(ticker.Bid) // Best bid
fmt.Println(ticker.Ask) // Best ask
fmt.Println(ticker.Volume) // 24h volume
// Multiple tickers (if supported)
tickers, err := exchange.FetchTickers([]string{"BTC/USDT", "ETH/USDT"})
// Full orderbook
orderbook, err := exchange.FetchOrderBook("BTC/USDT", nil)
if err != nil {
panic(err)
}
fmt.Println(orderbook.Bids[0]) // [price, amount]
fmt.Println(orderbook.Asks[0]) // [price, amount]
// Limited depth
limit := 5
orderbook, err := exchange.FetchOrderBook("BTC/USDT", &limit)
// Buy limit order
order, err := exchange.CreateLimitBuyOrder("BTC/USDT", 0.01, 50000, nil)
if err != nil {
panic(err)
}
fmt.Println(order.Id)
// Sell limit order
order, err := exchange.CreateLimitSellOrder("BTC/USDT", 0.01, 60000, nil)
// Generic limit order
order, err := exchange.CreateOrder("BTC/USDT", "limit", "buy", 0.01, 50000, nil)
// Buy market order
order, err := exchange.CreateMarketBuyOrder("BTC/USDT", 0.01, nil)
// Sell market order
order, err := exchange.CreateMarketSellOrder("BTC/USDT", 0.01, nil)
// Generic market order
order, err := exchange.CreateOrder("BTC/USDT", "market", "sell", 0.01, nil, nil)
balance, err := exchange.FetchBalance()
if err != nil {
panic(err)
}
fmt.Println(balance["BTC"].Free) // Available balance
fmt.Println(balance["BTC"].Used) // Balance in orders
fmt.Println(balance["BTC"].Total) // Total balance
// Open orders
openOrders, err := exchange.FetchOpenOrders("BTC/USDT", nil, nil, nil)
// Closed orders
closedOrders, err := exchange.FetchClosedOrders("BTC/USDT", nil, nil, nil)
// All orders (open + closed)
allOrders, err := exchange.FetchOrders("BTC/USDT", nil, nil, nil)
// Single order by ID
order, err := exchange.FetchOrder(orderId, "BTC/USDT", nil)
// Recent public trades
limit := 10
trades, err := exchange.FetchTrades("BTC/USDT", nil, &limit, nil)
// Your trades (requires authentication)
myTrades, err := exchange.FetchMyTrades("BTC/USDT", nil, nil, nil)
// Cancel single order
err := exchange.CancelOrder(orderId, "BTC/USDT", nil)
// Cancel all orders for a symbol
err := exchange.CancelAllOrders("BTC/USDT", nil)
import "github.com/ccxt/ccxt/go/v4/pro/binance"
exchange := binance.New()
defer exchange.Close()
for {
ticker, err := exchange.WatchTicker("BTC/USDT")
if err != nil {
panic(err)
}
fmt.Println(ticker.Last, ticker.Timestamp)
}
exchange := binance.New()
defer exchange.Close()
for {
orderbook, err := exchange.WatchOrderBook("BTC/USDT", nil)
if err != nil {
panic(err)
}
fmt.Println("Best bid:", orderbook.Bids[0])
fmt.Println("Best ask:", orderbook.Asks[0])
}
exchange := binance.New()
defer exchange.Close()
for {
trades, err := exchange.WatchTrades("BTC/USDT", nil, nil, nil)
if err != nil {
panic(err)
}
for _, trade := range trades {
fmt.Println(trade.Price, trade.Amount, trade.Side)
}
}
exchange := binance.New()
exchange.ApiKey = "YOUR_API_KEY"
exchange.Secret = "YOUR_SECRET"
defer exchange.Close()
for {
orders, err := exchange.WatchOrders("BTC/USDT", nil, nil, nil)
if err != nil {
panic(err)
}
for _, order := range orders {
fmt.Println(order.Id, order.Status, order.Filled)
}
}
exchange := binance.New()
exchange.ApiKey = "YOUR_API_KEY"
exchange.Secret = "YOUR_SECRET"
defer exchange.Close()
for {
balance, err := exchange.WatchBalance()
if err != nil {
panic(err)
}
fmt.Println("BTC:", balance["BTC"])
fmt.Println("USDT:", balance["USDT"])
}
fetchTicker(symbol) - Fetch ticker for one symbolfetchTickers([symbols]) - Fetch multiple tickers at oncefetchBidsAsks([symbols]) - Fetch best bid/ask for multiple symbolsfetchLastPrices([symbols]) - Fetch last pricesfetchMarkPrices([symbols]) - Fetch mark prices (derivatives)fetchOrderBook(symbol, limit) - Fetch order bookfetchOrderBooks([symbols]) - Fetch multiple order booksfetchL2OrderBook(symbol) - Fetch level 2 order bookfetchL3OrderBook(symbol) - Fetch level 3 order book (if supported)fetchTrades(symbol, since, limit) - Fetch public tradesfetchMyTrades(symbol, since, limit) - Fetch your trades (auth required)fetchOrderTrades(orderId, symbol) - Fetch trades for specific orderfetchOHLCV(symbol, timeframe, since, limit) - Fetch candlestick datafetchIndexOHLCV(symbol, timeframe) - Fetch index price OHLCVfetchMarkOHLCV(symbol, timeframe) - Fetch mark price OHLCVfetchPremiumIndexOHLCV(symbol, timeframe) - Fetch premium index OHLCVfetchBalance() - Fetch account balance (auth required)fetchAccounts() - Fetch sub-accountsfetchLedger(code, since, limit) - Fetch ledger historyfetchLedgerEntry(id, code) - Fetch specific ledger entryfetchTransactions(code, since, limit) - Fetch transactionsfetchDeposits(code, since, limit) - Fetch deposit historyfetchWithdrawals(code, since, limit) - Fetch withdrawal historyfetchDepositsWithdrawals(code, since, limit) - Fetch both deposits and withdrawalscreateOrder(symbol, type, side, amount, price, params) - Create order (generic)createLimitOrder(symbol, side, amount, price) - Create limit ordercreateMarketOrder(symbol, side, amount) - Create market ordercreateLimitBuyOrder(symbol, amount, price) - Buy limit ordercreateLimitSellOrder(symbol, amount, price) - Sell limit ordercreateMarketBuyOrder(symbol, amount) - Buy market ordercreateMarketSellOrder(symbol, amount) - Sell market ordercreateMarketBuyOrderWithCost(symbol, cost) - Buy with specific costfetchOrder(orderId, symbol) - Fetch single orderfetchOrders(symbol, since, limit) - Fetch all ordersfetchOpenOrders(symbol, since, limit) - Fetch open ordersfetchClosedOrders(symbol, since, limit) - Fetch closed ordersfetchCanceledOrders(symbol, since, limit) - Fetch canceled ordersfetchOpenOrder(orderId, symbol) - Fetch specific open orderfetchOrdersByStatus(status, symbol) - Fetch orders by statuscancelOrder(orderId, symbol) - Cancel single ordercancelOrders([orderIds], symbol) - Cancel multiple ordersfetchBorrowRate(code) - Fetch borrow rate for marginfetchBorrowRates([codes]) - Fetch multiple borrow ratesfetchBorrowRateHistory(code, since, limit) - Historical borrow ratesfetchCrossBorrowRate(code) - Cross margin borrow ratefetchIsolatedBorrowRate(symbol, code) - Isolated margin borrow rateborrowMargin(code, amount, symbol) - Borrow marginrepayMargin(code, amount, symbol) - Repay marginfetchLeverage(symbol) - Fetch leveragesetLeverage(leverage, symbol) - Set leveragefetchPosition(symbol) - Fetch single positionfetchPositions([symbols]) - Fetch all positionsfetchPositionsForSymbol(symbol) - Fetch positions for symbolfetchPositionHistory(symbol, since, limit) - Position historyfetchPositionsHistory(symbols, since, limit) - Multiple position historyfetchPositionMode(symbol) - Fetch position mode (one-way/hedge)setPositionMode(hedged, symbol) - Set position modeclosePosition(symbol, side) - Close positioncloseAllPositions() - Close all positionsfetchFundingRate(symbol) - Current funding ratefetchFundingRates([symbols]) - Multiple funding ratesfetchFundingRateHistory(symbol, since, limit) - Funding rate historyfetchFundingHistory(symbol, since, limit) - Your funding paymentsfetchFundingInterval(symbol) - Funding intervalfetchSettlementHistory(symbol, since, limit) - Settlement historyfetchMySettlementHistory(symbol, since, limit) - Your settlement historyfetchOpenInterest(symbol) - Open interest for symbolfetchOpenInterests([symbols]) - Multiple open interestsfetchOpenInterestHistory(symbol, timeframe, since, limit) - OI historyfetchLiquidations(symbol, since, limit) - Public liquidationsfetchMyLiquidations(symbol, since, limit) - Your liquidationsfetchOption(symbol) - Fetch option infofetchOptionChain(code) - Fetch option chainfetchGreeks(symbol) - Fetch option greeksfetchVolatilityHistory(code, since, limit) - Volatility historyfetchUnderlyingAssets() - Fetch underlying assetsfetchTradingFee(symbol) - Trading fee for symbolfetchTradingFees([symbols]) - Trading fees for multiple symbolsfetchTradingLimits([symbols]) - Trading limitsfetchTransactionFee(code) - Transaction/withdrawal feefetchTransactionFees([codes]) - Multiple transaction feesfetchDepositWithdrawFee(code) - Deposit/withdrawal feefetchDepositWithdrawFees([codes]) - Multiple deposit/withdraw feesfetchDepositAddress(code, params) - Get deposit addressfetchDepositAddresses([codes]) - Multiple deposit addressesfetchDepositAddressesByNetwork(code) - Addresses by networkcreateDepositAddress(code, params) - Create new deposit addressfetchDeposit(id, code) - Fetch single depositfetchWithdrawal(id, code) - Fetch single withdrawalfetchWithdrawAddresses(code) - Fetch withdrawal addressesfetchWithdrawalWhitelist(code) - Fetch whitelistwithdraw(code, amount, address, tag, params) - Withdraw fundstransfer(code, amount, fromAccount, toAccount) - Internal transferfetchTransfer(id, code) - Fetch transfer infofetchTransfers(code, since, limit) - Fetch transfer historyfetchConvertCurrencies() - Currencies available for convertfetchConvertQuote(fromCode, toCode, amount) - Get conversion quotecreateConvertTrade(fromCode, toCode, amount) - Execute conversionfetchConvertTrade(id) - Fetch convert tradefetchConvertTradeHistory(code, since, limit) - Convert historyfetchMarkets() - Fetch all marketsfetchCurrencies() - Fetch all currenciesfetchTime() - Fetch exchange server timefetchStatus() - Fetch exchange statusfetchBorrowInterest(code, symbol, since, limit) - Borrow interest paidfetchLongShortRatio(symbol, timeframe, since, limit) - Long/short ratiofetchLongShortRatioHistory(symbol, timeframe, since, limit) - L/S ratio historyAll REST methods have WebSocket equivalents with watch* prefix:
watchTicker(symbol) - Watch single tickerwatchTickers([symbols]) - Watch multiple tickerswatchOrderBook(symbol) - Watch order book updateswatchOrderBookForSymbols([symbols]) - Watch multiple order bookswatchTrades(symbol) - Watch public tradeswatchOHLCV(symbol, timeframe) - Watch candlestick updateswatchBidsAsks([symbols]) - Watch best bid/askwatchBalance() - Watch balance updateswatchOrders(symbol) - Watch your order updateswatchMyTrades(symbol) - Watch your trade updateswatchPositions([symbols]) - Watch position updateswatchPositionsForSymbol(symbol) - Watch positions for symbolMethods marked with 🔒 require API credentials:
create* methods (creating orders, addresses)cancel* methods (canceling orders)edit* methods (modifying orders)fetchMy* methods (your trades, orders)fetchBalance, fetchLedger, fetchAccountswithdraw, transfer, depositNot all exchanges support all methods. Check before using:
// Check if method is supported
if (exchange.has['fetchOHLCV']) {
const candles = await exchange.fetchOHLCV('BTC/USDT', '1h')
}
// Check multiple capabilities
console.log(exchange.has)
// {
// fetchTicker: true,
// fetchOHLCV: true,
// fetchMyTrades: true,
// fetchPositions: false,
// ...
// }
fetch* - REST API methods (HTTP requests)watch* - WebSocket methods (real-time streams)create* - Create new resources (orders, addresses)cancel* - Cancel existing resourcesedit* - Modify existing resourcesset* - Configure settings (leverage, margin mode)*Ws suffix - WebSocket variant (some exchanges)CCXT supports HTTP, HTTPS, and SOCKS proxies for both REST and WebSocket connections.
// HTTP Proxy
exchange.httpProxy = 'http://your-proxy-host:port'
// HTTPS Proxy
exchange.httpsProxy = 'https://your-proxy-host:port'
// SOCKS Proxy
exchange.socksProxy = 'socks://your-proxy-host:port'
// Proxy with authentication
exchange.httpProxy = 'http://user:pass@proxy-host:port'
WebSocket connections also respect proxy settings:
exchange.httpsProxy = 'https://proxy:8080'
// WebSocket connections will use this proxy
exchange.httpProxy = 'http://localhost:8080'
try {
await exchange.fetchTicker('BTC/USDT')
console.log('Proxy working!')
} catch (error) {
console.error('Proxy connection failed:', error)
}
Some exchanges provide WebSocket variants of REST methods for faster order placement and management. These use the *Ws suffix:
Creating Orders:
createOrderWs - Create order via WebSocket (faster than REST)createLimitOrderWs - Create limit order via WebSocketcreateMarketOrderWs - Create market order via WebSocketcreateLimitBuyOrderWs - Buy limit order via WebSocketcreateLimitSellOrderWs - Sell limit order via WebSocketcreateMarketBuyOrderWs - Buy market order via WebSocketcreateMarketSellOrderWs - Sell market order via WebSocketcreateStopLimitOrderWs - Stop-limit order via WebSocketcreateStopMarketOrderWs - Stop-market order via WebSocketManaging Orders:
editOrderWs - Edit order via WebSocketcancelOrderWs - Cancel order via WebSocket (faster than REST)cancelOrdersWs - Cancel multiple orders via WebSocketcancelAllOrdersWs - Cancel all orders via WebSocketFetching Data:
fetchOrderWs - Fetch order via WebSocketfetchOrdersWs - Fetch orders via WebSocketfetchOpenOrdersWs - Fetch open orders via WebSocketfetchClosedOrdersWs - Fetch closed orders via WebSocketfetchMyTradesWs - Fetch your trades via WebSocketfetchBalanceWs - Fetch balance via WebSocketfetchPositionWs - Fetch position via WebSocketfetchPositionsWs - Fetch positions via WebSocketfetchPositionsForSymbolWs - Fetch positions for symbol via WebSocketUse*Ws methods when:
Use REST methods when:
REST API (slower, more reliable):
const order = await exchange.createOrder('BTC/USDT', 'limit', 'buy', 0.01, 50000)
WebSocket API (faster, lower latency):
const order = await exchange.createOrderWs('BTC/USDT', 'limit', 'buy', 0.01, 50000)
Not all exchanges support WebSocket trading methods:
if (exchange.has['createOrderWs']) {
// Exchange supports WebSocket order creation
const order = await exchange.createOrderWs('BTC/USDT', 'limit', 'buy', 0.01, 50000)
} else {
// Fall back to REST
const order = await exchange.createOrder('BTC/USDT', 'limit', 'buy', 0.01, 50000)
}
import "os"
// During instantiation
exchange := binance.New()
exchange.ApiKey = os.Getenv("BINANCE_API_KEY")
exchange.Secret = os.Getenv("BINANCE_SECRET")
exchange.EnableRateLimit = true
balance, err := exchange.FetchBalance()
if err != nil {
if _, ok := err.(*ccxt.AuthenticationError); ok {
fmt.Println("Invalid API credentials")
} else {
panic(err)
}
} else {
fmt.Println("Authentication successful!")
}
BaseError
├─ NetworkError (recoverable - retry)
│ ├─ RequestTimeout
│ ├─ ExchangeNotAvailable
│ ├─ RateLimitExceeded
│ └─ DDoSProtection
└─ ExchangeError (non-recoverable - don't retry)
├─ AuthenticationError
├─ InsufficientFunds
├─ InvalidOrder
└─ NotSupported
import "github.com/ccxt/ccxt/go/v4/ccxt"
ticker, err := exchange.FetchTicker("BTC/USDT")
if err != nil {
switch e := err.(type) {
case *ccxt.NetworkError:
fmt.Println("Network error - retry:", e.Message)
case *ccxt.ExchangeError:
fmt.Println("Exchange error - do not retry:", e.Message)
default:
fmt.Println("Unknown error:", err)
}
}
order, err := exchange.CreateOrder("BTC/USDT", "limit", "buy", 0.01, 50000, nil)
if err != nil {
switch err.(type) {
case *ccxt.InsufficientFunds:
fmt.Println("Not enough balance")
case *ccxt.InvalidOrder:
fmt.Println("Invalid order parameters")
case *ccxt.RateLimitExceeded:
fmt.Println("Rate limit hit - wait before retrying")
time.Sleep(1 * time.Second)
case *ccxt.AuthenticationError:
fmt.Println("Check your API credentials")
default:
panic(err)
}
}
import "time"
func fetchWithRetry(exchange *binance.Exchange, maxRetries int) (*ccxt.Ticker, error) {
for i := 0; i < maxRetries; i++ {
ticker, err := exchange.FetchTicker("BTC/USDT")
if err == nil {
return ticker, nil
}
if _, ok := err.(*ccxt.NetworkError); ok && i < maxRetries-1 {
fmt.Printf("Retry %d/%d\n", i+1, maxRetries)
time.Sleep(time.Duration(i+1) * time.Second) // Exponential backoff
} else {
return nil, err
}
}
return nil, fmt.Errorf("all retries failed")
}
exchange := binance.New()
exchange.EnableRateLimit = true // Automatically throttles requests
import "time"
exchange.FetchTicker("BTC/USDT")
time.Sleep(time.Duration(exchange.RateLimit) * time.Millisecond)
exchange.FetchTicker("ETH/USDT")
fmt.Println(exchange.RateLimit) // Milliseconds between requests
// Wrong - ignores errors
ticker, _ := exchange.FetchTicker("BTC/USDT")
fmt.Println(ticker.Last) // May panic if ticker is nil!
// Correct - check errors
ticker, err := exchange.FetchTicker("BTC/USDT")
if err != nil {
panic(err)
}
fmt.Println(ticker.Last)
// Wrong - missing /v4
import "github.com/ccxt/ccxt/go/binance" // ERROR!
// Correct - must include /v4
import "github.com/ccxt/ccxt/go/v4/binance"
// Correct - WebSocket with /v4/pro
import "github.com/ccxt/ccxt/go/v4/pro/binance"
// Wrong - wastes rate limits
for {
ticker, _ := exchange.FetchTicker("BTC/USDT") // REST
fmt.Println(ticker.Last)
time.Sleep(1 * time.Second)
}
// Correct - use WebSocket
import "github.com/ccxt/ccxt/go/v4/pro/binance"
exchange := binance.New()
defer exchange.Close()
for {
ticker, err := exchange.WatchTicker("BTC/USDT") // WebSocket
if err != nil {
panic(err)
}
fmt.Println(ticker.Last)
}
// Wrong - memory leak
exchange := binance.New()
ticker, _ := exchange.WatchTicker("BTC/USDT")
// Forgot to close!
// Correct - always defer Close()
exchange := binance.New()
defer exchange.Close()
for {
ticker, err := exchange.WatchTicker("BTC/USDT")
if err != nil {
break
}
fmt.Println(ticker.Last)
}
// Wrong symbol formats
"BTCUSDT" // Wrong - no separator
"BTC-USDT" // Wrong - dash separator
"btc/usdt" // Wrong - lowercase
// Correct symbol format
"BTC/USDT" // Unified CCXT format
1. "package github.com/ccxt/ccxt/go/v4/binance: cannot find package"
go get github.com/ccxt/ccxt/go/v42. "RateLimitExceeded"
exchange.EnableRateLimit = true3. "AuthenticationError"
4. "InvalidNonce"
5. "InsufficientFunds"
balance["BTC"].Free)6. "ExchangeNotAvailable"
// Enable verbose logging
exchange.Verbose = true
// Check exchange capabilities
fmt.Println(exchange.Has)
// map[string]bool{
// "fetchTicker": true,
// "fetchOrderBook": true,
// "createOrder": true,
// ...
// }
// Check market information
market := exchange.Markets["BTC/USDT"]
fmt.Println(market)
// Check last request/response
fmt.Println(exchange.LastHttpResponse)
fmt.Println(exchange.LastJsonResponse)
Weekly Installs
48
Repository
GitHub Stars
41.3K
First Seen
Feb 5, 2026
Security Audits
Gen Agent Trust HubPassSocketPassSnykWarn
Installed on
opencode47
github-copilot47
codex47
kimi-cli47
amp47
gemini-cli47
飞书视频会议CLI工具:lark-vc技能详解,高效搜索与管理会议记录与纪要
47,500 周安装
云数据库成本优化指南:AWS/Azure/GCP 降本增效实战技能
189 周安装
Inspira UI - 120+动画Vue/Nuxt组件库 | TailwindCSS v4 + GSAP + Three.js
192 周安装
Framer Motion 最佳实践:42条性能优化规则,提升React动画性能与打包效率
187 周安装
无障碍审计专家:WCAG 2.2 合规性检查、网站可访问性测试与修复指南
193 周安装
产品营销管理 (PMM) 完整指南:市场定位、竞争情报、产品发布与销售赋能策略
187 周安装
使用Playwright进行Blazor端到端UI测试:完整指南与最佳实践
188 周安装
| Strict (1-2 req/sec) |
| More lenient (continuous stream) |
| Best for | Trading, account management | Price monitoring, arbitrage detection |
createStopLimitOrder(symbol, side, amount, price, stopPrice) - Stop-limit ordercreateStopMarketOrder(symbol, side, amount, stopPrice) - Stop-market ordercreateStopLossOrder(symbol, side, amount, stopPrice) - Stop-loss ordercreateTakeProfitOrder(symbol, side, amount, takeProfitPrice) - Take-profit ordercreateTrailingAmountOrder(symbol, side, amount, trailingAmount) - Trailing stopcreateTrailingPercentOrder(symbol, side, amount, trailingPercent) - Trailing stop %createTriggerOrder(symbol, side, amount, triggerPrice) - Trigger ordercreatePostOnlyOrder(symbol, side, amount, price) - Post-only ordercreateReduceOnlyOrder(symbol, side, amount, price) - Reduce-only ordercreateOrders([orders]) - Create multiple orders at oncecreateOrderWithTakeProfitAndStopLoss(symbol, type, side, amount, price, tpPrice, slPrice) - OCO ordercancelAllOrders(symbol) - Cancel all orders for symboleditOrder(orderId, symbol, type, side, amount, price) - Modify orderfetchLeverageTiers(symbols) - Fetch leverage tiersfetchMarketLeverageTiers(symbol) - Leverage tiers for marketsetMarginMode(marginMode, symbol) - Set margin mode (cross/isolated)fetchMarginMode(symbol) - Fetch margin modedeposit(code, amount, params) - Deposit funds (if supported)watchBalance, watchOrders, watchMyTrades, watchPositionscreateStopLossOrderWs - Stop-loss order via WebSocketcreateTakeProfitOrderWs - Take-profit order via WebSocketcreateTrailingAmountOrderWs - Trailing stop via WebSocketcreateTrailingPercentOrderWs - Trailing stop % via WebSocketcreatePostOnlyOrderWs - Post-only order via WebSocketcreateReduceOnlyOrderWs - Reduce-only order via WebSocketfetchTradingFeesWs - Fetch trading fees via WebSocket