﻿<?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-04-07T00:35:31Z</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;br /&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">В своём наследнике Strategy делаете поле int _inUse;&lt;br /&gt;В начале переопределённого OnProcess() пишете примерно так:&lt;br /&gt;&lt;br /&gt;int inUse = Interlocked.CompareExchange(ref _inUse, 1, 0);&lt;br /&gt;if (inUse == 0)&lt;br /&gt;{&lt;br /&gt;try&lt;br /&gt;{&lt;br /&gt;// ваша логика&lt;br /&gt;&lt;br /&gt;finally&lt;br /&gt;{&lt;br /&gt;Interlocked.Exchange(ref _inUse, 0);&lt;br /&gt;&lt;br /&gt;Это самый эффективный способ блокирования от параллельной работы. Ещё&lt;br /&gt;есть метод для ленивых, с семафором. Объявляете филд SemaphoreSlim&lt;br /&gt;_lock = new SemaphoreSlim(1,1);&lt;br /&gt;&lt;br /&gt;В OnProcess примерно так:&lt;br /&gt;if (_lock.Wait(0))&lt;br /&gt;{&lt;br /&gt;try&lt;br /&gt;{&lt;br /&gt;// логика&lt;br /&gt;&lt;br /&gt;finally&lt;br /&gt;{&lt;br /&gt;_lock.Release();&lt;br /&gt;&lt;br /&gt;Короче на одну строку, меньше цифр, а разницу в скорости вы никогда в&lt;br /&gt;жизни не увидите.&lt;br /&gt;&lt;br /&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;br /&gt;вызывается OnProcess. Как сделать так чтобы в момент обновления&lt;br /&gt;первого стакана и и работы OnProcess обновился второй но НЕ вызвал&lt;br /&gt;OnProcess? &lt;br /&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;br /&gt;&lt;br /&gt;Просто до этого Вы писали  про &amp;quot;Strategy.Process&amp;quot; поэтому  я и хотел&lt;br /&gt;уточнить.&lt;br /&gt;&lt;br /&gt;С уважением!&lt;br /&gt;&lt;br /&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">По логике S# алгоритм стратегии прописывается в методе OnProcess&lt;br /&gt;(смотрите пример SampleSMA). При запуске стратегия подписывается на&lt;br /&gt;событие обновления стакана, и при наступлении этого события вызывает&lt;br /&gt;этот метод.&lt;br /&gt;&lt;br /&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;br /&gt;&lt;br /&gt;а что значит &amp;quot;стратегия перезапускает алгоритм&amp;quot;?&lt;br /&gt;Какой метод используется? strategy.Process? или что то другое?&lt;br /&gt;&lt;br /&gt;С уважением!&lt;br /&gt;&lt;br /&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;br /&gt;trader_QuotesChanged(MarketDepth obj) например&lt;br /&gt;&lt;br /&gt;а он может быть чаще/реже любого интервала&lt;br /&gt;&lt;br /&gt;Спасибо и с уважением!&lt;br /&gt;&lt;br /&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;br /&gt;алгоритм сама автоматически по событию изменения данных в стакане.&lt;br /&gt;&lt;br /&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">Поставьте 300 миллисекунд. Не грузит - уменьшите. Грузит - увеличьте.&lt;br /&gt;&lt;br /&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;br /&gt;&lt;br /&gt;Какой интервал порекомендуете?&lt;br /&gt;&lt;br /&gt;Спасибо и с уважением!&lt;br /&gt;&lt;br /&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;br /&gt;зарегистрированные условия? Нагрузку то на процессор все равно не&lt;br /&gt;создаст.&lt;br /&gt;&lt;br /&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;br /&gt;тут смысл вопроса был, как я понимаю, как раз в том чтобы можно было&lt;br /&gt;задать интревал ПОБОЛЬШЕ (а не поменьше как Вы написали). Или Вообше&lt;br /&gt;от него отказаться.&lt;br /&gt;Чтобы не дергаться лишний раз а только тогда когда НУЖНО.&lt;br /&gt;&lt;br /&gt;А нужно, например, когда в стакане что то появиться к примеру. Поэтому&lt;br /&gt;типа сделать event на стакан, и вызывать стратегию событием а не по&lt;br /&gt;интервалу.&lt;br /&gt;Правильно ли, что это можно делать с помощью вызова Startegy.Process ?&lt;br /&gt;&lt;br /&gt;Спасибо и с уважением!&lt;br /&gt;Эта задача стала достаточно актуальна в свете того что управление&lt;br /&gt;заявками например в 2.1  рекомендуется реализовывать через стратегии&lt;br /&gt;&lt;br /&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;br /&gt;поменьше, и мониторьте ситуацию.&lt;br /&gt;&lt;br /&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">Если я пишу свою стратегию как производную от класса Strategy и хочу&lt;br /&gt;вызывать алгоритм не через какой-то промежуток времени, а по своим&lt;br /&gt;условиям, я могу просто задать заведомо большое значение свойству&lt;br /&gt;Strategy.Interval и вызывать Strategy.Process тогда, когда мне это&lt;br /&gt;нужно. Так получается?&lt;br /&gt;&lt;br /&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">1. Фактически, реализовали то же самое, что и StrategyManager. 2. Укажите интервал TimeSpan.Zero для...</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">1. Фактически, реализовали то же самое, что и StrategyManager.&lt;br /&gt;2. Укажите интервал TimeSpan.Zero для Strategy и получите такой же&lt;br /&gt;вечный цикл без ожидания.&lt;br /&gt;3. С Квиком может и не принести желаемого (уверен почти на 100). Не&lt;br /&gt;умеет он так быстро данные перегонять.&lt;br /&gt;&lt;br /&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;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;br /&gt;net Thread(Robot).Start();&lt;br /&gt;...&lt;br /&gt;void Robot()&lt;br /&gt;{&lt;br /&gt;    while(true)&lt;br /&gt;    {&lt;br /&gt;        // считаем наши индикаторы&lt;br /&gt;        // принимаем решение о позиции&lt;br /&gt;    }&lt;br /&gt;&lt;br /&gt;&lt;/div&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;Но это просто у меня была такая необходимость как можно чаще&lt;br /&gt;мониторить ситуацию.&lt;br /&gt;Поэтому если уж использовать существующую библиотеку, то может просто&lt;br /&gt;построить некий базовый класс стратегий без интервала, а поверх&lt;br /&gt;интервальный, кому нужно.&lt;br /&gt;&lt;br /&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;br /&gt;&lt;br /&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;br /&gt;Я понимаю что можно сделать это и по другому, например как в посте 2,&lt;br /&gt;Но тут программа будет попусту вызывать process() каждые n времени.&lt;br /&gt;А так если цена не изменяется, то и не надо вызывать process().&lt;br /&gt;Пример грубый, но нужный.&lt;br /&gt;&lt;br /&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;br /&gt;мониторить?&lt;br /&gt;&lt;br /&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">Совсем не использовал Strategy/&lt;br /&gt;&lt;br /&gt;</content>
    <rights type="html">Copyright @ StockSharp Platform LLC 2010 - 2025</rights>
  </entry>
</feed>