Add Quickfix library #1

Merged
RamiroPaz merged 9 commits from quickfix into develop 2026-03-12 15:32:10 +00:00
1241 changed files with 1408919 additions and 261 deletions
Showing only changes of commit 1d32854a09 - Show all commits

View File

@ -1,7 +1,6 @@
package fix
import (
"fmt"
"log/slog"
"os"
"sync"
@ -47,13 +46,19 @@ func (m *Manager) Start() error {
f, err := os.Open(m.cfg.SettingsFile)
if err != nil {
return fmt.Errorf("opening FIX settings file %q: %w", m.cfg.SettingsFile, err)
err = tracerr.Errorf("error opening FIX settings file %q: %s", m.cfg.SettingsFile, err)
log.Error().Msg(err.Error())
return err
}
defer f.Close()
settings, err := quickfix.ParseSettings(f)
if err != nil {
return fmt.Errorf("parsing FIX settings: %w", err)
err = tracerr.Errorf("error parsing FIX settings: %s", err)
log.Error().Msg(err.Error())
return err
}
storeFactory := quickfix.NewMemoryStoreFactory()
@ -67,13 +72,19 @@ func (m *Manager) Start() error {
initiator, err := quickfix.NewInitiator(fixApp, storeFactory, settings, logFactory)
if err != nil {
return fmt.Errorf("creating FIX initiator: %w", err)
err = tracerr.Errorf("error creating FIX initiator: %s", err)
log.Error().Msg(err.Error())
return err
}
m.initiator = initiator
if err = m.initiator.Start(); err != nil {
return fmt.Errorf("starting FIX initiator: %w", err)
err = tracerr.Errorf("error starting FIX initiator: %s", err)
log.Error().Msg(err.Error())
return err
}
slog.Info("FIX initiator started", "settings", m.cfg.SettingsFile)
@ -113,7 +124,10 @@ func (m *Manager) SendQuote(clOrdID, quoteID, symbol, currency string, bidPx, of
m.sessionsMu.RUnlock()
if !ok {
return fmt.Errorf("no active FIX session")
err := tracerr.Errorf("error sending quote: no active FIX session")
log.Error().Msg(err.Error())
return err
}
q := quote.New(
@ -141,7 +155,10 @@ func (m *Manager) SendQuote(clOrdID, quoteID, symbol, currency string, bidPx, of
}
if err := quickfix.SendToTarget(q, sessionID); err != nil {
return fmt.Errorf("sending FIX quote: %w", err)
err = tracerr.Errorf("error sending FIX quote: %s", err)
log.Error().Msg(err.Error())
return err
}
slog.Info("Quote sent", "clOrdID", clOrdID, "quoteID", quoteID, "symbol", symbol)