class Moneymarket::Order

Constants

CANCELED
NEW
OPEN
TRADED

Attributes

fee[R]
limit[R]
ref[R]
user[R]
volume[R]

Public Class Methods

new(user: nil, status: NEW, volume: nil, limit: nil, fee: 0.0, ref: nil) click to toggle source
# File lib/moneymarket/core/order.rb, line 10
def initialize(user: nil, status: NEW, volume: nil, limit: nil, fee: 0.0, ref: nil)
  @user = user
  @status = status
  @volume = volume
  @limit = limit
  @fee = fee
  @ref = ref
end

Public Instance Methods

base_currency() click to toggle source
# File lib/moneymarket/core/order.rb, line 23
def base_currency
  volume.currency
end
closed?() click to toggle source
# File lib/moneymarket/core/order.rb, line 56
def closed?
  traded? || canceled?
end
consume(_volume) click to toggle source
# File lib/moneymarket/core/order.rb, line 31
def consume(_volume)
  raise ArgumentError, 'cannot consume, order closed' if closed?
  raise ArgumentError, 'amount to consume must be positive' if _volume < 0
  raise ArgumentError, 'trying to consume more than is available' if _volume > @volume
  @volume -= _volume

  @status = TRADED if @volume == 0
end
flag_as_canceled() click to toggle source
# File lib/moneymarket/core/order.rb, line 48
def flag_as_canceled
  @status = CANCELED unless closed?
end
flag_as_open() click to toggle source
# File lib/moneymarket/core/order.rb, line 40
def flag_as_open
  if market_order?
    flag_as_canceled
  else
    @status = OPEN if new?
  end
end
market_order?() click to toggle source
# File lib/moneymarket/core/order.rb, line 19
def market_order?
  limit.nil?
end
quote_currency() click to toggle source
# File lib/moneymarket/core/order.rb, line 27
def quote_currency
  limit.currency
end