Documentation
¶
Index ¶
- Constants
- Variables
- func FlateUnCompress(data []byte) ([]byte, error)
- func FloatToPrice(v float64, n int64, tickSize float64) string
- func FloatToString(v float64, n int64) string
- func GetParamHmacMD5Sign(secret, params string) (string, error)
- func GetParamHmacSHA1Sign(secret, params string) (string, error)
- func GetParamHmacSHA256Base64Sign(secret, params string) (string, error)
- func GetParamHmacSHA256Sign(secret, params string) (string, error)
- func GetParamHmacSHA512Base64Sign(hmac_key string, hmac_data string) string
- func GetParamHmacSHA512Sign(secret, params string) (string, error)
- func GetParamHmacSha384Sign(secret, params string) (string, error)
- func GetParamMD5Sign(secret, params string) (string, error)
- func GetPrecision(minSize float64) int
- func GetPrecisionInt64(minSize float64) int64
- func GetSHA(text string) (string, error)
- func GzipUnCompress(data []byte) ([]byte, error)
- func NewHttpRequest(client *http.Client, reqType, reqUrl, postData string, ...) ([]byte, error)
- func ToFloat64(v interface{}) float64
- func ToInt(v interface{}) int
- func ToInt64(v interface{}) int64
- func ToUint64(v interface{}) uint64
- func UUID() string
- func ValuesToJson(v url.Values) ([]byte, error)
- type APIConfig
- type Account
- type Currency
- type Depth
- type DepthRecord
- type DepthRecords
- type Error
- type FutureAPIConfig
- type FutureAccount
- type FutureAccountItem
- type FutureCandle
- type FutureContract
- type FutureContracts
- type FutureDepth
- type FutureKline
- type FutureOrder
- type FuturePosition
- type FutureRestAPI
- type FutureRule
- type FutureSubAccount
- type FutureTicker
- type FutureType
- type FutureWebsocketAPI
- type Kline
- type Loan
- type LoanStatus
- type MarginAccount
- type MarginRestAPI
- type MarginSubAccount
- type OHLC
- type Order
- type Pair
- type PlaceType
- type Rule
- type SpotRestAPI
- type SubAccount
- type SwapAccount
- type SwapAccountItem
- type SwapContract
- type SwapContracts
- type SwapDepth
- type SwapKline
- type SwapOrder
- type SwapPosition
- type SwapRestAPI
- type SwapTicker
- type Ticker
- type Trade
- type TradeSide
- type TradeStatus
- type WSRestartError
- type WSStopError
- type WsBuilder
- func (b *WsBuilder) Build() *WsConn
- func (b *WsBuilder) Dump() *WsBuilder
- func (b *WsBuilder) ErrorHandleFunc(f func(err error)) *WsBuilder
- func (b *WsBuilder) Heartbeat(data []byte, dataType int, t time.Duration) *WsBuilder
- func (b *WsBuilder) ProtoHandleFunc(f func([]byte) error) *WsBuilder
- func (b *WsBuilder) ProxyUrl(proxyUrl string) *WsBuilder
- func (b *WsBuilder) ReconnectIntervalTime(t time.Duration) *WsBuilder
- func (b *WsBuilder) ReqHeader(key, value string) *WsBuilder
- func (b *WsBuilder) UnCompressFunc(f func([]byte) ([]byte, error)) *WsBuilder
- func (b *WsBuilder) WsUrl(wsUrl string) *WsBuilder
- type WsConfig
- type WsConn
- func (ws *WsConn) CloseWs()
- func (ws *WsConn) HeartbeatTimer()
- func (ws *WsConn) NewWs() *WsConn
- func (ws *WsConn) ReConnect()
- func (ws *WsConn) ReConnectTimer()
- func (ws *WsConn) ReceiveMessage()
- func (ws *WsConn) SendJsonMessage(v interface{}) error
- func (ws *WsConn) SendTextMessage(data []byte) error
- func (ws *WsConn) Subscribe(subEvent interface{}) error
- func (ws *WsConn) UpdateActiveTime()
Constants ¶
View Source
const ( KLINE_PERIOD_1MIN = 1 + iota KLINE_PERIOD_3MIN KLINE_PERIOD_5MIN KLINE_PERIOD_15MIN KLINE_PERIOD_30MIN KLINE_PERIOD_60MIN KLINE_PERIOD_1H KLINE_PERIOD_2H KLINE_PERIOD_4H KLINE_PERIOD_6H KLINE_PERIOD_8H KLINE_PERIOD_12H KLINE_PERIOD_1DAY KLINE_PERIOD_3DAY KLINE_PERIOD_1WEEK KLINE_PERIOD_1MONTH KLINE_PERIOD_1YEAR )
k线周期
View Source
const ( THIS_WEEK_CONTRACT = "this_week" //周合约 NEXT_WEEK_CONTRACT = "next_week" //次周合约 QUARTER_CONTRACT = "quarter" //季度合约 NEXT_QUARTER_CONTRACT = "next_quarter" //次季合约 SWAP_CONTRACT = "swap" //永续合约 )
View Source
const ( SUBJECT_SETTLE = "settle" SUBJECT_COMMISSION = "commission" SUBJECT_FUNDING_FEE = "funding_fee" SUBJECT_FREEZE = "freeze" SUBJECT_UNFREEZE = "unfreeze" SUBJECT_COLLATERAL_TRANSFER_IN = "transfer_collateral_in" SUBJECT_COLLATERAL_TRANSFER_OUT = "transfer_collateral_out" SUBJECT_TRANSFER_IN = "transfer_in" SUBJECT_TRANSFER_OUT = "transfer_out" )
account flow subject
View Source
const ( OKEX = "okex" BINANCE = "binance" COINBASE = "coinbase" BITSTAMP = "bitstamp" GATE = "gate" KRAKEN = "kraken" )
exchanges const
View Source
const ( CROSS = "cross" ISOLATED = "isolated" )
View Source
const ( TRADE_TYPE_FUTURE = "future" TRADE_TYPE_SPOT = "spot" TRADE_TYPE_SWAP = "swap" TRADE_TYPE_MARGIN = "margin" )
View Source
const ( SETTLE_MODE_BASIS int64 = 1 SETTLE_MODE_COUNTER int64 = 2 )
View Source
const ( FUTURE_TYPE_LINEAR = "linear" FUTURE_TYPE_INVERSER = "inverse" )
View Source
const ( CONTRACT_STATUS_PREPARE = "preopen" CONTRACT_STATUS_LIVE = "live" CONTRACT_STATUS_SUSPEND = "suspend" CONTRACT_STATUS_CLOSE = "close" )
View Source
const (
GO_BIRTHDAY = "2006-01-02 15:04:05"
)
Variables ¶
View Source
var ( UNKNOWN = Currency{"UNKNOWN", ""} USD = Currency{"USD", ""} EUR = Currency{"EUR", ""} CNY = Currency{"CNY", ""} KRW = Currency{"KRW", ""} JPY = Currency{"JPY", ""} SGD = Currency{"SGD", ""} HKD = Currency{"HKD", ""} USDT = Currency{"USDT", ""} USDC = Currency{"USDC", "https://www.centre.io/"} PAX = Currency{"PAX", "https://www.paxos.com/"} DAI = Currency{"DAI", ""} BUSD = Currency{"BUSD", ""} BTC = Currency{"BTC", "https://bitcoin.org/"} XBT = Currency{"XBT", ""} BCH = Currency{"BCH", ""} LTC = Currency{"LTC", ""} ETH = Currency{"ETH", ""} ETC = Currency{"ETC", ""} EOS = Currency{"EOS", ""} BTS = Currency{"BTS", ""} QTUM = Currency{"QTUM", ""} SC = Currency{"SC", ""} ANS = Currency{"ANS", ""} ZEC = Currency{"ZEC", ""} DCR = Currency{"DCR", ""} XRP = Currency{"XRP", ""} NEO = Currency{"NEO", ""} BSV = Currency{"BSV", ""} LINK = Currency{"LINK", ""} XTZ = Currency{"XTZ", ""} DASH = Currency{"DASH", ""} ADA = Currency{"ADA", ""} DOT = Currency{"DOT", ""} FIL = Currency{"FIL", ""} SOL = Currency{"SOL", ""} ATOM = Currency{"ATOM", ""} MATIC = Currency{"MATIC", ""} AVAX = Currency{"AVAX", ""} ALGO = Currency{"ALGO", ""} AR = Currency{"AR", ""} UNI = Currency{"UNI", ""} SUSHI = Currency{"SUSHI", ""} AAVE = Currency{"AAVE", ""} COMP = Currency{"COMP", ""} YFI = Currency{"YFI", ""} YFII = Currency{"YFII", ""} OKB = Currency{"OKB", "OKB is a global utility token issued by OK Blockchain Foundation. "} HT = Currency{"HT", "HuoBi Token. "} BNB = Currency{"BNB", "BNB, or Binance Coin, is a cryptocurrency created by Binance. "} SHIT = Currency{"SHIT", "SHIT, There are some many shit coin in the market, we make the currency for dev."} )
View Source
var ( BTC_USD = Pair{Basis: BTC, Counter: USD} LTC_USD = Pair{Basis: LTC, Counter: USD} ETH_USD = Pair{Basis: ETH, Counter: USD} EOS_USD = Pair{Basis: EOS, Counter: USD} BTC_USDT = Pair{Basis: BTC, Counter: USDT} ETH_USDT = Pair{Basis: ETH, Counter: USDT} )
View Source
var PeriodMillisecond = map[int]int64{ KLINE_PERIOD_1MIN: 60 * 1000, KLINE_PERIOD_3MIN: 3 * 60 * 1000, KLINE_PERIOD_5MIN: 5 * 60 * 1000, KLINE_PERIOD_15MIN: 15 * 60 * 1000, KLINE_PERIOD_30MIN: 30 * 60 * 1000, KLINE_PERIOD_60MIN: 60 * 60 * 1000, KLINE_PERIOD_1H: 60 * 60 * 1000, KLINE_PERIOD_2H: 2 * 60 * 60 * 1000, KLINE_PERIOD_4H: 4 * 60 * 60 * 1000, KLINE_PERIOD_6H: 6 * 60 * 60 * 1000, KLINE_PERIOD_8H: 8 * 60 * 60 * 1000, KLINE_PERIOD_12H: 12 * 60 * 60 * 1000, KLINE_PERIOD_1DAY: 24 * 60 * 60 * 1000, KLINE_PERIOD_3DAY: 3 * 24 * 60 * 60 * 1000, KLINE_PERIOD_1WEEK: 7 * 24 * 60 * 60 * 1000, }
Functions ¶
func FlateUnCompress ¶
func FloatToPrice ¶
FloatToPrice n :保留的小数点位数,去除末尾多余的0(StripTrailingZeros),并加入ticksize
func FloatToString ¶
FloatToString n :保留的小数点位数,去除末尾多余的0(StripTrailingZeros)
func GetParamHmacMD5Sign ¶
func GetParamHmacSHA1Sign ¶
func GetParamHmacSHA256Sign ¶
func GetParamHmacSHA512Sign ¶
func GetParamHmacSha384Sign ¶
for bitfinex.com
func GetPrecision ¶
func GetPrecisionInt64 ¶
func GzipUnCompress ¶
func NewHttpRequest ¶
Types ¶
type APIConfig ¶
type APIConfig struct {
HttpClient *http.Client
LastTimestamp int64
Endpoint string
ApiKey string
ApiSecretKey string
ApiPassphrase string //for okex.com v3 api
ClientId string //for bitstamp.net , huobi.pro
Location *time.Location
}
*
* * models about API config * *
type Account ¶
type Account struct {
Exchange string
Asset float64 //总资产
NetAsset float64 //净资产
SubAccounts map[string]SubAccount
}
models about account
type Currency ¶
func NewCurrency ¶
type Depth ¶
type Depth struct {
Pair Pair
Timestamp int64
Sequence int64 // The increasing sequence, cause the http return sequence is not sure.
Date string
AskList DepthRecords // Ascending order
BidList DepthRecords // Descending order
}
type DepthRecord ¶
type DepthRecords ¶
type DepthRecords []DepthRecord
func (DepthRecords) Len ¶
func (dr DepthRecords) Len() int
func (DepthRecords) Less ¶
func (dr DepthRecords) Less(i, j int) bool
func (DepthRecords) Swap ¶
func (dr DepthRecords) Swap(i, j int)
type FutureAccount ¶
type FutureAccount struct {
SubAccount map[Currency]FutureSubAccount
Exchange string
}
type FutureAccountItem ¶
type FutureCandle ¶ added in v0.0.3
type FutureCandle struct {
Symbol string `json:"symbol"`
Exchange string `json:"exchange"`
Timestamp int64 `json:"timestamp"`
Date string `json:"date"`
Open float64 `json:"open"`
Close float64 `json:"close"`
High float64 `json:"high"`
Low float64 `json:"low"`
Vol float64 `json:"vol"` // BASE 成交量
Vol2 float64 `json:"vol_2"` // 张数 OR COUNT 成交量
Type string `json:"type"`
DueTimestamp int64 `json:"due_timestamp"`
DueDate string `json:"due_date"`
}
func GetAscFutureCandle ¶ added in v0.0.3
func GetAscFutureCandle(candles []*FutureCandle) []*FutureCandle
type FutureContract ¶
type FutureContract struct {
Pair Pair `json:"-"`
Symbol string `json:"symbol"`
Exchange string `json:"exchange"`
ContractType string `json:"contract_type"` // eg: this_week next_week quarter next_quarter
ContractName string `json:"contract_name"` // eg: BTC-USD-201025
SettleMode int64 `json:"settle_mode"` // 1: BASIS 2: COUNTER
Status string `json:"status"`
Type string `json:"type"` // linear or inverse
OpenTimestamp int64 `json:"open_timestamp"`
OpenDate string `json:"open_date"`
ListTimestamp int64 `json:"list_timestamp"`
ListDate string `json:"list_date"`
DueTimestamp int64 `json:"due_timestamp"`
DueDate string `json:"due_date"`
UnitAmount float64 `json:"unit_amount"`
TickSize float64 `json:"tick_size"`
PricePrecision int64 `json:"price_precision"`
AmountPrecision int64 `json:"amount_precision"`
MaxScalePriceLimit float64 `json:"max_scale_price_limit"`
MinScalePriceLimit float64 `json:"min_scale_price_limit"`
RawData string `json:"raw_data"`
}
type FutureContracts ¶
type FutureContracts struct {
ContractTypeKV map[string]*FutureContract `json:"contract_type_kv"`
ContractNameKV map[string]*FutureContract `json:"contract_name_kv"`
DueTimestampKV map[string]*FutureContract `json:"due_timestamp_kv"`
}
type FutureDepth ¶
type FutureDepth struct {
ContractType string // for future
ContractName string // for future
Pair Pair
Timestamp int64
DueTimestamp int64
// The increasing sequence, cause the http return sequence is not sure.
Sequence int64
Date string
AskList DepthRecords // Ascending order
BidList DepthRecords // Descending order
}
func (FutureDepth) Verify ¶
func (fd FutureDepth) Verify() error
Do not trust the data from exchange, just verify it.
type FutureKline ¶
type FutureKline struct {
Kline `json:",-"` // 按照kline中的字段进行解析。
ContractType string `json:"contract_type"`
DueTimestamp int64 `json:"due_timestamp"`
DueDate string `json:"due_date"`
Vol2 float64 `json:"vol_2"` //个数
}
func GetAscFutureKline ¶
func GetAscFutureKline(klines []*FutureKline) []*FutureKline
type FutureOrder ¶
type FutureOrder struct {
// cid is important, when the order api return wrong, you can find it in unfinished api
Cid string
OrderId string
Price float64
Amount int64
AvgPrice float64
DealAmount int64
PlaceTimestamp int64
PlaceDatetime string
DealTimestamp int64 // unit: ms
DealDatetime string
Status TradeStatus
PlaceType PlaceType // place order type 0:NORMAL 1:MAKER_ONLY 2:FOK 3:IOC
Type FutureType // type 1:OPEN_LONG 2:OPEN_SHORT 3:LIQUIDATE_LONG 4: LIQUIDATE_SHORT
LeverRate int64
Fee float64
Pair Pair
ContractType string
ContractName string // for future
Exchange string
}
type FuturePosition ¶
type FuturePosition struct {
BuyAmount float64
BuyAvailable float64
BuyPriceAvg float64
BuyPriceCost float64
BuyProfitReal float64
CreateDate int64
LeverRate int
SellAmount float64
SellAvailable float64
SellPriceAvg float64
SellPriceCost float64
SellProfitReal float64
Symbol Pair //btc_usd:比特币,ltc_usd:莱特币
ContractType string
ContractId int64
ForceLiquidatePrice float64 //预估爆仓价
}
type FutureRestAPI ¶
type FutureRestAPI interface {
// public api
GetExchangeName() string
GetContract(pair Pair, contractType string) (*FutureContract, error)
GetTicker(pair Pair, contractType string) (*FutureTicker, []byte, error)
GetDepth(pair Pair, contractType string, size int) (*FutureDepth, []byte, error)
GetLimit(pair Pair, contractType string) (float64, float64, error)
GetIndex(pair Pair) (float64, []byte, error)
GetMark(pair Pair, contractType string) (float64, []byte, error)
GetKlineRecords(contractType string, pair Pair, period, size, since int) ([]*FutureKline, []byte, error)
GetTrades(pair Pair, contractType string) ([]*Trade, []byte, error)
// private api
GetAccount() (*FutureAccount, []byte, error)
PlaceOrder(order *FutureOrder) ([]byte, error)
CancelOrder(order *FutureOrder) ([]byte, error)
GetOrders(pair Pair, contractType string) ([]*FutureOrder, []byte, error)
GetOrder(order *FutureOrder) ([]byte, error)
GetPairFlow(pair Pair) ([]*FutureAccountItem, []byte, error)
// util api
KeepAlive()
}
type FutureRule ¶
type FutureSubAccount ¶
type FutureSubAccount struct {
Currency Currency
// The future margin 期货保证金 == marginFilled+ marginUnFilled
Margin float64
// The future is filled 已经成交的订单占用的期货保证金
MarginDealed float64
// The future is unfilled 未成交的订单占用的保证金
MarginUnDealed float64
// 保证金率
MarginRate float64
// 总值
BalanceTotal float64
// 净值
// BalanceNet = BalanceTotal + ProfitUnreal + ProfitReal
BalanceNet float64
// 可提取
// BalanceAvail = BalanceNet - Margin
BalanceAvail float64
//已实现盈亏
ProfitReal float64
// 未实现盈亏
ProfitUnreal float64
}
type FutureTicker ¶
type FutureType ¶
type FutureType int64
const ( OPEN_LONG FutureType = 1 + iota //开多 OPEN_SHORT //开空 LIQUIDATE_LONG //平多 LIQUIDATE_SHORT //平空 )
func (FutureType) String ¶
func (ft FutureType) String() string
type FutureWebsocketAPI ¶
type FutureWebsocketAPI interface {
Subscribe(v interface{})
Unsubscribe(v interface{})
Start() error
Stop()
Restart()
}
type Kline ¶
type Kline struct {
Pair Pair `json:"symbol"`
Exchange string `json:"exchange"`
Timestamp int64 `json:"timestamp"`
Date string `json:"date"`
Open float64 `json:"open"`
Close float64 `json:"close"`
High float64 `json:"high"`
Low float64 `json:"low"`
Vol float64 `json:"vol"`
}
func GetAscKline ¶
type Loan ¶
type Loan struct {
Pair Pair // The loan currency pair
Currency Currency // Currency
Amount float64 // Loan amount
AmountLoaned float64 // Loaned amount
AmountInterest float64 // Loan interest
Status LoanStatus // The loan record status
LoanId string // Remote loan record id
LoanTimestamp int64 // Loan timestamp
LoanDate string // Loan date
RepayId string // Remote loan record repay id
RepayTimestamp int64 // Repay Timestamp
RepayDate string // Repay Date
RepayDeadlineDate string // Repay Deadline Date
}
type LoanStatus ¶
type LoanStatus int
const ( LOAN_UNFINISH LoanStatus = iota LOAN_PART_FINISH LOAN_FINISH LOAN_FAIL LOAN_REPAY )
type MarginAccount ¶
type MarginRestAPI ¶
type MarginRestAPI interface {
// public api
GetTicker(pair Pair) (*Ticker, []byte, error)
GetDepth(pair Pair, size int) (*Depth, []byte, error)
GetKlineRecords(pair Pair, period, size, since int) ([]*Kline, []byte, error)
GetExchangeName() string
// private api
GetAccount(pair Pair) (*MarginAccount, []byte, error)
PlaceOrder(order *Order) ([]byte, error)
CancelOrder(order *Order) ([]byte, error)
GetOrder(order *Order) ([]byte, error)
GetOrders(pair Pair) ([]*Order, []byte, error) // all orders desc recently
GetUnFinishOrders(pair Pair) ([]*Order, []byte, error)
PlaceLoan(loan *Loan) ([]byte, error)
GetLoan(loan *Loan) ([]byte, error)
ReturnLoan(loan *Loan) ([]byte, error)
// util api
KeepAlive()
}
api interface
type MarginSubAccount ¶
type Order ¶
type Order struct {
// cid is important, when the order api return wrong, you can find it in unfinished api
Cid string
Price float64
Amount float64
AvgPrice float64
DealAmount float64
Fee float64
OrderId string
OrderTimestamp int64
OrderDate string
Status TradeStatus
Pair Pair
Side TradeSide
//0:NORMAL,1:ONLY_MAKER,2:FOK,3:IOC
OrderType PlaceType
}
*
* * models about trade * *
type Pair ¶
type Pair struct {
//The target currency, you want to buy or long
//目标货币,你想买或者做多的。
Basis Currency
//The counter currency, you use it to buy or to mortgage
//计数货币,你想用它来购买或者用它来做为抵押物。
Counter Currency
}
func (Pair) ToSwapContractName ¶
type SpotRestAPI ¶
type SpotRestAPI interface {
// public api
GetExchangeName() string
//GetExchangeRule(pair Pair) (*Rule, []byte, error)
GetTicker(pair Pair) (*Ticker, []byte, error)
GetDepth(pair Pair, size int) (*Depth, []byte, error)
GetKlineRecords(pair Pair, period, size, since int) ([]*Kline, []byte, error)
GetTrades(pair Pair, since int64) ([]*Trade, error)
// private api
GetAccount() (*Account, []byte, error)
PlaceOrder(order *Order) ([]byte, error)
CancelOrder(order *Order) ([]byte, error)
GetOrder(order *Order) ([]byte, error)
GetOrders(pair Pair) ([]*Order, error) // dealed orders
GetUnFinishOrders(pair Pair) ([]*Order, []byte, error)
// util api
KeepAlive()
// v2 API
GetOHLCs(symbol string, period, size, since int) ([]*OHLC, []byte, error)
}
api interface
type SubAccount ¶
type SwapAccount ¶
type SwapAccount struct {
Exchange string
// In swap, the usdt is default.
Currency Currency
// The future margin 期货保证金 == marginFilled+ marginUnFilled
Margin float64
// The future is filled 已经成交的订单占用的期货保证金
MarginPosition float64
// The future is unfilled 未成交的订单占用的保证金
MarginOpen float64
// 保证金率
MarginRate float64
// 总值
BalanceTotal float64
// 净值
// BalanceNet = BalanceTotal + ProfitUnreal + ProfitReal
BalanceNet float64
// 可提取
// BalanceAvail = BalanceNet - Margin
BalanceAvail float64
//已实现盈亏
ProfitReal float64
// 未实现盈亏
ProfitUnreal float64
Positions []*SwapPosition
}
type SwapAccountItem ¶
type SwapContract ¶
type SwapContract struct {
Pair Pair `json:"-"`
Symbol string `json:"symbol"`
Exchange string `json:"exchange"`
ContractName string `json:"contract_name"` // 标准contract_name和具体交易所无关,以ok的规则为准。
SettleMode int64 `json:"settle_mode"` // 1: BASIS 币本位 2: COUNTER U本位
UnitAmount float64 `json:"unit_amount"`
TickSize float64 `json:"tick_size"`
PricePrecision int64 `json:"price_precision"`
AmountPrecision int64 `json:"amount_precision"`
}
type SwapContracts ¶
type SwapContracts struct {
// 按照合约到期日期查找,以ok的命名规则为准吧 BTC-USD-SWAP BTC-USDT-SWAP
ContractNameKV map[string]*SwapContract `json:"contract_name_kv"`
}
type SwapDepth ¶
type SwapDepth struct {
Pair Pair
Timestamp int64
Sequence int64 // The increasing sequence, cause the http return sequence is not sure.
Date string
AskList DepthRecords // Ascending order
BidList DepthRecords // Descending order
}
type SwapKline ¶
type SwapKline struct {
Pair Pair `json:"-"`
Exchange string `json:"exchange"`
Timestamp int64 `json:"timestamp"`
Date string `json:"date"`
Open float64 `json:"open"`
Close float64 `json:"close"`
High float64 `json:"high"`
Low float64 `json:"low"`
Vol float64 `json:"vol"`
}
func GetAscSwapKline ¶
type SwapOrder ¶
type SwapOrder struct {
// cid is important, when the order api return wrong, you can find it in unfinished api
Cid string
OrderId string
Price float64
Amount float64
AvgPrice float64
DealAmount float64
PlaceTimestamp int64
PlaceDatetime string
DealTimestamp int64 // unit: ms
DealDatetime string
Status TradeStatus
PlaceType PlaceType // place_type 0:NORMAL 1:MAKER_ONLY 2:FOK 3:IOC
Type FutureType // type 1:OPEN_LONG 2:OPEN_SHORT 3:LIQUIDATE_LONG 4: LIQUIDATE_SHORT
MarginType string // margin_type 全仓:crossed 逐仓:isolated
LeverRate int64
Fee float64
Pair Pair
Exchange string
}
type SwapPosition ¶
type SwapRestAPI ¶
type SwapRestAPI interface {
// public api
GetExchangeName() string
GetTicker(pair Pair) (*SwapTicker, []byte, error)
GetDepth(pair Pair, size int) (*SwapDepth, []byte, error)
GetContract(pair Pair) *SwapContract
GetLimit(pair Pair) (float64, float64, error)
GetKline(pair Pair, period, size, since int) ([]*SwapKline, []byte, error)
GetOpenAmount(pair Pair) (float64, int64, []byte, error)
GetFundingFees(pair Pair) ([][]interface{}, []byte, error)
GetFundingFee(pair Pair) (float64, error)
// private api
GetAccount() (*SwapAccount, []byte, error)
PlaceOrder(order *SwapOrder) ([]byte, error)
CancelOrder(order *SwapOrder) ([]byte, error)
GetOrder(order *SwapOrder) ([]byte, error)
GetOrders(pair Pair) ([]*SwapOrder, []byte, error)
GetUnFinishOrders(pair Pair) ([]*SwapOrder, []byte, error)
GetPosition(pair Pair, openType FutureType) (*SwapPosition, []byte, error)
AddMargin(pair Pair, openType FutureType, marginAmount float64) ([]byte, error)
ReduceMargin(pair Pair, openType FutureType, marginAmount float64) ([]byte, error)
GetAccountFlow() ([]*SwapAccountItem, []byte, error)
GetPairFlow(pair Pair) ([]*SwapAccountItem, []byte, error)
// util api
KeepAlive()
}
type SwapTicker ¶
type SwapTicker struct {
Pair Pair `json:"-"`
Last float64 `json:"last"`
Buy float64 `json:"buy"`
Sell float64 `json:"sell"`
High float64 `json:"high"`
Low float64 `json:"low"`
Vol float64 `json:"vol"`
Timestamp int64 `json:"timestamp"` // unit:ms
Date string `json:"date"` // date: format yyyy-mm-dd HH:MM:SS, the timezone define in apiconfig
}
type Ticker ¶
type Ticker struct {
Pair Pair `json:"-"`
Last float64 `json:"last"`
Buy float64 `json:"buy"`
Sell float64 `json:"sell"`
High float64 `json:"high"`
Low float64 `json:"low"`
Vol float64 `json:"vol"`
Timestamp int64 `json:"timestamp"` // unit:ms
Date string `json:"date"` // date: format yyyy-mm-dd HH:MM:SS, the timezone define in apiconfig
}
type Trade ¶
type Trade struct {
Tid int64 `json:"tid"`
Type TradeSide `json:"type"`
Amount float64 `json:"amount,string"`
Price float64 `json:"price,string"`
Timestamp int64 `json:"timestamp"`
Pair Pair `json:"-"`
}
record
type TradeStatus ¶
type TradeStatus int64
const ( ORDER_UNFINISH TradeStatus = iota ORDER_PART_FINISH ORDER_FINISH ORDER_CANCEL ORDER_REJECT ORDER_CANCEL_ING ORDER_FAIL )
func (TradeStatus) String ¶
func (ts TradeStatus) String() string
type WSRestartError ¶ added in v0.0.3
type WSRestartError struct {
//Code int
Msg string
}
func (*WSRestartError) Error ¶ added in v0.0.3
func (e *WSRestartError) Error() string
type WSStopError ¶ added in v0.0.3
type WSStopError struct {
//Code int
Msg string
}
func (*WSStopError) Error ¶ added in v0.0.3
func (e *WSStopError) Error() string
type WsBuilder ¶
type WsBuilder struct {
// contains filtered or unexported fields
}
websocket build config
func NewWsBuilder ¶
func NewWsBuilder() *WsBuilder
func (*WsBuilder) ErrorHandleFunc ¶
func (*WsBuilder) ProtoHandleFunc ¶
func (*WsBuilder) ReconnectIntervalTime ¶
func (*WsBuilder) UnCompressFunc ¶
type WsConfig ¶
type WsConfig struct {
WsUrl string // websocket server url, necessary
ProxyUrl string // proxy url, not necessary
ReqHeaders map[string][]string // set the head info ,when connecting, not necessary
HeartbeatIntervalTime time.Duration // the heartbeat interval, necessary
HeartbeatData []byte // the raw text of heartbeat data for example: ping, necessary if heartbeatfunc is nil
HeartbeatDataType int
//HeartbeatFunc func() interface{} // the json text of heartbeat data , necessary if heartbeatdata is nil
ReconnectIntervalTime time.Duration // force reconnect on XXX time duration, not necessary
ProtoHandleFunc func([]byte) error // the message handle func, necessary
UnCompressFunc func([]byte) ([]byte, error) // the uncompress func, not necessary
ErrorHandleFunc func(err error) // the error handle func, not necessary
IsDump bool // is print the connect info, not necessary
}
type WsConn ¶
type WsConn struct {
*websocket.Conn
sync.Mutex
WsConfig
// contains filtered or unexported fields
}
func (*WsConn) HeartbeatTimer ¶
func (ws *WsConn) HeartbeatTimer()
func (*WsConn) ReConnectTimer ¶
func (ws *WsConn) ReConnectTimer()
func (*WsConn) ReceiveMessage ¶
func (ws *WsConn) ReceiveMessage()
func (*WsConn) SendJsonMessage ¶
func (*WsConn) SendTextMessage ¶
func (*WsConn) UpdateActiveTime ¶
func (ws *WsConn) UpdateActiveTime()
Source Files
¶
Click to show internal directories.
Click to hide internal directories.