|
|
|
@ -76,7 +76,8 @@ import Data.Time.Clock.POSIX (getPOSIXTime) |
|
|
|
import Database.Redis (Connection, get, |
|
|
|
import Database.Redis (Connection, get, |
|
|
|
mset, runRedis) |
|
|
|
mset, runRedis) |
|
|
|
import Dhall (auto, input) |
|
|
|
import Dhall (auto, input) |
|
|
|
import Prelude hiding (readFile) |
|
|
|
import Prelude hiding (log, |
|
|
|
|
|
|
|
readFile) |
|
|
|
import System.IO (BufferMode (LineBuffering), |
|
|
|
import System.IO (BufferMode (LineBuffering), |
|
|
|
IOMode (AppendMode), |
|
|
|
IOMode (AppendMode), |
|
|
|
hSetBuffering, |
|
|
|
hSetBuffering, |
|
|
|
@ -92,7 +93,12 @@ data JunctionEnv = |
|
|
|
peBroker :: BrokerClientHandle, |
|
|
|
peBroker :: BrokerClientHandle, |
|
|
|
peRobots :: IORef (M.Map T.Text RobotDriverHandle), |
|
|
|
peRobots :: IORef (M.Map T.Text RobotDriverHandle), |
|
|
|
peRemoteControlSocket :: Socket Rep, |
|
|
|
peRemoteControlSocket :: Socket Rep, |
|
|
|
peLogAction :: LogAction JunctionM Message |
|
|
|
peLogAction :: LogAction JunctionM Message, |
|
|
|
|
|
|
|
peProgramConfiguration :: ProgramConfiguration, |
|
|
|
|
|
|
|
peBarsMap :: IORef Bars, |
|
|
|
|
|
|
|
peTickerInfoMap :: IORef TickerInfoMap, |
|
|
|
|
|
|
|
peBrokerService :: BrokerService, |
|
|
|
|
|
|
|
peDescriptors :: M.Map T.Text StrategyDescriptorE |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
newtype JunctionM a = JunctionM { unJunctionM :: ReaderT JunctionEnv IO a } |
|
|
|
newtype JunctionM a = JunctionM { unJunctionM :: ReaderT JunctionEnv IO a } |
|
|
|
@ -145,11 +151,13 @@ instance QuoteStream JunctionM where |
|
|
|
qt <- asks peQuoteThread |
|
|
|
qt <- asks peQuoteThread |
|
|
|
QT.removeSubscription qt subId |
|
|
|
QT.removeSubscription qt subId |
|
|
|
|
|
|
|
|
|
|
|
startRobot :: LogAction IO Message -> ProgramConfiguration -> IORef Bars -> IORef TickerInfoMap -> |
|
|
|
startRobot :: LogAction IO Message -> StrategyInstanceDescriptor -> JunctionM () |
|
|
|
BrokerService -> M.Map T.Text StrategyDescriptorE -> StrategyInstanceDescriptor -> JunctionM () |
|
|
|
startRobot ioLogger inst = do |
|
|
|
startRobot ioLogger cfg barsMap tickerInfoMap broService descriptors inst = do |
|
|
|
descriptors <- asks peDescriptors |
|
|
|
logger <- asks peLogAction |
|
|
|
cfg <- asks peProgramConfiguration |
|
|
|
let log = logWith logger |
|
|
|
barsMap <- asks peBarsMap |
|
|
|
|
|
|
|
tickerInfoMap <- asks peTickerInfoMap |
|
|
|
|
|
|
|
broService <- asks peBrokerService |
|
|
|
now <- liftIO getCurrentTime |
|
|
|
now <- liftIO getCurrentTime |
|
|
|
let lLogger = hoistLogAction liftIO ioLogger |
|
|
|
let lLogger = hoistLogAction liftIO ioLogger |
|
|
|
logWith lLogger Info "Junction" $ "Starting strategy: " <> strategyBaseName inst |
|
|
|
logWith lLogger Info "Junction" $ "Starting strategy: " <> strategyBaseName inst |
|
|
|
|