From cd22e7ee1feec3622242097a900cd4c77142b876 Mon Sep 17 00:00:00 2001 From: Denis Tereshkin Date: Sun, 14 Jul 2019 13:03:57 +0700 Subject: [PATCH] BarAggregator: handleBar: do not handle old bars --- robocom-zero.cabal | 2 +- src/ATrade/BarAggregator.hs | 6 +++--- 2 files changed, 4 insertions(+), 4 deletions(-) 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) }