Browse Source

Support for libatrade-0.8.0.0

master
Denis Tereshkin 7 years ago
parent
commit
464cf77adc
  1. 2
      robocom-zero.cabal
  2. 17
      src/ATrade/Driver/Real/QuoteSourceThread.hs

2
robocom-zero.cabal

@ -28,7 +28,7 @@ library @@ -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

17
src/ATrade/Driver/Real/QuoteSourceThread.hs

@ -32,13 +32,16 @@ startQuoteSourceThread ctx qsEp strategy eventChan agg tickFilter = forkIO $ do @@ -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))

Loading…
Cancel
Save