public static Transaction CreateCancelFuturesTransaction(this OrderGroupCancelMessage message, IDictionary <string, RefPair <SecurityTypes, string> > securityClassInfo) { if (message == null) { throw new ArgumentNullException(nameof(message)); } if (message.PortfolioName.IsEmpty()) { throw new ArgumentException(nameof(message)); } if (message.SecurityId.SecurityCode.IsEmpty()) { throw new ArgumentException(nameof(message)); } var underlyingSecurityCode = message.GetValue <string>("UnderlyingSecurityCode"); if (underlyingSecurityCode.IsEmpty()) { throw new ArgumentException(LocalizedStrings.Str1850, nameof(message)); } var secType = message.SecurityId.SecurityType; if (secType != SecurityTypes.Future) { throw new ArgumentException(LocalizedStrings.Str1851Params.Put(secType), nameof(message)); } var transaction = new Transaction(TransactionTypes.CancelGroup, message); transaction .SetAccount(message.PortfolioName) .SetBaseContract(underlyingSecurityCode) .SetAction(TransactionActions.KillAllFuturesOrders) .SetClassCode(securityClassInfo.GetSecurityClass(message.SecurityId)); if (message.Side != null) { transaction.SetSide(message.Side.Value); } if (!message.BrokerCode.IsEmpty()) { transaction.SetFirmId(message.BrokerCode); } return(transaction); }
private void ProcessOrderGroupCancel(OrderGroupCancelMessage cancelMsg) { _httpClient.CancelAllOrders(); SendOutMessage(new ExecutionMessage { ServerTime = CurrentTime.ConvertToUtc(), ExecutionType = ExecutionTypes.Transaction, OriginalTransactionId = cancelMsg.TransactionId, HasOrderInfo = true, }); ProcessOrderStatus(null); ProcessPortfolioLookup(null); }
// create and send message private void SendCommand(IReadOnlyDictionary<string, object> actions) { Message message = null; switch (actions["ACTION"].ToString()) { case "NEW_ORDER": { message = new OrderRegisterMessage { SecurityId = _securities.FirstOrDefault(s => s.Code == actions["SECCODE"].ToString() && s.Class == actions["CLASSCODE"].ToString()).ToSecurityId(), ClientCode = actions["CLIENTCODE"].ToString(), PortfolioName = actions["ACCOUNT"].ToString(), OrderType = (OrderTypes)actions["TYPE"], Price = (decimal)actions["PRICE"], Side = (Sides)actions["OPERATION"], Volume = (decimal)actions["QUANTITY"], TransactionId = _transAdapter.TransactionIdGenerator.GetNextId(), Comment = actions["COMMENT"].ToString() }; } break; case "KILL_ORDER": { message = new OrderCancelMessage { OrderId = (long)actions["ORDER_KEY"], OriginalTransactionId = (long)actions["ORIGINAL_TRANS_ID"], TransactionId = _transAdapter.TransactionIdGenerator.GetNextId() }; } break; case "KILL_ALL_ORDERS": { message = new OrderGroupCancelMessage { TransactionId = _transAdapter.TransactionIdGenerator.GetNextId() }; } break; case "MOVE_ORDERS": { //TODO } break; case "REGISTER_SECURITY": { //TODO } break; case "UNREGISTER_SECURITY": { //TODO } break; case "REGISTER_TRADES": { //TODO } break; case "UNREGISTER_TRADES": { //TODO } break; case "REGISTER_MARKETDEPTH": { //TODO } break; case "UNREGISTER_MARKETDEPTH": { //TODO } break; } if (message != null) _transAdapter.SendInMessage(message); }
public static Transaction CreateCancelFuturesTransaction(this IMessageSessionHolder sessionHolder, OrderGroupCancelMessage message) { if (sessionHolder == null) { throw new ArgumentNullException("sessionHolder"); } if (message == null) { throw new ArgumentNullException("message"); } if (message.PortfolioName.IsEmpty()) { throw new ArgumentException("message"); } if (message.SecurityId.SecurityCode.IsEmpty()) { throw new ArgumentException("message"); } var underlyingSecurityCode = message.GetValue <string>("UnderlyingSecurityCode"); if (underlyingSecurityCode.IsEmpty()) { throw new ArgumentException(LocalizedStrings.Str1850, "message"); } var secType = message.SecurityId.SecurityType; if (secType != SecurityTypes.Future) { throw new ArgumentException(LocalizedStrings.Str1851Params.Put(secType), "message"); } var transaction = new Transaction(TransactionTypes.CancelGroup, message); transaction .SetAccount(message.PortfolioName) .SetBaseContract(underlyingSecurityCode) .SetAction(TransactionActions.KillAllFuturesOrders) .SetClassCode(sessionHolder.GetSecurityClass(message.SecurityId)); if (message.Side != null) { transaction.SetSide(message.Side.Value); } return(transaction); }
// create and send message private void SendCommand(IReadOnlyDictionary <string, object> actions) { Message message = null; switch (actions["ACTION"].ToString()) { case "NEW_ORDER": { message = new OrderRegisterMessage { SecurityId = _securities.FirstOrDefault(s => s.Code == actions["SECCODE"].ToString() && s.Class == actions["CLASSCODE"].ToString()).ToSecurityId(), ClientCode = actions["CLIENTCODE"].ToString(), PortfolioName = actions["ACCOUNT"].ToString(), OrderType = (OrderTypes)actions["TYPE"], Price = (decimal)actions["PRICE"], Side = (Sides)actions["OPERATION"], Volume = (decimal)actions["QUANTITY"], TransactionId = _transAdapter.TransactionIdGenerator.GetNextId(), Comment = actions["COMMENT"].ToString() }; } break; case "KILL_ORDER": { message = new OrderCancelMessage { OrderId = (long)actions["ORDER_KEY"], OriginalTransactionId = (long)actions["ORIGINAL_TRANS_ID"], TransactionId = _transAdapter.TransactionIdGenerator.GetNextId() }; } break; case "KILL_ALL_ORDERS": { message = new OrderGroupCancelMessage { TransactionId = _transAdapter.TransactionIdGenerator.GetNextId() }; } break; case "MOVE_ORDERS": { //TODO } break; case "REGISTER_SECURITY": { //TODO } break; case "UNREGISTER_SECURITY": { //TODO } break; case "REGISTER_TRADES": { //TODO } break; case "UNREGISTER_TRADES": { //TODO } break; case "REGISTER_MARKETDEPTH": { //TODO } break; case "UNREGISTER_MARKETDEPTH": { //TODO } break; } if (message != null) { _transAdapter.SendInMessage(message); } }
private void ProcessGroupCancelMessage(OrderGroupCancelMessage groupMsg) { _client.Session.cancelAllOrders(_accounts[groupMsg.PortfolioName], Constants.ORDER_ENTRY_TYPE_AUTO, string.Empty); }