Beispiel #1
0
 public void HandleOpenOrder(OpenOrderMessage openOrderMessage)
 {
     if (openOrderMessage.Order.WhatIf)
     {
         this.marginDialog.UpdateMarginInformation(openOrderMessage.OrderState);
     }
 }
Beispiel #2
0
        private void ibClient_HandleOpenOrder(OpenOrderMessage message)
        {
            if (OnOpenOrderEvent != null)
            {
                OnOpenOrderMessage msg = new OnOpenOrderMessage(message);

                OnOpenOrderEvent(msg);
            }
        }
 private static void LogOrder(OpenOrderMessage openOrder)
 {
     try
     {
         Log.Debug(openOrder.Dump("Open Order"));
     }
     catch (Exception)
     {
         // Ignore exception
     }
 }
Beispiel #4
0
 private void PopulateOrderRow(int rowIndex, OpenOrderMessage orderMessage)
 {
     liveOrdersGrid[0, rowIndex].Value = orderMessage.Order.PermId;
     liveOrdersGrid[1, rowIndex].Value = orderMessage.Order.ClientId;
     liveOrdersGrid[2, rowIndex].Value = orderMessage.Order.OrderId;
     liveOrdersGrid[3, rowIndex].Value = orderMessage.Order.Account;
     liveOrdersGrid[4, rowIndex].Value = orderMessage.Order.Action;
     liveOrdersGrid[5, rowIndex].Value = orderMessage.Order.TotalQuantity;
     liveOrdersGrid[6, rowIndex].Value = orderMessage.Contract.Symbol + " " + orderMessage.Contract.SecType + " " + orderMessage.Contract.Exchange;
     liveOrdersGrid[7, rowIndex].Value = orderMessage.OrderState.Status;
 }
Beispiel #5
0
 private void handleOpenOrder(OpenOrderMessage openOrder)
 {
     if (openOrder.Order.WhatIf)
     {
         orderDialog.HandleIncomingMessage(openOrder);
     }
     else
     {
         UpdateLiveOrders(openOrder);
         UpdateLiveOrdersGrid(openOrder);
     }
 }
Beispiel #6
0
 private void UpdateLiveOrders(OpenOrderMessage orderMesage)
 {
     for (int i = 0; i < openOrders.Count; i++)
     {
         if (openOrders[i].Order.OrderId == orderMesage.OrderId)
         {
             openOrders[i] = orderMesage;
             return;
         }
     }
     openOrders.Add(orderMesage);
 }
Beispiel #7
0
 public void handleOpenOrder(OpenOrderMessage openOrder)
 {
     if (openOrder.Order.WhatIf)
     {
         orderDialog.HandleOpenOrder(openOrder);
     }
     else
     {
         UpdateLiveOrders(openOrder);
         UpdateLiveOrdersGrid(openOrder);
     }
 }
Beispiel #8
0
        public bool CancelOrder(int orderId)
        {
            int clientId = _clientId;
            OpenOrderMessage openOrder = GetOpenOrderMessage(orderId, clientId);

            if (openOrder != null)
            {
                _ibClient.ClientSocket.cancelOrder(openOrder.OrderId);
                return(true);
            }

            return(false);
        }
Beispiel #9
0
 private void UpdateLiveOrdersGrid(OpenOrderMessage orderMessage)
 {
     for (int i = 0; i < liveOrdersGrid.Rows.Count; i++)
     {
         if ((int)(liveOrdersGrid[2, i].Value) == orderMessage.Order.OrderId)
         {
             PopulateOrderRow(i, orderMessage);
             return;
         }
     }
     liveOrdersGrid.Rows.Add(1);
     PopulateOrderRow(liveOrdersGrid.Rows.Count - 1, orderMessage);
 }
Beispiel #10
0
 private void PopulateOrderRow(int rowIndex, OpenOrderMessage orderMessage)
 {
     liveOrdersGrid[0, rowIndex].Value = orderMessage.Order.PermId;
     liveOrdersGrid[1, rowIndex].Value = orderMessage.Order.ClientId;
     liveOrdersGrid[2, rowIndex].Value = orderMessage.Order.OrderId;
     liveOrdersGrid[3, rowIndex].Value = orderMessage.Order.Account;
     liveOrdersGrid[4, rowIndex].Value = orderMessage.Order.ModelCode;
     liveOrdersGrid[5, rowIndex].Value = orderMessage.Order.Action;
     liveOrdersGrid[6, rowIndex].Value = orderMessage.Order.TotalQuantity;
     liveOrdersGrid[7, rowIndex].Value = orderMessage.Contract.Symbol + " " + orderMessage.Contract.SecType + " " + orderMessage.Contract.Exchange;
     liveOrdersGrid[8, rowIndex].Value = orderMessage.OrderState.Status;
     liveOrdersGrid[9, rowIndex].Value = (orderMessage.Order.CashQty != Double.MaxValue ? orderMessage.Order.CashQty.ToString() : "");
 }
Beispiel #11
0
 private void handleOpenOrder(OpenOrderMessage openOrder)
 {
     /*
      * if (openOrder.Order.WhatIf)
      *  orderDialog.HandleIncomingMessage(openOrder);
      * else
      * {
      *  UpdateLiveOrders(openOrder);
      *  UpdateLiveOrdersGrid(openOrder);
      * }
      */
     UpdateLiveOrders(openOrder);
     UpdateLiveOrdersGrid(openOrder);
 }
Beispiel #12
0
 private void handleOpenOrder(OpenOrderMessage openOrder)
 {
     /*
      * if (openOrder.Order.WhatIf)
      *      //orderDialog.HandleIncomingMessage(openOrder);
      *      MessageBox.Show("openOrder.Order.WhatIf: " + openOrder.ToString());
      * else
      * {
      *      //UpdateLiveOrders(openOrder);
      *      //UpdateLiveOrdersGrid(openOrder);
      *      MessageBox.Show("ELSE. openOrder.Order.WhatIf: " + openOrder.ToString());
      * }
      */
 }
Beispiel #13
0
        private void PopulateOrderRow(int rowIndex, OpenOrderMessage orderMessage)
        {
            /*
             * liveOrdersGrid[0, rowIndex].Value = orderMessage.Order.PermId;
             * liveOrdersGrid[1, rowIndex].Value = orderMessage.Order.ClientId;
             * liveOrdersGrid[2, rowIndex].Value = orderMessage.Order.OrderId;
             * liveOrdersGrid[3, rowIndex].Value = orderMessage.Order.Account;
             * liveOrdersGrid[4, rowIndex].Value = orderMessage.Order.Action;
             * liveOrdersGrid[5, rowIndex].Value = orderMessage.Order.TotalQuantity;
             * liveOrdersGrid[6, rowIndex].Value = orderMessage.Contract.Symbol + " " + orderMessage.Contract.SecType + " " + orderMessage.Contract.Exchange;
             * liveOrdersGrid[7, rowIndex].Value = orderMessage.OrderState.Status;
             */
            String action = orderMessage.Order.Action;
            int    bqty   = 0;
            int    sqty   = 0;

            if ("BUY".Equals(action))
            {
                bqty = orderMessage.Order.TotalQuantity;
            }
            if ("SELL".Equals(action))
            {
                sqty = orderMessage.Order.TotalQuantity;
            }
            OrderRecord record = null;

            if (appStgManager.getAppOrderManager().OrderRepositry.ContainsKey(orderMessage.OrderId.ToString()))
            {
                record = appStgManager.getAppOrderManager().OrderRepositry[orderMessage.OrderId.ToString()];
            }
            liveOrdersGrid[0, rowIndex].Value = orderMessage.Order.PermId;
            liveOrdersGrid[1, rowIndex].Value = orderMessage.Contract.LocalSymbol;
            liveOrdersGrid[2, rowIndex].Value = bqty;
            liveOrdersGrid[3, rowIndex].Value = sqty;
            liveOrdersGrid[4, rowIndex].Value = orderMessage.Order.LmtPrice;
            liveOrdersGrid[5, rowIndex].Value = orderMessage.Order.AuxPrice;
            if (record != null)
            {
                liveOrdersGrid[6, rowIndex].Value = String.Format("{0:yyyyMMdd HH:mm:ss}", record.orderTime);
            }
            liveOrdersGrid[7, rowIndex].Value = orderMessage.OrderState.Status;
            //liveOrdersGrid[8, rowIndex].Value = String.Format("{0:0,0.0}", orderMessage.OrderState.Commission);

            liveOrdersGrid[8, rowIndex].Value = orderMessage.OrderState.Commission;
            if (record != null)
            {
                liveOrdersGrid[9, rowIndex].Value = record.sno;
            }
        }
Beispiel #14
0
 private void UpdateLiveOrders(OpenOrderMessage orderMessage)
 {
     lock (_openOrderLockObj)
     {
         UpdateOrderMessageToDatabase(orderMessage);
         for (int i = 0; i < _openOrders.Count; i++)
         {
             if (_openOrders[i].Order.OrderId == orderMessage.OrderId)
             {
                 _openOrders[i] = orderMessage;
                 return;
             }
         }
         _openOrders.Add(orderMessage);
     }
 }
Beispiel #15
0
 private void UpdateOrderMessageToDatabase(OpenOrderMessage orderMessage)
 {
     //Task.Factory.StartNew(() =>
     //{
     try
     {
         var order = IBTradingService.ConvertOpenOrderMessageToOrder(orderMessage, this);
         new DatabaseRepository.TradeDatabase().Order_Upsert(order);
     }
     catch (Exception ex)
     {
         _log.Error(ex.Message);
         _log.Error(ex.StackTrace);
     }
     //});
 }
Beispiel #16
0
 public void CancelSelection()
 {
     if (liveOrdersGrid.SelectedRows.Count > 0)
     {
         for (int i = 0; i < liveOrdersGrid.SelectedRows.Count; i++)
         {
             int orderId  = (int)liveOrdersGrid.SelectedRows[i].Cells[2].Value;
             int clientId = (int)liveOrdersGrid.SelectedRows[i].Cells[1].Value;
             OpenOrderMessage openOrder = GetOpenOrderMessage(orderId, clientId);
             if (openOrder != null)
             {
                 ibClient.ClientSocket.cancelOrder(openOrder.OrderId);
             }
         }
     }
 }
Beispiel #17
0
 public OnOpenOrderMessage(OpenOrderMessage msg) :
     base(msg.OrderId, msg.Contract, msg.Order, msg.OrderState)
 {
 }
Beispiel #18
0
 private void ibClient_HandleOpenOrder(OpenOrderMessage openOrder)
 {
     UpdateLiveOrders(openOrder);
 }
Beispiel #19
0
 private void HandleOpenOrderMsg(OpenOrderMessage msg)
 {
     //Log.Info("Receive Open Order Msg. " + string.Format("Open OrderID {0}, ClientID {1} ", msg.Order.OrderId, msg.Order.ClientId));
 }
Beispiel #20
0
        public void ResolveOpenOrderMessage(String action, double currentPrice, OpenOrderMessage openOrder)
        {
            //Determine if the parent order has been filled.
            if (openOrder.Order.ParentId == 0 & openOrder.Order.Action != action)
            {
                if (openOrder.OrderState.Status == ApplicationHelper.Order_status_Filled)
                {
                    Boolean active = true;
                    foreach (OpenOrderMessage childOder in Orders.Where(x => x.Order.ParentId == openOrder.OrderId))
                    {
                        if (childOder.OrderState.Status.Trim().Equals(ApplicationHelper.FILLED) || childOder.OrderState.Status.Trim().Equals(ApplicationHelper.Order_status_Cancelled) || childOder.OrderState.Status.Trim().Equals(ApplicationHelper.Order_status_PendingCancel))
                        {
                            active = false;
                        }
                    }

                    if (active)
                    {
                        //Resubmit stop loss order with current price to exit immediately
                        foreach (OpenOrderMessage childOrder in Orders.Where(x => x.Order.ParentId == openOrder.OrderId))
                        {
                            //Stop loss order
                            if (childOrder.OrderId == openOrder.OrderId + 2 & childOrder.Order.AuxPrice != currentPrice)
                            {
                                childOrder.Order.AuxPrice = currentPrice;
                                ibClient.ClientSocket.placeOrder(childOrder.OrderId, childOrder.Contract, childOrder.Order);
                                if (action.Equals(ApplicationHelper.EMPTY))
                                {
                                    ApplicationHelper.log(ref tbLog, "Signal has disappeared." + openOrder.OrderId, System.Drawing.Color.Black);
                                }
                                ApplicationHelper.log(ref tbLog, string.Format("Reverse Direction Resubmit Stop loss order with current price to exit from child.Child Order ID - {0} Child current Status {1} ", childOrder.OrderId, childOrder.OrderState.Status.ToString()), System.Drawing.Color.Black);
                            }
                        }
                    }
                }
                else //if parent order has not been filled, then cancel it
                     //What happens to partially fill order.
                {
                    if (openOrder.OrderState.Status.Trim().Equals(ApplicationHelper.Order_status_Cancelled) || openOrder.OrderState.Status.Trim().Equals(ApplicationHelper.Order_status_PendingCancel))
                    {
                    }
                    else
                    {
                        if (action.Equals(ApplicationHelper.EMPTY))
                        {
                            ApplicationHelper.log(ref tbLog, "Signal has disappeared." + openOrder.OrderId, System.Drawing.Color.Black);
                        }
                        ApplicationHelper.log(ref tbLog, "Reverse Direction Parent order id has not been filled.Current Status " + openOrder.OrderState.Status.ToString(), System.Drawing.Color.Black);
                        ApplicationHelper.log(ref tbLog, "Reverse Direction OrderManager Cancels Parent Order id " + openOrder.OrderId, System.Drawing.Color.Black);

                        ibClient.ClientSocket.cancelOrder(openOrder.OrderId);
                    }
                }
            }



            if (openOrder.Order.ParentId != 0 & openOrder.Order.Action == action)
            {
                if (openOrder.OrderState.Status.Trim().Equals(ApplicationHelper.FILLED) || openOrder.OrderState.Status.Trim().Equals(ApplicationHelper.Order_status_Cancelled) || openOrder.OrderState.Status.Trim().Equals(ApplicationHelper.Order_status_PendingCancel))
                {
                }
                else
                {
                    //Stop loss order only
                    if (openOrder.OrderId == openOrder.Order.ParentId + 2 & openOrder.Order.AuxPrice != currentPrice)
                    {
                        if (openOrder.Order.AuxPrice != currentPrice)
                        {
                            openOrder.Order.AuxPrice = currentPrice;
                            ibClient.ClientSocket.placeOrder(openOrder.OrderId, openOrder.Contract, openOrder.Order);
                            ApplicationHelper.log(ref tbLog, "Reverse Direction Resubmit Stop loss order with current price to exit from child." + openOrder.OrderId, System.Drawing.Color.Black);
                        }
                    }
                }
            }
        }