Browse Source

BarAggregator: ignore earlier ticks

stable
Denis Tereshkin 7 years ago
parent
commit
4b7112a8d7
  1. 9
      src/ATrade/BarAggregator.hs

9
src/ATrade/BarAggregator.hs

@ -1,4 +1,5 @@ @@ -1,4 +1,5 @@
{-# LANGUAGE BangPatterns #-}
{-# LANGUAGE MultiWayIf #-}
{-|
- Module : ATrade.BarAggregator
@ -156,13 +157,15 @@ updateTime tick = runState $ do @@ -156,13 +157,15 @@ updateTime tick = runState $ do
Just series -> case bsBars series of
(b:bs) -> do
let currentBn = barNumber (barTimestamp b) (tfSeconds $ bsTimeframe series)
if currentBn == barNumber (timestamp tick) (tfSeconds $ bsTimeframe series)
then do
let thisBn = barNumber (timestamp tick) (tfSeconds $ bsTimeframe series)
if
| currentBn == thisBn -> do
lBars %= M.insert (security tick) series { bsBars = updateBarTimestamp b tick : bs }
return Nothing
else do
| currentBn < thisBn -> do
lBars %= M.insert (security tick) series { bsBars = emptyBarFromTick tick : b : bs }
return $ Just b
| otherwise -> return Nothing
_ -> return Nothing
_ -> return Nothing
else

Loading…
Cancel
Save