From 1a1f81a3514c225c7518905363cda850e7e3fcfc Mon Sep 17 00:00:00 2001 From: Denis Tereshkin Date: Mon, 3 Jan 2022 13:28:33 +0700 Subject: [PATCH] junction: ignore zero ticks Unfortunately, zero ticks (ticks with value == 0) is still a thing. This is because quik sends zero ticks on clearing and on session startup --- src/ATrade/Driver/Junction/RobotDriverThread.hs | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/src/ATrade/Driver/Junction/RobotDriverThread.hs b/src/ATrade/Driver/Junction/RobotDriverThread.hs index 2746f60..a5c7a1e 100644 --- a/src/ATrade/Driver/Junction/RobotDriverThread.hs +++ b/src/ATrade/Driver/Junction/RobotDriverThread.hs @@ -39,7 +39,7 @@ import ATrade.RoboCom.Persistence (MonadPersistence) import ATrade.RoboCom.Types (BarSeriesId (BarSeriesId), Bars, TickerInfoMap) import ATrade.Types (Order (orderId), OrderId, - OrderState, Trade) + OrderState, Trade, Tick (value)) import Colog (HasLog (getLogAction, setLogAction), LogAction) import Control.Concurrent (ThreadId, forkIO) @@ -47,7 +47,7 @@ import Control.Concurrent.BoundedChan (BoundedChan, newBoundedChan, readChan, writeChan) import Control.Exception.Safe (MonadThrow) -import Control.Monad (forM_, forever, void) +import Control.Monad (forM_, forever, void, when) import Control.Monad.IO.Class (MonadIO, liftIO) import Control.Monad.Reader (MonadReader (local), ReaderT, asks) @@ -87,7 +87,7 @@ robotDriverThread inst eventQueue = handleEvent (EventRequest _) = return () handleEvent (QuoteEvent d) = case d of - QDTick tick -> strategyEventCallback inst (NewTick tick) + QDTick tick -> when (value tick /= 0) $ strategyEventCallback inst (NewTick tick) QDBar (tf, bar) -> strategyEventCallback inst (NewBar (tf, bar)) handleEvent (NewTradeEvent trade) = strategyEventCallback inst (NewTrade trade) handleEvent (OrderEvent oid newState) = strategyEventCallback inst (OrderUpdate oid newState)