Class: Holdings::Simple

Inherits:
Object
  • Object
show all
Defined in:
lib/holdings/simple.rb

Instance Attribute Summary collapse

Class Method Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(pairs, balances) ⇒ Simple

Returns a new instance of Simple.



13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
# File 'lib/holdings/simple.rb', line 13

def initialize(pairs, balances)
  @fee = 0.2

  pairs.each do |pair|
    base_currency, quote_currency = pair.split("_")
    define_singleton_method "#{quote_currency}_to_#{base_currency}", lambda { |exchange_rate, amount, fee=0.2|
      sell(base_currency, quote_currency, exchange_rate, amount, fee)
    }

    define_singleton_method "#{base_currency}_to_#{quote_currency}", lambda { |exchange_rate, amount, fee=0.2|
      buy(base_currency, quote_currency, exchange_rate, amount, fee)
    }
  end

  @balances = balances

  currencies = pairs.join("_").split("_").uniq
  currencies.each do |currency|
    define_singleton_method "#{currency}_bal", lambda { get(currency) }
    @balances[currency.to_sym] ||= 0.0
  end
end

Instance Attribute Details

#feeObject

Returns the value of attribute fee.



3
4
5
# File 'lib/holdings/simple.rb', line 3

def fee
  @fee
end

Class Method Details

.legacy_new(ltc_val, btc_val, usd_val, rur_val = 0) ⇒ Object



5
6
7
8
9
10
11
# File 'lib/holdings/simple.rb', line 5

def self.legacy_new(ltc_val, btc_val, usd_val, rur_val=0)
  @ltc_bal = ltc_val
  @btc_bal = btc_val
  @usd_bal = usd_val
  @rur_bal = rur_val
  acc = self.new(%w(btc_usd ltc_usd ltc_btc btc_rur usd_rur), {ltc: ltc_val, btc: btc_val, usd: usd_val, rur: rur_val })
end

Instance Method Details

#credit(currency, value) ⇒ Object



44
45
46
# File 'lib/holdings/simple.rb', line 44

def credit(currency, value)
  @balances[currency.to_sym] += value
end

#debit(currency, value) ⇒ Object



48
49
50
# File 'lib/holdings/simple.rb', line 48

def debit(currency, value)
  @balances[currency.to_sym] -= value
end

#get(currency) ⇒ Object



40
41
42
# File 'lib/holdings/simple.rb', line 40

def get(currency)
  @balances[currency.to_sym]
end

#largest_balanceObject



52
53
54
55
56
# File 'lib/holdings/simple.rb', line 52

def largest_balance
  inverted_balances = @balances.invert
  highest = inverted_balances.keys.sort.last
  inverted_balances[highest].to_s
end

#set(currency, value) ⇒ Object



36
37
38
# File 'lib/holdings/simple.rb', line 36

def set(currency, value)
  @balances[currency.to_sym] = value
end