﻿<?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">Исполнение Strategy по Событию, а не по Интервалу.</title>
  <id>~/topic/809/ispolnenie-strategy-po-sobytiyu-a-ne-po-intervalu_/</id>
  <rights type="text">Copyright @ StockSharp Platform LLC 2010 - 2025</rights>
  <updated>2026-06-18T08:02:43Z</updated>
  <logo>https://stocksharp.ru/images/logo.png</logo>
  <link href="https://stocksharp.ru/handlers/atom.ashx?category=topic&amp;id=809" rel="self" type="application/rss+xml" />
  <entry>
    <id>https://stocksharp.ru/posts/m/936/</id>
    <title type="text">огромное спасибо. буду пробовать </title>
    <published>2010-08-25T10:00:00Z</published>
    <updated>2010-08-25T10:00:00Z</updated>
    <author>
      <name>Serg</name>
      <uri>https://stocksharp.ru/users/484/</uri>
      <email>info@stocksharp.ru</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.ru/posts/m/935/</id>
    <title type="text">В своём наследнике Strategy делаете поле int _inUse; В начале переопределённого OnProcess() пишете п...</title>
    <published>2010-08-25T02:26:00Z</published>
    <updated>2010-08-25T02:26:00Z</updated>
    <author>
      <name>Иванов Андрей</name>
      <uri>https://stocksharp.ru/users/28064/</uri>
      <email>info@stocksharp.ru</email>
    </author>
    <content type="html">&lt;p&gt;В своём наследнике Strategy делаете поле int _inUse;
В начале переопределённого OnProcess() пишете примерно так:&lt;/p&gt;
&lt;p&gt;int inUse = Interlocked.CompareExchange(ref _inUse, 1, 0);
if (inUse == 0)
{
try
{
// ваша логика&lt;/p&gt;
&lt;p&gt;finally
{
Interlocked.Exchange(ref _inUse, 0);&lt;/p&gt;
&lt;p&gt;Это самый эффективный способ блокирования от параллельной работы. Ещё
есть метод для ленивых, с семафором. Объявляете филд SemaphoreSlim
_lock = new SemaphoreSlim(1,1);&lt;/p&gt;
&lt;p&gt;В OnProcess примерно так:
if (_lock.Wait(0))
{
try
{
// логика&lt;/p&gt;
&lt;p&gt;finally
{
_lock.Release();&lt;/p&gt;
&lt;p&gt;Короче на одну строку, меньше цифр, а разницу в скорости вы никогда в
жизни не увидите.&lt;/p&gt;
</content>
    <rights type="html">Copyright @ StockSharp Platform LLC 2010 - 2025</rights>
  </entry>
  <entry>
    <id>https://stocksharp.ru/posts/m/934/</id>
    <title type="text">а если стратегия подписалась на два стакана? и при изменении любого вызывается OnProcess. Как сделат...</title>
    <published>2010-08-24T16:19:00Z</published>
    <updated>2010-08-24T16:19:00Z</updated>
    <author>
      <name>Serg</name>
      <uri>https://stocksharp.ru/users/484/</uri>
      <email>info@stocksharp.ru</email>
    </author>
    <content type="html">&lt;p&gt;а если стратегия подписалась на два стакана? и при изменении любого
вызывается OnProcess. Как сделать так чтобы в момент обновления
первого стакана и и работы OnProcess обновился второй но НЕ вызвал
OnProcess?&lt;/p&gt;
</content>
    <rights type="html">Copyright @ StockSharp Platform LLC 2010 - 2025</rights>
  </entry>
  <entry>
    <id>https://stocksharp.ru/posts/m/933/</id>
    <title type="text">Спасибо, я так и думал. Просто до этого Вы писали про &amp;quot;Strategy.Process&amp;quot; поэтому я и хотел уточнить....</title>
    <published>2010-07-14T21:12:00Z</published>
    <updated>2010-07-14T21:12:00Z</updated>
    <author>
      <name>ustas</name>
      <uri>https://stocksharp.ru/users/27611/</uri>
      <email>info@stocksharp.ru</email>
    </author>
    <content type="html">&lt;p&gt;Спасибо, я так и думал.&lt;/p&gt;
&lt;p&gt;Просто до этого Вы писали  про &amp;quot;Strategy.Process&amp;quot; поэтому  я и хотел
уточнить.&lt;/p&gt;
&lt;p&gt;С уважением!&lt;/p&gt;
</content>
    <rights type="html">Copyright @ StockSharp Platform LLC 2010 - 2025</rights>
  </entry>
  <entry>
    <id>https://stocksharp.ru/posts/m/932/</id>
    <title type="text">По логике S# алгоритм стратегии прописывается в методе OnProcess (смотрите пример SampleSMA). При за...</title>
    <published>2010-07-14T21:07:00Z</published>
    <updated>2010-07-14T21:07:00Z</updated>
    <author>
      <name>Dmitriy Klimov</name>
      <uri>https://stocksharp.ru/users/27862/</uri>
      <email>info@stocksharp.ru</email>
    </author>
    <content type="html">&lt;p&gt;По логике S# алгоритм стратегии прописывается в методе OnProcess
(смотрите пример SampleSMA). При запуске стратегия подписывается на
событие обновления стакана, и при наступлении этого события вызывает
этот метод.&lt;/p&gt;
</content>
    <rights type="html">Copyright @ StockSharp Platform LLC 2010 - 2025</rights>
  </entry>
  <entry>
    <id>https://stocksharp.ru/posts/m/931/</id>
    <title type="text">Спасибо. а что значит &amp;quot;стратегия перезапускает алгоритм&amp;quot;? Какой метод используется? strategy.Process...</title>
    <published>2010-07-14T20:36:00Z</published>
    <updated>2010-07-14T20:36:00Z</updated>
    <author>
      <name>ustas</name>
      <uri>https://stocksharp.ru/users/27611/</uri>
      <email>info@stocksharp.ru</email>
    </author>
    <content type="html">&lt;p&gt;Спасибо.&lt;/p&gt;
&lt;p&gt;а что значит &amp;quot;стратегия перезапускает алгоритм&amp;quot;?
Какой метод используется? strategy.Process? или что то другое?&lt;/p&gt;
&lt;p&gt;С уважением!&lt;/p&gt;
</content>
    <rights type="html">Copyright @ StockSharp Platform LLC 2010 - 2025</rights>
  </entry>
  <entry>
    <id>https://stocksharp.ru/posts/m/930/</id>
    <title type="text">Так дело не в том какой интервал, просто хочется работать по событию trader_QuotesChanged(MarketDept...</title>
    <published>2010-07-14T20:31:00Z</published>
    <updated>2010-07-14T20:31:00Z</updated>
    <author>
      <name>ustas</name>
      <uri>https://stocksharp.ru/users/27611/</uri>
      <email>info@stocksharp.ru</email>
    </author>
    <content type="html">&lt;p&gt;Так дело не в том какой интервал, просто хочется работать по событию
trader_QuotesChanged(MarketDepth obj) например&lt;/p&gt;
&lt;p&gt;а он может быть чаще/реже любого интервала&lt;/p&gt;
&lt;p&gt;Спасибо и с уважением!&lt;/p&gt;
</content>
    <rights type="html">Copyright @ StockSharp Platform LLC 2010 - 2025</rights>
  </entry>
  <entry>
    <id>https://stocksharp.ru/posts/m/929/</id>
    <title type="text">Лично я интервал поставил заведомо большой, а стратегия перезапускает алгоритм сама автоматически по...</title>
    <published>2010-07-14T20:05:00Z</published>
    <updated>2010-07-14T20:05:00Z</updated>
    <author>
      <name>Dmitriy Klimov</name>
      <uri>https://stocksharp.ru/users/27862/</uri>
      <email>info@stocksharp.ru</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.ru/posts/m/928/</id>
    <title type="text">Поставьте 300 миллисекунд. Не грузит - уменьшите. Грузит - увеличьте. </title>
    <published>2010-07-14T19:44:00Z</published>
    <updated>2010-07-14T19:44:00Z</updated>
    <author>
      <name>Mikhail Sukhov</name>
      <uri>https://stocksharp.ru/users/201/</uri>
      <email>info@stocksharp.ru</email>
    </author>
    <content type="html">&lt;p&gt;Поставьте 300 миллисекунд. Не грузит - уменьшите. Грузит - увеличьте.&lt;/p&gt;
</content>
    <rights type="html">Copyright @ StockSharp Platform LLC 2010 - 2025</rights>
  </entry>
  <entry>
    <id>https://stocksharp.ru/posts/m/927/</id>
    <title type="text">Чаще чем меняется стакан? Какой интервал порекомендуете? Спасибо и с уважением! </title>
    <published>2010-07-14T19:42:00Z</published>
    <updated>2010-07-14T19:42:00Z</updated>
    <author>
      <name>ustas</name>
      <uri>https://stocksharp.ru/users/27611/</uri>
      <email>info@stocksharp.ru</email>
    </author>
    <content type="html">&lt;p&gt;Чаще чем меняется стакан?&lt;/p&gt;
&lt;p&gt;Какой интервал порекомендуете?&lt;/p&gt;
&lt;p&gt;Спасибо и с уважением!&lt;/p&gt;
</content>
    <rights type="html">Copyright @ StockSharp Platform LLC 2010 - 2025</rights>
  </entry>
  <entry>
    <id>https://stocksharp.ru/posts/m/926/</id>
    <title type="text">А в чем проблема, если эта вещь будет часто вызываться и смотреть на зарегистрированные условия? Наг...</title>
    <published>2010-07-14T19:11:00Z</published>
    <updated>2010-07-14T19:11:00Z</updated>
    <author>
      <name>Mikhail Sukhov</name>
      <uri>https://stocksharp.ru/users/201/</uri>
      <email>info@stocksharp.ru</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.ru/posts/m/925/</id>
    <title type="text">Сорри за то что влезаю, тут смысл вопроса был, как я понимаю, как раз в том чтобы можно было задать ...</title>
    <published>2010-07-14T18:34:00Z</published>
    <updated>2010-07-14T18:34:00Z</updated>
    <author>
      <name>ustas</name>
      <uri>https://stocksharp.ru/users/27611/</uri>
      <email>info@stocksharp.ru</email>
    </author>
    <content type="html">&lt;p&gt;Сорри за то что влезаю,
тут смысл вопроса был, как я понимаю, как раз в том чтобы можно было
задать интревал ПОБОЛЬШЕ (а не поменьше как Вы написали). Или Вообше
от него отказаться.
Чтобы не дергаться лишний раз а только тогда когда НУЖНО.&lt;/p&gt;
&lt;p&gt;А нужно, например, когда в стакане что то появиться к примеру. Поэтому
типа сделать event на стакан, и вызывать стратегию событием а не по
интервалу.
Правильно ли, что это можно делать с помощью вызова Startegy.Process ?&lt;/p&gt;
&lt;p&gt;Спасибо и с уважением!
Эта задача стала достаточно актуальна в свете того что управление
заявками например в 2.1  рекомендуется реализовывать через стратегии&lt;/p&gt;
</content>
    <rights type="html">Copyright @ StockSharp Platform LLC 2010 - 2025</rights>
  </entry>
  <entry>
    <id>https://stocksharp.ru/posts/m/924/</id>
    <title type="text">Лучше опишите, какого типа условия. Абстрактно, да, задавайте интервал поменьше, и мониторьте ситуац...</title>
    <published>2010-07-05T13:26:00Z</published>
    <updated>2010-07-05T13:26:00Z</updated>
    <author>
      <name>Mikhail Sukhov</name>
      <uri>https://stocksharp.ru/users/201/</uri>
      <email>info@stocksharp.ru</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.ru/posts/m/923/</id>
    <title type="text">Если я пишу свою стратегию как производную от класса Strategy и хочу вызывать алгоритм не через како...</title>
    <published>2010-07-02T22:25:00Z</published>
    <updated>2010-07-02T22:25:00Z</updated>
    <author>
      <name>Dmitriy Klimov</name>
      <uri>https://stocksharp.ru/users/27862/</uri>
      <email>info@stocksharp.ru</email>
    </author>
    <content type="html">&lt;p&gt;Если я пишу свою стратегию как производную от класса Strategy и хочу
вызывать алгоритм не через какой-то промежуток времени, а по своим
условиям, я могу просто задать заведомо большое значение свойству
Strategy.Interval и вызывать Strategy.Process тогда, когда мне это
нужно. Так получается?&lt;/p&gt;
</content>
    <rights type="html">Copyright @ StockSharp Platform LLC 2010 - 2025</rights>
  </entry>
  <entry>
    <id>https://stocksharp.ru/posts/m/922/</id>
    <title type="text">Фактически, реализовали то же самое, что и StrategyManager. Укажите интервал TimeSpan.Zero для Strat...</title>
    <published>2010-06-11T17:03:00Z</published>
    <updated>2010-06-11T17:03:00Z</updated>
    <author>
      <name>Mikhail Sukhov</name>
      <uri>https://stocksharp.ru/users/201/</uri>
      <email>info@stocksharp.ru</email>
    </author>
    <content type="html">&lt;ol&gt;
&lt;li&gt;Фактически, реализовали то же самое, что и StrategyManager.&lt;/li&gt;
&lt;li&gt;Укажите интервал TimeSpan.Zero для Strategy и получите такой же
вечный цикл без ожидания.&lt;/li&gt;
&lt;li&gt;С Квиком может и не принести желаемого (уверен почти на 100). Не
умеет он так быстро данные перегонять.&lt;/li&gt;
&lt;/ol&gt;
</content>
    <rights type="html">Copyright @ StockSharp Platform LLC 2010 - 2025</rights>
  </entry>
  <entry>
    <id>https://stocksharp.ru/posts/m/921/</id>
    <title type="text">У меня просто после соединения и получения всех ЦБ была необходимость как можно часто высчитывать не...</title>
    <published>2010-06-11T16:23:00Z</published>
    <updated>2010-06-11T16:23:00Z</updated>
    <author>
      <name>takanaev</name>
      <uri>https://stocksharp.ru/users/28265/</uri>
      <email>info@stocksharp.ru</email>
    </author>
    <content type="html">&lt;p&gt;У меня просто после соединения и получения всех ЦБ была необходимость
как можно часто высчитывать некий индикатор и принимать решение о
позиции. Поэтому просто сделал что-то вроде этого:&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;
net Thread(Robot).Start();
...
void Robot()
{
    while(true)
    {
        // считаем наши индикаторы
        // принимаем решение о позиции
    }


&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.ru/posts/m/920/</id>
    <title type="text">А какое событие будете использовать при этом? </title>
    <published>2010-06-11T11:56:00Z</published>
    <updated>2010-06-11T11:56:00Z</updated>
    <author>
      <name>Mikhail Sukhov</name>
      <uri>https://stocksharp.ru/users/201/</uri>
      <email>info@stocksharp.ru</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.ru/posts/m/919/</id>
    <title type="text">Событие изменение цены. Я понимаю что можно сделать это и по другому, например как в посте 2, Но тут...</title>
    <published>2010-06-11T09:08:00Z</published>
    <updated>2010-06-11T09:08:00Z</updated>
    <author>
      <name>HaMMeR</name>
      <uri>https://stocksharp.ru/users/28413/</uri>
      <email>info@stocksharp.ru</email>
    </author>
    <content type="html">&lt;p&gt;Событие изменение цены.
Я понимаю что можно сделать это и по другому, например как в посте 2,
Но тут программа будет попусту вызывать process() каждые n времени.
А так если цена не изменяется, то и не надо вызывать process().
Пример грубый, но нужный.&lt;/p&gt;
</content>
    <rights type="html">Copyright @ StockSharp Platform LLC 2010 - 2025</rights>
  </entry>
  <entry>
    <id>https://stocksharp.ru/posts/m/918/</id>
    <title type="text">Если вообще отказаться от интервала - то что такая стратегия будет мониторить? </title>
    <published>2010-06-10T23:40:00Z</published>
    <updated>2010-06-10T23:40:00Z</updated>
    <author>
      <name>Mikhail Sukhov</name>
      <uri>https://stocksharp.ru/users/201/</uri>
      <email>info@stocksharp.ru</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.ru/posts/m/917/</id>
    <title type="text">Совсем не использовал Strategy/ </title>
    <published>2010-06-10T18:31:00Z</published>
    <updated>2010-06-10T18:31:00Z</updated>
    <author>
      <name>takanaev</name>
      <uri>https://stocksharp.ru/users/28265/</uri>
      <email>info@stocksharp.ru</email>
    </author>
    <content type="html">&lt;p&gt;Совсем не использовал Strategy/&lt;/p&gt;
</content>
    <rights type="html">Copyright @ StockSharp Platform LLC 2010 - 2025</rights>
  </entry>
</feed>