Class: Moneymarket::Order

Inherits:
Object
  • Object
show all
Defined in:
lib/moneymarket/core/order.rb

Direct Known Subclasses

Ask, Bid

Constant Summary collapse

NEW =
:new
OPEN =
:open
TRADED =
:traded
CANCELED =
:canceled

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(user: nil, status: NEW, volume: nil, limit: nil, fee: 0.0, ref: nil) ⇒ Order

Returns a new instance of Order.



10
11
12
13
14
15
16
17
# 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

Instance Attribute Details

#feeObject (readonly)

Returns the value of attribute fee.



8
9
10
# File 'lib/moneymarket/core/order.rb', line 8

def fee
  @fee
end

#limitObject (readonly)

Returns the value of attribute limit.



8
9
10
# File 'lib/moneymarket/core/order.rb', line 8

def limit
  @limit
end

#refObject (readonly)

Returns the value of attribute ref.



8
9
10
# File 'lib/moneymarket/core/order.rb', line 8

def ref
  @ref
end

#userObject (readonly)

Returns the value of attribute user.



8
9
10
# File 'lib/moneymarket/core/order.rb', line 8

def user
  @user
end

#volumeObject (readonly)

Returns the value of attribute volume.



8
9
10
# File 'lib/moneymarket/core/order.rb', line 8

def volume
  @volume
end

Instance Method Details

#base_currencyObject



23
24
25
# File 'lib/moneymarket/core/order.rb', line 23

def base_currency
  volume.currency
end

#closed?Boolean

Returns:

  • (Boolean)


56
57
58
# File 'lib/moneymarket/core/order.rb', line 56

def closed?
  traded? || canceled?
end

#consume(_volume) ⇒ Object

Raises:

  • (ArgumentError)


31
32
33
34
35
36
37
38
# 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_canceledObject



48
49
50
# File 'lib/moneymarket/core/order.rb', line 48

def flag_as_canceled
  @status = CANCELED unless closed?
end

#flag_as_openObject



40
41
42
43
44
45
46
# 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?Boolean

Returns:

  • (Boolean)


19
20
21
# File 'lib/moneymarket/core/order.rb', line 19

def market_order?
  limit.nil?
end

#quote_currencyObject



27
28
29
# File 'lib/moneymarket/core/order.rb', line 27

def quote_currency
  limit.currency
end