Browse Source

BarAggregator: ignore earlier ticks

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

17
src/ATrade/BarAggregator.hs

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

Loading…
Cancel
Save