Class: Honeymaker::Clients::Bitvavo
- Inherits:
-
Honeymaker::Client
- Object
- Honeymaker::Client
- Honeymaker::Clients::Bitvavo
- 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
- DEFAULT_OPERATOR_ID =
Bitvavo requires a mandatory operatorId on every order create/cancel (errorCode 203). It’s a positive int64 the caller sets themselves to attribute an order to a trader/bot for audit; the value is cosmetic.
1
Constants inherited from Honeymaker::Client
Instance Attribute Summary
Attributes inherited from Honeymaker::Client
Instance Method Summary collapse
- #cancel_order(market:, order_id:, operator_id: nil) ⇒ Object
- #get_assets ⇒ Object
- #get_balances ⇒ Object
- #get_candles(market:, interval:, start_time: nil, end_time: nil, limit: nil) ⇒ Object
- #get_deposit_history(symbol: nil, limit: nil, start_time: nil, end_time: nil) ⇒ Object
- #get_markets(market: nil) ⇒ Object
- #get_order(market:, order_id:) ⇒ Object
- #get_raw_balance(symbol: nil) ⇒ Object
- #get_ticker_book(market: nil) ⇒ Object
- #get_ticker_price(market: nil) ⇒ Object
- #get_trades(market:, limit: nil, start_time: nil, end_time: nil, trade_id_from: nil, trade_id_to: nil) ⇒ Object
-
#get_transactions(limit: nil, start_time: nil, end_time: nil) ⇒ Object
— History —.
- #get_withdrawal_history(symbol: nil, limit: nil, start_time: nil, end_time: nil) ⇒ Object
- #place_order(market:, side:, order_type:, amount: nil, amount_quote: nil, price: nil, time_in_force: nil, client_order_id: nil, operator_id: nil) ⇒ Object
- #withdraw(symbol:, amount:, address:, payment_id: nil) ⇒ Object
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:, operator_id: nil) ⇒ Object
80 81 82 83 84 |
# File 'lib/honeymaker/clients/bitvavo.rb', line 80 def cancel_order(market:, order_id:, operator_id: nil) delete_signed("/v2/order", { market: market, orderId: order_id, operatorId: operator_id || DEFAULT_OPERATOR_ID }) end |
#get_assets ⇒ Object
15 16 17 |
# File 'lib/honeymaker/clients/bitvavo.rb', line 15 def get_assets get_public("/v2/assets") end |
#get_balances ⇒ Object
41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 |
# File 'lib/honeymaker/clients/bitvavo.rb', line 41 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
31 32 33 34 35 |
# File 'lib/honeymaker/clients/bitvavo.rb', line 31 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
93 94 95 |
# File 'lib/honeymaker/clients/bitvavo.rb', line 93 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
19 20 21 |
# File 'lib/honeymaker/clients/bitvavo.rb', line 19 def get_markets(market: nil) get_public("/v2/markets", { market: market }) end |
#get_order(market:, order_id:) ⇒ Object
72 73 74 75 76 77 78 |
# File 'lib/honeymaker/clients/bitvavo.rb', line 72 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
37 38 39 |
# File 'lib/honeymaker/clients/bitvavo.rb', line 37 def get_raw_balance(symbol: nil) get_signed("/v2/balance", { symbol: symbol }) end |
#get_ticker_book(market: nil) ⇒ Object
27 28 29 |
# File 'lib/honeymaker/clients/bitvavo.rb', line 27 def get_ticker_book(market: nil) get_public("/v2/ticker/book", { market: market }) end |
#get_ticker_price(market: nil) ⇒ Object
23 24 25 |
# File 'lib/honeymaker/clients/bitvavo.rb', line 23 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
86 87 88 89 90 91 |
# File 'lib/honeymaker/clients/bitvavo.rb', line 86 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 —
109 110 111 |
# File 'lib/honeymaker/clients/bitvavo.rb', line 109 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
97 98 99 |
# File 'lib/honeymaker/clients/bitvavo.rb', line 97 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, operator_id: nil) ⇒ Object
58 59 60 61 62 63 64 65 66 67 68 69 70 |
# File 'lib/honeymaker/clients/bitvavo.rb', line 58 def place_order(market:, side:, order_type:, amount: nil, amount_quote: nil, price: nil, time_in_force: nil, client_order_id: nil, operator_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, operatorId: operator_id || DEFAULT_OPERATOR_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
101 102 103 104 105 |
# File 'lib/honeymaker/clients/bitvavo.rb', line 101 def withdraw(symbol:, amount:, address:, payment_id: nil) post_signed("/v2/withdrawal", { symbol: symbol, amount: amount, address: address, paymentId: payment_id }) end |