Api de dados do mercado bitcoin oferece uma maneira automatica de obter os dados do orderbook e negociações, esse client facilita o acesso a essas infomações atraves da api oficial Docs
Para baixar as dependencias do projeto rode o seguinte comando
dep ensure
Iniciando Client
package main
import (
"fmt"
"github.com/isvaldo/go-mercado-bitcoin-data-client"
)
func main() {
cli := marketbit.New("https://www.mercadobitcoin.net/api")
fmt.Println(cli)
}
Customizando http client
package main
import (
"fmt"
"github.com/isvaldo/go-mercado-bitcoin-data-client"
)
func main() {
cli := marketbit.NewWithClient("https://www.mercadobitcoin.net/api",createHTTPClient(10,10))
fmt.Println(cli)
}
func createHTTPClient(maxIdleConnections, requestTimeout int) *http.Client {
return &http.Client{
Transport: &http.Transport{
MaxIdleConnsPerHost: maxIdleConnections,
},
Timeout: time.Duration(requestTimeout) * time.Second,
}
}
Retorna informações com o resumo das últimas 24 horas de negociações.
Exemplo Ticker
package main
import (
"fmt"
"github.com/isvaldo/go-mercado-bitcoin-data-client"
)
func main() {
cli := marketbit.New("https://www.mercadobitcoin.net/api")
tickerItem, err := cli.GetTicker("btc") // btc, ltc, bch
if err != nil {
panic(err)
}
fmt.Println(tickerItem.Date)
fmt.Println(tickerItem.Vol)
fmt.Println(tickerItem.Sell)
fmt.Println(tickerItem.Last)
fmt.Println(tickerItem.Buy)
fmt.Println(tickerItem.High)
fmt.Println(tickerItem.Low)
}
Http Response
'ticker': {
'high': 14481.47000000,
'low': 13706.00002000,
'vol': 443.73564488,
'last': 14447.01000000,
'buy': 14447.00100000,
'sell': 14447.01000000,
'date': 1502977646
}
Code Response
/tmp/___go_build_main_go #gosetup
1514840316
115.06076518
48550.00000000
48550.00000000
48400.00000000
49599.00000000
47500.00000000
Livro de ofertas é composto por duas listas: (1) uma lista com as ofertas de compras ordenadas pelo maior valor; (2) uma lista com as ofertas de venda ordenadas pelo menor valor. O livro mostra até 1000 ofertas de compra e até 1000 ofertas de venda.
Uma oferta é constituída por uma ou mais ordens, sendo assim, a quantidade da oferta é o resultado da soma das quantidades das ordens de mesmo preço unitário. Caso uma oferta represente mais de uma ordem, a prioridade de execução se dá com base na data de criação da ordem, da mais antiga para a mais nova.
Exemplo Orderbook
package main
import (
"fmt"
"github.com/isvaldo/go-mercado-bitcoin-data-client"
)
func main() {
cli := New("https://www.mercadobitcoin.net/api")
orderItem, err := cli.GetOrderBook("btc")
if err != nil {
panic(err)
}
for _, askItem := range orderItem.Asks {
fmt.Println(askItem.Amount())
fmt.Println(askItem.Price())
}
for _, bidsItem := range orderItem.Bids {
fmt.Println(bidsItem.Amount())
fmt.Println(bidsItem.Price())
}
}
Histórico de negociações realizadas.
Exemplo Trades
package main
import (
"fmt"
"github.com/isvaldo/go-mercado-bitcoin-data-client"
)
func main() {
cli := New("https://www.mercadobitcoin.net/api")
tradesResponse, err := cli.GetLastTrades("btc")
if err != nil {
panic(err)
}
for _, tradeItens := range tradesResponse.Trades {
fmt.Println(tradeItens.Price)
fmt.Println(tradeItens.Amount)
fmt.Println(tradeItens.Date)
fmt.Println(tradeItens.Tid)
fmt.Println(tradeItens.Type)
}
}
Histórico de negociações realizadas, entre um intervalo de tempo
Exemplo Trades Range
package main
import (
"fmt"
"github.com/isvaldo/go-mercado-bitcoin-data-client"
)
func main() {
cli := New("https://www.mercadobitcoin.net/api")
tradesResponse, err := cli.GetTradesRange("btc", "2017/12/30", "2017/12/31")
if err != nil {
panic(err)
}
for _, tradeItens := range tradesResponse.Trades {
fmt.Println(tradeItens.Price)
fmt.Println(tradeItens.Amount)
fmt.Println(tradeItens.Date)
fmt.Println(tradeItens.Tid)
fmt.Println(tradeItens.Type)
}
}
Retorna resumo diário de negociações realizadas.
Exemplo Summary
package main
import (
"fmt"
"github.com/isvaldo/go-mercado-bitcoin-data-client"
)
func main() {
cli := New("https://www.mercadobitcoin.net/api")
summary, err := cli.GetSummaryAt("btc", "2017-12-30")
if err != nil {
panic(err)
}
fmt.Println(summary.Opening)
fmt.Println(summary.Closing)
}
Doge: DCgf2nJwhhkkDXKHPhbJb7URtRLRXHaw6T