Browse Source

BarAggregator: retain extra bar

stable
Denis Tereshkin 6 years ago
parent
commit
1606d3acf1
  1. 16
      src/ATrade/BarAggregator.hs

16
src/ATrade/BarAggregator.hs

@ -176,12 +176,22 @@ handleBar bar = runState $ do
mybars <- gets bars mybars <- gets bars
case M.lookup (barSecurity bar) mybars of case M.lookup (barSecurity bar) mybars of
Just series -> case bsBars series of Just series -> case bsBars series of
(b:bs) -> do (_:bs) -> do
lBars %= M.insert (barSecurity bar) series { bsBars = bar : b : bs } lBars %= M.insert (barSecurity bar) series { bsBars = emptyBarFrom bar : bar : bs }
return . Just $ bar return . Just $ bar
_ -> do _ -> do
lBars %= M.insert (barSecurity bar) series { bsBars = [bar] } lBars %= M.insert (barSecurity bar) series { bsBars = emptyBarFrom bar : [bar] }
return Nothing return Nothing
_ -> 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 }

Loading…
Cancel
Save