class Order

Attributes

id[R]
price[RW]
sent_at[R]
side[R]
size[R]
status[RW]

Public Class Methods

new(id, side, price, size) click to toggle source
# File lib/order.rb, line 9
def initialize id, side, price, size
  @id, @side, @price, @size = id, side, price, size
  @sent_at = Time.now
  @cancelled = false
  @status = :pending_accept

  @price = @price.round 2
end

Public Instance Methods

<=>(order) click to toggle source
# File lib/order.rb, line 18
def <=> order
  if order.price == price
    @sent_at <=> order.sent_at
  else
    price <=> order.price
  end
end
cancel!() click to toggle source
# File lib/order.rb, line 41
def cancel!
  return if @cancelled  # can only cancel an order once

  @cancelled = true
  changed
  notify_observers :cancel, self
end
cancelled?() click to toggle source
# File lib/order.rb, line 26
def cancelled?
  @cancelled
end
fill!(amount) click to toggle source
# File lib/order.rb, line 30
def fill! amount
  changed

  status = :fill
  status = :partial_fill if amount < @size

  @size -= amount
  
  notify_observers status, self
end