﻿<?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">S# 4.1.18, не приходит OrderRegistered при тестировании в EmulationTrader</title>
  <id>~/topic/3967/s-4_1_18-ne-prihodit-orderregistered-pri-testirovanii-v-emulationtrader/</id>
  <rights type="text">Copyright @ StockSharp Platform LLC 2010 - 2025</rights>
  <updated>2026-06-24T19:01:21Z</updated>
  <logo>https://stocksharp.ru/images/logo.png</logo>
  <link href="https://stocksharp.ru/handlers/atom.ashx?category=topic&amp;id=3967" rel="self" type="application/rss+xml" />
  <entry>
    <id>https://stocksharp.ru/posts/m/27368/</id>
    <title type="text">UPD. Сейчас прогнал на старых версиях: в версии S# 4.1.15 регистрация заявок в MarketQuotingStrategy...</title>
    <published>2013-09-10T15:19:54Z</published>
    <updated>2013-09-10T15:19:54Z</updated>
    <author>
      <name>pafnuty</name>
      <uri>https://stocksharp.ru/users/6151/</uri>
      <email>info@stocksharp.ru</email>
    </author>
    <content type="html">&lt;p&gt;&lt;strong&gt;UPD.&lt;/strong&gt; Сейчас прогнал на старых версиях: в версии S# 4.1.15 регистрация заявок в MarketQuotingStrategy работает нормально (выставление заявок через RegisterOrder не пробовал). Начиная с 4.1.16.1 не работает.&lt;/p&gt;
</content>
    <rights type="html">Copyright @ StockSharp Platform LLC 2010 - 2025</rights>
  </entry>
  <entry>
    <id>https://stocksharp.ru/posts/m/27367/</id>
    <title type="text">Добрый день! Прошу помощи. У меня здесь даже две проблемы. **1.**Просто не приходит OrderRegistered ...</title>
    <published>2013-09-10T14:29:26Z</published>
    <updated>2013-09-10T14:29:26Z</updated>
    <author>
      <name>pafnuty</name>
      <uri>https://stocksharp.ru/users/6151/</uri>
      <email>info@stocksharp.ru</email>
    </author>
    <content type="html">&lt;p&gt;Добрый день!
Прошу помощи. У меня здесь даже две проблемы.&lt;/p&gt;
&lt;p&gt;**1.**Просто не приходит OrderRegistered в стратегию:&lt;/p&gt;
&lt;pre&gt;&lt;code class="language-csharp"&gt;   
    protected override void OnStarted()
    {
      //  настраиваем получение данных,
      this.Trader.MarketDepthsChanged += (depths) =&amp;gt;
        {
          depths.ForEach(depth =&amp;gt;
          {
            if (depth.Security.Equals(this.Security))
              ProcessDepth(depth);
          });
        };

      this.OrderRegistered += (order) =&amp;gt;
      {
        Chart_DrawOrder(order);
      };
      this.OrderRegisterFailed += (o) =&amp;gt;
      {
        this._Log.Error(this.Name, &amp;quot;Order registering failed: &amp;quot; + o.Error.ToString());
      };
      this.NewMyTrades += (trades) =&amp;gt;
      {
        trades.ForEach((t) =&amp;gt; Chart_DrawTrade(t.Trade));
      };

      //  workaround
      this.Trader.NewOrders += (orders) =&amp;gt;
        {
          orders.ForEach((o) =&amp;gt; Chart_DrawOrder(o));
        };


      base.OnStarted();
    }

&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Здесь я получаю MarketDepthsChanged, где в обработчике ProcessDepth() делаю такую заявку:&lt;/p&gt;
&lt;pre&gt;&lt;code class="language-csharp"&gt;
      var order = this.CreateOrder(dir, depth.BestPair.MiddlePrice, 1); // (здесь я пробовал цену двигать и вверх, и вниз от MiddlePrice на много пунктов, но ничего не менялось)
      this.RegisterOrder(order);

&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;После чего я получаю только событие NewMyTrades, а OrderRegistered или OrderRegisterFailed не идут. :-\&lt;/p&gt;
&lt;p&gt;Вместе с тем исправно приходят и другие события, если на них подписаться:&lt;/p&gt;
&lt;pre&gt;&lt;code class="language-csharp"&gt;
      strategy.PnLChanged += () =&amp;gt;
      {
        this.GuiAsync(() =&amp;gt; chartCurveItems.Add(new EquityData { Time = strategy.GetMarketTime(), Value = strategy.PnL, }));
      };
      strategy.PositionChanged += () =&amp;gt;
      {
        this.GuiAsync(() =&amp;gt; chartPosItems.Add(new EquityData { Time = strategy.GetMarketTime(), Value = strategy.Position }));
      };

&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;В логах видно, что позиция изменяется (все заявки Sell/Buy проходят одинаковый жизненный цикл):&lt;/p&gt;
&lt;pre&gt;&lt;code class="language-plain"&gt;
...
2013.09.10 17:49:54 (Info) [PriceTimeAverage] 22.08.2013 10:00:28 Регистрация новой Limit (0x24CBD2A) заявки на Buy с ценой 129650 и объемом 1. 
2013.09.10 17:49:54 (Info) [PriceTimeAverage] 22.08.2013 10:00:28 Правило 'Полное исполнение  64190751/0 (0x1934CBE)'. Подписалось на события.
2013.09.10 17:49:54 (Info) [PriceTimeAverage] 22.08.2013 10:00:28 Правило 'Отмена заявки  64190751/0 (0x1CC1659)'. Подписалось на события.
2013.09.10 17:49:54 (Info) [PriceTimeAverage] 22.08.2013 10:00:28 Правило 'Ошибка регистрации заявки  64190751/0 (0x270F9F2)'. Подписалось на события.
2013.09.10 17:49:54 (Info) [PriceTimeAverage] 22.08.2013 10:00:28 Новая Buy сделка 1 по цене 129560 на 1 заявки 64190751.
2013.09.10 17:49:54 (Info) [PriceTimeAverage] 22.08.2013 10:00:28 Новая позиция: test account-RIU3@FORTS=1.
2013.09.10 17:49:54 (Info) [PriceTimeAverage] 22.08.2013 10:00:28 Правило 'Отмена заявки  64190751/0 (0x1CC1659) OR Полное исполнение  64190751/0 (0x1934CBE) OR Ошибка регистрации заявки  64190751/0 (0x270F9F2)'. Активация.
2013.09.10 17:49:54 (Info) [PriceTimeAverage] 22.08.2013 10:00:28 Заявка 64190751 больше не активна.
2013.09.10 17:49:54 (Info) [PriceTimeAverage] 22.08.2013 10:00:28 Правило 'Отмена заявки  64190751/0 (0x1CC1659) OR Полное исполнение  64190751/0 (0x1934CBE) OR Ошибка регистрации заявки  64190751/0 (0x270F9F2)'. Удаляется.
2013.09.10 17:49:54 (Info) [PriceTimeAverage] 22.08.2013 10:00:28 Правило 'Отмена заявки  64190751/0 (0x1CC1659)'. Освободило ресурсы.
2013.09.10 17:49:54 (Info) [PriceTimeAverage] 22.08.2013 10:00:28 Правило 'Полное исполнение  64190751/0 (0x1934CBE)'. Освободило ресурсы.
2013.09.10 17:49:54 (Info) [PriceTimeAverage] 22.08.2013 10:00:28 Правило 'Ошибка регистрации заявки  64190751/0 (0x270F9F2)'. Освободило ресурсы.
2013.09.10 17:49:54 (Info) [PriceTimeAverage] 22.08.2013 10:00:28 Правило 'Отмена заявки  64190751/0 (0x1CC1659) OR Полное исполнение  64190751/0 (0x1934CBE) OR Ошибка регистрации заявки  64190751/0 (0x270F9F2)'. Освободило ресурсы.
2013.09.10 17:49:54 (Info) [PriceTimeAverage] 22.08.2013 10:00:28 Правило 'Отмена заявки  64190751/0 (0x1CC1659) OR Полное исполнение  64190751/0 (0x1934CBE) OR Ошибка регистрации заявки  64190751/0 (0x270F9F2)'. Удаление.
...

&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;**2.**Если же заявки кидать из дочерней стратегии MarketQuotingStrategy, то постоянно приходит OrderRegisterFailed, где &amp;quot;Элемент с тем же ключом уже был добавлен.&amp;quot;:&lt;/p&gt;
&lt;pre&gt;&lt;code class="language-plain"&gt;
22.08.2013 10:00:28 Заявка 0 (0x2BFF0FC) не была принята по причине System.ArgumentException: Элемент с тем же ключом уже был добавлен.
   в System.ThrowHelper.ThrowArgumentException(ExceptionResource resource)
   в System.Collections.Generic.Dictionary`2.Insert(TKey key, TValue value, Boolean add)
   в System.Collections.Generic.Dictionary`2.Add(TKey key, TValue value)
   в Ecng.Collections.SynchronizedDictionary`2.Add(TKey key, TValue value)
   в StockSharp.Algo.Slippage.SlippageManager.ReRegistering(Order oldOrder, Order newOrder)
   в StockSharp.Algo.Strategies.Strategy.ReRegisterSlippage(Order oldOrder, Order newOrder)
   в StockSharp.Algo.Strategies.Strategy.#=qbIRUWiEU8CQqWDdjRkfgkvfps6OAx7vD2Kqx82Rxd2I=(Order #=qKmmNADXEA1y6G4xj6oHNDA==, Order #=qRatAMf_6Pq77ALgggiLSJg==)
   в StockSharp.Algo.Strategies.Strategy.#=qnMkTDK$vgFXAHD_jnQqUoemJ0xATFxaqCLg1EscWz7E=(Order #=qDdHQIfKqKsvs3l4L2CQFkw==, Order #=q93_Szosd58yZODoC0qE$DA==, Action`2 #=qILlzwmip4x798LunUOS2Uw==).

&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Дочернюю стратегию создаю так:&lt;/p&gt;
&lt;pre&gt;&lt;code class="language-csharp"&gt;
      var strategyChild = new MarketQuotingStrategy(dir, 1) { PriceOffset = 10 };
      strategyChild.LogLevel = LogLevels.Error;
      strategyChild.WaitAllTrades = true;
      strategyChild.OrderRegistered += (order) =&amp;gt; { 
        Chart_DrawOrder(order); 
      };
      this.OrderRegisterFailed += (o) =&amp;gt; {
        this._Log.Error(this.Name, &amp;quot;Order registering failed: &amp;quot; + o.Error.ToString());
      };
      strategyChild.NewMyTrades += (trades) =&amp;gt;
      {
        trades.ForEach((t) =&amp;gt; Chart_DrawTrade(t.Trade));
      };

      this.ChildStrategies.Add(strategyChild);    

&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Здесь приходят сообщения NewMyTrades и OrderRegisterFailed, и у родительской стратегии приходят PnLChanged и PositionChanged.
OrderRegistered не случается ни разу.
На какой-то предыдущей версии S# этот код работал, но я не помню, на какой именно.&lt;/p&gt;
</content>
    <rights type="html">Copyright @ StockSharp Platform LLC 2010 - 2025</rights>
  </entry>
</feed>