Browse Source

Increase submission deadline

This is a temporary solution to handle position loss around clearings
hotfix
Denis Tereshkin 4 years ago
parent
commit
50efbf78a2
  1. 13
      src/ATrade/RoboCom/Positions.hs

13
src/ATrade/RoboCom/Positions.hs

@ -273,7 +273,8 @@ dispatchPosition event pos = case posState pos of
if newstate == Cancelled if newstate == Cancelled
then do then do
submitOrder nextOrder submitOrder nextOrder
return pos { posState = PositionWaitingCloseSubmission nextOrder, posSubmissionDeadline = Just (10 `addUTCTime` lastTs), posExecutionDeadline = Nothing } return pos { posState = PositionWaitingCloseSubmission nextOrder,
posSubmissionDeadline = Just ((30*60) `addUTCTime` lastTs), posExecutionDeadline = Nothing }
else return pos else return pos
(OrderUpdate _ newstate, Just _, Just PositionCancelled) -> (OrderUpdate _ newstate, Just _, Just PositionCancelled) ->
if newstate == Cancelled if newstate == Cancelled
@ -466,7 +467,7 @@ enterAtMarketWithParams :: (StateHasPositions s, ParamsHasMainTicker c, MonadRob
enterAtMarketWithParams account quantity signalId operation = do enterAtMarketWithParams account quantity signalId operation = do
tickerId <- mainTicker <$> getConfig tickerId <- mainTicker <$> getConfig
submitOrder $ order tickerId submitOrder $ order tickerId
newPosition (order tickerId) account tickerId operation quantity 20 newPosition (order tickerId) account tickerId operation quantity (30 * 60)
where where
order tickerId = mkOrder { order tickerId = mkOrder {
orderAccountId = account, orderAccountId = account,
@ -511,7 +512,7 @@ enterAtLimitForTickerWithParams tickerId timeToCancel account quantity signalId
lastTs <- view seLastTimestamp <$> getEnvironment lastTs <- view seLastTimestamp <$> getEnvironment
submitOrder order submitOrder order
appendToLog $ [t|enterAtLimit: %?, deadline: %?|] tickerId (timeToCancel `addUTCTime` lastTs) appendToLog $ [t|enterAtLimit: %?, deadline: %?|] tickerId (timeToCancel `addUTCTime` lastTs)
newPosition order account tickerId operation quantity 20 >>= newPosition order account tickerId operation quantity (30 * 60) >>=
modifyPosition (\p -> p { posExecutionDeadline = Just $ timeToCancel `addUTCTime` lastTs }) modifyPosition (\p -> p { posExecutionDeadline = Just $ timeToCancel `addUTCTime` lastTs })
where where
order = mkOrder { order = mkOrder {
@ -551,7 +552,7 @@ exitAtMarket position operationSignalName = do
modifyPosition (\pos -> modifyPosition (\pos ->
pos { posState = PositionWaitingPendingCancellation, pos { posState = PositionWaitingPendingCancellation,
posNextState = Just $ PositionWaitingCloseSubmission (closeOrder inst), posNextState = Just $ PositionWaitingCloseSubmission (closeOrder inst),
posSubmissionDeadline = Just $ 10 `addUTCTime` lastTs, posSubmissionDeadline = Just $ (30 * 60) `addUTCTime` lastTs,
posExecutionDeadline = Nothing }) position posExecutionDeadline = Nothing }) position
Nothing -> do Nothing -> do
@ -560,7 +561,7 @@ exitAtMarket position operationSignalName = do
pos { posCurrentOrder = Nothing, pos { posCurrentOrder = Nothing,
posState = PositionWaitingCloseSubmission (closeOrder inst), posState = PositionWaitingCloseSubmission (closeOrder inst),
posNextState = Just PositionClosed, posNextState = Just PositionClosed,
posSubmissionDeadline = Just $ 10 `addUTCTime` lastTs, posSubmissionDeadline = Just $ (30 * 60) `addUTCTime` lastTs,
posExecutionDeadline = Nothing }) position posExecutionDeadline = Nothing }) position
where where
closeOrder inst = mkOrder { closeOrder inst = mkOrder {
@ -585,7 +586,7 @@ exitAtLimit timeToCancel price position operationSignalName = do
pos { posCurrentOrder = Nothing, pos { posCurrentOrder = Nothing,
posState = PositionWaitingCloseSubmission (closeOrder inst), posState = PositionWaitingCloseSubmission (closeOrder inst),
posNextState = Just PositionClosed, posNextState = Just PositionClosed,
posSubmissionDeadline = Just $ 10 `addUTCTime` lastTs, posSubmissionDeadline = Just $ (30 * 60) `addUTCTime` lastTs,
posExecutionDeadline = Just $ timeToCancel `addUTCTime` lastTs }) position posExecutionDeadline = Just $ timeToCancel `addUTCTime` lastTs }) position
where where
closeOrder inst = mkOrder { closeOrder inst = mkOrder {

Loading…
Cancel
Save