Class: Excoin::Market::Exchange::Orders
- Inherits:
-
Object
- Object
- Excoin::Market::Exchange::Orders
- Defined in:
- lib/exchange/orders.rb
Instance Attribute Summary collapse
-
#all ⇒ Object
readonly
Returns the value of attribute all.
-
#asks ⇒ Object
readonly
Returns the value of attribute asks.
-
#bids ⇒ Object
readonly
Returns the value of attribute bids.
-
#orders ⇒ Object
readonly
Returns the value of attribute orders.
Instance Method Summary collapse
- #add(new_order) ⇒ Object
- #count(attr, value, operator = :==) ⇒ Object
- #filter(attr, value, operator = :==) ⇒ Object
-
#initialize(exchange) ⇒ Orders
constructor
A new instance of Orders.
- #remove(order_data) ⇒ Object
- #update(type = nil) ⇒ Object
Constructor Details
#initialize(exchange) ⇒ Orders
Returns a new instance of Orders.
4 5 6 7 8 |
# File 'lib/exchange/orders.rb', line 4 def initialize(exchange) @currency = exchange.currency @commodity = exchange.commodity self.update end |
Instance Attribute Details
#all ⇒ Object (readonly)
Returns the value of attribute all.
2 3 4 |
# File 'lib/exchange/orders.rb', line 2 def all @all end |
#asks ⇒ Object (readonly)
Returns the value of attribute asks.
2 3 4 |
# File 'lib/exchange/orders.rb', line 2 def asks @asks end |
#bids ⇒ Object (readonly)
Returns the value of attribute bids.
2 3 4 |
# File 'lib/exchange/orders.rb', line 2 def bids @bids end |
#orders ⇒ Object (readonly)
Returns the value of attribute orders.
2 3 4 |
# File 'lib/exchange/orders.rb', line 2 def orders @orders end |
Instance Method Details
#add(new_order) ⇒ Object
35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 |
# File 'lib/exchange/orders.rb', line 35 def add(new_order) begin type = new_order.type.downcase @orders.select{|k,v| k =~ Regexp.new(type)}[type + "_orders"] << new_order if type == "BID" @orders.select{|k,v| k =~ Regexp.new(type)}[type + "_orders"].sort_by{|order| order.price}.reverse! elsif type == "ASK" @orders.select{|k,v| k =~ Regexp.new(type)}[type + "_orders"].sort_by{|order| order.price} end self.set_order_arrays(new_order.type) rescue puts "Error in Excoin::Market::Exchange::Orders.add" puts new_order end end |
#count(attr, value, operator = :==) ⇒ Object
70 71 72 |
# File 'lib/exchange/orders.rb', line 70 def count(attr, value, operator = :==) return filter(attr, value, operator).size end |
#filter(attr, value, operator = :==) ⇒ Object
62 63 64 65 66 67 68 |
# File 'lib/exchange/orders.rb', line 62 def filter(attr, value, operator = :==) attr = attr.to_sym if attr == :price or attr == :commodity_amount or attr == :currency_amount value = BigDecimal.new(value) end return @all.select{|order| order.send(attr).send(operator, value)} end |
#remove(order_data) ⇒ Object
51 52 53 54 55 56 57 58 59 60 |
# File 'lib/exchange/orders.rb', line 51 def remove(order_data) begin type = order_data['type'].downcase @orders.select{|k,v| k =~ Regexp.new(type)}[type + "_orders"].delete_at(@orders.select{|k,v| k =~ Regexp.new(type)}[type + "_orders"].find_index{|order| order.price == BigDecimal.new(order_data['price']) and order.currency_amount == BigDecimal.new(order_data['currency_amount']) and order.commodity_amount == BigDecimal.new(order_data['commodity_amount'])}) self.set_order_arrays(order_data['type']) rescue puts "Error in Excoin::Market::Exchange::Orders.remove" puts order_data end end |
#update(type = nil) ⇒ Object
10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 |
# File 'lib/exchange/orders.rb', line 10 def update(type = nil) unless type order_data = self.get begin @orders = self.process_orders(order_data) @bids = @orders['bid_orders'] @asks = @orders['ask_orders'] @all = self.populate_all rescue puts "Error in Excoin::Market::Exchange::Orders.update (unless type)" puts order_data end else order_data = self.get(type) begin orders_by_type = self.process_by_type(order_data) @orders.merge!(orders_by_type) self.set_order_arrays(type) rescue puts "Error in Excoin::Market::Exchange::Orders.update (else)" puts order_data end end end |