Ejemplo n.º 1
0
        public void Visit(ModifyOrderTransaction transaction)
        {
            var symbol = adapter.ResolveSymbolAsync(transaction.Instrument).Result;

            if (symbol == null)
            {
                Logger.Error().Print($"Unable to resolve symbol for {transaction.Instrument}");
                return;
            }

            var newTransactionId = IncTransId();

            var qlTrans = new QLTransaction
            {
                ACTION              = ACTION.MOVE_ORDERS,
                ACCOUNT             = transaction.Account,
                CLIENT_CODE         = transaction.Account + @"//" + transaction.Comment,
                COMMENT             = transaction.Comment,
                SECCODE             = symbol,
                CLASSCODE           = symbol.Length >= 5 ? "SPBOPT" : "SPBFUT",
                EXECUTION_CONDITION = EXECUTION_CONDITION.PUT_IN_QUEUE,
                TRANS_ID            = newTransactionId.ToString(),
                TYPE = TYPE.L,
                FIRST_ORDER_NUMBER       = transaction.OrderExchangeId,
                FIRST_ORDER_NEW_QUANTITY = transaction.Quantity.ToString(),
                FIRST_ORDER_NEW_PRICE    = transaction.Price.ToString(),
                // TODO Тут похоже нужно проставлять ещё поле комментарий, нужно отследить по
                // таблице заявок квика, что становится с комментов заявки после modify
            };

            Logger.Debug().PrintFormat("Visit: {0}", qlTrans);
            adapter.SendMessage(qlTrans);

            container.PutTransaction(newTransactionId, transaction);
        }
Ejemplo n.º 2
0
        public void Visit(NewOrderTransaction transaction)
        {
            var symbol = adapter.ResolveSymbolAsync(transaction.Instrument).Result;

            if (symbol == null)
            {
                Logger.Error().Print($"Unable to resolve symbol for {transaction.Instrument}");
                return;
            }

            var newTransactionId = IncTransId();
            var qlTrans          = new QLTransaction
            {
                ACTION              = ACTION.NEW_ORDER,
                ACCOUNT             = transaction.Account,
                CLIENT_CODE         = transaction.Account + @"//" + transaction.Comment,
                COMMENT             = transaction.Comment,
                SECCODE             = symbol,
                CLASSCODE           = symbol.Length >= 5 ? "SPBOPT" : "SPBFUT",
                EXECUTION_CONDITION = EXECUTION_CONDITION.PUT_IN_QUEUE,
                OPERATION           = transaction.Operation == OrderOperation.Buy ? OPERATION.B : OPERATION.S,
                QUANTITY            = transaction.Quantity.ToString(),
                PRICE    = transaction.Price.ToString("0.######"),
                TRANS_ID = newTransactionId.ToString(),
                TYPE     = TYPE.L,
            };

            Logger.Debug().PrintFormat("Visit: {0}", qlTrans);
            adapter.SendMessage(qlTrans);

            container.PutTransaction(newTransactionId, transaction);
        }
Ejemplo n.º 3
0
        public void Visit(KillOrderTransaction transaction)
        {
            var symbol = adapter.ResolveSymbolAsync(transaction.Instrument).Result;

            if (symbol == null)
            {
                Logger.Error().Print($"Unable to resolve symbol for {transaction.Instrument}");
                return;
            }

            var newTransactionId = IncTransId();
            var qlTrans          = new QLTransaction
            {
                ACTION              = ACTION.KILL_ORDER,
                ACCOUNT             = transaction.Account,
                CLIENT_CODE         = transaction.Account,
                SECCODE             = symbol,
                CLASSCODE           = symbol.Length >= 5 ? "SPBOPT" : "SPBFUT",
                EXECUTION_CONDITION = EXECUTION_CONDITION.PUT_IN_QUEUE,
                TRANS_ID            = newTransactionId.ToString(),
                ORDER_KEY           = transaction.OrderExchangeId
            };

            Logger.Debug().PrintFormat("Visit: {0}", qlTrans);
            adapter.SendMessage(qlTrans);

            container.PutTransaction(newTransactionId, transaction);
        }