Beispiel #1
0
 /// <summary>
 /// Initializes a new instance of the <see cref="SubscriptionFilterEnumerator"/> class
 /// </summary>
 /// <param name="enumerator">The source enumerator to be wrapped</param>
 /// <param name="security">The security containing an exchange and data filter</param>
 /// <param name="endTime">The end time of the subscription</param>
 /// <param name="extendedMarketHours">True if extended market hours are enabled</param>
 /// <param name="liveMode">True if live mode</param>
 public SubscriptionFilterEnumerator(IEnumerator <BaseData> enumerator, Security security, DateTime endTime, bool extendedMarketHours, bool liveMode)
 {
     _liveMode            = liveMode;
     _enumerator          = enumerator;
     _security            = security;
     _endTime             = endTime;
     _exchange            = _security.Exchange;
     _dataFilter          = _security.DataFilter;
     _extendedMarketHours = extendedMarketHours;
 }
Beispiel #2
0
        public void MarketDataRequest(QuickFix42.SecurityDefinition securityDefinition)
        {
            QuickFix42.MarketDataRequest marketDataRequest =
                new QuickFix42.MarketDataRequest(new MDReqID(DateTime.Now.ToString()),
                new SubscriptionRequestType(SubscriptionRequestType.SNAPSHOT_PLUS_UPDATES),
                new MarketDepth(1));
            marketDataRequest.setField(new MDUpdateType(MDUpdateType.FULL_REFRESH));
            marketDataRequest.setField(new AggregatedBook(true));

            QuickFix42.MarketDataRequest.NoMDEntryTypes marketDataEntyGroupBid = new QuickFix42.MarketDataRequest.NoMDEntryTypes();
            marketDataEntyGroupBid.set(new MDEntryType(MDEntryType.BID));
            marketDataRequest.addGroup(marketDataEntyGroupBid);

            QuickFix42.MarketDataRequest.NoMDEntryTypes marketDataEntyGroupOffer = new QuickFix42.MarketDataRequest.NoMDEntryTypes();
            marketDataEntyGroupOffer.set(new MDEntryType(MDEntryType.OFFER));
            marketDataRequest.addGroup(marketDataEntyGroupOffer);

            /** Create Component Block NoRelatedSym */
            QuickFix42.MarketDataRequest.NoRelatedSym noRelatedSym = new QuickFix42.MarketDataRequest.NoRelatedSym();

            SecurityExchange securityExchange = new SecurityExchange();
            securityDefinition.getField(securityExchange);
            noRelatedSym.setField(securityExchange);

            SecurityType securityType = new SecurityType();
            securityDefinition.getField(securityType);
            noRelatedSym.setField(securityType);

            Symbol symbol = new Symbol();
            securityDefinition.getField(symbol);
            noRelatedSym.setField(symbol);

            //MaturityMonthYear maturityMonthYear = new MaturityMonthYear();
            //securityDefinition.getField(maturityMonthYear);
            //noRelatedSym.setField(maturityMonthYear);

            SecurityID securityId = new SecurityID();
            securityDefinition.getField(securityId);
            noRelatedSym.setField(securityId);

            marketDataRequest.addGroup(noRelatedSym);

            Session.sendToTarget(marketDataRequest, GetPriceSession());
        }
            /// <summary>
            /// Gets the security price.
            /// </summary>
            /// <returns>The security price.</returns>
            /// <param name = "asOfDate">the as of date</param>
            /// <param name="securityExchange">security exchange</param>
            public SecurityPrice GetSecurityPrice(DateTime asOfDate, SecurityExchange securityExchange)
            {
                const int maxPrice = 780;

                var security = securityExchange.Security;
                var exchange = securityExchange.Exchange;
                var ticker   = security.Ticker;

                if (!_priceMap.ContainsKey(ticker))
                {
                    _priceMap.Add(ticker, _random.Next(1, maxValue: maxPrice));
                }
                else
                {
                    // up a random amount; down a random amount.
                    _priceMap[ticker] += _random.NextDouble();
                    _priceMap[ticker] -= _random.NextDouble();
                }

                return(new SecurityPrice(securityExchange.Security, Convert.ToDecimal(_priceMap[ticker]), exchange));
            }
Beispiel #4
0
        public Message NewOrder(MDEntryGroup entryGroup, double quantity)
        {
            bool isInvertedSecurity = entryGroup.OwnerEntry.IsInverted;
            Message message = null;
            Account account = new Account(GetOrderSession().getSenderCompID().ToLower());

            ClOrdID clOrdId = new ClOrdID("ClOrd_" + Guid.NewGuid());
            HandlInst handlInst = new HandlInst(HandlInst.AUTOMATED_EXECUTION_ORDER_PRIVATE_NO_BROKER_INTERVENTION);
            OrdType ordType = new OrdType(OrdType.LIMIT);
            TimeInForce timeInForce = new TimeInForce(TimeInForce.FILL_OR_KILL);
            TransactTime transactTime = new TransactTime();

            Price price = new Price(entryGroup.MDEntryPx);
            SecurityExchange securityExchange = new SecurityExchange(entryGroup.OwnerEntry.SecurityExchange);
            SecurityType securityType = new SecurityType(entryGroup.OwnerEntry.SecurityType);
            Symbol symbol = new Symbol(entryGroup.OwnerEntry.Symbol);
            SecurityID securityId = new SecurityID(entryGroup.OwnerEntry.SecurityID);
            OrderQty orderQty = new OrderQty(quantity);

            Side side = null;
            switch (entryGroup.MDEntryType)
            {
                case MDEntryType.BID:
                    side = new Side(Side.SELL);
                    break;
                case MDEntryType.OFFER:
                    side = new Side(Side.BUY);
                    break;
                default:
                    throw new Exception("Undefined entry type.");
            }

            //if (isInvertedSecurity && side.getValue() == Side.BUY)
            //    price = new Price(-price.getValue());

            message = new QuickFix42.NewOrderSingle();

            ((QuickFix42.NewOrderSingle) message).set(account);

            ((QuickFix42.NewOrderSingle) message).set(clOrdId);
            ((QuickFix42.NewOrderSingle) message).set(side);
            ((QuickFix42.NewOrderSingle) message).set(transactTime);
            ((QuickFix42.NewOrderSingle) message).set(ordType);

            ((QuickFix42.NewOrderSingle) message).set(price);
            ((QuickFix42.NewOrderSingle) message).set(orderQty);
            ((QuickFix42.NewOrderSingle) message).set(securityId);
            ((QuickFix42.NewOrderSingle) message).set(securityExchange);
            ((QuickFix42.NewOrderSingle) message).set(timeInForce);

            ((QuickFix42.NewOrderSingle) message).set(securityType);

            return message;
        }
Beispiel #5
0
        public override void onMessage(QuickFix42.SecurityDefinition securityDefinition, SessionID sessionID)
        {
            AddText("securityDefinition " + securityDefinition + Environment.NewLine);

            try
            {
                SecurityExchange securityExchange = new SecurityExchange();
                securityDefinition.getField(securityExchange);

                Symbol symbol = new Symbol();
                securityDefinition.getField(symbol);

                SecurityType securityType = new SecurityType();
                securityDefinition.getField(securityType);

                SpreadMatrixData smd = SpreadMatrixCollection.Get(securityExchange.getValue(), symbol.getValue());

                if (smd != null)
                {
                    SecurityEntry entry = new SecurityEntry(securityDefinition);
                    smd.Add(entry);
                    MarketDataRequest(securityDefinition);
                }
            }
            catch (Exception exception)
            {
                AddText(exception.Message + Environment.NewLine);
                throw;
            }
        }
Beispiel #6
0
 /// <summary>
 /// Equals
 /// </summary>
 /// <param name="other">the other</param>
 /// <returns>true if equals</returns>
 public bool Equals(SecurityExchange other)
 {
     return(string.Equals(_exchange, other._exchange) && Equals(_security, other._security));
 }