From 2e879cfa37c2241327967434fd18a79cf315d32f Mon Sep 17 00:00:00 2001 From: Denis Tereshkin Date: Thu, 22 Sep 2016 17:38:01 +0700 Subject: [PATCH] Broker data structure --- src/Broker.hs | 14 ++++++++++++-- 1 file changed, 12 insertions(+), 2 deletions(-) diff --git a/src/Broker.hs b/src/Broker.hs index 3008fd2..106c6bf 100644 --- a/src/Broker.hs +++ b/src/Broker.hs @@ -16,6 +16,8 @@ data OrderPrice = Market | Limit Decimal | Stop Decimal Decimal data Operation = Buy | Sell deriving (Show, Eq) +type OrderId = Integer + data OrderState = Unsubmitted | Submitted | PartiallyExecuted @@ -25,7 +27,7 @@ data OrderState = Unsubmitted | Error String data Order = Order { - orderId :: Integer, + orderId :: OrderId, orderAccountId :: String, orderSecurity :: String, orderPrice :: OrderPrice, @@ -37,7 +39,7 @@ data Order = Order { deriving (Show, Eq) data Trade = Trade { - tradeOrderId :: Integer, + tradeOrderId :: OrderId, tradePrice :: Decimal, tradeQuantity :: Integer, tradeVolume :: Decimal, @@ -48,3 +50,11 @@ data Trade = Trade { tradeSignalId :: SignalId } deriving (Show, Eq) +data Broker = Broker { + accounts :: [String], + setTradeCallback :: Maybe (Trade -> IO ()), + setOrderCallback :: Maybe (Order -> IO ()), + submitOrder :: Order -> IO (), + cancelOrder :: OrderId -> IO () +} +