Flow 8.4 list trading working
This commit is contained in:
@ -5,9 +5,12 @@ import (
|
||||
"log/slog"
|
||||
|
||||
"quantex.com/qfixdpl/quickfix"
|
||||
"quantex.com/qfixdpl/quickfix/gen/fix50sp2/executionack"
|
||||
"quantex.com/qfixdpl/quickfix/gen/fix50sp2/executionreport"
|
||||
"quantex.com/qfixdpl/quickfix/gen/fix50sp2/quote"
|
||||
"quantex.com/qfixdpl/quickfix/gen/fix50sp2/quoteack"
|
||||
"quantex.com/qfixdpl/quickfix/gen/fix50sp2/quoterequest"
|
||||
"quantex.com/qfixdpl/quickfix/gen/fix50sp2/quoteresponse"
|
||||
"quantex.com/qfixdpl/quickfix/gen/tag"
|
||||
"quantex.com/qfixdpl/src/domain"
|
||||
)
|
||||
@ -15,11 +18,14 @@ import (
|
||||
type application struct {
|
||||
router *quickfix.MessageRouter
|
||||
notifier domain.Notifier
|
||||
onLogon func(quickfix.SessionID)
|
||||
onLogout func(quickfix.SessionID)
|
||||
onQuote func(quote.Quote, quickfix.SessionID)
|
||||
onQuoteRequest func(quoterequest.QuoteRequest, quickfix.SessionID)
|
||||
onQuoteAck func(quoteack.QuoteAck, quickfix.SessionID)
|
||||
onLogon func(quickfix.SessionID)
|
||||
onLogout func(quickfix.SessionID)
|
||||
onQuote func(quote.Quote, quickfix.SessionID)
|
||||
onQuoteRequest func(quoterequest.QuoteRequest, quickfix.SessionID)
|
||||
onQuoteAck func(quoteack.QuoteAck, quickfix.SessionID)
|
||||
onQuoteResponse func(quoteresponse.QuoteResponse, quickfix.SessionID)
|
||||
onExecutionReport func(executionreport.ExecutionReport, quickfix.SessionID)
|
||||
onExecutionAck func(executionack.ExecutionAck, quickfix.SessionID)
|
||||
}
|
||||
|
||||
func newApplication(n domain.Notifier) *application {
|
||||
@ -31,6 +37,9 @@ func newApplication(n domain.Notifier) *application {
|
||||
app.router.AddRoute(quote.Route(app.handleQuote))
|
||||
app.router.AddRoute(quoteack.Route(app.handleQuoteAck))
|
||||
app.router.AddRoute(quoterequest.Route(app.handleQuoteRequest))
|
||||
app.router.AddRoute(quoteresponse.Route(app.handleQuoteResponse))
|
||||
app.router.AddRoute(executionack.Route(app.handleExecutionAck))
|
||||
app.router.AddRoute(executionreport.Route(app.handleExecutionReport))
|
||||
|
||||
return app
|
||||
}
|
||||
@ -147,3 +156,64 @@ func (a *application) handleQuote(msg quote.Quote, sessionID quickfix.SessionID)
|
||||
|
||||
return nil
|
||||
}
|
||||
|
||||
func (a *application) handleQuoteResponse(msg quoteresponse.QuoteResponse, sessionID quickfix.SessionID) quickfix.MessageRejectError {
|
||||
quoteRespID, _ := msg.GetQuoteRespID()
|
||||
quoteReqID, _ := msg.GetQuoteReqID()
|
||||
quoteRespType, _ := msg.GetQuoteRespType()
|
||||
|
||||
slog.Info("QuoteResponse received",
|
||||
"quoteRespID", quoteRespID,
|
||||
"quoteReqID", quoteReqID,
|
||||
"quoteRespType", quoteRespType,
|
||||
"session", sessionID.String(),
|
||||
)
|
||||
|
||||
if a.onQuoteResponse != nil {
|
||||
a.onQuoteResponse(msg, sessionID)
|
||||
}
|
||||
|
||||
return nil
|
||||
}
|
||||
|
||||
func (a *application) handleExecutionAck(msg executionack.ExecutionAck, sessionID quickfix.SessionID) quickfix.MessageRejectError {
|
||||
execID, _ := msg.GetExecID()
|
||||
orderID, _ := msg.GetOrderID()
|
||||
status, _ := msg.GetExecAckStatus()
|
||||
|
||||
slog.Info("ExecutionAck received",
|
||||
"execID", execID,
|
||||
"orderID", orderID,
|
||||
"execAckStatus", status,
|
||||
"session", sessionID.String(),
|
||||
)
|
||||
|
||||
if a.onExecutionAck != nil {
|
||||
a.onExecutionAck(msg, sessionID)
|
||||
}
|
||||
|
||||
return nil
|
||||
}
|
||||
|
||||
func (a *application) handleExecutionReport(msg executionreport.ExecutionReport, sessionID quickfix.SessionID) quickfix.MessageRejectError {
|
||||
execID, _ := msg.GetExecID()
|
||||
orderID, _ := msg.GetOrderID()
|
||||
listID, _ := msg.GetListID()
|
||||
execType, _ := msg.GetExecType()
|
||||
ordStatus, _ := msg.GetOrdStatus()
|
||||
|
||||
slog.Info("ExecutionReport received",
|
||||
"execID", execID,
|
||||
"orderID", orderID,
|
||||
"listID", listID,
|
||||
"execType", execType,
|
||||
"ordStatus", ordStatus,
|
||||
"session", sessionID.String(),
|
||||
)
|
||||
|
||||
if a.onExecutionReport != nil {
|
||||
a.onExecutionReport(msg, sessionID)
|
||||
}
|
||||
|
||||
return nil
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user