Documentation ¶
Index ¶
- Constants
- type AccountBalance
- type Balance
- type Contract
- type Direction
- type Exchange
- type Fee
- type FuturesBalance
- type FuturesLiquidation
- type FuturesOrder
- type FuturesOrderbook
- type FuturesQuote
- type FuturesTrade
- type Order
- type OrderBook
- type OrderStatus
- type OrderType
- type Position
- type PositionCloseOrder
- type Quote
- type ResponseHandler
- type RestAPIExchange
- type Symbol
- type Ticker
- type Trade
- type TradeDetail
- type TradeHandler
- type WsAPIExchange
Constants ¶
View Source
const ( MIN1 = time.Minute MIN5 = time.Minute * 5 MIN15 = time.Minute * 15 MIN30 = time.Minute * 30 HOUR1 = time.Hour HOUR4 = time.Hour * 4 DAY1 = time.Hour * 24 MON1 = DAY1 * 30 WEEK1 = DAY1 * 7 YEAR1 = DAY1 * 365 )
View Source
const ( Open OrderStatus = 1 // open but not filled Closed = 2 // full filled Filled = 3 // part filled Cancelled = 4 )
Variables ¶
This section is empty.
Functions ¶
This section is empty.
Types ¶
type AccountBalance ¶ added in v0.28.0
type Contract ¶ added in v0.28.23
type Contract struct { // Futures contract // 合约标识 Name string `json:"name,omitempty"` // Futures contract type // 合约类型, inverse - 反向合约, direct - 正向合约 Type string `json:"type,omitempty"` // Multiplier used in converting from invoicing to settlement currency in quote futures // 双币种合约中,计价货币兑换为结算货币的乘数 QuoteMultiplier string `json:"quoteMultiplier,omitempty"` // Minimum leverage LeverageMin string `json:"leverage_min,omitempty"` // Maximum leverage LeverageMax string `json:"leverage_max,omitempty"` // Maintenance rate of margin MaintenanceRate string `json:"maintenance_rate,omitempty"` // Mark price type, internal - based on internal trading, index - based on external index price MarkType string `json:"mark_type,omitempty"` // Current mark price MarkPrice string `json:"mark_price,omitempty"` // Current index price IndexPrice string `json:"index_price,omitempty"` // Last trading price LastPrice string `json:"last_price,omitempty"` // Maker fee rate, where negative means rebate MakerFeeRate string `json:"maker_fee_rate,omitempty"` // Taker fee rate TakerFeeRate string `json:"taker_fee_rate,omitempty"` // Minimum order price increment OrderPriceRound string `json:"order_price_round,omitempty"` // Minimum mark price increment MarkPriceRound string `json:"mark_price_round,omitempty"` // Current funding rate FundingRate string `json:"funding_rate,omitempty"` // Funding application interval, unit in seconds FundingInterval int32 `json:"funding_interval,omitempty"` // Next funding time FundingNextApply float64 `json:"funding_next_apply,omitempty"` // Risk limit base RiskLimitBase string `json:"risk_limit_base,omitempty"` // Step of adjusting risk limit RiskLimitStep string `json:"risk_limit_step,omitempty"` // Maximum risk limit the contract allowed RiskLimitMax string `json:"risk_limit_max,omitempty"` // Minimum order size the contract allowed OrderSizeMin int64 `json:"order_size_min,omitempty"` // Maximum order size the contract allowed OrderSizeMax int64 `json:"order_size_max,omitempty"` // deviation between order price and current index price. If price of an order is denoted as order_price, it must meet the following condition: abs(order_price - mark_price) <= mark_price * order_price_deviate OrderPriceDeviate string `json:"order_price_deviate,omitempty"` // Referral fee rate discount RefDiscountRate string `json:"ref_discount_rate,omitempty"` // Referrer commission rate RefRebateRate string `json:"ref_rebate_rate,omitempty"` // Current orderbook ID OrderbookId int64 `json:"orderbook_id,omitempty"` // Current trade ID TradeId int64 `json:"trade_id,omitempty"` // Historical accumulation trade size TradeSize int64 `json:"trade_size,omitempty"` // Current total long position size PositionSize int64 `json:"position_size,omitempty"` // Configuration's last changed time ConfigChangeTime float64 `json:"config_change_time,omitempty"` // Contract is delisting // 合约下线中 InDelisting bool `json:"in_delisting,omitempty"` // Maximum number of open orders // 最多挂单数量 OrdersLimit int32 `json:"orders_limit,omitempty"` }
type Direction ¶ added in v0.29.0
type Direction = string
const ( TradeDirectionBuy Direction = "buy" TradeDirectionSell = "sell" )
火币的交易明细里直接使用了buy/sell,因此不需要转换。
type Exchange ¶ added in v0.13.0
type Exchange interface { RestAPIExchange WsAPIExchange }
common exchange interface, for all symbols, all crypto-exchanges
type FuturesBalance ¶ added in v0.28.23
type FuturesBalance struct { // Total assets, total = position_margin + order_margin + available Total decimal.Decimal `json:"total,omitempty"` // Unrealized PNL UnrealisedPnl decimal.Decimal `json:"unrealisedPNL,omitempty"` // Position margin PositionMargin decimal.Decimal `json:"positionMargin,omitempty"` // Order margin of unfinished orders OrderMargin decimal.Decimal `json:"orderMargin,omitempty"` // Available balance to transfer out or trade Available decimal.Decimal `json:"available,omitempty"` // Settle currency Currency string `json:"currency,omitempty"` // Whether dual mode is enabled Dual bool `json:"dual,omitempty"` }
type FuturesLiquidation ¶ added in v0.28.23
type FuturesLiquidation struct { // Liquidation time Time time.Time `json:"time,omitempty"` // Futures contract Contract string `json:"contract,omitempty"` // Position leverage. Not returned in public endpoints. Leverage int `json:"leverage,omitempty"` // Position size Size int64 `json:"size,omitempty"` // Position margin. Not returned in public endpoints. Margin decimal.Decimal `json:"margin,omitempty"` // Average entry price. Not returned in public endpoints. EntryPrice decimal.Decimal `json:"entryPrice,omitempty"` // Liquidation price. Not returned in public endpoints. LiqPrice decimal.Decimal `json:"liqPrice,omitempty"` // Mark price. Not returned in public endpoints. MarkPrice decimal.Decimal `json:"markPrice,omitempty"` // Liquidation order ID. Not returned in public endpoints. OrderId uint64 `json:"orderId,omitempty"` // Liquidation order price OrderPrice decimal.Decimal `json:"orderPrice,omitempty"` // Liquidation order average taker price FillPrice decimal.Decimal `json:"fillPrice,omitempty"` // Liquidation order maker size Left int64 `json:"left,omitempty"` }
type FuturesOrder ¶ added in v0.28.23
type FuturesOrder struct { // Futures order ID Id uint64 `json:"id,omitempty"` // User ID User uint64 `json:"user,omitempty"` // Order creation time CreateTime time.Time `json:"create_time,omitempty"` // Order finished time. Not returned if order is open FinishTime time.Time `json:"finish_time,omitempty"` // How the order is finished. - filled: all filled - cancelled: manually cancelled - liquidated: cancelled because of liquidation - ioc: time in force is `IOC`, finish immediately - auto_deleveraged: finished by ADL - reduce_only: cancelled because of increasing position while `reduce-only` set FinishAs string `json:"finish_as,omitempty"` // Order status - `open`: waiting to be traded - `finished`: finished Status string `json:"status,omitempty"` // Futures contract Contract string `json:"contract"` // Order size. Specify positive number to make a bid, and negative number to ask Size int64 `json:"size"` // Display size for iceberg order. 0 for non-iceberg. Note that you would pay the taker fee for the hidden size Iceberg int64 `json:"iceberg,omitempty"` // Order price. 0 for market order with `tif` set as `ioc` Price decimal.Decimal `json:"price,omitempty"` // Set as `true` to close the position, with `size` set to 0 Close bool `json:"close,omitempty"` // Is the order to close position IsClose bool `json:"is_close,omitempty"` // Set as `true` to be reduce-only order ReduceOnly bool `json:"reduce_only,omitempty"` // Is the order reduce-only IsReduceOnly bool `json:"is_reduce_only,omitempty"` // Is the order for liquidation IsLiq bool `json:"is_liq,omitempty"` // Time in force - gtc: GoodTillCancelled - ioc: ImmediateOrCancelled, taker only - poc: PendingOrCancelled, reduce-only Tif string `json:"tif,omitempty"` // Size left to be traded Left int64 `json:"left,omitempty"` // Fill price of the order FillPrice decimal.Decimal `json:"fill_price,omitempty"` // User defined information. If not empty, must follow the rules below: 1. prefixed with `t-` 2. no longer than 28 bytes without `t-` prefix 3. can only include 0-9, A-Z, a-z, underscore(_), hyphen(-) or dot(.) Besides user defined information, reserved contents are listed below, denoting how the order is created: - web: from web - api: from API - app: from mobile phones - auto_deleveraging: from ADL - liquidation: from liquidation - insurance: from insurance Text string `json:"text,omitempty"` // Taker fee rate TakerFee float64 `json:"takerFee,omitempty"` // Maker fee rate MakerFee float64 `json:"makerFee,omitempty"` // Reference user ID Reference uint64 `json:"reference,omitempty"` }
FuturesOrder, 期货单,即作为下单返回结果,也当作下单的入参。
type FuturesOrderbook ¶ added in v0.28.23
type FuturesOrderbook struct { Asks []FuturesQuote Bids []FuturesQuote }
func (FuturesOrderbook) String ¶ added in v0.28.23
func (o FuturesOrderbook) String() string
type FuturesQuote ¶ added in v0.28.23
type FuturesTrade ¶ added in v0.28.23
type FuturesTrade struct { // Trade ID Id uint64 `json:"id,omitempty"` // 个人成交记录有 OrderId OrderId uint64 `json:"orderId,omitempty"` // Trading time CreateTime time.Time `json:"createTime,omitempty"` // Futures contract Contract string `json:"contract,omitempty"` // Trading size Size int64 `json:"size,omitempty"` // Trading price Price decimal.Decimal `json:"price,omitempty"` // 个人成交记录有 Role, maker/taker Role string `json:"role,omitempty"` }
type Order ¶ added in v0.13.0
type Order struct { Id uint64 `json:"id"` // Id should be uint64 ClientOrderId string `json:"clientOrderId" bson:"clientOrderId"` // gate: limit // huobi: Type string `json:"type"` Symbol string `json:"symbol"` Price decimal.Decimal `json:"price"` Amount decimal.Decimal `json:"amount"` Time time.Time `json:"time"` Status string `json:"status"` FilledPrice decimal.Decimal `json:"filledPrice"` FilledAmount decimal.Decimal `json:"filledAmount"` Trades []Trade `json:"trades,omitempty"` }
Order is common order type between all exchanges, use for exchange interface
type OrderStatus ¶ added in v0.13.0
type OrderStatus = int
type Position ¶ added in v0.28.23
type Position struct { // User ID User int64 `json:"user,omitempty"` // Futures contract 合约标识 Contract string `json:"contract,omitempty"` // Position size 头寸大小 Size int64 `json:"size,omitempty"` // Position leverage. 0 means cross margin; positive number means isolated margin // 杠杆倍数,0代表全仓,正数代表逐仓 Leverage int `json:"leverage,omitempty"` // Position risk limit 风险限额 // 为了控制风险设置的持仓上限,若仓位上限增加,维持保证金和起始保证金要求也会提高 RiskLimit int `json:"riskLimit,omitempty"` // Maximum leverage under current risk limit // 当前风险限额下,允许的最大杠杆倍数 MaxLeverage int `json:"maxLeverage,omitempty"` // Maintenance rate under current risk limit // 当前风险限额下,维持保证金比例 MaintenanceRate float64 `json:"maintenance_rate,omitempty"` // Position value calculated in settlement currency // 按结算币种标记价格计算的合约价值 Value decimal.Decimal `json:"value,omitempty"` // Position margin 保证金 Margin decimal.Decimal `json:"margin,omitempty"` // Entry price 开仓价格 EntryPrice decimal.Decimal `json:"entry_price,omitempty"` // Liquidation price 爆仓价格 LiqPrice decimal.Decimal `json:"liq_price,omitempty"` // Current mark price 合约当前标记价格 MarkPrice decimal.Decimal `json:"mark_price,omitempty"` // Unrealized PNL 未实现盈亏 UnrealisedPnl decimal.Decimal `json:"unrealised_pnl,omitempty"` // Realized PNL 已实现盈亏 RealisedPnl decimal.Decimal `json:"realised_pnl,omitempty"` // History realized PNL 已平仓的仓位总盈亏 HistoryPnl decimal.Decimal `json:"history_pnl,omitempty"` // PNL of last position close 最近一次平仓的盈亏 LastClosePnl decimal.Decimal `json:"last_close_pnl,omitempty"` // ADL ranking, range from 1 to 5 // 自动减仓排名,共1-5个等级 AdlRanking int32 `json:"adl_ranking,omitempty"` // Current open orders 当前未完成委托数量 PendingOrders int32 `json:"pending_orders,omitempty"` // 当前平仓委托信息,如果没有平仓则为null CloseOrder *PositionCloseOrder `json:"close_order,omitempty"` // Position mode, including: - `single`: dual mode is not enabled- `dual_long`: long position in dual mode- `dual_short`: short position in dual mode // 持仓模式。包括: // - single: 单向持仓模式 // - dual_long: 双向持仓模式下的做多仓位 // - dual_short: 双向持仓模式下的做空仓位 Mode string `json:"mode,omitempty"` }
Futures position details
type PositionCloseOrder ¶ added in v0.28.23
type PositionCloseOrder struct { // Close order ID // 委托ID Id int64 `json:"id,omitempty"` // Close order price // 委托价格 Price decimal.Decimal `json:"price,omitempty"` // Is the close order from liquidation // 是否为强制平仓 IsLiq bool `json:"isLiq,omitempty"` }
Current close order if any, or `null`
type ResponseHandler ¶ added in v0.13.0
type ResponseHandler func(response interface{})
type RestAPIExchange ¶ added in v0.13.0
type RestAPIExchange interface { FormatSymbol(base, quote string) string AllSymbols(ctx context.Context) (s []Symbol, err error) GetSymbol(ctx context.Context, symbol string) (Symbol, error) GetFee(symbol string) (fee Fee, err error) SpotBalance() (map[string]decimal.Decimal, error) SpotAvailableBalance() (map[string]decimal.Decimal, error) LastPrice(symbol string) (decimal.Decimal, error) Last24hVolume(symbol string) (decimal.Decimal, error) CandleBySize(symbol string, period time.Duration, size int) (hs.Candle, error) CandleFrom(symbol, clientId string, period time.Duration, from, to time.Time) (hs.Candle, error) //PlaceOrder(orderType, symbol, clientOrderId string, price, amount decimal.Decimal) (uint64, error) BuyLimit(symbol, clientOrderId string, price, amount decimal.Decimal) (orderId uint64, err error) SellLimit(symbol, clientOrderId string, price, amount decimal.Decimal) (orderId uint64, err error) BuyMarket(symbol Symbol, clientOrderId string, total decimal.Decimal) (orderId uint64, err error) SellMarket(symbol Symbol, clientOrderId string, amount decimal.Decimal) (orderId uint64, err error) BuyStopLimit(symbol, clientOrderId string, price, amount, stopPrice decimal.Decimal) (orderId uint64, err error) SellStopLimit(symbol, clientOrderId string, price, amount, stopPrice decimal.Decimal) (orderId uint64, err error) GetOrderById(orderId uint64, symbol string) (Order, error) CancelOrder(symbol string, orderId uint64) error IsFullFilled(symbol string, orderId uint64) (Order, bool, error) }
common exchange interface for all symbols
type Symbol ¶ added in v0.13.0
type Symbol struct { Symbol string Disabled bool BaseCurrency string `json:"baseCurrency"` // 交易对中的基础币种, coin, eg. BTC QuoteCurrency string `json:"quoteCurrency"` // 交易对中的报价币种, cash, eg. USDT PricePrecision int32 `json:"pricePrecision"` AmountPrecision int32 `json:"amountPrecision"` LimitOrderMinAmount decimal.Decimal `json:"minAmount"` MinTotal decimal.Decimal `json:"minTotal"` }
type Ticker ¶
type Ticker struct { Id int64 Last decimal.Decimal // 最新成交价 LowestAsk decimal.Decimal // 卖1,卖方最低价 HighestBid decimal.Decimal // 买1,买方最高价 PercentChange decimal.Decimal // 涨跌百分比 BaseVolume decimal.Decimal // 交易量 QuoteVolume decimal.Decimal // 兑换货币交易量 High24hr decimal.Decimal // 24小时最高价 Low24hr decimal.Decimal // 24小时最低价 }
type Trade ¶ added in v0.13.0
type Trade struct { Id uint64 `json:"id"` // Id should be uint64 OrderId uint64 `json:"orderId"` Symbol string `json:"symbol,omitempty"` Type string `json:"type,omitempty"` // v4, side = buy/sell, role = maker/taker Side string `json:"side,omitempty"` Role string `json:"role,omitempty"` Price decimal.Decimal `json:"price"` Amount decimal.Decimal `json:"amount"` FeeCurrency string `json:"feeCurrency,omitempty"` FeeAmount decimal.Decimal `json:"feeAmount,omitempty"` Time time.Time `json:"time"` }
type TradeDetail ¶ added in v0.29.0
type TradeDetail struct { Id int64 `json:"id"` // trade id Price decimal.Decimal `json:"price"` Amount decimal.Decimal `json:"amount"` Timestamp int64 `json:"timestamp"` Direction Direction `json:"direction"` }
TradeDetail 是成交明细,不是个人账户成交历史,而是系统整体的成交明细(逐笔成交明细)。 这是统一各交易所差异后的结构。
type TradeHandler ¶ added in v0.29.0
type TradeHandler func([]TradeDetail)
TradeHandler 是订阅交易明细时的处理函数。 参数中的数据是按时间顺序排列,老数据在前,新数据在后,方便遍历和用TA分析。
type WsAPIExchange ¶ added in v0.13.0
type WsAPIExchange interface { SubscribeOrder(symbol, clientId string, responseHandler ResponseHandler) UnsubscribeOrder(symbol, clientId string) SubscribeCandlestick(symbol, clientId string, period time.Duration, responseHandler ResponseHandler) UnsubscribeCandlestick(symbol, clientId string, period time.Duration) SubscribeCandlestickWithReq(symbol, clientId string, period time.Duration, responseHandler ResponseHandler) UnsubscribeCandlestickWithReq(symbol, clientId string, period time.Duration) }
Click to show internal directories.
Click to hide internal directories.