Skip to content

cjfinc/hitbtc_ruby

 
 

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

13 Commits
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Summary

This document provides the complete reference for hitbtc API in the wrapper.

The following symbols are traded on hitbtc exchange.

Symbol Lot size Price step
BTCUSD 0.01 BTC 0.01
BTCEUR 0.01 BTC 0.01
LTCBTC 0.1 LTC 0.00001
LTCUSD 0.1 LTC 0.001
LTCEUR 0.1 LTC 0.001
EURUSD 1 EUR 0.0001

Size representation:

  • Size values in streaming messages are represented in lots.
  • Size values in RESTful market data are represented in money (e.g. in coins or in USD).
  • Size values in RESTful trade are represented in lots (e.g. 1 means 0.01 BTC for BTCUSD)

Pending Future Updates

  • Solid trade execution functionality
  • payment api

Don't hesitate to contribute. If you liked it: BTC: 1PizgAWLJbwEsNWG9Cf27skcbgbgZGgeyK LTC: LQtM1t6BRd64scsdSBk8nnCLJuc8Qfhm53

Installation

Add this line to your application's Gemfile:

gem 'hitbtc'

And then execute:

$ bundle

Or install it yourself as:

$ gem install hitbtc

Usage

Create a Kraken client:

API_KEY = '3bH+M/nLp......'
API_SECRET = 'wQG+7Lr9b.....'

hitbtc = Hitbtc::Client.new(API_KEY, API_SECRET)

time = hitbtc.server_time
time #=> 1393056191

Public Data Methods

Server Time

time = hitbtc.server_time

Symbol info

symbol = hitbtc.symbols("BTCEUR")
symbols = hitbtc.symbols(["BTCEUR", "BTCUSD"])
all_symbols = hitbtc.symbols

Ticker

ticker_data = hitbtc.ticker('BTCEUR')
  • 24h means last 24h + last incomplete minute
  • high - highest trade price / 24 h
  • low - lowest trade price / 24 h
  • volume - volume / 24h

Order Book

order_book = hitbtc.order_book('BTCEUR')
order_book = hitbtc.order_book('BTCEUR', {format_amount_unit: "lot"})
Parameter Type Description
format_price optional, "string" (default) or "number"
format_amount optional, "string" (default) or "number"
format_amount_unit optional, "currency" (default) or "lot"

Trades

trades = hitbtc.trades "BTCEUR" (default from 1 day ago, by timestamp, index 0, max_result 1000)
trades = hitbtc.trades 'BTCEUR', (Time.now - 1.day).to_i, "ts", 0, 1000)
trades = hitbtc.trades 'BTCEUR', (Time.now - 1.day).to_i, "ts", 0, 1000, {format_amount_unit: "lot"})

Parameters:

Parameter Type Description
from required, int, trade_id or timestamp returns trades with trade_id > specified trade_id
returns trades with timestamp >= specified timestamp
till optional, int, trade_id or timestamp returns trades with trade_id < specified trade_id
returns trades with timestamp < specified timestamp
by required, filter and sort by trade_id or ts (timestamp)
sort optional, asc (default) or desc
start_index required, int zero-based
max_results required, int, max value = 1000
format_item optional, "array" (default) or "object"
format_price optional, "string" (default) or "number"
format_amount optional, "string" (default) or "number"
format_amount_unit optional, "currency" (default) or "lot"
format_tid optional, "string" or "number" (default)
format_timestamp optional, "millisecond" (default) or "second"
format_wrap optional, "true" (default) or "false"

Private Data Methods

Error codes

RESTful Trading API can return the following errors:

HTTP code Text Description
403 Invalid apikey API key doesn't exist or API key is currently used on another endpoint (max last 15 min)
403 Nonce has been used nonce is not monotonous
403 Nonce is not valid too big number or not a number
403 Wrong signature

Execution reports

The API uses ExecutionReport as an object that represents change of order status.

The following fields are used in this object:

Field Description Type / Enum Required
orderId Order ID on the Exchange string required
clientOrderId clientOrderId sent in NewOrder message string required
execReportType execution report type new
canceled
rejected
expired
trade
status
required
orderStatus order status new
partiallyFilled
filled
canceled
rejected
expired
required
orderRejectReason Relevant only for the orders in rejected state unknownSymbol
exchangeClosed
orderExceedsLimit
unknownOrder
duplicateOrder
unsupportedOrder
unknownAccount
other
for rejects
symbol string, e.g. BTCUSD required
side buy or sell required
timestamp UTC timestamp in milliseconds
price decimal
quantity integer required
type only limit orders are currently supported required
timeInForce time in force GTC - Good-Til-Canceled
IOK - Immediate-Or-Cancel
FOK - Fill-Or-Kill
DAY - day orders<
required
tradeId Trade ID on the exchange for trades
lastQuantity integer for trades
lastPrice decimal for trades
leavesQuantity integer
cumQuantity integer
averagePrice decimal, will be 0 if 'cumQuantity'=0

Balance

all_balance = hitbtc.balance
one_balance = hitbtc.balance("BTC")
many_balances = hitbtc.balance(["BTC", "EUR"])

List of active orders

all_active_orders = hitbtc.active_orders
symbol_specific_orders = hitbtc.active_orders({symbols: "BTCEUR"})
symbols_specific_orders = hitbtc.active_orders({symbols: "BTCEUR,BTCUSD"})

Parameters:

Parameter Type Description
symbols string, comma-delimeted list of symbols, optional, default - all symbols

Create Order

price should be specified even for market execution (haven't tested on a real order yet)

hitbtc.create_order({symbol: "BTCEUR", side: "buy", quantity: 1, type: "market", timeInForce: "GTC", price: 320.000})

Parameters:

Parameter Type Description
symbol string, required e.g. BTCUSD
side buy or sell, required
price decimal, required order price, required for limit orders
quantity int order quantity in lots
type limit or market order type
timeInForce GTC - Good-Til-Canceled
IOK - Immediate-Or-Cancel
FOK - Fill-Or-Kill
DAY - day
use GTC by default

Cancel Order

You only need your order id (haven't been tested on real order yet)

hitbtc.cancel_order("1398804347")

Trades History

default = hitbtc.trade_history
custom = hitbtc.trade_history({by: "ts", start_index: 0, max_results: 10, symbols: "BTCEUR,BTCUSD"})

Parameters:

Parameter Type Description
by trade_id or ts (timestamp)
start_index int, optional, default(0) zero-based index
max_results int, required, <=1000
symbols string, comma-delimited
sort asc (default) or desc
from optional start trade_id or ts, see by
till optional end trade_id or ts, see by

Recent Orders

default = hitbtc.recent_orders
custom = hitbtc.trade_history({start_index: 0, max_results: 10, symbols: "BTCEUR,BTCUSD", statuses: "new,filled"})

Parameters:

Parameter Type Description
start_index int, optional, default(0) zero-based index
max_results int, required, <=1000
symbols string, comma-delimited
statuses string, comma-delimited, new, partiallyFilled, filled, canceled, expired, rejected

About

ruby gem: api Wrapper for hitbtc

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages

  • Ruby 100.0%