﻿<?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/2544/sobytiinaya-model/</id>
  <rights type="text">Copyright @ StockSharp Platform LLC 2010 - 2025</rights>
  <updated>2026-06-10T20:29:36Z</updated>
  <logo>https://stocksharp.ru/images/logo.png</logo>
  <link href="https://stocksharp.ru/handlers/atom.ashx?category=topic&amp;id=2544" rel="self" type="application/rss+xml" />
  <entry>
    <id>https://stocksharp.ru/posts/m/18189/</id>
    <title type="text">немножко оффтоп, но вы собираетесь спред через quik торговать? вроде без плазы там(внутри спреда) де...</title>
    <published>2012-04-12T16:26:58Z</published>
    <updated>2012-04-12T16:26:58Z</updated>
    <author>
      <name>OvcharenkoVI</name>
      <uri>https://stocksharp.ru/users/390/</uri>
      <email>info@stocksharp.ru</email>
    </author>
    <content type="html">&lt;p&gt;немножко оффтоп, но вы собираетесь спред через quik торговать? вроде без плазы там(внутри спреда) делать нечего )))&lt;/p&gt;
&lt;p&gt;В вашем случае я бы посоветовал создавать две стратегии котирования и, когда у обеих будет статус Stopped - создавать новые )&lt;/p&gt;
</content>
    <rights type="html">Copyright @ StockSharp Platform LLC 2010 - 2025</rights>
  </entry>
  <entry>
    <id>https://stocksharp.ru/posts/m/18187/</id>
    <title type="text">Саму идею я понял! Но конкретно где не правильно я делаю не вижу! Моя задача в следующем написать пр...</title>
    <published>2012-04-12T15:30:33Z</published>
    <updated>2012-04-12T15:30:33Z</updated>
    <author>
      <name>Wetal</name>
      <uri>https://stocksharp.ru/users/28266/</uri>
      <email>info@stocksharp.ru</email>
    </author>
    <content type="html">&lt;p&gt;Саму идею я понял! Но конкретно где не правильно я делаю не вижу! Моя задача в следующем написать правило на изменение состояния статуса 2х заявок, т.е.  допустим условие 1. заявка на продажу исполнилась а заявка на покупку еще активна -&amp;gt; если спред=х -&amp;gt; пере выставляем заявку на покупку уже с другой ценой.
2. Так же как 1, только на оборот по заявкам.
3. Обе заявки исполнились -&amp;gt; выставляем две новые.
Вот собственно эти 3 я и написал, но они не срабатывают. (&lt;/p&gt;
</content>
    <rights type="html">Copyright @ StockSharp Platform LLC 2010 - 2025</rights>
  </entry>
  <entry>
    <id>https://stocksharp.ru/posts/m/18172/</id>
    <title type="text">Wetal: Помогите пожалуйста написать свое правило и активировать его! Какое правило я так и не понял....</title>
    <published>2012-04-12T03:32:10Z</published>
    <updated>2012-04-12T03:32:10Z</updated>
    <author>
      <name>hobo</name>
      <uri>https://stocksharp.ru/users/27889/</uri>
      <email>info@stocksharp.ru</email>
    </author>
    <content type="html">&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;&lt;a href="@message(18159)" rel="nofollow" target="_blank"&gt;Wetal&lt;/a&gt;:&lt;/strong&gt;
Помогите пожалуйста написать свое правило и активировать его!
Какое правило я так и не понял. &lt;a href="http://www.stocksharp.com/doc/html/8c0327db-494a-4fe0-aba8-0d4b93dea60e.htm"&gt;Официальный пример&lt;/a&gt; смотрели?
99.9%, что вам не нужно новое правило и что дело не в том, что &amp;quot;if else - очень замедляет&amp;quot;. Начните все же с чтения документации и разбора примеров.&lt;/p&gt;
&lt;/blockquote&gt;
</content>
    <rights type="html">Copyright @ StockSharp Platform LLC 2010 - 2025</rights>
  </entry>
  <entry>
    <id>https://stocksharp.ru/posts/m/18159/</id>
    <title type="text">Помогите пожалуйста написать свое правило и активировать его! на форуме нашел такие примеры: public ...</title>
    <published>2012-04-11T14:54:11Z</published>
    <updated>2012-04-11T14:54:57Z</updated>
    <author>
      <name>Wetal</name>
      <uri>https://stocksharp.ru/users/28266/</uri>
      <email>info@stocksharp.ru</email>
    </author>
    <content type="html">&lt;p&gt;Помогите пожалуйста написать свое правило и активировать его!
на форуме нашел такие примеры:&lt;/p&gt;
&lt;pre&gt;&lt;code class="language-csharp"&gt; 
public class rule1 : StrategyRule
    {
        public  StrategyRule rule11(Order order_sell, Order order_buy)
        {
            if (order.State == OrderStates.Done &amp;amp;&amp;amp; order.State == OrderStates.Done)
                this.Activate();
            return this;
        }
    }

public class strategy : Strategy
    {
        protected StrategyRule rule1()
        {
            return new rule1().rule11(Globals.order_buy);
        }
       
        protected override void OnStarting()
        {
              this
                     .When(rule1())
                     .Do(() =&amp;gt;
                {
                   
                        MessageBox.Show(&amp;quot;buy done&amp;quot;);
                 });
        }

&lt;/code&gt;&lt;/pre&gt;
</content>
    <rights type="html">Copyright @ StockSharp Platform LLC 2010 - 2025</rights>
  </entry>
  <entry>
    <id>https://stocksharp.ru/posts/m/17844/</id>
    <title type="text">Коллеги, прошу помощи! Есть много условий на выставление и изменение(перерегистрация)заявок. Все раб...</title>
    <published>2012-03-29T19:35:59Z</published>
    <updated>2012-03-29T20:58:39Z</updated>
    <author>
      <name>Wetal</name>
      <uri>https://stocksharp.ru/users/28266/</uri>
      <email>info@stocksharp.ru</email>
    </author>
    <content type="html">&lt;p&gt;Коллеги, прошу помощи!
Есть много условий на выставление и изменение(перерегистрация)заявок. Все работает но в один момент заявка почему-то не выставляется. Понял что скорость анализа данных и выполнения условий мала.&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;
private void button1_Click(object sender, RoutedEventArgs e)
        {
            bool flag=false;
            Globals.Trader.QuotesChanged += depth =&amp;gt;
            {
                List&amp;lt;MarketDepthPair&amp;gt; t = Globals.Trader.GetMarketDepth(security).GetTopPairs(1).ToList();
                foreach (MarketDepthPair t1 in t)
                {
                    decimal spread = t1.Ask.Price - t1.Bid.Price;
                    if (условие 1)
                    {
                        if (  flag==false)
                        {
                            Dispatcher.BeginInvoke(new Action(() =&amp;gt;
                            {
                                
                                order_buy = new Order
                                 {
                                     Portfolio = Portfolio,
                                     Price = ...,
                                     Security = security,
                                     Volume = 1,
                                     Direction = OrderDirections.Buy,
                                 };
                                Globals.Trader.RegisterOrder(order_buy);
                                order_sell = new Order
                                {
                                    Portfolio = Portfolio,
                                    Price = ...,
                                    Security = security,
                                    Volume = 1,
                                    Direction = OrderDirections.Sell,
                                };
                                Globals.Trader.RegisterOrder(order_sell);
                            }));
                            flag = true; 
                        }
                        else if(order_buy.State == OrderStates.Done &amp;amp;&amp;amp; order_sell.State==OrderStates.Active) 
                        {
                            if (условие)
                            {
                                Dispatcher.BeginInvoke(new Action(() =&amp;gt;
                                {
                                    Globals.Trader.CancelOrder(order_sell);
                                    
                                    order_sell = new Order
                                    {
                                        Portfolio = Portfolio,
                                        Price = ....,
                                        Security = security,
                                        Volume = 1,
                                        Direction = OrderDirections.Sell,
                                    };
                                    Globals.Trader.RegisterOrder(order_sell);
                                }));
                            }
                            flag = true;
                        }
                        
                        else if (order_sell.State == OrderStates.Done &amp;amp;&amp;amp; order_buy.State == OrderStates.Active)
                        {
                            if (условие)
                            {
                                Dispatcher.BeginInvoke(new Action(() =&amp;gt;
                                {
                                    Globals.Trader.CancelOrder(order_buy);
                                    order_buy = new Order
                                    {
                                        Portfolio = Portfolio,
                                        Price = ....,
                                        Security = security,
                                        Volume = 1,
                                        Direction = OrderDirections.Buy,
                                    };
                                    Globals.Trader.RegisterOrder(order_buy);
                                }));
                                flag = true;
                            }
                        }
                        else if (order_sell.State == OrderStates.Done &amp;amp;&amp;amp; order_buy.State == OrderStates.Done)
                        {
                         
                            flag = false;
                        }
                        
                    }
                }
                
            };
            
        }

&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Понимаю, что if else - очень замедляет switch не подойдет, анализирую несколько переменных. Думаю создать события на каждое из условий. Может есть уже какие нибудь стандартизированные методы решения такой задачи?&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/17846/</id>
    <title type="text">На будущее, используйте теги {/code}, вместо поставьте []. Без них код трудно воспринять. Всю бизнес...</title>
    <published>2012-03-29T20:40:48Z</published>
    <updated>2012-03-29T20:40:48Z</updated>
    <author>
      <name>Moadip</name>
      <uri>https://stocksharp.ru/users/5973/</uri>
      <email>info@stocksharp.ru</email>
    </author>
    <content type="html">&lt;p code="csharp"&gt;На будущее, используйте теги  {/code}, вместо  поставьте []. Без них код трудно воспринять.&lt;/p&gt;
&lt;p&gt;Всю бизнес логику надо писать в классе наследованном от Strategy, а не в обработчике нажатия кнопки.&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;Думаю создать события на каждое из условий. Может есть уже какие нибудь стандартизированные методы решения такой задачи?
Используйте правила.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;pre&gt;&lt;code class="language-csharp"&gt;
            this
                .When()
                .Do();

&lt;/code&gt;&lt;/pre&gt;
</content>
    <rights type="html">Copyright @ StockSharp Platform LLC 2010 - 2025</rights>
  </entry>
</feed>