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); }
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); }
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); }