﻿<?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/1480/sobytiinyi-podhod/</id>
  <rights type="text">Copyright @ StockSharp Platform LLC 2010 - 2025</rights>
  <updated>2026-06-16T21:06:08Z</updated>
  <logo>https://stocksharp.com/images/logo.png</logo>
  <link href="https://stocksharp.com/handlers/atom.ashx?category=topic&amp;id=1480" rel="self" type="application/rss+xml" />
  <entry>
    <id>https://stocksharp.com/posts/m/7708/</id>
    <title type="text">Mikhail Sukhov: Roman0: Проблема, для меня по крайней мере, в том, что в документации фрагменты кода...</title>
    <published>2011-04-26T23:32:16Z</published>
    <updated>2016-08-16T02:34:29Z</updated>
    <author>
      <name>Roman0</name>
      <uri>https://stocksharp.com/users/6034/</uri>
      <email>info@stocksharp.com</email>
    </author>
    <content type="html">&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;&lt;a href="@message(7693)" rel="nofollow" target="_blank"&gt;Mikhail Sukhov&lt;/a&gt;:&lt;/strong&gt;&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;&lt;a href="@message(7691)" rel="nofollow" target="_blank"&gt;Roman0&lt;/a&gt;:&lt;/strong&gt;
Проблема, для меня по крайней мере, в том, что в документации фрагменты кода, а работающего примера нет. Спасибо за ответы!&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;У вас как с языком C#? Событийная модель построена на делегатах, Action и Func. Прочитайте что это такое и как используется. Я подозреваю, что вы просто подошли к задаче не с того конца.
Я недавно начал разбираться со всем этим и вроде бы более менее разобрался, по крайней мере с Action и Func [smile] (прямо из закладок ссылки, может кому будет интересно [smile]
&lt;a href="http://msdn.microsoft.com/ru-ru/library/dd460699" target="_blank"&gt;http://msdn.microsoft.com/ru-ru/library/dd460699&lt;/a&gt;
&lt;a href="http://msdn.microsoft.com/ru-ru/library/ms173171(v=VS.90).aspx" target="_blank"&gt;http://msdn.microsoft.com/ru-ru/library/ms173171(v=VS.90).aspx&lt;/a&gt;
&lt;a href="http://msdn.microsoft.com/ru-ru/library/bb397687(v=VS.90).aspx" target="_blank"&gt;http://msdn.microsoft.com/ru-ru/library/bb397687(v=VS.90).aspx&lt;/a&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;Все-таки было бы очень желательно, чтобы такие ключевые вещи имели более подробные объяснения (см. например &lt;a href="http://stocksharp.com/forum/1287/"&gt;http://stocksharp.com/forum/1287/&lt;/a&gt; и &lt;a href="http://stocksharp.com/forum/1214/ActionStrategy-chastota-provierki-1-siek/"&gt;http://stocksharp.com/forum/1214/ActionStrategy-chastota-provierki-1-siek/&lt;/a&gt; ) и рабочие примеры с разнообразными вариантами применения. А уж с какой целью &amp;quot;делать событие периодичным&amp;quot; ( &lt;a href="http://stocksharp.com/doc/help/html/8c0327db-494a-4fe0-aba8-0d4b93dea60e.htm"&gt;http://stocksharp.com/doc/help/html/8c0327db-494a-4fe0-aba8-0d4b93dea60e.htm&lt;/a&gt; ) и что и как конкретно делает MakePeriodical (про собственно период до сих пор ничего не известно [smile]) из описания малопонятно. Я подозреваю, что там все просто и логично, но из документации это сразу понять для начинающего все-таки сложновато (не претендую на суперсообразительность [smile]).&lt;/p&gt;
&lt;p&gt;UPD
Еще добавлю для ясности: я не использую импорт из таблицы всех сделок и CandleManager для формирования свечей. И вот эти два замечания несколько меня дезориентировали:&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;ustas:&lt;/strong&gt;
Так всё таки проверка выполнения условия When в ActionStrategy - происходит ежесекундно , а не по событию?
&lt;strong&gt;Mikhail Sukhov:&lt;/strong&gt;
Да, ActionStrategy с некоторым периодом смотрит на появления сигналов от условий. Уменьшать такой период можно через Strategy.Interval.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;Mikhail Sukhov:&lt;/strong&gt;
ActionToken - это структура, которая содержит условие и действие. ActionStrategy &lt;strong&gt;проверяет&lt;/strong&gt; (периодически?) коллекцию таких токенов путем вызова условия
Было бы хорошо, если бы механизм работы стратегии, в частности по обработке зарегистрированных условий, был бы где-то четко описан. Наверное для старожилов все уже с этим ясно, но ведь появляются и новички [smile]&lt;/p&gt;
&lt;/blockquote&gt;
</content>
    <rights type="html">Copyright @ StockSharp Platform LLC 2010 - 2025</rights>
  </entry>
  <entry>
    <id>https://stocksharp.com/posts/m/7092/</id>
    <title type="text">Попробовал и с конструктором, и без - говорит, что не может получить значение _candleBounds. Хотя _c...</title>
    <published>2011-03-28T12:03:40Z</published>
    <updated>2016-07-28T18:20:56Z</updated>
    <author>
      <name>poilka</name>
      <uri>https://stocksharp.com/users/28519/</uri>
      <email>info@stocksharp.com</email>
    </author>
    <content type="html">&lt;p&gt;Попробовал и с конструктором, и без - говорит, что
не может получить значение _candleBounds.
Хотя _candleManager на месте, и на остальные поля не ругается.
Вот такой неуспех.&lt;/p&gt;
&lt;p&gt;&lt;img src="/file/101499/Orders.zip" alt="" /&gt;&lt;/p&gt;
</content>
    <rights type="html">Copyright @ StockSharp Platform LLC 2010 - 2025</rights>
  </entry>
  <entry>
    <id>https://stocksharp.com/posts/m/7693/</id>
    <title type="text">Roman0: Проблема, для меня по крайней мере, в том, что в документации фрагменты кода, а работающего ...</title>
    <published>2011-04-26T17:29:00Z</published>
    <updated>2011-04-26T17:29:00Z</updated>
    <author>
      <name>Mikhail Sukhov</name>
      <uri>https://stocksharp.com/users/201/</uri>
      <email>info@stocksharp.com</email>
    </author>
    <content type="html">&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;&lt;a href="@message(7691)" rel="nofollow" target="_blank"&gt;Roman0&lt;/a&gt;:&lt;/strong&gt;
Проблема, для меня по крайней мере, в том, что в документации фрагменты кода, а работающего примера нет. Спасибо за ответы!&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;У вас как с языком C#? Событийная модель построена на делегатах, Action и Func. Прочитайте что это такое и как используется. Я подозреваю, что вы просто подошли к задаче не с того конца.&lt;/p&gt;
</content>
    <rights type="html">Copyright @ StockSharp Platform LLC 2010 - 2025</rights>
  </entry>
  <entry>
    <id>https://stocksharp.com/posts/m/7691/</id>
    <title type="text">Mikhail Sukhov: Roman0: Вопрос как\где контролируется с какой периодичностью (и сколько раз?) будет ...</title>
    <published>2011-04-26T16:56:54Z</published>
    <updated>2011-04-26T16:56:54Z</updated>
    <author>
      <name>Roman0</name>
      <uri>https://stocksharp.com/users/6034/</uri>
      <email>info@stocksharp.com</email>
    </author>
    <content type="html">&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;&lt;a href="@message(7685)" rel="nofollow" target="_blank"&gt;Mikhail Sukhov&lt;/a&gt;:&lt;/strong&gt;&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;&lt;a href="@message(7671)" rel="nofollow" target="_blank"&gt;Roman0&lt;/a&gt;:&lt;/strong&gt;
Вопрос как\где контролируется с какой периодичностью (и сколько раз?) будет выполняться действие?&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;Если просто MakePeriodica(), то бесконечно. Если через перегруженный метод
&lt;a href="http://stocksharp.com/doc/help/html/O_T_Ecng_Trading_Algo_Strategies_ActionRule_MakePeriodical.htm"&gt;http://stocksharp.com/doc/help/html/O_T_Ecng_Trading_Algo_Strategies_ActionRule_MakePeriodical.htm&lt;/a&gt; Через то можно указывать критерий.&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;&lt;a href="@message(7664)" rel="nofollow" target="_blank"&gt;Roman0&lt;/a&gt;:&lt;/strong&gt;
Дело в том, что нужно, чтобы условия проверялись не периодически, а по событию. Как это сделать?&lt;/p&gt;
&lt;p&gt;Вопрос очень прост: как выполнять вычисления по собственной стратегии (и в результате выставлять заявки, выдавать какие-то сообщения и т.п.) &lt;strong&gt;по событию&lt;/strong&gt; (не периодически!) появления или изменения свечей используя Strategy и &lt;a href="http://stocksharp.com/doc/help/html/2c3a0d3a-6e89-42a1-a158-9a258e0a62e1.htm"&gt;преимущества&lt;/a&gt; такого подхода (как это сделать без привлечения Strategy понятно)?. Такое возможно? Если кто-то напишет пример или даже без кода, но с названиями классов\методов опишет как это сделать буду очень благодарен )&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;Мы опять вернулись к началу. Нужно использовать событийную модель. Как это сделать я показал в документации.&lt;/p&gt;
&lt;/blockquote&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/7685/</id>
    <title type="text">Roman0: Вопрос как\где контролируется с какой периодичностью (и сколько раз?) будет выполняться дейс...</title>
    <published>2011-04-26T15:54:05Z</published>
    <updated>2011-04-26T15:54:05Z</updated>
    <author>
      <name>Mikhail Sukhov</name>
      <uri>https://stocksharp.com/users/201/</uri>
      <email>info@stocksharp.com</email>
    </author>
    <content type="html">&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;&lt;a href="@message(7671)" rel="nofollow" target="_blank"&gt;Roman0&lt;/a&gt;:&lt;/strong&gt;
Вопрос как\где контролируется с какой периодичностью (и сколько раз?) будет выполняться действие?&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;Если просто MakePeriodica(), то бесконечно. Если через перегруженный метод
&lt;a href="http://stocksharp.com/doc/help/html/O_T_Ecng_Trading_Algo_Strategies_ActionRule_MakePeriodical.htm"&gt;http://stocksharp.com/doc/help/html/O_T_Ecng_Trading_Algo_Strategies_ActionRule_MakePeriodical.htm&lt;/a&gt; Через то можно указывать критерий.&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;&lt;a href="@message(7664)" rel="nofollow" target="_blank"&gt;Roman0&lt;/a&gt;:&lt;/strong&gt;
Дело в том, что нужно, чтобы условия проверялись не периодически, а по событию. Как это сделать?&lt;/p&gt;
&lt;p&gt;Вопрос очень прост: как выполнять вычисления по собственной стратегии (и в результате выставлять заявки, выдавать какие-то сообщения и т.п.) &lt;strong&gt;по событию&lt;/strong&gt; (не периодически!) появления или изменения свечей используя Strategy и &lt;a href="http://stocksharp.com/doc/help/html/2c3a0d3a-6e89-42a1-a158-9a258e0a62e1.htm"&gt;преимущества&lt;/a&gt; такого подхода (как это сделать без привлечения Strategy понятно)?. Такое возможно? Если кто-то напишет пример или даже без кода, но с названиями классов\методов опишет как это сделать буду очень благодарен )&lt;/p&gt;
&lt;/blockquote&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/7671/</id>
    <title type="text">Большое спасибо за ответ! Mikhail Sukhov: Roman0: каков смысл MakePeriodical? Сделать действие перио...</title>
    <published>2011-04-26T05:38:15Z</published>
    <updated>2011-04-26T08:27:58Z</updated>
    <author>
      <name>Roman0</name>
      <uri>https://stocksharp.com/users/6034/</uri>
      <email>info@stocksharp.com</email>
    </author>
    <content type="html">&lt;p&gt;Большое спасибо за ответ!&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;&lt;a href="@message(7669)" rel="nofollow" target="_blank"&gt;Mikhail Sukhov&lt;/a&gt;:&lt;/strong&gt;&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;&lt;a href="@message(7664)" rel="nofollow" target="_blank"&gt;Roman0&lt;/a&gt;:&lt;/strong&gt;
каков смысл MakePeriodical?&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;Сделать действие периодичным (&lt;strong&gt;будет вызвано более одного раза&lt;/strong&gt;).&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;Вопрос как\где контролируется с какой периодичностью (и сколько раз?) будет выполняться действие?&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;&lt;a href="@message(7669)" rel="nofollow" target="_blank"&gt;Mikhail Sukhov&lt;/a&gt;:&lt;/strong&gt;&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;&lt;a href="@message(7664)" rel="nofollow" target="_blank"&gt;Roman0&lt;/a&gt;:&lt;/strong&gt;
Вопрос такой: можно ли запускать код внутри стратегии по событию? Т.е. пришли новые данные -&amp;gt; очередная проверка условия. Вроде бы это можно сделать запуская всю стратегию (ActionStrategy.Start) по событию без MakePeriodical? Если все это можно сделать как-то еще, то пожалуйста, расскажите как. Как я уже писал, хотелось бы использовать преимущества стратегий. Большое спасибо!&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;Через ActionStrategy и добавления событий... Вопрос уже содержит ответ.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;Дело в том, что нужно, чтобы условия проверялись не периодически, а по событию. Как это сделать?&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;&lt;a href="@message(7669)" rel="nofollow" target="_blank"&gt;Mikhail Sukhov&lt;/a&gt;:&lt;/strong&gt;
Или я видимо что-то не понимаю в вопросе, или вы не до конца мысль расписываете.
Вопрос очень прост: как выполнять вычисления по собственной стратегии (и в результате выставлять заявки, выдавать какие-то сообщения и т.п.) &lt;strong&gt;по событию&lt;/strong&gt; (не периодически!) появления или изменения свечей используя Strategy и &lt;a href="http://stocksharp.com/doc/help/html/2c3a0d3a-6e89-42a1-a158-9a258e0a62e1.htm"&gt;преимущества&lt;/a&gt; такого подхода (как это сделать без привлечения Strategy понятно)?. Такое возможно? Если кто-то напишет пример или даже без кода, но с названиями классов\методов опишет как это сделать буду очень благодарен )&lt;/p&gt;
&lt;/blockquote&gt;
</content>
    <rights type="html">Copyright @ StockSharp Platform LLC 2010 - 2025</rights>
  </entry>
  <entry>
    <id>https://stocksharp.com/posts/m/7669/</id>
    <title type="text">Roman0: Mikhail Sukhov: Roman0: Есть ли вообще возможность запускать очередную итерацию стратегии не...</title>
    <published>2011-04-25T20:46:03Z</published>
    <updated>2011-04-25T20:46:03Z</updated>
    <author>
      <name>Mikhail Sukhov</name>
      <uri>https://stocksharp.com/users/201/</uri>
      <email>info@stocksharp.com</email>
    </author>
    <content type="html">&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;&lt;a href="@message(7664)" rel="nofollow" target="_blank"&gt;Roman0&lt;/a&gt;:&lt;/strong&gt;&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;&lt;a href="@message(7662)" rel="nofollow" target="_blank"&gt;Mikhail Sukhov&lt;/a&gt;:&lt;/strong&gt;&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;&lt;a href="@message(7660)" rel="nofollow" target="_blank"&gt;Roman0&lt;/a&gt;:&lt;/strong&gt;
Есть ли вообще возможность запускать очередную итерацию стратегии не периодически, а именно по событию?&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;Не итерацию, а действие. Так же, как и выше написал, через событийную модель.
Я правильно понял, что условие в When проверяется с периодичностью Strategy.Interval? Если нет, то каков смысл MakePeriodical?&lt;/p&gt;
&lt;/blockquote&gt;
&lt;/blockquote&gt;
&lt;blockquote&gt;
&lt;p&gt;Сделать действие периодичным (&lt;strong&gt;будет вызвано более одного раза&lt;/strong&gt;).&lt;/p&gt;
&lt;/blockquote&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;&lt;a href="@message(7664)" rel="nofollow" target="_blank"&gt;Roman0&lt;/a&gt;:&lt;/strong&gt;
Вопрос такой: можно ли запускать код внутри стратегии по событию? Т.е. пришли новые данные -&amp;gt; очередная проверка условия. Вроде бы это можно сделать запуская всю стратегию (ActionStrategy.Start) по событию без MakePeriodical? Если все это можно сделать как-то еще, то пожалуйста, расскажите как. Как я уже писал, хотелось бы использовать преимущества стратегий. Большое спасибо!&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;Через ActionStrategy и добавления событий... Вопрос уже содержит ответ. Или я видимо что-то не понимаю в вопросе, или вы не до конца мысль расписываете. Как предложение, попробуйте написать практический пример с событиями.&lt;/p&gt;
</content>
    <rights type="html">Copyright @ StockSharp Platform LLC 2010 - 2025</rights>
  </entry>
  <entry>
    <id>https://stocksharp.com/posts/m/7664/</id>
    <title type="text">Mikhail Sukhov: Roman0: Есть ли вообще возможность запускать очередную итерацию стратегии не периоди...</title>
    <published>2011-04-25T17:16:44Z</published>
    <updated>2011-04-25T17:16:44Z</updated>
    <author>
      <name>Roman0</name>
      <uri>https://stocksharp.com/users/6034/</uri>
      <email>info@stocksharp.com</email>
    </author>
    <content type="html">&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;&lt;a href="@message(7662)" rel="nofollow" target="_blank"&gt;Mikhail Sukhov&lt;/a&gt;:&lt;/strong&gt;&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;&lt;a href="@message(7660)" rel="nofollow" target="_blank"&gt;Roman0&lt;/a&gt;:&lt;/strong&gt;
Есть ли вообще возможность запускать очередную итерацию стратегии не периодически, а именно по событию?&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;Не итерацию, а действие. Так же, как и выше написал, через событийную модель.
Я правильно понял, что условие в When проверяется с периодичностью Strategy.Interval? Если нет, то каков смысл MakePeriodical?
Вопрос такой: можно ли запускать код внутри стратегии по событию? Т.е. пришли новые данные -&amp;gt; очередная проверка условия. Вроде бы это можно сделать запуская всю стратегию (ActionStrategy.Start) по событию без MakePeriodical? Если все это можно сделать как-то еще, то пожалуйста, расскажите как. Как я уже писал, хотелось бы использовать преимущества стратегий. Большое спасибо!&lt;/p&gt;
&lt;/blockquote&gt;
</content>
    <rights type="html">Copyright @ StockSharp Platform LLC 2010 - 2025</rights>
  </entry>
  <entry>
    <id>https://stocksharp.com/posts/m/7662/</id>
    <title type="text">Roman0: Есть ли вообще возможность запускать очередную итерацию стратегии не периодически, а именно ...</title>
    <published>2011-04-25T16:12:37Z</published>
    <updated>2011-04-25T16:12:37Z</updated>
    <author>
      <name>Mikhail Sukhov</name>
      <uri>https://stocksharp.com/users/201/</uri>
      <email>info@stocksharp.com</email>
    </author>
    <content type="html">&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;&lt;a href="@message(7660)" rel="nofollow" target="_blank"&gt;Roman0&lt;/a&gt;:&lt;/strong&gt;
Есть ли вообще возможность запускать очередную итерацию стратегии не периодически, а именно по событию?&lt;/p&gt;
&lt;/blockquote&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/7660/</id>
    <title type="text">Чтобы не плодить сущности напишу здесь ) Есть ли вообще возможность запускать очередную итерацию стр...</title>
    <published>2011-04-25T15:56:53Z</published>
    <updated>2011-04-25T16:09:46Z</updated>
    <author>
      <name>Roman0</name>
      <uri>https://stocksharp.com/users/6034/</uri>
      <email>info@stocksharp.com</email>
    </author>
    <content type="html">&lt;p&gt;Чтобы не плодить сущности напишу здесь )
Есть ли вообще возможность запускать очередную итерацию стратегии не периодически, а именно по событию? Хотелось бы воспользоваться преимуществами оформления кода с виде Strategy, но не очень нравится исполнение по времени.&lt;/p&gt;
&lt;p&gt;PS Только начал разбираться, извините, если что пропустил.&lt;/p&gt;
</content>
    <rights type="html">Copyright @ StockSharp Platform LLC 2010 - 2025</rights>
  </entry>
  <entry>
    <id>https://stocksharp.com/posts/m/7100/</id>
    <title type="text">Ай, сильно не хотелось в лямбды лезть, теперь придется. Спасибо, пойду подтягивать матчасть. </title>
    <published>2011-03-28T15:18:18Z</published>
    <updated>2011-03-28T15:18:18Z</updated>
    <author>
      <name>poilka</name>
      <uri>https://stocksharp.com/users/28519/</uri>
      <email>info@stocksharp.com</email>
    </author>
    <content type="html">&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/7099/</id>
    <title type="text">poilka: Попробовал и с конструктором, и без - говорит, что не может получить значение _candleBounds....</title>
    <published>2011-03-28T14:30:00Z</published>
    <updated>2011-03-28T14:30:00Z</updated>
    <author>
      <name>Mikhail Sukhov</name>
      <uri>https://stocksharp.com/users/201/</uri>
      <email>info@stocksharp.com</email>
    </author>
    <content type="html">&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;&lt;a href="@message(7092)" rel="nofollow" target="_blank"&gt;poilka&lt;/a&gt;:&lt;/strong&gt;
Попробовал и с конструктором, и без - говорит, что
не может получить значение _candleBounds.
Хотя _candleManager на месте, и на остальные поля не ругается.&lt;/p&gt;
&lt;/blockquote&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/7087/</id>
    <title type="text">Спасибо, буду ковыряться. </title>
    <published>2011-03-28T10:15:36Z</published>
    <updated>2011-03-28T10:15:36Z</updated>
    <author>
      <name>poilka</name>
      <uri>https://stocksharp.com/users/28519/</uri>
      <email>info@stocksharp.com</email>
    </author>
    <content type="html">&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/7081/</id>
    <title type="text">poilka: Стратегия нормально запускается и останавливается из GUI примера SampleSMA, лог пишется, но ...</title>
    <published>2011-03-28T09:11:58Z</published>
    <updated>2011-03-28T09:11:58Z</updated>
    <author>
      <name>Mikhail Sukhov</name>
      <uri>https://stocksharp.com/users/201/</uri>
      <email>info@stocksharp.com</email>
    </author>
    <content type="html">&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;&lt;a href="@message(7075)" rel="nofollow" target="_blank"&gt;poilka&lt;/a&gt;:&lt;/strong&gt;
Стратегия нормально запускается и останавливается из GUI примера SampleSMA, лог пишется, но сделок не происходит на любом таймфрейме.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;Точка останова, дебаггер и вперед.[smile]&lt;/p&gt;
</content>
    <rights type="html">Copyright @ StockSharp Platform LLC 2010 - 2025</rights>
  </entry>
  <entry>
    <id>https://stocksharp.com/posts/m/7075/</id>
    <title type="text">Доброго всем дня, особенно Михаилу :). Начал осваивать событийный подход, забуксовал. Подскажите, по...</title>
    <published>2011-03-28T07:06:21Z</published>
    <updated>2011-03-28T07:06:21Z</updated>
    <author>
      <name>poilka</name>
      <uri>https://stocksharp.com/users/28519/</uri>
      <email>info@stocksharp.com</email>
    </author>
    <content type="html">&lt;p&gt;Доброго всем дня, особенно Михаилу :).
Начал осваивать событийный подход, забуксовал.&lt;/p&gt;
&lt;p&gt;Подскажите, пожалуйста, как правильно запускать стратегию наподобие той,
что приведена в примере (class MyOwnStrategy : ActionStrategy)?
Нужно ли добавлять в нее конструктор и отдельно передавать Security?&lt;/p&gt;
&lt;p&gt;Сейчас запускаю на ФОРТС так:&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;_strategy = new MyOwnStrategy() { Volume = 1 };
_manager.Register(_strategy, this.Portfolios.SelectedPortfolio, _rts);
if (_strategy.ProcessState == StrategyProcessStates.Stopped)
	{
	_strategy.Start();
	}
	else
	{
	_strategy.Stop();
	}
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Стратегия нормально запускается и останавливается из GUI примера SampleSMA, лог пишется, но сделок не происходит на любом таймфрейме.&lt;/p&gt;
&lt;p&gt;Лог обычно такой:
MOS 20:34:52.0212958 Стратегия запущена.
MOS 20:36:11.3213772 Стратегия останавливается.
MOS 20:36:11.6273947 Стратегия остановлена.&lt;/p&gt;
&lt;p&gt;Событийную стратегию взял из мануала, без изменений, версия 3.0.
Буду признателен за помощь.&lt;/p&gt;
&lt;p&gt;Весь запускающий код, кроме самой стратегии из примера:&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;namespace SampleSMA
{
	using System;
	using System.Collections.Generic;
	using System.Linq;
	using System.ComponentModel;
	using System.Globalization;
	using System.IO;
	using System.Threading;
	using System.Windows;
	using System.Windows.Forms;
	using MessageBox = System.Windows.MessageBox;
	using AmCharts.Windows.Stock;
    using Ecng.Collections;
	using Ecng.Common;
	using Ecng.ComponentModel;
	using Ecng.Trading.Algo;
	using Ecng.Trading.Algo.Candles;
    using Ecng.Trading.Algo.Logging;
	using Ecng.Trading.Algo.Reporting;
	using Ecng.Trading.Algo.Strategies;
	using Ecng.Trading.BusinessEntities;
	using Ecng.Trading.Quik;
	using Ecng.Trading.Xaml;
	using Ecng.Xaml;

	public partial class MainWindow
	{
		private readonly TimeSpan _timeFrame = TimeSpan.FromMinutes(1);
		private QuikTrader _trader;
		private MyOwnStrategy _strategy;
		private RealTimeStrategyManager _manager;
		private bool _isDdeStarted;
		private Security _rts;
        public CandleManager _candleManager;

		public MainWindow()
		{
			 InitializeComponent();

			// изменяет текущий формат, чтобы нецелое числа интерпритировалось как разделенное точкой.
			 var cci = new CultureInfo(Thread.CurrentThread.CurrentCulture.Name) { NumberFormat = { NumberDecimalSeparator = &amp;quot;.&amp;quot; } };
		     Thread.CurrentThread.CurrentCulture = cci;

			}

		private void _orders_OrderSelected(object sender, EventArgs e)
		{
			this.CancelOrders.IsEnabled = _orders.SelectedOrders.Count() &amp;gt; 0;
		}

		 protected override void OnClosing(CancelEventArgs e)
		{
			if (_trader != null)
			{
				_manager.Dispose();

				if (_isDdeStarted)
					StopDde();

				_trader.Dispose();
			}

			base.OnClosing(e);
		}    

		private void FindPath_Click(object sender, RoutedEventArgs e)
		{
			var dlg = new FolderBrowserDialog();

			if (!this.Path.Text.IsEmpty())
				dlg.SelectedPath = this.Path.Text;

			if (dlg.ShowDialog() == System.Windows.Forms.DialogResult.OK)
			{
				this.Path.Text = dlg.SelectedPath;
			}
		}

		private void Connect_Click(object sender, RoutedEventArgs e)
		{
			if (_trader == null || !_trader.IsConnected)
			{
				if (_trader == null)
				{
					if (this.Path.Text.IsEmpty())
					{
						MessageBox.Show(this, &amp;quot;Путь к Quik не выбран.&amp;quot;);
						return;
					}

					// создаем шлюз
					_trader = new QuikTrader(this.Path.Text);

					// создаем менеджер стратегий
					_manager = new RealTimeStrategyManager(_trader);

					this.Portfolios.Trader = _trader;

					_trader.Connected += () =&amp;gt;
					{
                        _candleManager = new CandleManager(_trader);

                        _trader.NewSecurities += securities =&amp;gt; this.GuiAsync(() =&amp;gt;
						{
							// находим нужную бумагу
							var rts = securities.FirstOrDefault(s =&amp;gt; s.Code == &amp;quot;RIM1&amp;quot;);

							if (rts != null)
							{
								_rts = rts;

								this.GuiAsync(() =&amp;gt;
								{
									this.Start.IsEnabled = true;
								});
							}
						});

						
						_trader.ConnectionError += ex =&amp;gt;
						{
							if (ex != null)
								this.GuiAsync(() =&amp;gt; MessageBox.Show(this, ex.ToString()));
						};

						this.GuiAsync(() =&amp;gt;
						{
							this.ConnectBtn.IsEnabled = false;
							this.ExportDde.IsEnabled = true;
							this.Report.IsEnabled = true;
						});
					};
				}

				_trader.Connect();
			}
			else
				_trader.Disconnect();
		}

       	private void OnNewOrder(Order order)
		{
			_orders.Orders.Add(order);
			this.GuiAsync(() =&amp;gt; _chart.Orders.Add(order));
		}

		private void OnLog(Strategy strategy, StrategyErrorStates errorState, string message)
		{
			// если стратегия вывела не просто сообщение, то вывести на экран.
			if (errorState != StrategyErrorStates.None)
				this.GuiAsync(() =&amp;gt; MessageBox.Show(this, message));
		}

		
		private void OnStrategyPropertyChanged(object sender, PropertyChangedEventArgs e)
		{
			this.GuiAsync(() =&amp;gt;
			{
				this.Status.Content = _strategy.ProcessState;
				this.PnL.Content = _strategy.PnLManager.PnL;
				this.Slippage.Content = _strategy.SlippageManager.Slippage;
				this.Position.Content = _strategy.PositionManager.Position;
				this.Latency.Content = _strategy.LatencyManager.Latency;
			});
		}

		private void StartDde()
		{
			_trader.StartExport();
			_isDdeStarted = true;
		}

		private void StopDde()
		{
			_trader.StopExport();
			_isDdeStarted = false;
		}

		private void ExportDde_Click(object sender, RoutedEventArgs e)
		{
			if (_isDdeStarted)
				StopDde();
			else
				StartDde();
		}

		private void CancelOrders_Click(object sender, RoutedEventArgs e)
		{
			_orders.SelectedOrders.ForEach(_trader.CancelOrder);
		}

		private void Start_Click(object sender, RoutedEventArgs e)
		{
			if (_strategy == null)
			{
				if (this.Portfolios.SelectedPortfolio == null)
				{
					MessageBox.Show(this, &amp;quot;Портфель не выбран.&amp;quot;);
					return;
				}

				
				// создаем стратегию
				_strategy = new MyOwnStrategy() { Volume = 1 };
				_strategy.Log += OnLog;
				_strategy.NewOrder += OnNewOrder;
				_strategy.PropertyChanged += OnStrategyPropertyChanged;

				// регистрируем стратегию, чтобы она начала обрабатываться
				_manager.Register(_strategy, this.Portfolios.SelectedPortfolio, _rts);

				var fileLogger = new FileStrategyLogger(&amp;quot;{0}_{1:00}_{2:00}.txt&amp;quot;.Put(DateTime.Now.Year, DateTime.Now.Month, DateTime.Now.Day));
                
                fileLogger.Strategies.Add(_strategy);
                
                this.Report.IsEnabled = true;

			}
            
			if (_strategy.ProcessState == StrategyProcessStates.Stopped)
			{
				_strategy.Start();
				this.Start.Content = &amp;quot;Хватит&amp;quot;;
			}
			else
			{
				_strategy.Stop();
				this.Start.Content = &amp;quot;Понеслась&amp;quot;;
			}
		}
        
        private void Report_Click(object sender, RoutedEventArgs e)
		{
			var fileName = &amp;quot;report_{0}_{1}.xls&amp;quot;.Put(_strategy.Security.Code, DateTime.Now.ToString(&amp;quot;yyyy_MM_dd_HH_mm&amp;quot;));
			new ExcelStrategyReport(_strategy, System.IO.Path.Combine(Directory.GetCurrentDirectory(), fileName)).Generate();
		}
	}
}
&lt;/code&gt;&lt;/pre&gt;
</content>
    <rights type="html">Copyright @ StockSharp Platform LLC 2010 - 2025</rights>
  </entry>
</feed>