Exemplo n.º 1
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()); }
        }
Exemplo n.º 2
0
        static void Main(string[] args)
        {
            if (args.Length != 1)
            {
                System.Console.WriteLine("usage: TradeClient.exe CONFIG_FILENAME");
                System.Environment.Exit(2);
            }

            string file = args[0];

            try
            {
                QuickFix.SessionSettings settings = new QuickFix.SessionSettings(file);
                TradeClientApp application = new TradeClientApp();
                QuickFix.MessageStoreFactory storeFactory = new QuickFix.FileStoreFactory(settings);
                QuickFix.LogFactory logFactory = new QuickFix.ScreenLogFactory(settings);
                QuickFix.Transport.SocketInitiator initiator = new QuickFix.Transport.SocketInitiator(application, storeFactory, settings, logFactory);
                initiator.Start();
                application.Run();
                initiator.Stop();
            }
            catch (System.Exception e)
            {
                Console.WriteLine(e.Message);
                Console.WriteLine(e.StackTrace);
            }
            Environment.Exit(1);
        }
Exemplo n.º 3
0
        static void Main(string[] args)
        {
            Console.WriteLine("=============");
            Console.WriteLine();
            Console.WriteLine("                                                    ! ! !");
            Console.WriteLine("              Test for NASDAQ UMS");
            Console.WriteLine("                                                    ! ! !");
            Console.WriteLine();
            Console.WriteLine("=============");

            string file = "./tradeclient.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.ScreenLogFactory(settings);
                QuickFix.Transport.SocketInitiator initiator    = new QuickFix.Transport.SocketInitiator(application, storeFactory, settings, logFactory);

                application.Initiator = initiator;

                initiator.Start();
                application.Run();
                initiator.Stop();
            }
            catch (System.Exception e)
            {
                Console.WriteLine(e.Message);
                Console.WriteLine(e.StackTrace);
            }
            Environment.Exit(1);
        }
Exemplo n.º 4
0
        public void setup()
        {
            responder   = new MockResponder();
            sessionID   = new QuickFix.SessionID("FIX.4.2", "SENDER", "TARGET");
            application = new MockApplication();
            settings    = new QuickFix.SessionSettings();

            config = new QuickFix.Dictionary();
            config.SetBool(QuickFix.SessionSettings.PERSIST_MESSAGES, false);
            config.SetString(QuickFix.SessionSettings.CONNECTION_TYPE, "initiator");
            config.SetString(QuickFix.SessionSettings.START_TIME, "00:00:00");
            config.SetString(QuickFix.SessionSettings.END_TIME, "00:00:00");
            settings.Set(sessionID, config);

            session = new QuickFix.Session(application, new QuickFix.MemoryStoreFactory(), sessionID,
                                           new QuickFix.DataDictionaryProvider(), new QuickFix.SessionSchedule(config), 0, new QuickFix.ScreenLogFactory(settings), new QuickFix.DefaultMessageFactory(), "blah");
            session.SetResponder(responder);
            session.CheckLatency = false;

            // must be set for an initiator
            int heartBeatInterval = 10;

            session2 = new QuickFix.Session(application, new QuickFix.MemoryStoreFactory(), new QuickFix.SessionID("FIX.4.2", "OTHER_SENDER", "OTHER_TARGET"),
                                            new QuickFix.DataDictionaryProvider(), new QuickFix.SessionSchedule(config), heartBeatInterval, new QuickFix.ScreenLogFactory(settings), new QuickFix.DefaultMessageFactory(), "blah");
            session2.SetResponder(responder);
            session2.CheckLatency = false;

            seqNum = 1;
        }
Exemplo n.º 5
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();
        }
Exemplo n.º 6
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("market-data.cfg");
                MarketDataApp                      application  = new MarketDataApp(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);
            }
        }
Exemplo n.º 7
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.IMessageStoreFactory storeFactory = new QuickFix.FileStoreFactory(settings);
            QuickFix.ILogFactory          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();
        }
Exemplo n.º 8
0
        public void testGeneratedFileName()
        {
            var logDirectory = Path.Combine(TestContext.CurrentContext.TestDirectory, "log");

            if (System.IO.Directory.Exists(logDirectory))
            {
                System.IO.Directory.Delete(logDirectory, 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, logDirectory);

            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(Path.Combine(logDirectory, "FIX.4.2-SENDERCOMP-TARGETCOMP.event.current.log")));
            Assert.That(System.IO.File.Exists(Path.Combine(logDirectory, "FIX.4.2-SENDERCOMP-TARGETCOMP.messages.current.log")));
        }
Exemplo n.º 9
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); });
        }
Exemplo n.º 10
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); });
        }
Exemplo n.º 11
0
 public ClientApplication(
     QuickFix.SessionSettings settings,
     IFixMessageGenerator messageGenerator,
     IFixStrategy strategy,
     IMessageSink messageSink)
 {
     _messageGenerator = messageGenerator;
     _strategy         = strategy;
     _messageSink      = messageSink;
     ActiveSessionID   = null;
     MySessionSettings = settings;
 }
        /*
         *
         * instrument quickfix_id => list of fixconnectors
         */
        static public void OnStartUp(NinjaTrader.Strategy.FixConnector fixConnector)
        {
            lock (locker_)
            {
                // adding anyway
                s_fixConnectors.Add(fixConnector);

                try
                {
                    // start ?
                    if (string.IsNullOrEmpty(ConfigFileName))
                    {
                        if (string.IsNullOrEmpty(fixConnector.ConfigFileName))
                        {
                            // cannot start
                            s_fixConnectors.Warn(Name, "No config file name set to start QuickFix server. FixConnector enqueued but inactive for now ...");
                            return;
                        }

                        // a configfile is set, let's spin that shit
                        ConfigFileName = fixConnector.ConfigFileName;
                        s_fixConnectors.Info(Name, "[OnStartUp] Creating FIX session with file " + ConfigFileName);
                        QuickFix.SessionSettings sessionSettings = new QuickFix.SessionSettings(ConfigFileName);

                        s_fixConnectors.Info(Name, "[OnStartUp] Creating socket acceptor");
                        m_acceptor = new QuickFix.ThreadedSocketAcceptor(
                            m_app  = new NinjaTrader_FixBridge.QuickFixApp(s_fixConnectors),
                            new QuickFix.FileStoreFactory(sessionSettings),
                            sessionSettings,
                            new QuickFix.FileLogFactory(sessionSettings)
                            );

                        sessionSettings = null;

                        s_fixConnectors.Info(Name, "[OnStartUp] Starting FixBridge ...");
                        m_acceptor.Start();
                        s_fixConnectors.Info(Name, "[OnStartUp] FixBridge started !");
                    }
                }
                catch (Exception e)
                {
                    s_fixConnectors.Error(Name, "[OnStartUp] Exception OnStartUp : " + e.Message + ", source:" + e.Source);
                    s_fixConnectors.Error(Name, "[OnStartUp] Exception OnStartUp : " + e.ToString());
                    s_fixConnectors.Error(Name, "[OnStartUp] Exception OnStartUp : " + e.StackTrace);
                    s_fixConnectors.Error(Name, "[OnStartUp]  => destroying FIX layer");

                    KillFix();
                    throw e;
                }
            }
        }
Exemplo n.º 13
0
        public void setup()
        {
            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.ODBC_STORE_CONNECTION_STRING, "DSN=FIXSIM");

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

            store = (QuickFix.ODBCStore)factory.Create(sessionID);
        }
Exemplo n.º 14
0
        // Cannot be autogenerated.

        #endregion
        #region {protected} Instance constructor.

        /// <summary>
        /// todo.1 {name1} should ideally be taken from a configuration object.
        /// </summary>
        protected TFixInitiatorApplicationBase
            (string name1,
            QuickFix.SessionSettings fixSessionSettings
            ) :
            base(name1)
        {
            //Name = name1;
            FixSocketInitiator_ =
                new QuickFix.Transport.SocketInitiator
                    (this,
                    Common.Core.StaticData.TStaticSingletonObjectContainer <QuickFix.MemoryStoreFactory> .Object,
                    fixSessionSettings,
                    this,//new TFixLogger(name1),
                    Common.Core.StaticData.TStaticSingletonObjectContainer <QuickFix.DefaultMessageFactory> .Object
                    );
        }
Exemplo n.º 15
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");
                System.Environment.Exit(2);
            }

            string file = args[0];

            try
            {
                QuickFix.SessionSettings settings    = new QuickFix.SessionSettings(file);
                TradeClientApp           application = new TradeClientApp();

                QuickFix.IMessageStoreFactory storeFactory = new QuickFix.ODBCStoreFactory(settings);
                QuickFix.ILogFactory          logFactory   = new QuickFix.ScreenLogFactory(settings);

                //QuickFix.IMessageStoreFactory storeFactory = new QuickFix.FileStoreFactory(settings);
                //QuickFix.ILogFactory logFactory = new QuickFix.ScreenLogFactory(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);
            }
            Environment.Exit(1);
        }
Exemplo n.º 16
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));
        }
Exemplo n.º 17
0
        public void setup()
        {
            if (System.IO.Directory.Exists("store"))
                System.IO.Directory.Delete("store", 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_STORE_PATH, "store");

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

            store = (QuickFix.FileStore)factory.Create(sessionID);
        }
Exemplo n.º 18
0
        public void setup()
        {
            if (System.IO.Directory.Exists("store"))
            {
                System.IO.Directory.Delete("store", 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_STORE_PATH, "store");

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

            store = (QuickFix.FileStore)factory.Create(sessionID);
        }
Exemplo n.º 19
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;
        }
Exemplo n.º 20
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");
                System.Environment.Exit(2);
            }

            string file = args[0];

            try
            {
                QuickFix.SessionSettings settings = new QuickFix.SessionSettings(file);
                TradeClientApp application = new TradeClientApp();
                QuickFix.IMessageStoreFactory storeFactory = new QuickFix.FileStoreFactory(settings);
                QuickFix.ILogFactory logFactory = new QuickFix.ScreenLogFactory(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);
            }
            Environment.Exit(1);
        }
Exemplo n.º 21
0
        static void Main(string[] args)
        {
            try
            {
                QuickFix.SessionSettings           settings     = new QuickFix.SessionSettings("config_ssl.cfg");
                MarketDataApp                      application  = new MarketDataApp();
                QuickFix.IMessageStoreFactory      storeFactory = new QuickFix.FileStoreFactory(settings);
                QuickFix.ILogFactory               logFactory   = new QuickFix.ScreenLogFactory(settings);
                QuickFix.Transport.SocketInitiator initiator    = new QuickFix.Transport.SocketInitiator(application, storeFactory, settings, logFactory);
                initiator.Start();

                System.Threading.Thread.Sleep(TimeSpan.MaxValue);
            }
            catch (System.Exception e)
            {
                Console.WriteLine(e.Message);
                Console.WriteLine(e.StackTrace);
                Console.ReadLine();
            }
            Environment.Exit(1);
        }
Exemplo n.º 22
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);
        }
Exemplo n.º 23
0
        public UnitTestContext()
        {
            QuickFix.Dictionary      config    = CreateConfig();
            QuickFix.SessionID       sessionID = new QuickFix.SessionID("FIX.4.2", "SENDER", "TARGET");
            QuickFix.SessionSettings settings  = new QuickFix.SessionSettings();
            settings.Set(sessionID, config);

            App           = new QFApp(settings);
            Initiator     = new MockInitiator();
            App.Initiator = Initiator;

            Session = new SessionThatTracksOutbound(
                App,
                new QuickFix.MemoryStoreFactory(),
                sessionID,
                new QuickFix.DataDictionaryProvider(),
                new QuickFix.SessionSchedule(config),
                0,
                new QuickFix.ScreenLogFactory(settings),
                new QuickFix.DefaultMessageFactory(),
                "blah");
            Session.MaxLatency = 120;
        }
Exemplo n.º 24
0
        public UnitTestContext()
        {
            QuickFix.Dictionary config = CreateConfig();
            QuickFix.SessionID sessionID = new QuickFix.SessionID("FIX.4.2", "SENDER", "TARGET");
            QuickFix.SessionSettings settings = new QuickFix.SessionSettings();
            settings.Set(sessionID, config);

            App = new QFApp(settings);
            Initiator = new MockInitiator();
            App.Initiator = Initiator;

            Session = new SessionThatTracksOutbound(
                App,
                new QuickFix.MemoryStoreFactory(),
                sessionID,
                new QuickFix.DataDictionaryProvider(),
                new QuickFix.SessionSchedule(config),
                0,
                new QuickFix.ScreenLogFactory(settings),
                new QuickFix.DefaultMessageFactory(),
                "blah");
            Session.MaxLatency = 120;
        }
Exemplo n.º 25
0
        static void Main(string[] args)
        {
            try
            {
                //OmsFix44Client application = new OmsFix44Client(new REST.V1.CoinApiRestClient("API_KEY"));
                OmsFix50Client application = new OmsFix50Client(new REST.V1.CoinApiRestClient("API_KEY"));

                QuickFix.SessionSettings           settings     = new QuickFix.SessionSettings("FixSettings.cfg");
                QuickFix.IMessageStoreFactory      storeFactory = new QuickFix.FileStoreFactory(settings);
                QuickFix.ILogFactory               logFactory   = new QuickFix.ScreenLogFactory(settings);
                QuickFix.Transport.SocketInitiator initiator    = new QuickFix.Transport.SocketInitiator(application, storeFactory, settings, logFactory);
                initiator.Start();

                System.Threading.Thread.Sleep(Int32.MaxValue);
            }
            catch (System.Exception e)
            {
                Console.WriteLine(e.Message);
                Console.WriteLine(e.StackTrace);
                Console.ReadLine();
            }
            Environment.Exit(1);
        }
Exemplo n.º 26
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"));
        }
Exemplo n.º 27
0
        /**
         * Constructor. Send the constructed SessionSettings
         */
        public ExampleApplication(QuickFix.SessionSettings settings)
        {
            this.settings = settings;                                  // keep the passed settings locally
            this.username = this.settings.get().getString("Username"); // extract the username from the settings
            this.password = this.settings.get().getString("Password"); // extract the password from the settings
            if (Convert.ToInt32(this.settings.getSessions().Count) > 1)
            {
                if (this.settings.getSessions()[0].ToString().Contains(_mdSession))
                {
                    sessionID_md = (QuickFix.SessionID) this.settings.getSessions()[0];
                    sessionID    = (QuickFix.SessionID) this.settings.getSessions()[1];
                }

                if (this.settings.getSessions()[1].ToString().Contains(_mdSession))
                {
                    sessionID_md = (QuickFix.SessionID) this.settings.getSessions()[1];
                    sessionID    = (QuickFix.SessionID) this.settings.getSessions()[0];
                }
            }
            else
            {
                sessionID = (QuickFix.SessionID) this.settings.getSessions()[0];
            }
        }
Exemplo n.º 28
0
        private static void ThreadSafeRun()
        {
            #region

            System.Threading.Monitor.Enter(Common.Core.Threading.TThreadingHelpers.MainLockable);
            var fixSessionSettings      = new QuickFix.SessionSettings(@".\Data\FixSessionConfiguration.ini");
            var fixInitiatorApplication = new GdaxFixApiFacade.TFixInitiatorApplication(@"Test", fixSessionSettings);
            //( (System.IDisposable) fixInitiatorApplication ).Dispose();
            //fixInitiatorApplication.Dispose();
            fixInitiatorApplication.LoggedInEvent  += HandleFixInitiatorApplicationLoggedInEvent;
            fixInitiatorApplication.LoggedOutEvent += HandleFixInitiatorApplicationLoggedOutEvent;
            fixInitiatorApplication.ReceivedSessionFixMessageEvent     += HandleFixInitiatorApplicationReceivedSessionFixMessageEvent;
            fixInitiatorApplication.ReceivedApplicationFixMessageEvent += HandleFixInitiatorApplicationReceivedApplicationFixMessageEvent;
            fixInitiatorApplication.ASyncRepeatedTryLogIn();

            #endregion
            #region

            for (;;)
            {
                System.Threading.Monitor.Exit(Common.Core.Threading.TThreadingHelpers.MainLockable);
                System.Threading.Thread.Sleep(1);
                System.Threading.Monitor.Enter(Common.Core.Threading.TThreadingHelpers.MainLockable);

                if (fixInitiatorApplication.IsLoggedIn)
                {
                    break;
                }
                else
                {
                }
            }

            #endregion
            #region

            {
                var newOrderSingleFixMessage = new QuickFix.FIX42.NewOrderSingle();
                newOrderSingleFixMessage.ClOrdID =
                    new QuickFix.Fields.ClOrdID
                    //(System.Diagnostics.Stopwatch.GetTimestamp().ToString(System.Globalization.NumberFormatInfo.InvariantInfo));
                        (System.Guid.NewGuid().ToString(@"n" /*, System.Globalization.NumberFormatInfo.InvariantInfo*/));
                newOrderSingleFixMessage.HandlInst = new QuickFix.Fields.HandlInst(QuickFix.Fields.HandlInst.AUTOMATED_EXECUTION_ORDER_PRIVATE_NO_BROKER_INTERVENTION);
                newOrderSingleFixMessage.Symbol    = new QuickFix.Fields.Symbol(@"BTC-USD");
                newOrderSingleFixMessage.Side      = new QuickFix.Fields.Side(QuickFix.Fields.Side.SELL);
                newOrderSingleFixMessage.OrderQty  =
                    new QuickFix.Fields.OrderQty
                        (0.01m);
                //(0.1m);
                //(99999.00m);
                newOrderSingleFixMessage.OrdType =
                    new QuickFix.Fields.OrdType
                    //(QuickFix.Fields.OrdType.LIMIT);
                        (QuickFix.Fields.OrdType.MARKET);
                //newOrderSingleFixMessage.Price =
                //   new QuickFix.Fields.Price
                //      //(0.01m);
                //      (10500.00m);
                //newOrderSingleFixMessage.TimeInForce =
                //   new QuickFix.Fields.TimeInForce
                //      //(QuickFix.Fields.TimeInForce.GOOD_TILL_CANCEL);
                //      //(QuickFix.Fields.TimeInForce.IMMEDIATE_OR_CANCEL);
                //      (QuickFix.Fields.TimeInForce.FILL_OR_KILL);
                fixInitiatorApplication.TrySendFixMessage(newOrderSingleFixMessage);
            }

            #endregion
            #region

            System.Threading.Thread.Sleep(4000);

            #endregion
            #region

            //fixInitiatorApplication.AsyncLogOut();
            fixInitiatorApplication.Dispose();
            //( (System.IDisposable) fixInitiatorApplication ).Dispose();
            System.Threading.Monitor.Exit(Common.Core.Threading.TThreadingHelpers.MainLockable);

            #endregion
        }
Exemplo n.º 29
0
        public void setup()
        {
            responder = new MockResponder();
            sessionID = new QuickFix.SessionID("FIX.4.2", "SENDER", "TARGET");
            application = new MockApplication();
            settings = new QuickFix.SessionSettings();

            QuickFix.Dictionary config = new QuickFix.Dictionary();
            config.SetBool(QuickFix.SessionSettings.PERSIST_MESSAGES, false);
            config.SetString(QuickFix.SessionSettings.CONNECTION_TYPE, "initiator");
            config.SetString(QuickFix.SessionSettings.START_TIME, "00:00:00");
            config.SetString(QuickFix.SessionSettings.END_TIME, "00:00:00");
            settings.Set(sessionID, config);

            session = new QuickFix.Session(application, new QuickFix.MemoryStoreFactory(), sessionID,
                new QuickFix.DataDictionaryProvider(),new QuickFix.SessionSchedule(config), 0, new QuickFix.ScreenLogFactory(settings), new QuickFix.DefaultMessageFactory(), "blah");
            session.SetResponder(responder);
            session.CheckLatency = false;

            // must be set for an initiator
            int heartBeatInterval = 10;

            session2 = new QuickFix.Session(application, new QuickFix.MemoryStoreFactory(), new QuickFix.SessionID("FIX.4.2", "OTHER_SENDER", "OTHER_TARGET"),
                new QuickFix.DataDictionaryProvider(), new QuickFix.SessionSchedule(config), heartBeatInterval, new QuickFix.ScreenLogFactory(settings), new QuickFix.DefaultMessageFactory(), "blah");
            session2.SetResponder(responder);
            session2.CheckLatency = false;

            seqNum = 1;
        }
        /// <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());
            }
        }
Exemplo n.º 31
0
 public QFApp(QuickFix.SessionSettings settings, ICustomFixStrategy strategy)
 {
     _strategy         = strategy;
     ActiveSessionID   = null;
     MySessionSettings = settings;
 }
Exemplo n.º 32
0
 public QFApp(QuickFix.SessionSettings settings)
     : this(settings, new NullFixStrategy())
 {
 }
        /*
         *
         * instrument quickfix_id => list of fixconnectors
         */
        public static void OnStartUp(NinjaTrader.Strategy.FixConnector fixConnector)
        {
            lock (locker_)
            {
            // adding anyway
            s_fixConnectors.Add(fixConnector);

            try
            {
                // start ?
                if (string.IsNullOrEmpty(ConfigFileName))
                {

                    if (string.IsNullOrEmpty(fixConnector.ConfigFileName))
                    {
                        // cannot start
                        s_fixConnectors.Warn(Name, "No config file name set to start QuickFix server. FixConnector enqueued but inactive for now ...");
                        return;
                    }

                    // a configfile is set, let's spin that shit
                    ConfigFileName = fixConnector.ConfigFileName;
                    s_fixConnectors.Info(Name, "[OnStartUp] Creating FIX session with file " + ConfigFileName);
                    QuickFix.SessionSettings sessionSettings = new QuickFix.SessionSettings(ConfigFileName);

                    s_fixConnectors.Info(Name, "[OnStartUp] Creating socket acceptor");
                    m_acceptor = new QuickFix.ThreadedSocketAcceptor(
                        m_app=new NinjaTrader_FixBridge.QuickFixApp(s_fixConnectors),
                        new QuickFix.FileStoreFactory(sessionSettings),
                        sessionSettings,
                        new QuickFix.FileLogFactory(sessionSettings)
                        );

                    sessionSettings = null;

                    s_fixConnectors.Info(Name, "[OnStartUp] Starting FixBridge ...");
                    m_acceptor.Start();
                    s_fixConnectors.Info(Name, "[OnStartUp] FixBridge started !");
                }
            }
            catch (Exception e)
            {
                s_fixConnectors.Error(Name, "[OnStartUp] Exception OnStartUp : " + e.Message + ", source:" + e.Source);
                s_fixConnectors.Error(Name, "[OnStartUp] Exception OnStartUp : " + e.ToString());
                s_fixConnectors.Error(Name, "[OnStartUp] Exception OnStartUp : " + e.StackTrace);
                s_fixConnectors.Error(Name, "[OnStartUp]  => destroying FIX layer");

                KillFix();
                throw e;
            }
            }
        }