Project

cbx

0.0
No commit activity in last 3 years
No release in over 3 years
A complete interface to the Coinbase Exchange trading API.
2005
2006
2007
2008
2009
2010
2011
2012
2013
2014
2015
2016
2017
2018
2019
2020
2021
2022
2023
2024
 Dependencies

Runtime

>= 1.1.2, ~> 1.1
 Project Readme

This is a fork of a project originally authored by Daniel Silver (https://github.com/dan-silver/coinbase_exchange)

This gem isn't officially endorsed, affiliated, or supported by Coinbase Exchange or Global Digital Asset Exchange (GDAX).

Ruby wrapper for the GDAX (formerly Coinbase Exchange) API

The library wraps the http request and message signing and provides.

The fork adds convenience methods to access all of the API's functionality, and allows for unauthenticated access to Market Data and the WebSocket feed.

Create an account at https://www.gdax.com to get started.

Installation

Include this in your gemfile for latest version from git:

gem 'cbx', :git => 'git://github.com/mikerodrigues/cbx.git'

or from Rubygems, usually not far behind git master:

gem 'cbx'

Example

require "cbx"

# For unauthenticated access:
cbe = CBX.new

# List products
cbe.products
=> [{"id"=>"BTC-USD",
     "base_currency"=>"BTC",
     "quote_currency"=>"USD",
     "base_min_size"=>0.01,
     "base_max_size"=>10000,
     "quote_increment"=>0.01,
     "display_name"=>"BTC/USD"}]

# Get product order book at level 1, 2, or 3, (Defaults to level: 1, product_id "BTC-USD")
cbe.orderbook(1, 'BTC-USD')
=> {"sequence"=>29349454,
    "bids"=>[["285.22000000","0.34800000", 3]], 
    "asks"=>[["285.33000000", "0.28930000", 4]]}

# Product tickers (defaults to 'BTC-USD')
cbe.ticker("BTC-USD")
=> {"trade_id"=>125681,
    "price"=>"226.20000000",
    "size"=>"0.01570000", 
    "time"=>"2015-02-08T04:46:17.352746Z"}

# Product trades (defaults to 'BTC-USD')
cbe.trades('BTC-USD')
=> [{"time"=>"2015-03-15 04:43:48.7943+00"
     "trade_id"=>774500
     "price"=>"285.44000000"
     "size"=>"0.01000000"
     "side"=>"sell"}
    {"time"=>"2015-03-15 04:42:54.432661+00"
     "trade_id"=>774499
     "price"=>"285.47000000"
     "size"=>"0.05340000"
     "side"=>"sell"},
    {"time"=>"2015-03-15 04:42:54.432306+00"
     "trade_id"=>774498
     "price"=>"285.45000000"
     "size"=>"0.09100000"
     "side"=>"sell"}]


# For authenticated access:
cbe = CBX.new API_KEY, API_SECRET, API_PASSPHRASE

# List accounts
cbe.accounts
=> [{"id"=>"000ea663...",
     "currency"=>"USD",
     "balance"=>"90.0000114750000000",
     "hold"=>"0.0000000000000000",
     "available"=>"0.9000114750000000",
     "profile_id"=>"4409df27..."},
    {"id"=>"8bfe...",
     "currency"=>"BTC",
     "balance"=>"9.4426882700000000",
     "hold"=>"0.0000000000000000",
     "available"=>"5.4426882700000000",
     "profile_id"=>"a8f2d8..."}] 

# List orders
cbe.orders

# List orders with pagination
cbe.order({'limit'=>5, after=>1})

# Get specific order by order_id
cbe.order('4488340..')

# Place an order (size, price, side)
cbe.place_order("0.01", "250.000", "buy")
cbe.place_order("0.02", "265.000", "sell")

# Cancel an order by order_id
cbe.cancel_order('488224434...')

# Product fills
cbe.fills

# Get a live feed from the websocket. You'll need to create a lambda to pass
messages to as they are received:
feed = CBX::Feed.new(->{|msg| puts msg.fetch('type')})

# Close the feed if needed
feed.close

Block syntax is fully supported

cbe.accounts do |response|
  puts response
end

cbe.post('orders', {

    "size" => 1.01,
    "price" => 1.100,
    "side" => "buy",
    "product_id" => "BTC-USD"
}) do |response|
  puts response
end

Use at your own risk. I assume no liability for gains or losses you incur while using this gem.