/// <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; }
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)); }
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; }
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; } }
/// <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)); }