﻿<?xml version="1.0" encoding="utf-8"?>
<?xml-stylesheet type='text/css' href='https://stocksharp.ru/css/style.css'?>
<?xml-stylesheet type='text/css' href='https://stocksharp.ru/css/bbeditor.css'?>
<feed xmlns="http://www.w3.org/2005/Atom">
  <title type="html">Некорректная отработка ошибок в стратегиях.</title>
  <id>~/topic/2707/nekorrektnaya-otrabotka-oshibok-v-strategiyah_/</id>
  <rights type="text">Copyright @ StockSharp Platform LLC 2010 - 2025</rights>
  <updated>2026-04-04T22:21:03Z</updated>
  <logo>https://stocksharp.ru/images/logo.png</logo>
  <link href="https://stocksharp.ru/handlers/atom.ashx?category=topic&amp;id=2707" rel="self" type="application/rss+xml" />
  <entry>
    <id>https://stocksharp.ru/posts/m/19145/</id>
    <title type="text">Будет фикс в следующей версии 4.1 на codeplex</title>
    <published>2012-05-20T11:12:31Z</published>
    <updated>2012-05-20T11:35:07Z</updated>
    <author>
      <name>Alexander</name>
      <uri>https://stocksharp.ru/users/2826/</uri>
      <email>info@stocksharp.ru</email>
    </author>
    <content type="html">Будет фикс в следующей версии 4.1 на codeplex</content>
    <rights type="html">Copyright @ StockSharp Platform LLC 2010 - 2025</rights>
  </entry>
  <entry>
    <id>https://stocksharp.ru/posts/m/19137/</id>
    <title type="text">Ситуация такая. Версия библиотеки 4.0.22. Есть стратегия родительская, есть дочерняя. Если в дочерне...</title>
    <published>2012-05-20T05:22:19Z</published>
    <updated>2012-05-20T05:23:22Z</updated>
    <author>
      <name>ra81</name>
      <uri>https://stocksharp.ru/users/16581/</uri>
      <email>info@stocksharp.ru</email>
    </author>
    <content type="html">Ситуация такая. &lt;span style="color:red"&gt;Версия библиотеки 4.0.22&lt;/span&gt;.&lt;br /&gt;&lt;br /&gt;Есть стратегия родительская, есть дочерняя. Если в дочерней происходят ошибки, то она вызывает следующий код.&lt;br /&gt;&lt;div class="code"&gt;&lt;strong&gt;Код&lt;/strong&gt;&lt;div class="innercode"&gt;&lt;pre class="brush:csharp"&gt;

        private void FatalFinish(string message)
        {
            OnError(new Exception(message));
            Stop();
        }&lt;/pre&gt;
&lt;/div&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;В родительской стратегии в случае ошибки, дочерняя сразу же принудительно завершается через код.&lt;br /&gt;&lt;br /&gt;&lt;div class="code"&gt;&lt;strong&gt;Код&lt;/strong&gt;&lt;div class="innercode"&gt;&lt;pre class="brush:csharp"&gt;
ChilsStrategy.Stop();&lt;/pre&gt;
&lt;/div&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;В дочерней стратегии есть следующий код.&lt;br /&gt;&lt;br /&gt;&lt;div class="code"&gt;&lt;strong&gt;Код&lt;/strong&gt;&lt;div class="innercode"&gt;&lt;pre class="brush:csharp"&gt;
        protected override void OnStopped()
        {
            if (ErrorCount &amp;gt; 0)
                this.AddInfoLog(&amp;quot;OnStopped(): Последний регистрируемый ордер Id: {0} TransId {1}.&amp;quot;, Order.Id, Order.TransactionId);
            else
                this.AddInfoLog(&amp;quot;OnStopped(): Зарегистрированный ордер Id: {0} TransId {1}.&amp;quot;, Order.Id, Order.TransactionId);

            base.OnStopped();
        }&lt;/pre&gt;
&lt;/div&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;В итоге получаем что когда дочерняя стратегия завершена, число ошибок у нее равно НУЛЮ. То есть код выше всегда выполняется будто ошибок не было.&lt;br /&gt;&lt;br /&gt;Я полагаю что это происходит из-за того что в классе Strategy, сначала генерится событие об ошибке в стратегии, а только потом увеличивается счетчик ошибок. Что некорректно. Если стратегия сгенерила ошибку, и в хендлере события Error мы проверяем число ошибок, то будем получать всегда предыдущее значение этого числа ошибок.</content>
    <rights type="html">Copyright @ StockSharp Platform LLC 2010 - 2025</rights>
  </entry>
</feed>