Class: Cns::Bitcoinde
- Inherits:
-
Object
- Object
- Cns::Bitcoinde
- Defined in:
- lib/cns/bitcoinde.rb
Overview
classe para processar transacoes trades/ledger do bitcoinde
Instance Attribute Summary collapse
-
#api ⇒ Apius
readonly
API bitcoinde.
-
#bqd ⇒ Array<Hash>
readonly
Todos os dados bigquery.
-
#ops ⇒ Thor::CoreExt::HashWithIndifferentAccess
readonly
Opcoes trabalho.
Instance Method Summary collapse
-
#exd ⇒ Hash
Dados exchange bitcoinde - saldos & trades & deposits & withdrawals.
-
#formata_ledger(hlx) ⇒ String
Texto formatado ledger.
-
#formata_saldos(moe, hsx) ⇒ String
Texto formatado saldos.
-
#formata_trades(htx) ⇒ String
Texto formatado trade.
-
#initialize(dad, pop) ⇒ Bitcoinde
constructor
API bitcoinde - obter saldos & transacoes trades e ledger.
-
#kyl ⇒ Array<Integer>
Lista txid dos ledger novos.
-
#kyt ⇒ Array<String>
Lista txid dos trades novos.
-
#ledger ⇒ Array<Hash>
Lista ledger (deposits + withdrawals) bitcoinde novos.
-
#mostra_ledger ⇒ String
Texto transacoes ledger.
-
#mostra_resumo ⇒ String
Texto saldos & transacoes & ajuste dias.
-
#mostra_totais ⇒ String
Texto numero de transacoes.
-
#mostra_trades ⇒ String
Texto transacoes trades.
-
#trades ⇒ Array<Hash>
Lista trades bitcoinde novos.
Constructor Details
Instance Attribute Details
#api ⇒ Apius (readonly)
Returns API bitcoinde.
10 11 12 |
# File 'lib/cns/bitcoinde.rb', line 10 def api @api end |
#bqd ⇒ Array<Hash> (readonly)
Returns todos os dados bigquery.
12 13 14 |
# File 'lib/cns/bitcoinde.rb', line 12 def bqd @bqd end |
#ops ⇒ Thor::CoreExt::HashWithIndifferentAccess (readonly)
Returns opcoes trabalho.
14 15 16 |
# File 'lib/cns/bitcoinde.rb', line 14 def ops @ops end |
Instance Method Details
#exd ⇒ Hash
Returns dados exchange bitcoinde - saldos & trades & deposits & withdrawals.
52 53 54 55 56 57 58 |
# File 'lib/cns/bitcoinde.rb', line 52 def exd @exd ||= { sl: api.account_de, tt: api.trades_de, tl: api.deposits_de + api.withdrawals_de } end |
#formata_ledger(hlx) ⇒ String
Returns texto formatado ledger.
106 107 108 109 110 111 112 113 114 115 116 |
# File 'lib/cns/bitcoinde.rb', line 106 def formata_ledger(hlx) format( '%<ky>6i %<dt>19.19s %<ty>-10.10s %<mo>-3.3s %<pr>19.8f %<vl>18.8f', ky: hlx[:txid], dt: hlx[:time], ty: hlx[:tp], mo: hlx[:moe].upcase, pr: hlx[:qt].to_d, vl: hlx[:fee].to_d ) end |
#formata_saldos(moe, hsx) ⇒ String
Returns texto formatado saldos.
74 75 76 77 78 79 80 81 82 83 84 |
# File 'lib/cns/bitcoinde.rb', line 74 def formata_saldos(moe, hsx) vbq = bqd[:sl][moe.downcase.to_sym].to_d.round(9) vex = hsx[:total_amount].to_d.round(9) format( '%<mo>-5.5s %<ex>21.9f %<bq>21.9f %<ok>3.3s', mo: moe.upcase, ex: vex, bq: vbq, ok: vex == vbq ? 'OK' : 'NOK' ) end |
#formata_trades(htx) ⇒ String
Returns texto formatado trade.
89 90 91 92 93 94 95 96 97 98 99 100 |
# File 'lib/cns/bitcoinde.rb', line 89 def formata_trades(htx) format( '%<ky>-6.6s %<dt>19.19s %<dp>10.10s %<ty>-5.5s %<mo>-8.8s %<vl>18.8f %<co>8.2f', ky: htx[:trade_id], dt: Time.parse(htx[:successfully_finished_at]), dp: Time.parse(htx[:trade_marked_as_paid_at]), ty: htx[:type], mo: htx[:trading_pair].upcase, vl: htx[:amount_currency_to_trade].to_d, co: htx[:volume_currency_to_pay].to_d ) end |
#kyl ⇒ Array<Integer>
Returns lista txid dos ledger novos.
66 67 68 |
# File 'lib/cns/bitcoinde.rb', line 66 def kyl @kyl ||= exd[:tl].map { |oex| oex[:txid] }.flatten - (ops[:t] ? [] : bqd[:nl].map { |obq| obq[:txid] }) end |
#kyt ⇒ Array<String>
Returns lista txid dos trades novos.
61 62 63 |
# File 'lib/cns/bitcoinde.rb', line 61 def kyt @kyt ||= exd[:tt].map { |oex| oex[:trade_id] }.flatten - (ops[:t] ? [] : bqd[:nt].map { |obq| obq[:txid] }) end |
#ledger ⇒ Array<Hash>
Returns lista ledger (deposits + withdrawals) bitcoinde novos.
34 35 36 |
# File 'lib/cns/bitcoinde.rb', line 34 def ledger @ledger ||= exd[:tl].select { |obj| kyl.include?(obj[:txid]) } end |
#mostra_ledger ⇒ String
Returns texto transacoes ledger.
140 141 142 143 144 145 |
# File 'lib/cns/bitcoinde.rb', line 140 def mostra_ledger return unless ops[:v] && !ledger.empty? puts("\nledger data hora tipo moe quantidade custo") ledger.sort { |ant, prx| prx[:time] <=> ant[:time] }.each { |obj| puts(formata_ledger(obj)) } end |
#mostra_resumo ⇒ String
Returns texto saldos & transacoes & ajuste dias.
39 40 41 42 43 44 45 46 47 48 49 |
# File 'lib/cns/bitcoinde.rb', line 39 def mostra_resumo puts("\nBITCOINDE\ntipo bitcoinde bigquery") exd[:sl].sort { |ant, prx| ant <=> prx }.each { |key, val| puts(formata_saldos(key, val)) } mostra_totais mostra_trades mostra_ledger return if trades.empty? puts("\nstring ajuste dias dos trades\n-h=#{kyt.map { |obj| "#{obj}:0" }.join(' ')}") end |
#mostra_totais ⇒ String
Returns texto numero de transacoes.
119 120 121 122 123 124 125 126 127 |
# File 'lib/cns/bitcoinde.rb', line 119 def mostra_totais vtt = exd[:tt].count vnt = bqd[:nt].count vtl = exd[:tl].count vnl = bqd[:nl].count puts("TRADES #{format('%<a>20i %<b>21i %<o>3.3s', a: vtt, b: vnt, o: vtt == vnt ? 'OK' : 'NOK')}") puts("LEDGER #{format('%<c>20i %<d>21i %<o>3.3s', c: vtl, d: vnl, o: vtl == vnl ? 'OK' : 'NOK')}") end |
#mostra_trades ⇒ String
Returns texto transacoes trades.
130 131 132 133 134 135 136 137 |
# File 'lib/cns/bitcoinde.rb', line 130 def mostra_trades return unless ops[:v] && !trades.empty? puts("\ntrades data hora dt criacao tipo par qtd eur") trades .sort { |ant, prx| Time.parse(prx[:successfully_finished_at]) <=> Time.parse(ant[:successfully_finished_at]) } .each { |obj| puts(formata_trades(obj)) } end |
#trades ⇒ Array<Hash>
Returns lista trades bitcoinde novos.
29 30 31 |
# File 'lib/cns/bitcoinde.rb', line 29 def trades @trades ||= exd[:tt].select { |obj| kyt.include?(obj[:trade_id]) } end |