Project

mexbt

0.0
No commit activity in last 3 years
No release in over 3 years
A lightweight ruby client for the meXBT exchange API
2005
2006
2007
2008
2009
2010
2011
2012
2013
2014
2015
2016
2017
2018
2019
2020
2021
2022
2023
2024
 Dependencies

Development

~> 1.6
>= 0
>= 0

Runtime

 Project Readme

Mexbt ruby API client Build Status

This is a lightweight ruby client for the meXBT exchange API. It doesn't try and do anything clever with the JSON response from the API, it simply returns it as-is.

Install

If using bundler simply this to your Gemfile:

gem 'mexbt'

And run bundle install of course.

Ruby version

You need to be using Ruby 2.1.2 or higher.

Public API

You can access all the Public API functions with zero configuration. By default they will use the 'BTCMXN' currency pair.

Mexbt.ticker
Mexbt.order_book
Mexbt.trades(start_index: -1, count: 20)
Mexbt.trades_by_date(from: Date.civil(2014, 11, 1).to_time.to_i, to: Date.today.to_time.to_i)
Mexbt.simulate_market_order(side: :buy, second_currency: 1000, currency_pair: 'btcmxn') # Simulates a market order, which will estimate how many btc you will receive for 1000 mxn
Mexbt.simulate_market_order(side: :buy, first_currency: 1, currency_pair: 'btcmxn') # Simulates a market order, which will estimate how many mxn you will spend for 1 btc

If you want to choose another currency pair, you can configure it for all calls:

Mexbt.configure { |c| c.currency_pair: 'BTCUSD' }

Or alternatively you can set it per call:

Mexbt.ticker(currency_pair: 'BTCUSD')

Private API

API Keys

You need to generate an API key pair at https://mexbt.com/api/keys. However if you want to get started quickly we recommend having a play in the sandbox first, see the 'Sandbox' section below.

Static configuration

If you will only be using one account in your application, it's easier to configure statically:

Mexbt.configure do |c|
    mexbt.public_key = "xxx"
    mexbt.private_key = "yyy"
    mexbt.user_id = "email@test.com" # Your registered email address
    mexbt.sandbox = true # Set this to true to use the sandbox
end

Then to access private functions just instantiate an instance of Mexbt::Account:

Mexbt::Account.new.info

Per-instance configuration

If you need to manage multiple meXBT accounts you should configure per each instance of Mexbt::Account:

account = Mexbt::Account.new(public_key: 'xxx', private_key: 'yyy', user_id: 'email@test.com', sandbox: true)
account.balance

Order functions

account.create_order(amount: 0.1, currency_pair: 'btcmxn') # Create a market buy order for 0.1 BTC for Pesos
account.create_order(amount: 2, side: :sell, currency_pair: 'btcusd') # Create a market order to sell 2 BTC for USD
account.create_order(amount: 2, price: 1, side: :buy, type: :limit, currency_pair: 'ltcmxn') # Create a limit order to buy 2 LTC for 1 peso
account.cancel_order(id: 123, currency_pair: 'btcmxn')
account.cancel_all_orders() # Cancel all orders for the default currency pair

Account functions

account.balance
account.trades
account.orders
account.btc_deposit_address
account.ltc_deposit_address
account.deposit_addresses
account.withdraw(amount: 1, currency: :btc, address: 'xxx')
account.info # Fetches your user info

Sandbox

It's a good idea to first play with the API in the sandbox, that way you don't need any real money to start trading with the API. Just make sure you configure sandbox = true.

You can register a sandbox account at https://sandbox.mexbt.com/en/register. It will ask you to validate your email but there is no need, you can login right away at https://sandbox.mexbt.com/en/login. Now you can setup your API keys at https://sandbox.mexbt.com/en/api/keys.

Your sandbox account will automatically have a bunch of cash to play with.

API documentation

You can find API docs for the Public API at http://docs.mexbtpublicapi.apiary.io

API docs for the Private API are at http://docs.mexbtprivateapi.apiary.io

There are also docs for the Private API sandbox at http://docs.mexbtprivateapisandbox.apiary.io

TODO

Mock out web calls with WebMock so that specs don't break everytime sandbox db is cleaned.