diff --git a/app/Main.hs b/app/Main.hs index 3465ec7..0af12f6 100644 --- a/app/Main.hs +++ b/app/Main.hs @@ -89,16 +89,16 @@ parseConfig = withObject "object" $ \obj -> do tableName = tn, tableParams = params } -forkBoundedChan :: Int -> BoundedChan a -> IO (ThreadId, BoundedChan a, BoundedChan (Maybe a)) +forkBoundedChan :: Int -> BoundedChan Tick -> IO (ThreadId, BoundedChan Tick, BoundedChan QuoteSourceServerData) forkBoundedChan size source = do sink <- newBoundedChan size - sinkMaybe <- newBoundedChan size + sinkQss <- newBoundedChan size tid <- forkIO $ forever $ do v <- readChan source tryWriteChan sink v - tryWriteChan sinkMaybe (Just v) + tryWriteChan sinkQss (QSSTick v) - return (tid, sink, sinkMaybe) + return (tid, sink, sinkQss) main :: IO () diff --git a/src/Broker/PaperBroker.hs b/src/Broker/PaperBroker.hs index 473a779..117a8b9 100644 --- a/src/Broker/PaperBroker.hs +++ b/src/Broker/PaperBroker.hs @@ -91,6 +91,7 @@ pbSubmitOrder state order = do Just tick -> let newOrder = order { orderState = Executed } tradeVolume = (realFracToDecimal 10 (fromIntegral $ orderQuantity order) * value tick) in do atomicModifyIORef' state (\s -> (s { orders = M.insert (orderId order) newOrder $ orders s , cash = cash s - tradeVolume}, ()) ) + debugM "PaperBroker" $ "Executed: " ++ show newOrder ts <- getCurrentTime maybeCall notificationCallback state $ TradeNotification $ mkTrade tick order ts maybeCall notificationCallback state $ OrderNotification (orderId order) Executed