/// <summary> /// Called when HTB Locate event is Raised by Blackwood /// </summary> private void OnLocate(object sender, BWOrder locatemsg) { try { if (Logger.IsInfoEnabled) { Logger.Info("HTB Locate event raised by Blackwood: " + locatemsg.ToString(), _type.FullName, "OnLocate"); } //Create limit order containing locate parameters LimitOrder locateOrder = OrderMessage.GenerateLimitOrder(locatemsg.ClientOrderID.ToString(), new Security() { Symbol = locatemsg.Symbol }, locatemsg.OrderSide2.ToString(), (int)locatemsg.Size, (decimal)locatemsg.LimitPrice, _orderExecutionProviderName); // Raise event to notify listeners if (OnLocateMessage != null) { // Update BW Locate Orders Map _locateOrders.AddOrUpdate(locatemsg.ClientOrderID.ToString(), locatemsg, (key, value) => locatemsg); // Fire Event OnLocateMessage(locateOrder); } } catch (Exception exception) { Logger.Error(exception, _type.FullName, "OnLocate"); } }
/// <summary> /// Called when Order Update is received from Blackwood /// </summary> private void OnOrderUpdate(object sender, BWOrder ordermsg) { try { if (ordermsg.OrderID != 0 && ordermsg.OrderStatus == OrderStatus.Market) { if (Logger.IsInfoEnabled) { Logger.Info("Order update received from Blackwood: " + ordermsg.ToString(), _type.FullName, "OnOrderUpdate"); } if (Logger.IsDebugEnabled) { Logger.Debug("BW-Order ID: " + ordermsg.OrderID + " | BW-ClientOrder ID: " + ordermsg.ClientOrderID, _type.FullName, "OnOrderUpdate"); } // Get corresponding Local Order ID string localId = (from id in _localToBlackwoodIdsMap where id.Value.Equals(ordermsg.ClientOrderID.ToString()) select id.Key).FirstOrDefault(); if (localId == null) { return; } Order order = new Order(_orderExecutionProviderName) { OrderID = localId, OrderSide = BlackwoodTypeConvertor.OrderSideConvertor.GetTradeHubOrderSide(ordermsg.OrderSide2), OrderSize = Convert.ToInt32(ordermsg.Size), Security = new Security { Symbol = ordermsg.Symbol }, OrderDateTime = ordermsg.OrderTime }; // Update IDs Map _localToBlackwoodIdsMap[localId] = ordermsg.OrderID.ToString(); BWOrder bwOrder; if (_bwOrders.TryRemove(ordermsg.ClientOrderID.ToString(), out bwOrder)) { // Update Orders Map _bwOrders.TryAdd(ordermsg.OrderID.ToString(), bwOrder); } // Raise Order Acceptance Event if (NewArrived != null) { NewArrived(order); } } } catch (Exception exception) { Logger.Error(exception, _type.FullName, "OnOrderUpdate"); } }
private void STATUSSERVERUPDATE(BWOrder bwo) { long _tlid = 0; int _bwid = bwo.ClientOrderID; int _smartID = bwo.SmartID; // rectify ClientOrderID to SmartID // check for ClientOrderID 'key' if (_intlong.ContainsKey(_bwid)) { _intlong.TryGetValue(_bwid, out _tlid); if (_tlid != 0) { // update TL with BWid _intlong.Remove(_bwid); _intlong.Add(_smartID, _tlid); _longint[_tlid] = _smartID; //v(String.Format("RECTIFYING! Updating order map, TL:[{0}] with BW:[{1}]", _tlid, _smartID)); } else { v(String.Format("Order for {0} put TL [{0}] to ZERO ", bwo.Symbol, _tlid )); } } else { if (_intlong.ContainsKey(_smartID)) { // v(String.Format("We have already updated BW and TL to reflect smartID [{0}]", _smartID)); } else { long _cancelID = _id.AssignId; _intlong.Add(_smartID, _cancelID); _longint.Add(_cancelID, _smartID); //orderz.Add(_cancelID, bwo); debug(String.Format("+++Manual Order ack+++ SmartID:[{0}] getting tagged to *NEW* TL_ID: [{1}] and BWOrder: [{2}]", _smartID, _cancelID, bwo.ToString())); } } }