From 464cf77adc2fd7cce372d45d578a6bdb3fe374b3 Mon Sep 17 00:00:00 2001 From: Denis Tereshkin Date: Thu, 30 May 2019 16:59:03 +0700 Subject: [PATCH] Support for libatrade-0.8.0.0 --- robocom-zero.cabal | 2 +- src/ATrade/Driver/Real/QuoteSourceThread.hs | 17 ++++++++++------- 2 files changed, 11 insertions(+), 8 deletions(-) diff --git a/robocom-zero.cabal b/robocom-zero.cabal index 6d2b95a..0455bfa 100644 --- a/robocom-zero.cabal +++ b/robocom-zero.cabal @@ -28,7 +28,7 @@ library , ATrade.Driver.Real , ATrade.Driver.Backtest build-depends: base >= 4.7 && < 5 - , libatrade + , libatrade == 0.8.0.0 , text , text-icu , errors diff --git a/src/ATrade/Driver/Real/QuoteSourceThread.hs b/src/ATrade/Driver/Real/QuoteSourceThread.hs index 669a7de..80ac1a9 100644 --- a/src/ATrade/Driver/Real/QuoteSourceThread.hs +++ b/src/ATrade/Driver/Real/QuoteSourceThread.hs @@ -32,13 +32,16 @@ startQuoteSourceThread ctx qsEp strategy eventChan agg tickFilter = forkIO $ do stopQuoteSourceClient qs debugM "Strategy" "Quotesource client: stop") (\_ -> forever $ do - tick <- readChan tickChan - when (goodTick tick) $ do - writeChan eventChan (NewTick tick) - aggValue <- readIORef agg - case handleTick tick aggValue of - (Just bar, !newAggValue) -> writeChan eventChan (NewBar bar) >> writeIORef agg newAggValue - (Nothing, !newAggValue) -> writeIORef agg newAggValue) + qdata <- readChan tickChan + case qdata of + QDTick tick -> when (goodTick tick) $ do + writeChan eventChan (NewTick tick) + aggValue <- readIORef agg + case handleTick tick aggValue of + (Just bar, !newAggValue) -> writeChan eventChan (NewBar bar) >> writeIORef agg newAggValue + (Nothing, !newAggValue) -> writeIORef agg newAggValue + QDBar (tf, bar) -> return () -- TODO + ) where goodTick tick = tickFilter tick && (datatype tick /= LastTradePrice || (datatype tick == LastTradePrice && volume tick > 0))