ATrade core infrastructure
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

28 lines
845 B

module ATrade.Broker.Backend
(
BrokerBackend(..),
BrokerBackendNotification(..),
backendNotificationOrderId
) where
import ATrade.Types
import qualified Data.Text as T
data BrokerBackendNotification =
BackendTradeNotification Trade |
BackendOrderNotification OrderId OrderState
deriving (Show, Eq)
backendNotificationOrderId :: BrokerBackendNotification -> OrderId
backendNotificationOrderId (BackendOrderNotification oid _) = oid
backendNotificationOrderId (BackendTradeNotification trade) = tradeOrderId trade
data BrokerBackend = BrokerBackend
{
accounts :: [T.Text],
setNotificationCallback :: (Maybe (BrokerBackendNotification -> IO ())) -> IO (),
submitOrder :: Order -> IO (),
cancelOrder :: OrderId -> IO (),
stop :: IO ()
}