Example #1
0
        public void Application_Startup(
            object sender,
            StartupEventArgs e,
            ICustomFixStrategy strategy)
        {
            Trace.WriteLine("Application started.");

            // FIX app settings and related
            QuickFix.SessionSettings settings = new QuickFix.SessionSettings(this.ConfigFile);
            strategy.SessionSettings = settings;

            // FIX application setup
            QuickFix.MessageStoreFactory storeFactory = new QuickFix.FileStoreFactory(settings);
            QuickFix.LogFactory          logFactory   = new QuickFix.FileLogFactory(settings);
            _qfapp = new QFApp(settings, strategy);

            QuickFix.IInitiator initiator = new QuickFix.Transport.SocketInitiator(_qfapp, storeFactory, settings, logFactory);
            _qfapp.Initiator = initiator;


            // Window creation and context assignment
            UIDemo.MainWindow mainWindow = new UIDemo.MainWindow();
            mainWindow.DataContext = new MainWindowViewModel();

            mainWindow.MessageView.DataContext    = new MessageViewModel(_qfapp);
            mainWindow.ExecutionView.DataContext  = new ExecutionViewModel(_qfapp);
            mainWindow.ConnectionView.DataContext = new ConnectionViewModel(_qfapp);
            mainWindow.OrderView.DataContext      = new OrderViewModel(_qfapp, strategy);
            mainWindow.NewsSenderView.DataContext = new NewsSenderViewModel(_qfapp);

            // Set the main UI dispatcher
            SmartDispatcher.SetDispatcher(mainWindow.Dispatcher);

            mainWindow.Show();
        }
Example #2
0
        static void Main(string[] args)
        {
            System.Console.WriteLine("=============");
            System.Console.WriteLine("This is only an example program.");
            System.Console.WriteLine();
            System.Console.WriteLine("                                                    ! ! !");
            System.Console.WriteLine("              DO NOT USE THIS ON A COMMERCIAL FIX INTERFACE!");
            System.Console.WriteLine("                                                    ! ! !");
            System.Console.WriteLine();
            System.Console.WriteLine("=============");

            try
            {
                QuickFix.SessionSettings settings = new QuickFix.SessionSettings("execution.cfg");
                TradingApp application            = new TradingApp(settings.Get().GetString("LogonName"), settings.Get().GetString("LogonPassword"));
                QuickFix.IMessageStoreFactory      storeFactory = new QuickFix.FileStoreFactory(settings);
                QuickFix.ILogFactory               logFactory   = new QuickFix.FileLogFactory(settings);
                QuickFix.Transport.SocketInitiator initiator    = new QuickFix.Transport.SocketInitiator(application, storeFactory, settings, logFactory);

                // this is a developer-test kludge.  do not emulate.
                application.MyInitiator = initiator;

                initiator.Start();
                application.Run();
                initiator.Stop();
            }
            catch (System.Exception e)
            {
                Console.WriteLine(e.Message);
                Console.WriteLine(e.StackTrace);
            }
        }
Example #3
0
 /**
  * Login button
  */
 private void btnLogin_Click(object sender, EventArgs e)
 {
     // disable the login button
     toggleBtn(btnLogin, false);
     // enable the logout button
     toggleBtn(btnLogout, true);
     try
     {
         // load the settings from file
         QuickFix.SessionSettings settings = new QuickFix.SessionSettings("fix.cfg");
         // create a MessageStoreFactory from settings
         QuickFix.MessageStoreFactory storeFactory = new QuickFix.FileStoreFactory(settings);
         // create a LogFactory from settings using a file instead of screen
         QuickFix.LogFactory logFactory = new QuickFix.FileLogFactory(settings);
         // create a MessageFactory
         QuickFix.MessageFactory messageFactory = new QuickFix.DefaultMessageFactory();
         // (re)initialize the application based on settings
         app = new ExampleApplication(settings);
         // set a listener for events
         app.loginComplete   += new ExampleApplication.LoginComplete(loginComplete);
         app.messageRecieved += new ExampleApplication.MessageRecieved(processEvent);
         // (re)initialize the initiator
         initiator = new QuickFix.SocketInitiator(app, storeFactory, settings, logFactory, messageFactory);
         // start, or login, to the API through the initiator
         initiator.start();
         // display the supporting windows
         ratesWindow.Show();
         tradeWindow.Show();
         accountsWindow.Show();
     }
     catch (Exception evt) { Console.WriteLine(evt); }
 }
Example #4
0
        public void Application_Startup(
            object sender,
            StartupEventArgs e,
            ICustomFixStrategy strategy)
        {
            Trace.WriteLine("Application started.");

            // FIX app settings and related
            QuickFix.SessionSettings settings = new QuickFix.SessionSettings(this.ConfigFile);
            strategy.SessionSettings = settings;

            // FIX application setup
            QuickFix.MessageStoreFactory storeFactory = new QuickFix.FileStoreFactory(settings);
            QuickFix.LogFactory logFactory = new QuickFix.FileLogFactory(settings);
            _qfapp = new QFApp(settings, strategy);

            QuickFix.IInitiator initiator = new QuickFix.Transport.SocketInitiator(_qfapp, storeFactory, settings, logFactory);
            _qfapp.Initiator = initiator;


            // Window creation and context assignment
            UIDemo.MainWindow mainWindow = new UIDemo.MainWindow();
            mainWindow.DataContext = new MainWindowViewModel();

            mainWindow.MessageView.DataContext = new MessageViewModel(_qfapp);
            mainWindow.ExecutionView.DataContext = new ExecutionViewModel(_qfapp);
            mainWindow.ConnectionView.DataContext = new ConnectionViewModel(_qfapp);
            mainWindow.OrderView.DataContext = new OrderViewModel(_qfapp, strategy);
            mainWindow.NewsSenderView.DataContext = new NewsSenderViewModel(_qfapp);

            // Set the main UI dispatcher
            SmartDispatcher.SetDispatcher(mainWindow.Dispatcher);

            mainWindow.Show();
        }
Example #5
0
        public void testGeneratedFileName()
        {
            if (System.IO.Directory.Exists("log"))
            {
                System.IO.Directory.Delete("log", true);
            }

            QuickFix.SessionID       sessionID = new QuickFix.SessionID("FIX.4.2", "SENDERCOMP", "TARGETCOMP");
            QuickFix.SessionSettings settings  = new QuickFix.SessionSettings();

            QuickFix.Dictionary config = new QuickFix.Dictionary();
            config.SetString(QuickFix.SessionSettings.CONNECTION_TYPE, "initiator");
            config.SetString(QuickFix.SessionSettings.FILE_LOG_PATH, "log");

            settings.Set(sessionID, config);

            QuickFix.FileLogFactory factory = new QuickFix.FileLogFactory(settings);
            log = (QuickFix.FileLog)factory.Create(sessionID);

            log.OnEvent("some event");
            log.OnIncoming("some incoming");
            log.OnOutgoing("some outgoing");

            Assert.That(System.IO.File.Exists("log/FIX.4.2-SENDERCOMP-TARGETCOMP.event.current.log"));
            Assert.That(System.IO.File.Exists("log/FIX.4.2-SENDERCOMP-TARGETCOMP.messages.current.log"));
        }
Example #6
0
        /// <summary>
        /// Initiate a connection through QuickFix to the TT Fix Adapter
        /// </summary>
        /// <param name="cfg">configuration file name</param>
        /// <param name="p">password</param>
        /// <param name="r">reset sequence numbers - always true for this application</param>
        /// <param name="c">the mainForm control</param>
        public void initiate(string cfg, string p, bool r, Control c)
        {
            log.CreateLog(System.Reflection.MethodBase.GetCurrentMethod().DeclaringType.ToString(), null);

            try
            {
                _password     = p;
                _resetSession = r;
                _control      = c;

                _settings       = new QuickFix.SessionSettings(cfg);
                _storeFactory   = new QuickFix.FileStoreFactory(_settings);
                _logFactory     = new QuickFix.FileLogFactory(_settings);
                _messageFactory = new QuickFix42.MessageFactory();

                _initiator = new QuickFix.ThreadedSocketInitiator(this,
                                                                  _storeFactory,
                                                                  _settings,
                                                                  _logFactory,
                                                                  _messageFactory);

                _initiator.start();
            }
            catch (Exception ex)
            { log.WriteLog(ex.ToString()); }
        }
Example #7
0
        public void testThrowsIfNoConfig()
        {
            QuickFix.SessionID  sessionID = new QuickFix.SessionID("FIX.4.2", "SENDERCOMP", "TARGETCOMP");
            QuickFix.Dictionary config    = new QuickFix.Dictionary();
            config.SetString(QuickFix.SessionSettings.CONNECTION_TYPE, "initiator");
            QuickFix.SessionSettings settings = new QuickFix.SessionSettings();
            settings.Set(sessionID, config);

            QuickFix.FileLogFactory factory = new QuickFix.FileLogFactory(settings);

            Assert.Throws <QuickFix.ConfigError>(delegate { factory.Create(sessionID); });
        }
Example #8
0
        public void testThrowsIfNoConfig()
        {
            QuickFix.SessionID sessionID = new QuickFix.SessionID("FIX.4.2", "SENDERCOMP", "TARGETCOMP");
            QuickFix.Dictionary config = new QuickFix.Dictionary();
            config.SetString(QuickFix.SessionSettings.CONNECTION_TYPE, "initiator");
            QuickFix.SessionSettings settings = new QuickFix.SessionSettings();
            settings.Set(sessionID, config);

            QuickFix.FileLogFactory factory = new QuickFix.FileLogFactory(settings);

            Assert.Throws<QuickFix.ConfigError>(delegate { factory.Create(sessionID); });
        }
Example #9
0
        public void setup()
        {
            if(System.IO.Directory.Exists("log"))
                System.IO.Directory.Delete("log",true);

            sessionID = new QuickFix.SessionID("FIX.4.2", "SENDERCOMP","TARGETCOMP");

            QuickFix.Dictionary config = new QuickFix.Dictionary();
            config.SetString(QuickFix.SessionSettings.CONNECTION_TYPE, "initiator");
            config.SetString(QuickFix.SessionSettings.FILE_LOG_PATH, "log");

            settings = new QuickFix.SessionSettings();
            settings.Set(sessionID,config);

            QuickFix.FileLogFactory factory = new QuickFix.FileLogFactory(settings);
            log = (QuickFix.FileLog)factory.Create(sessionID);
        }
Example #10
0
        public void testLogRotation()
        {
            string logDir = "log";
            if (System.IO.Directory.Exists(logDir))
                System.IO.Directory.Delete(logDir, true);

            QuickFix.SessionID sessionID = new QuickFix.SessionID("FIX.4.2", "SENDERCOMP", "TARGETCOMP");
            QuickFix.SessionSettings settings = new QuickFix.SessionSettings();

            QuickFix.Dictionary config = new QuickFix.Dictionary();
            config.SetString(QuickFix.SessionSettings.CONNECTION_TYPE, "initiator");
            config.SetString(QuickFix.SessionSettings.FILE_LOG_PATH, logDir);

            int NumLogsToRotate = 5;
            config.SetString(QuickFix.SessionSettings.FILE_LOG_ROTATE_NUM_TO_KEEP, NumLogsToRotate.ToString());
            config.SetString(QuickFix.SessionSettings.FILE_LOG_ROTATE_ON_NEW_SESSION, "Y");

            settings.Set(sessionID, config);

            string timeStampMinute = System.DateTime.UtcNow.ToString("MMddyyyy-HHmm");

            for (int i = 0; i < NumLogsToRotate; i++)
            {
                QuickFix.FileLogFactory factory = new QuickFix.FileLogFactory(settings);
                log = (QuickFix.FileLog)factory.Create(sessionID);

                log.OnEvent("some event");
                log.OnIncoming("some incoming");
                log.OnOutgoing("some outgoing");

                Assert.That(System.IO.File.Exists(logDir+"/FIX.4.2-SENDERCOMP-TARGETCOMP.event.current.log"));
                Assert.That(System.IO.File.Exists(logDir+"/FIX.4.2-SENDERCOMP-TARGETCOMP.messages.current.log"));
                log.Dispose();

            }

            Assert.That(System.IO.Directory.GetFiles(logDir,
                String.Format("FIX.4.2-SENDERCOMP-TARGETCOMP.messages.current.log.{0}*",timeStampMinute),
                System.IO.SearchOption.TopDirectoryOnly)
                .Count().Equals(NumLogsToRotate-1));

            Assert.That(System.IO.Directory.GetFiles(logDir,
                String.Format("FIX.4.2-SENDERCOMP-TARGETCOMP.event.current.log.{0}*", timeStampMinute),
                System.IO.SearchOption.TopDirectoryOnly)
                .Count().Equals(NumLogsToRotate-1));
        }
Example #11
0
        public void setup()
        {
            if (System.IO.Directory.Exists("log"))
            {
                System.IO.Directory.Delete("log", true);
            }

            sessionID = new QuickFix.SessionID("FIX.4.2", "SENDERCOMP", "TARGETCOMP");

            QuickFix.Dictionary config = new QuickFix.Dictionary();
            config.SetString(QuickFix.SessionSettings.CONNECTION_TYPE, "initiator");
            config.SetString(QuickFix.SessionSettings.FILE_LOG_PATH, "log");

            settings = new QuickFix.SessionSettings();
            settings.Set(sessionID, config);

            QuickFix.FileLogFactory factory = new QuickFix.FileLogFactory(settings);
            log = (QuickFix.FileLog)factory.Create(sessionID);
        }
        public static ClientApplication Create(string configFilepath,
                                               IFixStrategy strategy,
                                               IFixMessageGenerator messageGenerator,
                                               IMessageSink messageSink)
        {
            // FIX app settings and related
            var settings = new QuickFix.SessionSettings(configFilepath);
            strategy.SessionSettings = settings;

            // FIX application setup
            var storeFactory = new QuickFix.FileStoreFactory(settings);
            var logFactory = new QuickFix.FileLogFactory(settings);
            var app = new ClientApplication(settings, messageGenerator, strategy, messageSink);

            var initiator =
                new QuickFix.Transport.SocketInitiator(app, storeFactory, settings, logFactory);
            app.Initiator = initiator;

            return app;
        }
Example #13
0
        static void Main(string[] args)
        {
            Console.WriteLine("=============");
            Console.WriteLine("This is only an example program, meant to run against the Executor or SimpleAcceptor example programs.");
            Console.WriteLine();
            Console.WriteLine("                                                    ! ! !");
            Console.WriteLine("              DO NOT USE THIS ON A COMMERCIAL FIX INTERFACE!  It won't work and it's a bad idea!");
            Console.WriteLine("                                                    ! ! !");
            Console.WriteLine();
            Console.WriteLine("=============");

            if (args.Length != 1)
            {
                System.Console.WriteLine("usage: TradeClient.exe CONFIG_FILENAME");
            }

            string file = "..\\Debug\\sample_initiator.cfg";

            try
            {
                QuickFix.SessionSettings           settings     = new QuickFix.SessionSettings(file);
                TradeClientApp                     application  = new TradeClientApp();
                QuickFix.IMessageStoreFactory      storeFactory = new QuickFix.FileStoreFactory(settings);
                QuickFix.ILogFactory               logFactory   = new QuickFix.FileLogFactory(settings);
                QuickFix.Transport.SocketInitiator initiator    = new QuickFix.Transport.SocketInitiator(application, storeFactory, settings, logFactory);

                application.MyInitiator = initiator;

                initiator.Start();
                application.Run();

                initiator.Stop();
            }
            catch (System.Exception e)
            {
                Console.WriteLine(e.Message);
                Console.WriteLine(e.StackTrace);
            }
            Environment.Exit(1);
        }
Example #14
0
        public static ClientApplication Create(string configFilepath,
                                               IFixStrategy strategy,
                                               IFixMessageGenerator messageGenerator,
                                               IMessageSink messageSink)
        {
            // FIX app settings and related
            var settings = new QuickFix.SessionSettings(configFilepath);

            strategy.SessionSettings = settings;

            // FIX application setup
            var storeFactory = new QuickFix.FileStoreFactory(settings);
            var logFactory   = new QuickFix.FileLogFactory(settings);
            var app          = new ClientApplication(settings, messageGenerator, strategy, messageSink);

            var initiator =
                new QuickFix.Transport.SocketInitiator(app, storeFactory, settings, logFactory);

            app.Initiator = initiator;

            return(app);
        }
Example #15
0
        public void testGeneratedFileName()
        {
            if (System.IO.Directory.Exists("log"))
                System.IO.Directory.Delete("log", true);

            QuickFix.SessionID sessionID = new QuickFix.SessionID("FIX.4.2", "SENDERCOMP", "TARGETCOMP");
            QuickFix.SessionSettings settings = new QuickFix.SessionSettings();

            QuickFix.Dictionary config = new QuickFix.Dictionary();
            config.SetString(QuickFix.SessionSettings.CONNECTION_TYPE, "initiator");
            config.SetString(QuickFix.SessionSettings.FILE_LOG_PATH, "log");

            settings.Set(sessionID, config);

            QuickFix.FileLogFactory factory = new QuickFix.FileLogFactory(settings);
            log = (QuickFix.FileLog)factory.Create(sessionID);

            log.OnEvent("some event");
            log.OnIncoming("some incoming");
            log.OnOutgoing("some outgoing");

            Assert.That(System.IO.File.Exists("log/FIX.4.2-SENDERCOMP-TARGETCOMP.event.current.log"));
            Assert.That(System.IO.File.Exists("log/FIX.4.2-SENDERCOMP-TARGETCOMP.messages.current.log"));
        }
        /// <summary>
        /// Initiate a connection through QuickFix to the TT Fix Adapter
        /// </summary>
        /// <param name="cfg">configuration file name</param>
        /// <param name="p">password</param>
        /// <param name="r">reset sequence numbers - always true for this application</param>
        /// <param name="c">the mainForm control</param>
        public void initiate(string cfg, string p, bool r, Control c)
        {
            log.CreateLog(System.Reflection.MethodBase.GetCurrentMethod().DeclaringType.ToString(), null);

            try
            {
                _password = p;
                _resetSession = r;
                _control = c;

                _settings = new QuickFix.SessionSettings(cfg);
                _storeFactory = new QuickFix.FileStoreFactory(_settings);
                _logFactory = new QuickFix.FileLogFactory(_settings);
                _messageFactory = new QuickFix.FIX42.MessageFactory();

                _initiator = new QuickFix.Transport.SocketInitiator(this,
                    _storeFactory,
                    _settings,
                    _logFactory,
                    _messageFactory);

                _initiator.Start();
            }
            catch (Exception ex)
            {
                updateDisplay("QuickFIX Error");
                log.WriteLog(ex.ToString());
            }
        }