/// <summary> /// Sends Market Data request to the provider /// </summary> public bool SubscribeTickData(Subscribe request) { try { // Get BW Stock Instance from the requested Symbol BWStock bwStock = _session.GetStock(request.Security.Symbol); // Register Quote Data //bwStock.OnLevel1Update2 += OnLevelOneUpdate; bwStock.OnLevel1Update3 += OnLevelOneUpdate; // Register Trade Data //bwStock.OnTrade2 += OnTradeUpdate; bwStock.OnTrade3 += OnTradeUpdate; // Send Subscription Request bwStock.Subscribe(); if (Logger.IsInfoEnabled) { Logger.Info("Sending market data request for: " + request.Security.Symbol, _type.FullName, "SubscribeTickData"); } return(true); } catch (Exception exception) { Logger.Error(exception, _type.FullName, "SubscribeTickData"); return(false); } }
void tl_newRegisterSymbols(string client, string symbols) { Basket b = BasketImpl.FromString(symbols); foreach (Security s in b) { // make sure we don't already have a subscription for this if (_symstk.Contains(s.symbol)) { continue; } BWStock stk = m_Session.GetStock(s.symbol); stk.Subscribe(); stk.OnTrade += new BWStock.TradeHandler(stk_OnTrade); //stk.OnLevel2Update += new BWStock.Level2UpdateHandler(stk_OnLevel2Update); stk.OnLevel1Update += new BWStock.Level1UpdateHandler(stk_OnLevel1Update); _stocks.Add(stk); _symstk.Add(s.symbol); v("added level1 subscription for: " + s.symbol); } // get existing list Basket list = tl.AllClientBasket; // remove old subscriptions for (int i = 0; i < _symstk.Count; i++) { if (!list.ToString().Contains(_symstk[i]) && (_stocks[i] != null)) { debug(_symstk[i] + " not needed, removing..."); try { _stocks[i].Unsubscribe(); _stocks[i] = null; _symstk[i] = string.Empty; } catch { } } } }
/// <summary> /// Called when Order Reject is received from Blackwood /// </summary> private void OnOrderReject(object sender, MsgReject rejectmsg) { try { if (Logger.IsInfoEnabled) { Logger.Info("Order rejected by Blackwood: " + rejectmsg.ToString(), _type.FullName, "OnOrderReject"); } BWOrder rejectedOrder; // Get corresponding Local Order ID string localId = (from id in _localToBlackwoodIdsMap where id.Value.Equals(rejectmsg.ClientOrderID.Value.ToString()) select id.Key).FirstOrDefault(); if (localId == null) { return; } // Remove from Ids Map string tempId; _localToBlackwoodIdsMap.TryRemove(localId, out tempId); // Remove Rejected Order from the List _bwOrders.TryRemove(rejectmsg.ClientOrderID.Value.ToString(), out rejectedOrder); Rejection rejection = new Rejection(new Security { Symbol = rejectmsg.Symbol.Value }, _orderExecutionProviderName) { OrderId = localId, RejectioReason = rejectmsg.Reason.Value, }; // Raise Rejection reason if (OrderRejectionArrived != null) { OrderRejectionArrived(rejection); } if (rejectmsg.Reason.Value.Equals("Not Shortable - Hard To Borrow")) { // Get BW Stock Instance from the requested Symbol BWStock bwStock = _session.GetStock(rejectmsg.Symbol.Value); // Locate Stock bwStock.LocateStock(rejectedOrder.Size); if (Logger.IsDebugEnabled) { Logger.Debug( "Locating " + rejectmsg.Symbol.Value + " sharess of" + rejectmsg.Symbol.Value, _type.FullName, "OnOrderReject"); } //_htbRejectID = orderReject.ClientOrderID; } } catch (Exception exception) { Logger.Error(exception, _type.FullName, "OnOrderReject"); } }