Не работает размещение ордеров по исполнению~/topic/3327/ne-rabotaet-razmeshshenie-orderov-po-ispolneniyu/Copyright @ StockSharp Platform LLC 2010 - 20242024-03-29T07:48:42Zhttps://stocksharp.ru/images/logo.pnghttps://stocksharp.ru/posts/m/24269/Решение (локальное) Работает Оно неправильно, но спасибо за наводку. Поправим. 2013-02-26T22:00:20Z2013-02-26T22:00:20ZMikhail Sukhovhttps://stocksharp.ru/users/201/info@stocksharp.ru<div class="quote"><span class="quotetitle">VassilSanych <a href="https://stocksharp.ru/posts/m/24257/"><img src="https://stocksharp.ru/images/icon_latest_reply.gif" title="Перейти" alt="Перейти" /></a></span><div class="innerquote">Решение (локальное)<br />Работает</div></div><br /><br />Оно неправильно, но спасибо за наводку. Поправим.<br />Copyright @ StockSharp Platform LLC 2010 - 2024https://stocksharp.ru/posts/m/24257/Решение (локальное) TransactionHelper.cs if (condition.ActiveTime != null) { transaction .SetIsActiv...2013-02-26T15:11:05Z2013-02-26T15:11:05ZVassilSanychhttps://stocksharp.ru/users/6491/info@stocksharp.ruРешение (локальное)<br />TransactionHelper.cs<br /><div class="code"><strong>Код</strong><div class="innercode"><pre class="brush:csharp">
if (condition.ActiveTime != null)
{
transaction
.SetIsActiveInTime(true)
.SetActiveFrom(condition.ActiveTime.Min)
.SetActiveTo(condition.ActiveTime.Max);
}
else
transaction.RemoveInstruction(Transaction.IsActiveInTime);
//transaction.SetIsActiveInTime(false);</pre>
</div></div><br />РаботаетCopyright @ StockSharp Platform LLC 2010 - 2024https://stocksharp.ru/posts/m/24246/Такая же беда для нынешних библиотек из исходников: 2013/02/26 17:21:37.219| |SS_RIH3@RTS_SPBFUT0006...2013-02-26T13:49:11Z2013-02-26T13:49:11ZVassilSanychhttps://stocksharp.ru/users/6491/info@stocksharp.ruТакая же беда для нынешних библиотек из исходников:<br /><div class="code"><strong>Код</strong><div class="innercode"><pre class="brush:plain">
2013/02/26 17:21:37.219| |SS_RIH3@RTS_SPBFUT00066|Регистрация новой Conditional (0x267FA0) заявки на Buy с ценой 152400 и объемом 1.
2013/02/26 17:21:37.263|Error |QuikManager|Ошибка регистрации заявки: StockSharp.Quik.ApiException: Код ошибки Failed Сообщение Параметр "IS_ACTIVE_IN_TIME" для транзакции "Стоп-заявка" типа "ACTIVATED_BY_ORDER_TAKE_PROFIT_AND_STOP_LIMIT_ORDER" не поддерживается.
2013/02/26 17:21:37.264| |StrategyManager|Status:Started, PnL:0, Slippage:0, Position:0, Latency:00:00:00.5006902, ErrorState
2013/02/26 17:21:37.264|Error |SS_RIH3@RTS_SPBFUT00066|Заявка 62088285 (0x267FA0) не была принята по причине StockSharp.Quik.ApiException: Код ошибки Failed Сообщение Параметр "IS_ACTIVE_IN_TIME" для транзакции "Стоп-заявка" типа "ACTIVATED_BY_ORDER_TAKE_PROFIT_AND_STOP_LIMIT_ORDER" не поддерживается.
.
2013/02/26 17:21:37.267| |SS_RIH3@RTS_SPBFUT00066|Заявка 62088285 больше не активна.</pre>
</div></div><br /><br />Метод вызова<br /><div class='spoilertitle'><input type='button' value='Показать спойлер' class='btn btn-primary' onclick="toggleSpoiler(this, 'spolier_e6a78d09336144bf92a61974e9a4e3fc');" title='Показать спойлер' /></div><div class='spoilerbox' id='spolier_e6a78d09336144bf92a61974e9a4e3fc' style='display:none'><div class="code"><strong>Код</strong><div class="innercode"><pre class="brush:csharp">
var takeProfitOrder = OrderHelper.CreateConditionTakeProfitAndStopLimit(
ruleOrder,
ruleOrder.Price + (ruleOrder.Direction == OrderDirections.Buy ? 100 : -100),
ruleOrder.Price - (ruleOrder.Direction == OrderDirections.Buy ? 100 : -100),
20,
10);
RegisterOrder(takeProfitOrder);</pre>
</div></div><br /><br /><div class="code"><strong>Код</strong><div class="innercode"><pre class="brush:csharp">
public Order CreateTakeProfitAndStopLimit(
Security security,
OrderDirections direction,
decimal quantity,
decimal stopPrice,
decimal stopLimitPrice,
decimal offset,
decimal spread)
{
var price = direction == OrderDirections.Buy
? stopPrice - spread - offset
: stopPrice + spread + offset;
return new Order
{
Type = OrderTypes.Conditional,
Volume = quantity,
Security = security,
Direction = direction,
Price = price,
//ExpiryDate = ExpirationDate.Value,
Condition = new QuikOrderCondition
{
Type = QuikOrderConditionTypes.TakeProfitStopLimit,
StopPrice = stopPrice,
StopLimitPrice = stopLimitPrice,
Offset = offset,
Spread = spread,
ActiveTime = null,
},
};
}</pre>
</div></div><br /><br /><br /><div class="code"><strong>Код</strong><div class="innercode"><pre class="brush:csharp">
public Order CreateConditionTakeProfitAndStopLimit(
Order conditionOrder,
decimal stopPrice,
decimal stopLimitPrice,
decimal offset,
decimal spread)
{
var stopLimit = CreateTakeProfitAndStopLimit(
conditionOrder.Security,
conditionOrder.Direction == OrderDirections.Buy ? OrderDirections.Sell : OrderDirections.Buy,
conditionOrder.Volume,
stopPrice,
stopLimitPrice,
offset,
spread);
var condition = (QuikOrderCondition)stopLimit.Condition;
condition.ConditionOrder = conditionOrder;
condition.ConditionOrderPartiallyMatched = true; // PartiallyMatched.IsChecked;
condition.ConditionOrderUseMatchedBalance = true;// UseMatchedBalance.IsChecked;
return stopLimit;
}</pre>
</div></div></div><br /><br />ActiveTime = null должно устанавливать Transaction.SetActiveInTime(false). Но похоже, каким-то образом этого не происходит или сам этот механизм работает не правильно.Copyright @ StockSharp Platform LLC 2010 - 2024https://stocksharp.ru/posts/m/23648/1. На 4.1.7 воспроизводиться? 2. Можно ли проблему воспроизвести на Sample и что именно нужно сделат...2013-01-28T21:17:50Z2013-01-28T21:17:50ZMikhail Sukhovhttps://stocksharp.ru/users/201/info@stocksharp.ru1. На 4.1.7 воспроизводиться?<br />2. Можно ли проблему воспроизвести на Sample и что именно нужно сделать в этом примере (какие параметры к заполнению были переданы для стоп-заявки)?Copyright @ StockSharp Platform LLC 2010 - 2024https://stocksharp.ru/posts/m/23638/Добрый день, Пытаюсь создать тейк профит и стоп лосс по исполнению заявки и получаю следующую ошибку...2013-01-28T14:56:03Z2013-01-28T14:56:03ZIlushkahttps://stocksharp.ru/users/6370/info@stocksharp.ruДобрый день,<br /><br />Пытаюсь создать тейк профит и стоп лосс по исполнению заявки и получаю следующую ошибку в сообщениях<br /><br />"{ Параметр \"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}"<br /><br />При этом, выставление и обнуление ActiveTime результата не приносит. Создание заявки взято из примеров. Квик 6.02.0.39, S# 4.1.6<br /><br /><div class="code"><strong>Код</strong><div class="innercode"><pre class="brush:csharp">
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,
},
};
}
</pre>
</div></div><br /><br />Основной метод<br /><div class="code"><strong>Код</strong><div class="innercode"><pre class="brush:csharp">
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);
</pre>
</div></div><br /><br />Это тестовый пример и конечно понятен workaround в виде самостоятельного контроля заявок по исполнению основной, но в плане стаблильности работы проще сразу разместить заявку на сервере брокера.<br /><br />Если убрать из кода связь с основной заявкой, то ордер прекрасно размещается.Copyright @ StockSharp Platform LLC 2010 - 2024