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)) }