A Golang cryptocurrency trading API & Library. Support Binance, BitMEX, Deribit, Bybit, Huobi DM, OKEX Futures and more.
CREX 是一个用Golang语言开发的量化交易库。支持
tick级别数字币期货平台的回测和实盘。实盘与回测无缝切换,无需更改代码。
示例 @backtest
https://github.com/coinrust/trading-strategies
CREX库当前支持以下8个加密货币交易市场和交易API
| logo | id | name | ver | ws | doc |
| ------------------------------------------------------------------------------------------------------------------------------------------------ | -------------- | ------------------------------------------------------------------------- | --- | --- | ----------------------------------------------------------------- |
| | binancefutures | Binance Futures | 1 | N | API |
|
| bitmex | BitMEX | 1 | Y | API |
|
| deribit | Deribit | 2 | Y | API |
|
| bybit | Bybit | 2 | Y | API |
|
| hbdm | Huobi DM | 1 | Y | API |
|
| hbdmswap | Huobi Swap | 1 | Y | API |
|
| okexfutures | OKEX Futures | 3 | Y | API |
|
| okexswap | OKEX Swap | 3 | Y | API |
package mainimport ( . "github.com/coinrust/crex" "github.com/coinrust/crex/exchanges" "log" "time" )
type BasicStrategy struct { StrategyBase }
func (s *BasicStrategy) OnInit() error { return nil }
func (s *BasicStrategy) OnTick() error { currency := "BTC" symbol := "BTC-PERPETUAL"
balance, err := s.Exchange.GetBalance(currency) if err != nil { log.Fatal(err) } log.Printf("balance: %#v", balance) s.Exchange.GetOrderBook(symbol, 10) s.Exchange.OpenLong(symbol, OrderTypeLimit, 5000, 10) s.Exchange.CloseLong(symbol, OrderTypeLimit, 6000, 10) s.Exchange.PlaceOrder(symbol, Buy, OrderTypeLimit, 1000.0, 10, OrderPostOnlyOption(true)) s.Exchange.GetOpenOrders(symbol) s.Exchange.GetPositions(symbol) return nil
}
func (s *BasicStrategy) Run() error { // run loop for { s.OnTick() time.Sleep(1 * time.Second) } return nil }
func (s *BasicStrategy) OnExit() error { return nil }
func main() { exchange := exchanges.NewExchange(exchanges.Deribit, ApiProxyURLOption("socks5://127.0.0.1:1080"), // 使用代理 //ApiAccessKeyOption("[accessKey]"), //ApiSecretKeyOption("[secretKey]"), ApiTestnetOption(true))
s := &BasicStrategy{} s.Setup(TradeModeLiveTrading, exchange) s.OnInit() s.Run() s.OnExit()
}
package mainimport ( . "github.com/coinrust/crex" "github.com/coinrust/crex/exchanges" "log" )
func main() { ws := exchanges.NewExchange(exchanges.OkexFutures, ApiProxyURLOption("socks5://127.0.0.1:1080"), // 使用代理 //ApiAccessKeyOption("[accessKey]"), //ApiSecretKeyOption("[secretKey]"), //ApiPassPhraseOption("[passphrase]"), ApiWebSocketOption(true)) // 开启 WebSocket
market := Market{ Symbol: "BTC-USD-200626", } // 订阅订单薄 ws.SubscribeLevel2Snapshots(market, func(ob *OrderBook) { log.Printf("%#v", ob) }) // 订阅成交记录 ws.SubscribeTrades(market, func(trades []*Trade) { log.Printf("%#v", trades) }) // 订阅订单成交信息 ws.SubscribeOrders(market, func(orders []*Order) { log.Printf("%#v", orders) }) // 订阅持仓信息 ws.SubscribePositions(market, func(positions []*Position) { log.Printf("%#v", positions) }) select {}
}
| 列名 | 描述 | | ---------------- |--------------------------------- | | t | Unix 时间戳 (ms) | | asks[0-X].price | 卖单价(升序) | | asks[0-X].amount | 卖单量 | | bids[0-X].price | 买单价(降序) | | bids[0-X].amount | 买单量 |
t,asks[0].price,asks[0].amount,asks[1].price,asks[1].amount,asks[2].price,asks[2].amount,asks[3].price,asks[3].amount,asks[4].price,asks[4].amount,asks[5].price,asks[5].amount,asks[6].price,asks[6].amount,asks[7].price,asks[7].amount,asks[8].price,asks[8].amount,asks[9].price,asks[9].amount,bids[0].price,bids[0].amount,bids[1].price,bids[1].amount,bids[2].price,bids[2].amount,bids[3].price,bids[3].amount,bids[4].price,bids[4].amount,bids[5].price,bids[5].amount,bids[6].price,bids[6].amount,bids[7].price,bids[7].amount,bids[8].price,bids[8].amount,bids[9].price,bids[9].amount 1569888000143,8304.5,7010,8305,60,8305.5,1220,8306,80,8307,200,8307.5,1650,8308,68260,8308.5,120000,8309,38400,8309.5,8400,8304,185750,8303.5,52200,8303,20600,8302.5,4500,8302,2000,8301.5,18200,8301,18000,8300.5,90,8300,71320,8299.5,310 1569888000285,8304.5,7010,8305,60,8305.5,1220,8306,80,8307,200,8307.5,1650,8308,68260,8308.5,120000,8309,38400,8309.5,8400,8304,185750,8303.5,52200,8303,20600,8302.5,4500,8302,2000,8301.5,18200,8301,18000,8300.5,5090,8300,71320,8299.5,310 1569888000307,8304.5,7010,8305,60,8305.5,1220,8306,80,8307,200,8307.5,11010,8308,68260,8308.5,120000,8309,38400,8309.5,8400,8304,185750,8303.5,52200,8303,20600,8302.5,4500,8302,2000,8301.5,18200,8301,18000,8300.5,5090,8300,71320,8299.5,310 1569888000309,8304.5,7010,8305,60,8305.5,1220,8306,80,8307,200,8307.5,20370,8308,68260,8308.5,120000,8309,38400,8309.5,8400,8304,185750,8303.5,52200,8303,20600,8302.5,4500,8302,2000,8301.5,18200,8301,18000,8300.5,5090,8300,71320,8299.5,310 1569888000406,8304.5,7010,8305,60,8305.5,1220,8306,80,8307,8960,8307.5,11010,8308,68260,8308.5,120000,8309,38400,8309.5,8400,8304,185750,8303.5,52200,8303,20600,8302.5,4500,8302,2000,8301.5,18200,8301,18000,8300.5,5090,8300,71320,8299.5,310 1569888000500,8304.5,7010,8305,60,8305.5,1220,8306,80,8307,200,8307.5,20370,8308,68260,8308.5,120000,8309,38400,8309.5,8400,8304,185750,8303.5,52200,8303,20600,8302.5,4500,8302,2000,8301.5,18200,8301,18000,8300.5,5090,8300,71320,8299.5,310 1569888000522,8304.5,10270,8305,60,8305.5,1220,8306,80,8307,200,8307.5,20370,8308,68260,8308.5,120000,8309,38400,8309.5,8400,8304,185750,8303.5,52200,8303,20600,8302.5,4500,8302,2000,8301.5,18200,8301,18000,8300.5,5090,8300,71320,8299.5,310 1569888000527,8304.5,10270,8305,60,8305.5,1220,8306,80,8307,200,8307.5,20370,8308,68260,8308.5,120000,8309,38400,8309.5,8400,8304,185010,8303.5,52200,8303,20600,8302.5,4500,8302,2000,8301.5,18200,8301,18000,8300.5,5090,8300,71320,8299.5,310
json {"_id":{"$oid":"5eb946d88316c7a9c541705c"},"t":{"$numberLong":"1569888000143"},"a":[[8304.5,7010],[8305,60],[8305.5,1220],[8306,80],[8307,200],[8307.5,1650],[8308,68260],[8308.5,120000],[8309,38400],[8309.5,8400]],"b":[[8304,185750],[8303.5,52200],[8303,20600],[8302.5,4500],[8302,2000],[8301.5,18200],[8301,18000],[8300.5,90],[8300,71320],[8299.5,310]]}
Example of importing data into a database:
shell script cd ./cmd/deribit-data-to-db go build ./deribit-data-to-db
QQ群: 932289088
| METHOD | ADDRESS | |-------- |-------------------------------------------- | | BTC | 1Nk4AsGj5HEJ5csRenTUPab1sjUySCZ3Pq | | ETH | 0xa74eade7ea08a8c48d7de4d582fac145afc86e3d |
MIT ©coinrust