|
|
|
@ -16,6 +16,8 @@ data OrderPrice = Market | Limit Decimal | Stop Decimal Decimal |
|
|
|
data Operation = Buy | Sell |
|
|
|
data Operation = Buy | Sell |
|
|
|
deriving (Show, Eq) |
|
|
|
deriving (Show, Eq) |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
type OrderId = Integer |
|
|
|
|
|
|
|
|
|
|
|
data OrderState = Unsubmitted |
|
|
|
data OrderState = Unsubmitted |
|
|
|
| Submitted |
|
|
|
| Submitted |
|
|
|
| PartiallyExecuted |
|
|
|
| PartiallyExecuted |
|
|
|
@ -25,7 +27,7 @@ data OrderState = Unsubmitted |
|
|
|
| Error String |
|
|
|
| Error String |
|
|
|
|
|
|
|
|
|
|
|
data Order = Order { |
|
|
|
data Order = Order { |
|
|
|
orderId :: Integer, |
|
|
|
orderId :: OrderId, |
|
|
|
orderAccountId :: String, |
|
|
|
orderAccountId :: String, |
|
|
|
orderSecurity :: String, |
|
|
|
orderSecurity :: String, |
|
|
|
orderPrice :: OrderPrice, |
|
|
|
orderPrice :: OrderPrice, |
|
|
|
@ -37,7 +39,7 @@ data Order = Order { |
|
|
|
deriving (Show, Eq) |
|
|
|
deriving (Show, Eq) |
|
|
|
|
|
|
|
|
|
|
|
data Trade = Trade { |
|
|
|
data Trade = Trade { |
|
|
|
tradeOrderId :: Integer, |
|
|
|
tradeOrderId :: OrderId, |
|
|
|
tradePrice :: Decimal, |
|
|
|
tradePrice :: Decimal, |
|
|
|
tradeQuantity :: Integer, |
|
|
|
tradeQuantity :: Integer, |
|
|
|
tradeVolume :: Decimal, |
|
|
|
tradeVolume :: Decimal, |
|
|
|
@ -48,3 +50,11 @@ data Trade = Trade { |
|
|
|
tradeSignalId :: SignalId } |
|
|
|
tradeSignalId :: SignalId } |
|
|
|
deriving (Show, Eq) |
|
|
|
deriving (Show, Eq) |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
data Broker = Broker { |
|
|
|
|
|
|
|
accounts :: [String], |
|
|
|
|
|
|
|
setTradeCallback :: Maybe (Trade -> IO ()), |
|
|
|
|
|
|
|
setOrderCallback :: Maybe (Order -> IO ()), |
|
|
|
|
|
|
|
submitOrder :: Order -> IO (), |
|
|
|
|
|
|
|
cancelOrder :: OrderId -> IO () |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
|