Class: KrakenApiWrapper
- Inherits:
-
ApiWrapper
show all
- Defined in:
- lib/bitex_bot/models/api_wrappers/kraken/kraken_api_wrapper.rb
Overview
Constant Summary
collapse
- MIN_AMOUNT =
0.002
Class Method Summary
collapse
-
.amount_and_quantity(order_id, _transactions) ⇒ Object
-
.balance ⇒ Object
-
.balance_parser(balances, currency, reserved) ⇒ Object
-
.balance_summary_parser(balances) ⇒ Object
{ ZEUR: ‘1433.0939’, XXBT: ‘0.0000000000’, ‘XETH’: ‘99.7497224800’ }.
-
.btc_reserved(open_orders) ⇒ Object
-
.client ⇒ Object
-
.enough_order_size?(quantity, _price) ⇒ Boolean
-
.find_lost(type, price, quantity) ⇒ Object
-
.order_book ⇒ Object
-
.order_book_parser(book) ⇒ Object
{ ‘asks’: [[‘204.52893’, ‘0.010’, 1440291148], [‘204.78790’, ‘0.312’, 1440291132]], ‘bids’: [[‘204.24000’, ‘0.100’, 1440291016], [‘204.23010’, ‘0.312’, 1440290699]] }.
-
.order_parser(order) ⇒ Object
<KrakenOrder: @id=‘O5TDV2-WDYB2-6OGJRD’, @type=:buy, @price=‘1.01’, @amount=‘1.00000000’, @datetime=‘2013-09-26 23:15:04’>.
-
.order_summary_parser(stock_market) ⇒ Object
-
.orders ⇒ Object
-
.orders_by(open_orders, order_type) ⇒ Object
-
.send_order(type, price, quantity) ⇒ Object
-
.setup(settings) ⇒ Object
-
.transaction_parser(transaction) ⇒ Object
- [‘price’, ‘amount’, ‘timestamp’, ‘buy/sell’, ‘market/limit’, ‘miscellaneous’
- ‘202.51626’, ‘0.01440000’, 1440277319.1922, ‘b’, ‘l’, ”], [‘202.54000’, ‘0.10000000’, 1440277322.8993, ‘b’, ‘l’, ”
-
].
-
.transactions ⇒ Object
-
.usd_reserved(open_orders) ⇒ Object
-
.user_transactions ⇒ Object
We don’t need to fetch the list of transactions for Kraken.
Methods inherited from ApiWrapper
cancel, place_order, user_transacitions
Class Method Details
.amount_and_quantity(order_id, _transactions) ⇒ Object
15
16
17
|
# File 'lib/bitex_bot/models/api_wrappers/kraken/kraken_api_wrapper.rb', line 15
def self.amount_and_quantity(order_id, _transactions)
KrakenOrder.amount_and_quantity(order_id)
end
|
.balance ⇒ Object
19
20
21
22
23
|
# File 'lib/bitex_bot/models/api_wrappers/kraken/kraken_api_wrapper.rb', line 19
def self.balance
balance_summary_parser(client.private.balance)
rescue KrakenClient::ErrorResponse, Net::ReadTimeout
retry
end
|
.balance_parser(balances, currency, reserved) ⇒ Object
70
71
72
|
# File 'lib/bitex_bot/models/api_wrappers/kraken/kraken_api_wrapper.rb', line 70
def self.balance_parser(balances, currency, reserved)
Balance.new(balances[currency].to_d, reserved, balances[currency].to_d - reserved)
end
|
.balance_summary_parser(balances) ⇒ Object
{ ZEUR: ‘1433.0939’, XXBT: ‘0.0000000000’, ‘XETH’: ‘99.7497224800’ }
61
62
63
64
65
66
67
68
|
# File 'lib/bitex_bot/models/api_wrappers/kraken/kraken_api_wrapper.rb', line 61
def self.balance_summary_parser(balances)
open_orders = KrakenOrder.open
BalanceSummary.new(
balance_parser(balances, :XXBT, btc_reserved(open_orders)),
balance_parser(balances, :ZUSD, usd_reserved(open_orders)),
client.private.trade_volume(pair: 'XBTUSD')[:fees][:XXBTZUSD][:fee].to_d
)
end
|
.btc_reserved(open_orders) ⇒ Object
74
75
76
|
# File 'lib/bitex_bot/models/api_wrappers/kraken/kraken_api_wrapper.rb', line 74
def self.btc_reserved(open_orders)
orders_by(open_orders, :sell).map { |o| (o.amount - o.executed_amount).to_d }.sum
end
|
.client ⇒ Object
11
12
13
|
# File 'lib/bitex_bot/models/api_wrappers/kraken/kraken_api_wrapper.rb', line 11
def self.client
@client ||= KrakenClient.load(@settings)
end
|
.enough_order_size?(quantity, _price) ⇒ Boolean
25
26
27
|
# File 'lib/bitex_bot/models/api_wrappers/kraken/kraken_api_wrapper.rb', line 25
def self.enough_order_size?(quantity, _price)
quantity >= MIN_AMOUNT
end
|
.find_lost(type, price, quantity) ⇒ Object
29
30
31
|
# File 'lib/bitex_bot/models/api_wrappers/kraken/kraken_api_wrapper.rb', line 29
def self.find_lost(type, price, quantity)
KrakenOrder.find_lost(type, price, quantity)
end
|
.order_book ⇒ Object
33
34
35
36
37
|
# File 'lib/bitex_bot/models/api_wrappers/kraken/kraken_api_wrapper.rb', line 33
def self.order_book
order_book_parser(client.public.order_book('XBTUSD')[:XXBTZUSD])
rescue NoMethodError
retry
end
|
.order_book_parser(book) ⇒ Object
'asks': [['204.52893', '0.010', 1440291148], ['204.78790', '0.312', 1440291132]],
'bids': [['204.24000', '0.100', 1440291016], ['204.23010', '0.312', 1440290699]]
90
91
92
|
# File 'lib/bitex_bot/models/api_wrappers/kraken/kraken_api_wrapper.rb', line 90
def self.order_book_parser(book)
OrderBook.new(Time.now.to_i, order_summary_parser(book[:bids]), order_summary_parser(book[:asks]))
end
|
.order_parser(order) ⇒ Object
<KrakenOrder: @id=‘O5TDV2-WDYB2-6OGJRD’, @type=:buy, @price=‘1.01’, @amount=‘1.00000000’, @datetime=‘2013-09-26 23:15:04’>
99
100
101
|
# File 'lib/bitex_bot/models/api_wrappers/kraken/kraken_api_wrapper.rb', line 99
def self.order_parser(order)
Order.new(order.id.to_s, order.type, order.price, order.amount, order.datetime, order)
end
|
.order_summary_parser(stock_market) ⇒ Object
94
95
96
|
# File 'lib/bitex_bot/models/api_wrappers/kraken/kraken_api_wrapper.rb', line 94
def self.order_summary_parser(stock_market)
stock_market.map { |stock| OrderSummary.new(stock[0].to_d, stock[1].to_d) }
end
|
.orders ⇒ Object
39
40
41
|
# File 'lib/bitex_bot/models/api_wrappers/kraken/kraken_api_wrapper.rb', line 39
def self.orders
KrakenOrder.open.map { |ko| order_parser(ko) }
end
|
.orders_by(open_orders, order_type) ⇒ Object
82
83
84
|
# File 'lib/bitex_bot/models/api_wrappers/kraken/kraken_api_wrapper.rb', line 82
def self.orders_by(open_orders, order_type)
open_orders.select { |o| o.type == order_type }
end
|
.send_order(type, price, quantity) ⇒ Object
43
44
45
|
# File 'lib/bitex_bot/models/api_wrappers/kraken/kraken_api_wrapper.rb', line 43
def self.send_order(type, price, quantity)
KrakenOrder.create!(type, price, quantity)
end
|
.setup(settings) ⇒ Object
6
7
8
9
|
# File 'lib/bitex_bot/models/api_wrappers/kraken/kraken_api_wrapper.rb', line 6
def self.setup(settings)
HTTParty::Basement.('User-Agent' => BitexBot.user_agent)
@settings = settings
end
|
.transaction_parser(transaction) ⇒ Object
[
['price', 'amount', 'timestamp', 'buy/sell', 'market/limit', 'miscellaneous']
['202.51626', '0.01440000', 1440277319.1922, 'b', 'l', ''],
['202.54000', '0.10000000', 1440277322.8993, 'b', 'l', '']
]
108
109
110
|
# File 'lib/bitex_bot/models/api_wrappers/kraken/kraken_api_wrapper.rb', line 108
def self.transaction_parser(transaction)
Transaction.new(transaction[2].to_i, transaction[0].to_d, transaction[1].to_d, transaction[2].to_i)
end
|
.transactions ⇒ Object
47
48
49
50
51
|
# File 'lib/bitex_bot/models/api_wrappers/kraken/kraken_api_wrapper.rb', line 47
def self.transactions
client.public.trades('XBTUSD')[:XXBTZUSD].reverse.map { |t| transaction_parser(t) }
rescue NoMethodError
retry
end
|
.usd_reserved(open_orders) ⇒ Object
78
79
80
|
# File 'lib/bitex_bot/models/api_wrappers/kraken/kraken_api_wrapper.rb', line 78
def self.usd_reserved(open_orders)
orders_by(open_orders, :buy).map { |o| (o.amount - o.executed_amount) * o.price.to_d }.sum
end
|
.user_transactions ⇒ Object
We don’t need to fetch the list of transactions for Kraken
54
55
56
|
# File 'lib/bitex_bot/models/api_wrappers/kraken/kraken_api_wrapper.rb', line 54
def self.user_transactions
[]
end
|