﻿<?xml version="1.0" encoding="utf-8"?>
<?xml-stylesheet type='text/css' href='https://stocksharp.com/css/style.css'?>
<?xml-stylesheet type='text/css' href='https://stocksharp.com/css/bbeditor.css'?>
<feed xmlns="http://www.w3.org/2005/Atom">
  <title type="html">События в стратегии</title>
  <id>~/topic/1699/sobytiya-v-strategii/</id>
  <rights type="text">Copyright @ StockSharp Platform LLC 2010 - 2025</rights>
  <updated>2026-06-15T20:45:13Z</updated>
  <logo>https://stocksharp.com/images/logo.png</logo>
  <link href="https://stocksharp.com/handlers/atom.ashx?category=topic&amp;id=1699" rel="self" type="application/rss+xml" />
  <entry>
    <id>https://stocksharp.com/posts/m/9274/</id>
    <title type="text">romanick: Добрый день! Решил разобраться с событийной моделью и заткнулся на первой же проблеме. Есл...</title>
    <published>2011-07-03T12:28:24Z</published>
    <updated>2011-07-03T12:28:24Z</updated>
    <author>
      <name>Alexander</name>
      <uri>https://stocksharp.com/users/2826/</uri>
      <email>info@stocksharp.com</email>
    </author>
    <content type="html">&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;&lt;a href="@message(9222)" rel="nofollow" target="_blank"&gt;romanick&lt;/a&gt;:&lt;/strong&gt;
Добрый день!
Решил разобраться с событийной моделью и заткнулся на первой же проблеме.
Если происходит ошибка при работе стратегии как узнать какая?&lt;/p&gt;
&lt;p&gt;Делаю своего наследника:&lt;/p&gt;
&lt;pre&gt;&lt;code class="language-csharp"&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;/blockquote&gt;
&lt;p&gt;public class RobotStrategy : Strategy&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;&amp;gt; далее...
&amp;gt; 
&amp;gt; ```csharp
protected override void OnRunning()
{
// подписываемся на события
this.When(this.Error())
.Do(OnSysError)
.MakePeriodical();
...
}

void OnSysError()
{
   // какая ошибка???
}

&lt;/code&gt;&lt;/pre&gt;
&lt;blockquote&gt;
&lt;p&gt;Нигде в документации ничего не написано как обрабатывать ошибки. Примера тоже нет.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;this.Error отслеживает состояние свойства. Проще просто переопределить OnError.&lt;/p&gt;
</content>
    <rights type="html">Copyright @ StockSharp Platform LLC 2010 - 2025</rights>
  </entry>
  <entry>
    <id>https://stocksharp.com/posts/m/9272/</id>
    <title type="text">esper: Немного изменим вопрос: protected void Process() { //тут создаем BatchStrategy this .When(bat...</title>
    <published>2011-07-03T12:11:35Z</published>
    <updated>2011-07-03T12:11:35Z</updated>
    <author>
      <name>Alexander</name>
      <uri>https://stocksharp.com/users/2826/</uri>
      <email>info@stocksharp.com</email>
    </author>
    <content type="html">&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;&lt;a href="@message(9238)" rel="nofollow" target="_blank"&gt;esper&lt;/a&gt;:&lt;/strong&gt;
Немного изменим вопрос:&lt;/p&gt;
&lt;pre&gt;&lt;code class="language-csharp"&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;/blockquote&gt;
&lt;p&gt;protected void Process()
{
//тут создаем BatchStrategy&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;this
	.When(batch.Stopped())
	.Do(BatchStopped);

base.ChildStrategies.Add(batch);
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;}&lt;/p&gt;
&lt;p&gt;private void BatchStopped()
{
//как тут узнать какая стратегия завершилась?
}&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;

Остановка BatchStrategy:
```csharp
this
        .When(batch.Stopped())
        .Do&amp;lt;BatchStrategy&amp;gt;(BatchStopped);

private void BatchStopped(BatchStrategy str)
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Начиная с версии 3.2.2 это работает.&lt;/p&gt;
&lt;p&gt;Если необходимо узнать про то какая конкретно стратегия из BatchStrategy вызвала остановку - добавили feature request.&lt;/p&gt;
</content>
    <rights type="html">Copyright @ StockSharp Platform LLC 2010 - 2025</rights>
  </entry>
  <entry>
    <id>https://stocksharp.com/posts/m/9222/</id>
    <title type="text">Добрый день! Решил разобраться с событийной моделью и заткнулся на первой же проблеме. Если происход...</title>
    <published>2011-06-30T12:13:42Z</published>
    <updated>2011-07-03T11:58:28Z</updated>
    <author>
      <name>romanick</name>
      <uri>https://stocksharp.com/users/28047/</uri>
      <email>info@stocksharp.com</email>
    </author>
    <content type="html">&lt;p&gt;Добрый день!
Решил разобраться с событийной моделью и заткнулся на первой же проблеме.
Если происходит ошибка при работе стратегии как узнать какая?&lt;/p&gt;
&lt;p&gt;Делаю своего наследника:&lt;/p&gt;
&lt;pre&gt;&lt;code class="language-csharp"&gt;public class RobotStrategy : Strategy
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;далее...&lt;/p&gt;
&lt;pre&gt;&lt;code class="language-csharp"&gt;protected override void OnRunning()
{
// подписываемся на события
this.When(this.Error())
.Do(OnSysError)
.MakePeriodical();
...
}

void OnSysError()
{
   // какая ошибка???
}

&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Нигде в документации ничего не написано как обрабатывать ошибки. Примера тоже нет.&lt;/p&gt;
</content>
    <rights type="html">Copyright @ StockSharp Platform LLC 2010 - 2025</rights>
  </entry>
  <entry>
    <id>https://stocksharp.com/posts/m/9238/</id>
    <title type="text">Немного изменим вопрос: protected void Process() { //тут создаем BatchStrategy this .When(batch.Stop...</title>
    <published>2011-07-01T06:29:02Z</published>
    <updated>2011-07-01T06:29:02Z</updated>
    <author>
      <name>esper</name>
      <uri>https://stocksharp.com/users/5990/</uri>
      <email>info@stocksharp.com</email>
    </author>
    <content type="html">&lt;p&gt;Немного изменим вопрос:&lt;/p&gt;
&lt;pre&gt;&lt;code class="language-csharp"&gt;
protected void Process()
{
	//тут создаем BatchStrategy

	this
		.When(batch.Stopped())
		.Do(BatchStopped);

	base.ChildStrategies.Add(batch);
}

private void BatchStopped()
{
	//как тут узнать какая стратегия завершилась?
}
&lt;/code&gt;&lt;/pre&gt;
</content>
    <rights type="html">Copyright @ StockSharp Platform LLC 2010 - 2025</rights>
  </entry>
  <entry>
    <id>https://stocksharp.com/posts/m/9234/</id>
    <title type="text">romanick: Добрый день! Решил разобраться с событийной моделью и заткнулся на первой же проблеме. Есл...</title>
    <published>2011-06-30T20:08:22Z</published>
    <updated>2011-06-30T20:08:22Z</updated>
    <author>
      <name>Alexander</name>
      <uri>https://stocksharp.com/users/2826/</uri>
      <email>info@stocksharp.com</email>
    </author>
    <content type="html">&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;&lt;a href="@message(9222)" rel="nofollow" target="_blank"&gt;romanick&lt;/a&gt;:&lt;/strong&gt;
Добрый день!
Решил разобраться с событийной моделью и заткнулся на первой же проблеме.
Если происходит ошибка при работе стратегии как узнать какая?&lt;/p&gt;
&lt;p&gt;Делаю своего наследника:&lt;/p&gt;
&lt;pre&gt;&lt;code class="language-csharp"&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;/blockquote&gt;
&lt;p&gt;public class RobotStrategy : Strategy&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;&amp;gt; далее...
&amp;gt; 
&amp;gt; ```csharp
protected override void OnRunning()
{
// подписываемся на события
this.When(this.Error())
.Do(OnSysError)
.MakePeriodical();
...
}

void OnSysError()
{
   // какая ошибка???
}

&lt;/code&gt;&lt;/pre&gt;
&lt;blockquote&gt;
&lt;p&gt;Нигде в документации ничего не написано как обрабатывать ошибки. Примера тоже нет.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;Это сообщение вы до этого вывели в лог. Данное правило срабатывает когда состояние переходит в StrategyErrorStates.Error.
А это происходит если вызван метод AddErrorLog или AddLog(StrategyErrorStates.Error, ...)&lt;/p&gt;
</content>
    <rights type="html">Copyright @ StockSharp Platform LLC 2010 - 2025</rights>
  </entry>
</feed>