Пример #1
0
        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);
        }
Пример #3
0
        // 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);
        }
Пример #4
0
        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);
        }
Пример #5
0
        // 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);
            }
        }
Пример #6
0
 private void ProcessGroupCancelMessage(OrderGroupCancelMessage groupMsg)
 {
     _client.Session.cancelAllOrders(_accounts[groupMsg.PortfolioName], Constants.ORDER_ENTRY_TYPE_AUTO, string.Empty);
 }