Добрый день,
Пытаюсь создать тейк профит и стоп лосс по исполнению заявки и получаю следующую ошибку в сообщениях
"{ Параметр "IS_ACTIVE_IN_TIME" для транзакции "Стоп-заявка" типа "ACTIVATED_BY_ORDER_TAKE_PROFIT_AND_STOP_LIMIT_ORDER" не поддерживается.\n,Код ошибки Failed Сообщение Параметр "IS_ACTIVE_IN_TIME" для транзакции "Стоп-заявка" типа "ACTIVATED_BY_ORDER_TAKE_PROFIT_AND_STOP_LIMIT_ORDER" не поддерживается.\n}"
При этом, выставление и обнуление ActiveTime результата не приносит. Создание заявки взято из примеров. Квик 6.02.0.39, S# 4.1.6
private Order CreateTakeProfitAndStopLimit(Portfolio portfolio, Security security, int quantity, decimal stopLossActivationPrice, decimal stopLossExecutionPrice, decimal takeProfitPrice)
{
return new Order
{
Type = OrderTypes.Conditional,
Volume = quantity,
Price = stopLossExecutionPrice,
Security = security,
//ExpiryDate = null,
Portfolio = portfolio,
ExpiryDate = DateTime.MaxValue,
StopCondition = new QuikStopCondition
{
Type = QuikStopConditionTypes.TakeProfitStopLimit,
StopPrice = takeProfitPrice,
StopLimitPrice = stopLossActivationPrice,
Offset = new Unit(0),
Spread = new Unit(0),
ActiveTime = null,
},
};
}
Основной метод
var stopLimit = CreateTakeProfitAndStopLimit(portfolio, FindSecurityByCode(instr.Symbol), quantity, stopLossActivationPrice, stopLossExecutionPrice, takeProfitPrice);
var condition = (QuikStopCondition)stopLimit.StopCondition;
m_trader.RegisterOrder(order);
Thread.Sleep(5 * 1000);
condition.ConditionOrder = order;
m_trader.RegisterOrder(stopLimit);
Это тестовый пример и конечно понятен workaround в виде самостоятельного контроля заявок по исполнению основной, но в плане стаблильности работы проще сразу разместить заявку на сервере брокера.
Если убрать из кода связь с основной заявкой, то ордер прекрасно размещается.