lib/krkt/kraken.rb in krkt-0.1.1 vs lib/krkt/kraken.rb in krkt-0.1.2
- old
+ new
@@ -2,11 +2,11 @@
require('bigdecimal/util')
# @author Hernani Rodrigues Vaz
module Krkt
- # classe para processar carteiras & transacoes normais e ledgers
+ # classe para processar saldos & transacoes trades e ledger
class Kraken
# @return [Client] API kraken
attr_reader :api
# @return [Array<Hash>] todos os dados bigquery
attr_reader :dbq
@@ -14,48 +14,52 @@
attr_reader :ops
# @param [Hash] dad todos os dados bigquery
# @param [Thor::CoreExt::HashWithIndifferentAccess] pop opcoes trabalho
# @option pop [Hash] :h ({}) configuracao dias ajuste reposicionamento temporal
- # @option pop [Boolean] :v (false) mostra dados transacoes normais & ledgers?
- # @return [Kraken] API kraken - processar transacoes normais e ledgers
+ # @option pop [Boolean] :v (false) mostra dados transacoes trades & ledger?
+ # @option pop [Boolean] :t (false) mostra transacoes todas ou somente novas?
+ # @return [Kraken] API kraken - obter saldos & transacoes trades e ledger
def initialize(dad, pop)
+ # API kraken base
@api = Client.new
@dbq = dad
@ops = pop
end
- # @return [Array<Hash>] todos os dados kraken - saldos & transacoes
+ # @return [Hash] dados kraken - saldos & transacoes trades e ledger
def dkr
@dkr ||= {
sl: api.balance,
kt: api.trades_history,
- kl: api.ledgers
+ kl: api.ledger
}
end
- # @return [Array<Integer>] lista blocknumbers de transacoes normais
+ # @return [Array<String>] lista txid de transacoes trades
def kyt
@kyt ||= dkr[:kt]['trades'].keys - (ops[:t] ? [] : dbq[:nt].map { |e| e[:txid] })
end
- # @return [Array<Integer>] lista blocknumbers de transacoes ledger
+ # @return [Array<String>] lista txid de transacoes ledger
def kyl
@kyl ||= dkr[:kl]['ledger'].keys - (ops[:t] ? [] : dbq[:nl].map { |e| e[:txid] })
end
- # @return [Array<Hash>] lista transacoes novas trades
+ # @return [Hash] transacoes trades
def trades
@trades ||= dkr[:kt]['trades'].select { |k, _| kyt.include?(k) }
end
- # @return [Array<Hash>] lista transacoes novas ledger
+ # @return [Hash] transacoes ledger
def ledger
@ledger ||= dkr[:kl]['ledger'].select { |k, _| kyl.include?(k) }
end
- # def formata_saldos(moe, sal)
+ # @parm [String] moe codigo kraken da moeda
+ # @parm [String] moe saldo kraken da moeda
+ # @return [String] texto formatado saldos (kraken/bigquery) & iguais/ok/nok?
def formata_saldos(moe, sal)
t = dbq[:sl][moe.downcase.to_sym].to_d
format(
'%<mo>-5.5s %<kr>21.9f %<bq>21.9f %<ok>3.3s',
mo: moe,
@@ -63,12 +67,13 @@
bq: t,
ok: t == sal ? 'OK' : 'NOK'
)
end
- # @parm [Hash] htx transacao normal
- # @return [String] texto formatado transacao normal
+ # @parm [String] idx codigo transacao
+ # @parm [Hash] htx transacao trade
+ # @return [String] texto formatado transacao trade
def formata_transacao_trades(idx, htx)
format(
'%<ky>-6.6s %<dt>19.19s %<ty>-10.10s %<mo>-8.8s %<pr>8.2f %<vl>15.7f %<co>8.2f',
ky: idx,
dt: Time.at(htx['time']),
@@ -78,10 +83,11 @@
vl: htx['vol'].to_d,
co: htx['cost'].to_d
)
end
+ # @parm idx (see formata_transacao_trades)
# @parm [Hash] hlx transacao ledger
# @return [String] texto formatado transacao ledger
def formata_transacao_ledger(idx, hlx)
format(
'%<ky>-6.6s %<dt>19.19s %<ty>-10.10s %<mo>-4.4s %<pr>18.7f %<vl>18.7f',
@@ -104,10 +110,10 @@
return unless trades.count.positive?
puts("\nstring ajuste dias dos trades\n-h=#{kyt.map { |e| "#{e}:0" }.join(' ')}")
end
- # @return [String] texto transacoes normais
+ # @return [String] texto transacoes trades
def mostra_trades
return unless ops[:v] && trades.count.positive?
puts("\ntrade data hora tipo par ---preco ---------volume ---custo")
trades.each { |k, v| puts(formata_transacao_trades(k, v)) }