|
|
|
|
@ -114,7 +114,7 @@ import GHC.Exts (IsList (..))
@@ -114,7 +114,7 @@ import GHC.Exts (IsList (..))
|
|
|
|
|
import Prelude hiding (log) |
|
|
|
|
import TickerInfoServer (TickerInfo (..), |
|
|
|
|
TickerInfoServerHandle, |
|
|
|
|
putTickerInfo) |
|
|
|
|
getTickerInfo, putTickerInfo) |
|
|
|
|
import qualified Transaq |
|
|
|
|
import qualified TXML |
|
|
|
|
|
|
|
|
|
@ -312,20 +312,26 @@ handleTransaqData transaqData = do
@@ -312,20 +312,26 @@ handleTransaqData transaqData = do
|
|
|
|
|
Just cb -> case BM.lookupR (ExchangeOrderId (tOrderNo transaqTrade)) trIdMap of |
|
|
|
|
Just oid -> case M.lookup oid orderMap of |
|
|
|
|
Just order -> do |
|
|
|
|
let notif = BackendTradeNotification (fromTransaqTrade transaqTrade order) |
|
|
|
|
tisH <- asks tisHandle |
|
|
|
|
let tickerId' = tBoard transaqTrade <> "#" <> tSecCode transaqTrade |
|
|
|
|
maybeTickerInfo <- liftIO $ getTickerInfo tickerId' tisH |
|
|
|
|
let notif = BackendTradeNotification (fromTransaqTrade transaqTrade order maybeTickerInfo) |
|
|
|
|
log Debug "TXMLConnector.WorkThread" $ "Sending trade notification: " <> (T.pack . show) notif |
|
|
|
|
liftIO $ cb notif |
|
|
|
|
_ -> log Warning "TXMLConnector.WorkThread" $ "Unable to find order for trade: " <> (T.pack . show) transaqTrade |
|
|
|
|
_ -> log Warning "TXMLConnector.WorkThread" $ "Unable to find order in ordermap: " <> (T.pack . show) transaqTrade |
|
|
|
|
Nothing -> log Warning "TXMLConnector.WorkThread" "No callback for trade notification!" |
|
|
|
|
|
|
|
|
|
fromTransaqTrade transaqTrade order = |
|
|
|
|
fromTransaqTrade transaqTrade order maybeTickerInfo = |
|
|
|
|
let vol = case maybeTickerInfo of |
|
|
|
|
Just tickerInfo -> (tPrice transaqTrade / tiTickSize tickerInfo * tiTickPrice tickerInfo) |
|
|
|
|
Nothing -> tPrice transaqTrade in |
|
|
|
|
Trade |
|
|
|
|
{ |
|
|
|
|
tradeOrderId = orderId order |
|
|
|
|
, tradePrice = fromDouble (tPrice transaqTrade) |
|
|
|
|
, tradeQuantity = fromIntegral $ tQuantity transaqTrade |
|
|
|
|
, tradeVolume = fromDouble $ tValue transaqTrade |
|
|
|
|
, tradeVolume = fromDouble vol |
|
|
|
|
, tradeVolumeCurrency = "" |
|
|
|
|
, tradeOperation = fromDirection (tBuysell transaqTrade) |
|
|
|
|
, tradeAccount = tClient transaqTrade <> "#" <> tUnion transaqTrade |
|
|
|
|
@ -633,6 +639,7 @@ securityToTickerInfo sec =
@@ -633,6 +639,7 @@ securityToTickerInfo sec =
|
|
|
|
|
tiTicker = sBoard sec <> "#" <> sSeccode sec |
|
|
|
|
, tiLotSize = sLotSize sec |
|
|
|
|
, tiTickSize = sMinStep sec |
|
|
|
|
, tiTickPrice = sPointCost sec |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
parseSecurityId :: TickerId -> Maybe SecurityId |
|
|
|
|
|