Esempio n. 1
0
        /// <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");
            }
        }
Esempio n. 2
0
        /// <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()));
                }
            }
        }