Browse Source

Heartbeat support

master
Denis Tereshkin 9 years ago
parent
commit
79b1eecac5
  1. 8
      app/Main.hs
  2. 1
      src/Broker/PaperBroker.hs

8
app/Main.hs

@ -89,16 +89,16 @@ parseConfig = withObject "object" $ \obj -> do @@ -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 ()

1
src/Broker/PaperBroker.hs

@ -91,6 +91,7 @@ pbSubmitOrder state order = do @@ -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

Loading…
Cancel
Save