Class: Holdings::Simple
- Inherits:
-
Object
- Object
- Holdings::Simple
- Defined in:
- lib/holdings/simple.rb
Instance Attribute Summary collapse
-
#fee ⇒ Object
Returns the value of attribute fee.
Class Method Summary collapse
Instance Method Summary collapse
- #credit(currency, value) ⇒ Object
- #debit(currency, value) ⇒ Object
- #get(currency) ⇒ Object
-
#initialize(pairs, balances) ⇒ Simple
constructor
A new instance of Simple.
- #largest_balance ⇒ Object
- #set(currency, value) ⇒ Object
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
#fee ⇒ Object
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_balance ⇒ Object
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 |