Class: Honeymaker::Clients::Bitvavo

Inherits:
Honeymaker::Client show all
Defined in:
lib/honeymaker/clients/bitvavo.rb

Constant Summary collapse

URL =
"https://api.bitvavo.com"
ACCESS_WINDOW =
"10000"
RATE_LIMITS =
{ default: 100, orders: 100 }.freeze

Constants inherited from Honeymaker::Client

Honeymaker::Client::OPTIONS

Instance Attribute Summary

Attributes inherited from Honeymaker::Client

#api_key, #api_secret

Instance Method Summary collapse

Methods inherited from Honeymaker::Client

#initialize, rate_limits, #validate

Constructor Details

This class inherits a constructor from Honeymaker::Client

Instance Method Details

#cancel_order(market:, order_id:) ⇒ Object



74
75
76
# File 'lib/honeymaker/clients/bitvavo.rb', line 74

def cancel_order(market:, order_id:)
  delete_signed("/v2/order", { market: market, orderId: order_id })
end

#get_assetsObject



10
11
12
# File 'lib/honeymaker/clients/bitvavo.rb', line 10

def get_assets
  get_public("/v2/assets")
end

#get_balancesObject



36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
# File 'lib/honeymaker/clients/bitvavo.rb', line 36

def get_balances
  result = get_raw_balance
  return result if result.failure?

  balances = {}
  Array(result.data).each do |balance|
    symbol = balance["symbol"]
    next unless symbol
    free = BigDecimal((balance["available"] || "0").to_s)
    locked = BigDecimal((balance["inOrder"] || "0").to_s)
    next if free.zero? && locked.zero?
    balances[symbol] = { free: free, locked: locked }
  end

  Result::Success.new(balances)
end

#get_candles(market:, interval:, start_time: nil, end_time: nil, limit: nil) ⇒ Object



26
27
28
29
30
# File 'lib/honeymaker/clients/bitvavo.rb', line 26

def get_candles(market:, interval:, start_time: nil, end_time: nil, limit: nil)
  get_public("/v2/#{market}/candles", {
    interval: interval, start: start_time, end: end_time, limit: limit
  })
end

#get_deposit_history(symbol: nil, limit: nil, start_time: nil, end_time: nil) ⇒ Object



85
86
87
# File 'lib/honeymaker/clients/bitvavo.rb', line 85

def get_deposit_history(symbol: nil, limit: nil, start_time: nil, end_time: nil)
  get_signed("/v2/deposit", { symbol: symbol, limit: limit, start: start_time, end: end_time })
end

#get_markets(market: nil) ⇒ Object



14
15
16
# File 'lib/honeymaker/clients/bitvavo.rb', line 14

def get_markets(market: nil)
  get_public("/v2/markets", { market: market })
end

#get_order(market:, order_id:) ⇒ Object



66
67
68
69
70
71
72
# File 'lib/honeymaker/clients/bitvavo.rb', line 66

def get_order(market:, order_id:)
  result = get_signed("/v2/order", { market: market, orderId: order_id })
  return result if result.failure?

  raw = result.data
  Result::Success.new(normalize_order("#{raw['market']}-#{raw['orderId']}", raw))
end

#get_raw_balance(symbol: nil) ⇒ Object



32
33
34
# File 'lib/honeymaker/clients/bitvavo.rb', line 32

def get_raw_balance(symbol: nil)
  get_signed("/v2/balance", { symbol: symbol })
end

#get_ticker_book(market: nil) ⇒ Object



22
23
24
# File 'lib/honeymaker/clients/bitvavo.rb', line 22

def get_ticker_book(market: nil)
  get_public("/v2/ticker/book", { market: market })
end

#get_ticker_price(market: nil) ⇒ Object



18
19
20
# File 'lib/honeymaker/clients/bitvavo.rb', line 18

def get_ticker_price(market: nil)
  get_public("/v2/ticker/price", { market: market })
end

#get_trades(market:, limit: nil, start_time: nil, end_time: nil, trade_id_from: nil, trade_id_to: nil) ⇒ Object



78
79
80
81
82
83
# File 'lib/honeymaker/clients/bitvavo.rb', line 78

def get_trades(market:, limit: nil, start_time: nil, end_time: nil, trade_id_from: nil, trade_id_to: nil)
  get_signed("/v2/trades", {
    market: market, limit: limit, start: start_time, end: end_time,
    tradeIdFrom: trade_id_from, tradeIdTo: trade_id_to
  })
end

#get_transactions(limit: nil, start_time: nil, end_time: nil) ⇒ Object

— History —



101
102
103
# File 'lib/honeymaker/clients/bitvavo.rb', line 101

def get_transactions(limit: nil, start_time: nil, end_time: nil)
  get_signed("/v2/transactions", { limit: limit, start: start_time, end: end_time })
end

#get_withdrawal_history(symbol: nil, limit: nil, start_time: nil, end_time: nil) ⇒ Object



89
90
91
# File 'lib/honeymaker/clients/bitvavo.rb', line 89

def get_withdrawal_history(symbol: nil, limit: nil, start_time: nil, end_time: nil)
  get_signed("/v2/withdrawal", { symbol: symbol, limit: limit, start: start_time, end: end_time })
end

#place_order(market:, side:, order_type:, amount: nil, amount_quote: nil, price: nil, time_in_force: nil, client_order_id: nil) ⇒ Object



53
54
55
56
57
58
59
60
61
62
63
64
# File 'lib/honeymaker/clients/bitvavo.rb', line 53

def place_order(market:, side:, order_type:, amount: nil, amount_quote: nil, price: nil,
                time_in_force: nil, client_order_id: nil)
  result = post_signed("/v2/order", {
    market: market, side: side, orderType: order_type,
    amount: amount, amountQuote: amount_quote, price: price,
    timeInForce: time_in_force, clientOrderId: client_order_id
  })
  return result if result.failure?

  raw = result.data
  Result::Success.new({ order_id: "#{raw['market']}-#{raw['orderId']}", raw: raw })
end

#withdraw(symbol:, amount:, address:, payment_id: nil) ⇒ Object



93
94
95
96
97
# File 'lib/honeymaker/clients/bitvavo.rb', line 93

def withdraw(symbol:, amount:, address:, payment_id: nil)
  post_signed("/v2/withdrawal", {
    symbol: symbol, amount: amount, address: address, paymentId: payment_id
  })
end