﻿<?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/3911/bag-s-sobytiyami-orderov-esli-vystavlyat-ih-rukami-v-kvike/</id>
  <rights type="text">Copyright @ StockSharp Platform LLC 2010 - 2025</rights>
  <updated>2026-04-07T12:06:22Z</updated>
  <logo>https://stocksharp.com/images/logo.png</logo>
  <link href="https://stocksharp.com/handlers/atom.ashx?category=topic&amp;id=3911" rel="self" type="application/rss+xml" />
  <entry>
    <id>https://stocksharp.com/posts/m/27430/</id>
    <title type="text">Уважаемые разработчики! Пофиксите, пожалуйста, багу! Ведь даже transactionId каждый раз новый получа...</title>
    <published>2013-09-12T15:37:42Z</published>
    <updated>2013-09-12T15:38:52Z</updated>
    <author>
      <name>Den</name>
      <uri>https://stocksharp.com/users/6003/</uri>
      <email>info@stocksharp.com</email>
    </author>
    <content type="html">Уважаемые разработчики!&lt;br /&gt;&lt;br /&gt;Пофиксите, пожалуйста, багу! &lt;br /&gt;Ведь даже transactionId каждый раз новый получается и workaround не написать...&lt;br /&gt;&lt;br /&gt;Фикс - это один if:&lt;br /&gt;&lt;br /&gt;&lt;div class="code"&gt;&lt;strong&gt;Code&lt;/strong&gt;&lt;div class="innercode"&gt;&lt;pre class="brush:csharp"&gt;
			
var isNew = false;

Order order = _cache.TryGetOrder(security, id);
                        
if (order == null) 
{

			order = _cache.GetOrder(security, id, key =&amp;gt;
			{
				isNew = true;

				var o = createOrder(key);

				if (o == null)
					throw new InvalidOperationException(&amp;quot;Заявка под номером {0} не была создана.&amp;quot;.Put(id));

				o.LatencyRegistration = o.GetLatency(true);

				o.Trader = this;

				if (o.ExtensionInfo == null)
					o.ExtensionInfo = new Dictionary&amp;lt;object, object&amp;gt;();

				return o;
			});
}                        
var isChanged = changeOrder(order);

&lt;/pre&gt;
&lt;/div&gt;&lt;/div&gt;</content>
    <rights type="html">Copyright @ StockSharp Platform LLC 2010 - 2025</rights>
  </entry>
  <entry>
    <id>https://stocksharp.com/posts/m/27313/</id>
    <title type="text">Нашел где надо пофиксить багу. BaseTrader, метод protected Order GetOrder(Security security, long id...</title>
    <published>2013-09-05T11:04:10Z</published>
    <updated>2013-09-05T11:35:24Z</updated>
    <author>
      <name>Den</name>
      <uri>https://stocksharp.com/users/6003/</uri>
      <email>info@stocksharp.com</email>
    </author>
    <content type="html">Нашел где надо пофиксить багу. &lt;br /&gt;&lt;b&gt;BaseTrader&lt;/b&gt;, метод &lt;b&gt;protected Order GetOrder(Security security, long id, Func&amp;lt;long, Order&amp;gt; createOrder, Func&amp;lt;Order, bool&amp;gt; changeOrder)&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Всегда присваивается &lt;b&gt;isNew = true&lt;/b&gt;:&lt;br /&gt;&lt;br /&gt;&lt;div class="code"&gt;&lt;strong&gt;Code&lt;/strong&gt;&lt;div class="innercode"&gt;&lt;pre class="brush:csharp"&gt;
			var order = _cache.GetOrder(security, id, key =&amp;gt;
			{
				isNew = true;

				var o = createOrder(key);

				if (o == null)
					throw new InvalidOperationException(&amp;quot;Заявка под номером {0} не была создана.&amp;quot;.Put(id));

				o.LatencyRegistration = o.GetLatency(true);

				o.Trader = this;

				if (o.ExtensionInfo == null)
					o.ExtensionInfo = new Dictionary&amp;lt;object, object&amp;gt;();

				return o;
			});

			var isChanged = changeOrder(order);
&lt;/pre&gt;
&lt;/div&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;Далее идет проверка, которая ВСЕГДА будет кидать NewOrder:&lt;br /&gt;&lt;br /&gt;&lt;div class="code"&gt;&lt;strong&gt;Code&lt;/strong&gt;&lt;div class="innercode"&gt;&lt;pre class="brush:csharp"&gt;
			if (isNew)
			{
				if (order.TransactionId != 0)
				{
					AddOrderByTransactionId(order);
				}

				RaiseNewOrder(order);
			}
			else if (isChanged)
				RaiseOrderChanged(order);

&lt;/pre&gt;
&lt;/div&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;Для фикса видимо нужно сначала поискать ордер в кэше, и только если его нет создавать...</content>
    <rights type="html">Copyright @ StockSharp Platform LLC 2010 - 2025</rights>
  </entry>
  <entry>
    <id>https://stocksharp.com/posts/m/27098/</id>
    <title type="text">S# 4.1.17 Quik 6.7.3.2 Настройки трейдера: // включаем асинхронный режим (не ждем Order.Id от биржи)...</title>
    <published>2013-08-22T16:30:07Z</published>
    <updated>2013-08-23T18:47:45Z</updated>
    <author>
      <name>Den</name>
      <uri>https://stocksharp.com/users/6003/</uri>
      <email>info@stocksharp.com</email>
    </author>
    <content type="html">S# 4.1.17&lt;br /&gt;Quik 6.7.3.2&lt;br /&gt;Настройки трейдера:&lt;br /&gt;&lt;div class="code"&gt;&lt;strong&gt;Code&lt;/strong&gt;&lt;div class="innercode"&gt;&lt;br /&gt;// включаем асинхронный режим (не ждем Order.Id от биржи)&lt;br /&gt;   this.Trader.IsAsyncMode = true;&lt;br /&gt;&lt;br /&gt;// включаем поддержку режима ручных заявок &lt;br /&gt;   this.Trader.SupportManualOrders = true;&lt;br /&gt;&lt;/div&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;Выставляю руками заявку в стакан (заведомо неисполнимую, остается висеть в стакане).&lt;br /&gt;Корректно прилетает &lt;b&gt;NewOrders&lt;/b&gt;. У ордера State: Active&lt;br /&gt;&lt;br /&gt;Снимаю руками заявку.&lt;br /&gt;Опять прилетает &lt;b&gt;NewOrders&lt;/b&gt;. У ордера State: Done;  Cancelled: True&lt;br /&gt;Событие &lt;b&gt;OrdersChanged &lt;/b&gt;не приходит...&lt;br /&gt;&lt;br /&gt;Если ордер исполняется частично тоже прилетает &lt;b&gt;NewOrders&lt;/b&gt; с Partially: True и правильным балансом&lt;br /&gt;&lt;br /&gt;В случает когда ордер исполняется опять прилетает &lt;b&gt;NewOrders&lt;/b&gt; с Matched: True  Balance: 0  State: Done&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;P.S. для &lt;b&gt;стоп&lt;/b&gt;-ордеров, выставленных руками в квике, все работает правильно...</content>
    <rights type="html">Copyright @ StockSharp Platform LLC 2010 - 2025</rights>
  </entry>
</feed>