From 1606d3acf1c112b264e33b11d850461e71ef3883 Mon Sep 17 00:00:00 2001 From: Denis Tereshkin Date: Fri, 17 Apr 2020 14:36:42 +0700 Subject: [PATCH] BarAggregator: retain extra bar --- src/ATrade/BarAggregator.hs | 16 +++++++++++++--- 1 file changed, 13 insertions(+), 3 deletions(-) diff --git a/src/ATrade/BarAggregator.hs b/src/ATrade/BarAggregator.hs index f8b73bc..1b14ac4 100644 --- a/src/ATrade/BarAggregator.hs +++ b/src/ATrade/BarAggregator.hs @@ -176,12 +176,22 @@ handleBar bar = runState $ do mybars <- gets bars case M.lookup (barSecurity bar) mybars of Just series -> case bsBars series of - (b:bs) -> do - lBars %= M.insert (barSecurity bar) series { bsBars = bar : b : bs } + (_:bs) -> do + lBars %= M.insert (barSecurity bar) series { bsBars = emptyBarFrom bar : bar : bs } return . Just $ bar _ -> do - lBars %= M.insert (barSecurity bar) series { bsBars = [bar] } + lBars %= M.insert (barSecurity bar) series { bsBars = emptyBarFrom bar : [bar] } return Nothing _ -> return Nothing + where + emptyBarFrom bar' = Bar { + barSecurity = barSecurity bar', + barTimestamp = barTimestamp bar', + barOpen = barClose bar', + barHigh = barClose bar', + barLow = barClose bar', + barClose = barClose bar', + barVolume = 0 } +