Некорректная отработка ошибок в стратегиях.~/topic/2707/nekorrektnaya-otrabotka-oshibok-v-strategiyah_/Copyright @ StockSharp Platform LLC 2010 - 20242024-03-29T05:37:55Zhttps://stocksharp.ru/images/logo.pnghttps://stocksharp.ru/posts/m/19145/Будет фикс в следующей версии 4.1 на codeplex2012-05-20T11:12:31Z2012-05-20T11:35:07ZAlexanderhttps://stocksharp.ru/users/2826/info@stocksharp.ruБудет фикс в следующей версии 4.1 на codeplexCopyright @ StockSharp Platform LLC 2010 - 2024https://stocksharp.ru/posts/m/19137/Ситуация такая. Версия библиотеки 4.0.22. Есть стратегия родительская, есть дочерняя. Если в дочерне...2012-05-20T05:22:19Z2012-05-20T05:23:22Zra81https://stocksharp.ru/users/16581/info@stocksharp.ruСитуация такая. <span style="color:red">Версия библиотеки 4.0.22</span>.<br /><br />Есть стратегия родительская, есть дочерняя. Если в дочерней происходят ошибки, то она вызывает следующий код.<br /><div class="code"><strong>Код</strong><div class="innercode"><pre class="brush:csharp">
private void FatalFinish(string message)
{
OnError(new Exception(message));
Stop();
}</pre>
</div></div><br /><br />В родительской стратегии в случае ошибки, дочерняя сразу же принудительно завершается через код.<br /><br /><div class="code"><strong>Код</strong><div class="innercode"><pre class="brush:csharp">
ChilsStrategy.Stop();</pre>
</div></div><br /><br />В дочерней стратегии есть следующий код.<br /><br /><div class="code"><strong>Код</strong><div class="innercode"><pre class="brush:csharp">
protected override void OnStopped()
{
if (ErrorCount > 0)
this.AddInfoLog("OnStopped(): Последний регистрируемый ордер Id: {0} TransId {1}.", Order.Id, Order.TransactionId);
else
this.AddInfoLog("OnStopped(): Зарегистрированный ордер Id: {0} TransId {1}.", Order.Id, Order.TransactionId);
base.OnStopped();
}</pre>
</div></div><br /><br />В итоге получаем что когда дочерняя стратегия завершена, число ошибок у нее равно НУЛЮ. То есть код выше всегда выполняется будто ошибок не было.<br /><br />Я полагаю что это происходит из-за того что в классе Strategy, сначала генерится событие об ошибке в стратегии, а только потом увеличивается счетчик ошибок. Что некорректно. Если стратегия сгенерила ошибку, и в хендлере события Error мы проверяем число ошибок, то будем получать всегда предыдущее значение этого числа ошибок.Copyright @ StockSharp Platform LLC 2010 - 2024