Пример #1
0
        /// <summary>
        /// Event notification for AutospreaderInstrument launch
        /// </summary>
        void Instrument_TradableStatusChanged(object sender, TradableStatusChangedEventArgs e)
        {
            if (e.Value)
            {
                // launch of AutospreaderInstrument was successful
                AutospreaderInstrument instr = sender as AutospreaderInstrument;

                // Subscribe for Inside Market Data
                m_ps                = new PriceSubscription(instr, Dispatcher.Current);
                m_ps.Settings       = new PriceSubscriptionSettings(PriceSubscriptionType.InsideMarket);
                m_ps.FieldsUpdated += new FieldsUpdatedEventHandler(m_ps_FieldsUpdated);
                m_ps.Start();

                // Create an ASTradeSubscription to listen for order / fill events only for orders submitted through it
                m_ts = new ASInstrumentTradeSubscription(m_apiInstance.Session, Dispatcher.Current, instr, true, true, false, false);
                m_ts.OrderUpdated  += new EventHandler <OrderUpdatedEventArgs>(m_ts_OrderUpdated);
                m_ts.OrderAdded    += new EventHandler <OrderAddedEventArgs>(m_ts_OrderAdded);
                m_ts.OrderDeleted  += new EventHandler <OrderDeletedEventArgs>(m_ts_OrderDeleted);
                m_ts.OrderFilled   += new EventHandler <OrderFilledEventArgs>(m_ts_OrderFilled);
                m_ts.OrderRejected += new EventHandler <OrderRejectedEventArgs>(m_ts_OrderRejected);
                m_ts.Start();
            }
            else
            {
                Console.WriteLine("Launch of AutospreaderInstrument to {0} was unsuccessful.", e.OrderFeed.Name);
            }
        }
Пример #2
0
        //
        //
        //
        #endregion//Public Methods


        #region no Private Methods
        // *****************************************************************
        // ****                     Private Methods                     ****
        // *****************************************************************
        //
        //
        #endregion//Private Methods


        #region Event Handlers
        // *****************************************************************
        // ****                     Event Handlers                     ****
        // *****************************************************************
        //
        //
        private void AutoSpreaderInstrumentRequest_Completed(object sender, CreateAutospreaderInstrumentRequestEventArgs autoSpreaderEventArgs)
        {
            if (autoSpreaderEventArgs.Instrument != null)
            {
                AutospreaderInstrument m_AutoSpreader   = (AutospreaderInstrument)autoSpreaderEventArgs.Instrument;
                LaunchReturnCode       launchReturnCode = m_AutoSpreader.LaunchToOrderFeed(m_AutoSpreader.GetValidOrderFeeds()[0]); // launch to whatever orderfeed we find first
                if (launchReturnCode == LaunchReturnCode.Success)
                {
                    m_AutoSpreader.TradableStatusChanged += new EventHandler <TradableStatusChangedEventArgs>(AutoSpreaderInstrument_TradeableStatusChanged);
                }
            }
        }
        private void StartOrderSubmission(AutospreaderInstrument instrument)
        {
            // Submit an Autospreader order to the local Autospreader Engine.  As a result, the
            // Autospreader Instrument need not be launched to it.  If you are going to use any other
            // Autospreader Engine, you will need to launch the Autospreader Instrument to it.
            Console.WriteLine("Submitting the Autospreader order to the local Autospreader Engine...");

            // An ASInstrumentTradeSubscription object is filtered by the given Autospreader instrument
            ts = new ASInstrumentTradeSubscription(apiInstance.Session, Dispatcher.Current, instrument);

            ts.OrderAdded += new EventHandler<OrderAddedEventArgs>(ts_OrderAdded);
            ts.OrderFilled += new EventHandler<OrderFilledEventArgs>(ts_OrderFilled);
            ts.OrderRejected += new EventHandler<OrderRejectedEventArgs>(ts_OrderRejected);
            ts.OrderDeleted += new EventHandler<OrderDeletedEventArgs>(ts_OrderDeleted);
            ts.OrderUpdated += new EventHandler<OrderUpdatedEventArgs>(ts_OrderUpdated);
            ts.Start();

            AutospreaderSyntheticOrderProfile profile = new AutospreaderSyntheticOrderProfile(
                apiInstance.Session.MarketCatalog.LocalAutospreaderEngineOrderFeed, instrument);
            profile.QuantityToWork = Quantity.FromInt(instrument, 1);
            profile.OrderType = OrderType.Limit;
            profile.BuySell = BuySell.Buy;
            profile.LimitPrice = Price.FromInt(instrument, 0);

            if (apiInstance.Session.SendOrder(profile))
            {
                orderKey = profile.SiteOrderKey;
                Console.WriteLine("Order Submitted, key: {0}", profile.SiteOrderKey);
            }
            else
            {
                Console.WriteLine("Send Order failed: {0}", profile.RoutingStatus.Message);
                Dispose();
            }
        }