diff --git a/robocom-zero.cabal b/robocom-zero.cabal index 83a275b..37514b8 100644 --- a/robocom-zero.cabal +++ b/robocom-zero.cabal @@ -29,7 +29,7 @@ library , ATrade.Driver.Backtest , ATrade.BarAggregator build-depends: base >= 4.7 && < 5 - , libatrade == 0.8.0.0 + , libatrade >= 0.8.0.0 && < 0.9.0.0 , text , text-icu , errors diff --git a/src/ATrade/BarAggregator.hs b/src/ATrade/BarAggregator.hs index d0fb70f..457305e 100644 --- a/src/ATrade/BarAggregator.hs +++ b/src/ATrade/BarAggregator.hs @@ -194,11 +194,11 @@ handleBar bar = runState $ do Just series -> case bsBars series of (b:bs) -> do let currentBn = barNumber (barTimestamp b) (tfSeconds $ bsTimeframe series) - if currentBn == barNumber (barTimestamp bar) (tfSeconds $ bsTimeframe series) - then do + if + | currentBn == barNumber (barTimestamp bar) (tfSeconds $ bsTimeframe series) -> do lBars %= M.insert (barSecurity bar) series { bsBars = updateBar b bar : bs } return Nothing - else + | currentBn < barNumber (barTimestamp bar) (tfSeconds $ bsTimeframe series) -> do if barEndTime b (tfSeconds $ bsTimeframe series) == barTimestamp bar then do lBars %= M.insert (barSecurity bar) series { bsBars = emptyBarFrom bar : (updateBar b bar : bs) }