From 21cbcf7826b8c843f07cd33ddf7c1dd9aa0fbf18 Mon Sep 17 00:00:00 2001 From: Denis Tereshkin Date: Wed, 7 Aug 2019 13:05:21 +0700 Subject: [PATCH] Filter incoming bars by timeframe --- src/ATrade/Driver/Real/QuoteSourceThread.hs | 12 +++++++----- 1 file changed, 7 insertions(+), 5 deletions(-) diff --git a/src/ATrade/Driver/Real/QuoteSourceThread.hs b/src/ATrade/Driver/Real/QuoteSourceThread.hs index c402982..e5d3b1a 100644 --- a/src/ATrade/Driver/Real/QuoteSourceThread.hs +++ b/src/ATrade/Driver/Real/QuoteSourceThread.hs @@ -44,12 +44,14 @@ startQuoteSourceThread ctx qsEp strategy eventChan agg tickFilter maybeSourceTim (Just bar, !newAggValue) -> writeIORef agg newAggValue >> writeChan eventChan (NewBar bar) (Nothing, !newAggValue) -> writeIORef agg newAggValue Just _ -> return () - QDBar (_, bar) -> do + QDBar (incomingTf, bar) -> do aggValue <- readIORef agg - when (isJust maybeSourceTimeframe) $ do - case handleBar bar aggValue of - (Just bar', !newAggValue) -> writeIORef agg newAggValue >> writeChan eventChan (NewBar bar') - (Nothing, !newAggValue) -> writeIORef agg newAggValue) + case maybeSourceTimeframe of + Just tf -> when (tf == unBarTimeframe incomingTf) $ + case handleBar bar aggValue of + (Just bar', !newAggValue) -> writeIORef agg newAggValue >> writeChan eventChan (NewBar bar') + (Nothing, !newAggValue) -> writeIORef agg newAggValue + _ -> return ()) where goodTick tick = tickFilter tick && (datatype tick /= LastTradePrice || (datatype tick == LastTradePrice && volume tick > 0))