public void HandleOpenOrder(OpenOrderMessage openOrderMessage) { if (openOrderMessage.Order.WhatIf) { this.marginDialog.UpdateMarginInformation(openOrderMessage.OrderState); } }
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 } }
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; }
private void handleOpenOrder(OpenOrderMessage openOrder) { if (openOrder.Order.WhatIf) { orderDialog.HandleIncomingMessage(openOrder); } else { UpdateLiveOrders(openOrder); UpdateLiveOrdersGrid(openOrder); } }
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); }
public void handleOpenOrder(OpenOrderMessage openOrder) { if (openOrder.Order.WhatIf) { orderDialog.HandleOpenOrder(openOrder); } else { UpdateLiveOrders(openOrder); UpdateLiveOrdersGrid(openOrder); } }
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); }
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); }
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() : ""); }
private void handleOpenOrder(OpenOrderMessage openOrder) { /* * if (openOrder.Order.WhatIf) * orderDialog.HandleIncomingMessage(openOrder); * else * { * UpdateLiveOrders(openOrder); * UpdateLiveOrdersGrid(openOrder); * } */ UpdateLiveOrders(openOrder); UpdateLiveOrdersGrid(openOrder); }
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()); * } */ }
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; } }
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); } }
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); } //}); }
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); } } } }
public OnOpenOrderMessage(OpenOrderMessage msg) : base(msg.OrderId, msg.Contract, msg.Order, msg.OrderState) { }
private void ibClient_HandleOpenOrder(OpenOrderMessage openOrder) { UpdateLiveOrders(openOrder); }
private void HandleOpenOrderMsg(OpenOrderMessage msg) { //Log.Info("Receive Open Order Msg. " + string.Format("Open OrderID {0}, ClientID {1} ", msg.Order.OrderId, msg.Order.ClientId)); }
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); } } } } }