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 } +