From f8f75c2d5696dc83b070fb12c72182792fb417d8 Mon Sep 17 00:00:00 2001 From: Adrian Gallagher Date: Thu, 19 Feb 2015 23:41:08 +1100 Subject: [PATCH] Implement order system. --- orders.go | 64 +++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 64 insertions(+) create mode 100644 orders.go diff --git a/orders.go b/orders.go new file mode 100644 index 00000000..453d7e86 --- /dev/null +++ b/orders.go @@ -0,0 +1,64 @@ + +package main + +const ( + LIMIT_ORDER = iota + MARKET_ORDER +) + +var Orders []*Order + +type Order struct { + OrderID int + Exchange string + Type int + Amount float64 + Price float64 +} + +func NewOrder(Exchange string, amount, price float64) (int) { + order := &Order{} + if (len(Orders) == 0) { + order.OrderID = 0 + } else { + order.OrderID = len(Orders) + } + + order.Exchange = Exchange + order.Amount = amount + order.Price = price + Orders = append(Orders, order) + return order.OrderID +} + +func DeleteOrder(orderID int) (bool) { + for i := range Orders { + if Orders[i].OrderID == orderID { + Orders = append(Orders[:i], Orders[i+1:]...) + return true + } + } + return false +} + +func GetOrdersByExchange(exchange string) ([]*Order, bool) { + orders := []*Order{} + for i := range Orders { + if Orders[i].Exchange == exchange { + orders = append(orders, Orders[i]) + } + } + if len(orders) > 0 { + return orders, true + } + return nil, false +} + +func GetOrderByOrderID(orderID int) (*Order, bool) { + for i := range Orders { + if Orders[i].OrderID == orderID { + return Orders[i], true + } + } + return nil, false +} \ No newline at end of file