|
|
|
@ -20,7 +20,8 @@ module ATrade.Driver.Junction.RobotDriverThread |
|
|
|
import ATrade.Broker.Protocol (Notification (OrderNotification, TradeNotification)) |
|
|
|
import ATrade.Broker.Protocol (Notification (OrderNotification, TradeNotification)) |
|
|
|
import qualified ATrade.Driver.Junction.BrokerService as Bro |
|
|
|
import qualified ATrade.Driver.Junction.BrokerService as Bro |
|
|
|
import ATrade.Driver.Junction.QuoteStream (QuoteStream (addSubscription, removeSubscription), |
|
|
|
import ATrade.Driver.Junction.QuoteStream (QuoteStream (addSubscription, removeSubscription), |
|
|
|
QuoteSubscription (QuoteSubscription), SubscriptionId) |
|
|
|
QuoteSubscription (QuoteSubscription), |
|
|
|
|
|
|
|
SubscriptionId) |
|
|
|
import ATrade.Driver.Junction.Types (BigConfig, |
|
|
|
import ATrade.Driver.Junction.Types (BigConfig, |
|
|
|
StrategyDescriptor, |
|
|
|
StrategyDescriptor, |
|
|
|
StrategyInstance (StrategyInstance, strategyEventCallback), |
|
|
|
StrategyInstance (StrategyInstance, strategyEventCallback), |
|
|
|
@ -34,20 +35,23 @@ import ATrade.Logging (Message, log) |
|
|
|
import ATrade.QuoteSource.Client (QuoteData (..)) |
|
|
|
import ATrade.QuoteSource.Client (QuoteData (..)) |
|
|
|
import ATrade.RoboCom.ConfigStorage (ConfigStorage) |
|
|
|
import ATrade.RoboCom.ConfigStorage (ConfigStorage) |
|
|
|
import ATrade.RoboCom.Monad (Event (NewBar, NewTick, NewTrade, OrderUpdate), |
|
|
|
import ATrade.RoboCom.Monad (Event (NewBar, NewTick, NewTrade, OrderUpdate), |
|
|
|
MonadRobot (..), StrategyEnvironment (..)) |
|
|
|
MonadRobot (..), |
|
|
|
|
|
|
|
StrategyEnvironment (..)) |
|
|
|
import ATrade.RoboCom.Persistence (MonadPersistence) |
|
|
|
import ATrade.RoboCom.Persistence (MonadPersistence) |
|
|
|
import ATrade.RoboCom.Types (BarSeriesId (BarSeriesId), |
|
|
|
import ATrade.RoboCom.Types (BarSeriesId (BarSeriesId), |
|
|
|
Bars, TickerInfoMap) |
|
|
|
Bars, TickerInfoMap) |
|
|
|
import ATrade.Types (OrderId, |
|
|
|
import ATrade.Types (OrderId, OrderState, |
|
|
|
OrderState, Trade, Tick (value)) |
|
|
|
Tick (value), Trade) |
|
|
|
import Colog (HasLog (getLogAction, setLogAction), |
|
|
|
import Colog (HasLog (getLogAction, setLogAction), |
|
|
|
LogAction) |
|
|
|
LogAction) |
|
|
|
import Control.Concurrent (ThreadId, forkIO, killThread) |
|
|
|
import Control.Concurrent (ThreadId, forkIO, |
|
|
|
|
|
|
|
killThread) |
|
|
|
import Control.Concurrent.BoundedChan (BoundedChan, |
|
|
|
import Control.Concurrent.BoundedChan (BoundedChan, |
|
|
|
newBoundedChan, readChan, |
|
|
|
newBoundedChan, readChan, |
|
|
|
writeChan) |
|
|
|
writeChan) |
|
|
|
import Control.Exception.Safe (MonadThrow) |
|
|
|
import Control.Exception.Safe (MonadThrow) |
|
|
|
import Control.Monad (forM_, forever, void, when, forM) |
|
|
|
import Control.Monad (forM, forM_, forever, |
|
|
|
|
|
|
|
void, when) |
|
|
|
import Control.Monad.IO.Class (MonadIO, liftIO) |
|
|
|
import Control.Monad.IO.Class (MonadIO, liftIO) |
|
|
|
import Control.Monad.Reader (MonadReader (local), |
|
|
|
import Control.Monad.Reader (MonadReader (local), |
|
|
|
ReaderT, asks) |
|
|
|
ReaderT, asks) |
|
|
|
|