﻿<?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">4.1 Проблема с ReRegisterOrder</title>
  <id>~/topic/2747/4_1-problema-s-reregisterorder/</id>
  <rights type="text">Copyright @ StockSharp Platform LLC 2010 - 2025</rights>
  <updated>2026-06-18T10:19:11Z</updated>
  <logo>https://stocksharp.com/images/logo.png</logo>
  <link href="https://stocksharp.com/handlers/atom.ashx?category=topic&amp;id=2747" rel="self" type="application/rss+xml" />
  <entry>
    <id>https://stocksharp.com/posts/m/25129/</id>
    <title type="text">Можно как-то развернуто написать как воспользоваться всеми 4мя режимами мува заявок? Спасибо. </title>
    <published>2013-04-03T18:17:41Z</published>
    <updated>2013-04-03T18:55:22Z</updated>
    <author>
      <name>FlashPlayer</name>
      <uri>https://stocksharp.com/users/16669/</uri>
      <email>info@stocksharp.com</email>
    </author>
    <content type="html">&lt;p&gt;Можно как-то развернуто написать как воспользоваться всеми 4мя режимами мува заявок? Спасибо.&lt;/p&gt;
</content>
    <rights type="html">Copyright @ StockSharp Platform LLC 2010 - 2025</rights>
  </entry>
  <entry>
    <id>https://stocksharp.com/posts/m/24207/</id>
    <title type="text">Михаил, привет. Ты имеешь ввиду вот это котирование? http://stocksharp.com/doc/html/24250c24-029c-4d...</title>
    <published>2013-02-25T03:28:24Z</published>
    <updated>2013-02-25T03:28:24Z</updated>
    <author>
      <name>Maxim</name>
      <uri>https://stocksharp.com/users/6182/</uri>
      <email>info@stocksharp.com</email>
    </author>
    <content type="html">&lt;p&gt;Михаил, привет.&lt;/p&gt;
&lt;p&gt;Ты имеешь ввиду вот это котирование?
&lt;a href="http://stocksharp.com/doc/html/24250c24-029c-4dbc-bc8b-4afde645e483.htm"&gt;http://stocksharp.com/doc/html/24250c24-029c-4dbc-bc8b-4afde645e483.htm&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Не могу понять, что мне нужно использовать из этого, если надо поменять заявку с объема 100 на 120?&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.com/posts/m/24197/</id>
    <title type="text">Maxim: Например, столкнулся с необходимостью делать в Плазе замену с режимом regime == 3. А он не сд...</title>
    <published>2013-02-24T07:42:41Z</published>
    <updated>2013-02-24T07:42:41Z</updated>
    <author>
      <name>Mikhail Sukhov</name>
      <uri>https://stocksharp.com/users/201/</uri>
      <email>info@stocksharp.com</email>
    </author>
    <content type="html">&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;&lt;a href="@message(24196)" rel="nofollow" target="_blank"&gt;Maxim&lt;/a&gt;:&lt;/strong&gt;
Например, столкнулся с необходимостью делать в Плазе замену с режимом regime == 3.
А он не сделан.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;Он сделан. Котирование работает через этот режим.&lt;/p&gt;
</content>
    <rights type="html">Copyright @ StockSharp Platform LLC 2010 - 2025</rights>
  </entry>
  <entry>
    <id>https://stocksharp.com/posts/m/24196/</id>
    <title type="text">Вопрос разработчикам: есть ли планы реализовать в PlazaTrader, а также в BaseTrader возможность зада...</title>
    <published>2013-02-24T05:05:57Z</published>
    <updated>2013-02-24T05:05:57Z</updated>
    <author>
      <name>Maxim</name>
      <uri>https://stocksharp.com/users/6182/</uri>
      <email>info@stocksharp.com</email>
    </author>
    <content type="html">&lt;p&gt;Вопрос разработчикам:
есть ли планы реализовать в PlazaTrader, а также в BaseTrader возможность задавать тип смены заявок?&lt;/p&gt;
&lt;p&gt;Например, столкнулся с необходимостью делать в Плазе замену с режимом regime == 3.
А он не сделан.&lt;/p&gt;
&lt;p&gt;Пока прикрутил костыли к текущей открытой версии.
Буду рад, если кто укажет на ошибки.
Пока не тестировал.
Возможно после тестов обнаружатся ошибки.&lt;/p&gt;
&lt;p&gt;Добавил PlazaReRegisterRegime.cs&lt;/p&gt;
&lt;pre&gt;&lt;code class="language-csharp"&gt;

/// &amp;lt;summary&amp;gt;
/// Режим замены заявок в Плазе-2
/// &amp;lt;/summary&amp;gt;
public enum PlazaReRegisterRegime
{
	/// &amp;lt;summary&amp;gt;
	/// 0 Не менять объёмы заявок
	/// &amp;lt;/summary&amp;gt;
	SetVolumeFromOldOrderBalance,

	/// &amp;lt;summary&amp;gt;
	/// 1 Изменить объёмы заявок
	/// &amp;lt;/summary&amp;gt;
	SetVolumeFromNewOrderVolume,

	/// &amp;lt;summary&amp;gt;
	/// 2 Снять старые заявки, в случае, если указанные новые объёмы совпадают с текущими объёмами в торговой системе – поставить заявки с новыми ценами
	/// &amp;lt;/summary&amp;gt;
	ReRegisterIfOldOrderBalanceAndNewOrderVolumeEquel,

	/// &amp;lt;summary&amp;gt;
	/// 3 Изменить объемы заявок с учетом сведенной части
	/// &amp;lt;/summary&amp;gt;
	SetVolumeFromNewOrderVolumeMinusMatchingVolume
}

&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;В PlazaTrader.cs добавил:&lt;/p&gt;
&lt;pre&gt;&lt;code class="language-csharp"&gt;

void encodeRegime(Order order, PlazaReRegisterRegime regime)
{
	if (regime == PlazaReRegisterRegime.SetVolumeFromOldOrderBalance)
		order.Volume = 0;
	else if (regime == PlazaReRegisterRegime.SetVolumeFromNewOrderVolume)
		order.Balance = -1;
	else if (regime == PlazaReRegisterRegime.ReRegisterIfOldOrderBalanceAndNewOrderVolumeEquel)
		order.Balance = -2;
	else if (regime == PlazaReRegisterRegime.SetVolumeFromNewOrderVolumeMinusMatchingVolume)
		order.Balance = -3;       
}

PlazaReRegisterRegime decodeRegime(Order order)
{
	if (order.Volume == 0)
		return PlazaReRegisterRegime.SetVolumeFromOldOrderBalance;
	else if (order.Balance == -1)
		return PlazaReRegisterRegime.SetVolumeFromNewOrderVolume;
	else if (order.Balance == -2)
		return PlazaReRegisterRegime.ReRegisterIfOldOrderBalanceAndNewOrderVolumeEquel;
	else if (order.Balance == -3)
		return PlazaReRegisterRegime.SetVolumeFromNewOrderVolumeMinusMatchingVolume;
	else
		return PlazaReRegisterRegime.SetVolumeFromNewOrderVolume;        
}

/// &amp;lt;summary&amp;gt;
/// Перерегистрировать пару заявок на бирже.
/// &amp;lt;/summary&amp;gt;
/// &amp;lt;param name=&amp;quot;oldOrder1&amp;quot;&amp;gt;Первая заявка, которую нужно снять.&amp;lt;/param&amp;gt;
/// &amp;lt;param name=&amp;quot;newOrder1&amp;quot;&amp;gt;Первая новая заявка, которую нужно зарегистрировать.&amp;lt;/param&amp;gt;
/// &amp;lt;param name=&amp;quot;oldOrder2&amp;quot;&amp;gt;Вторая заявка, которую нужно снять.&amp;lt;/param&amp;gt;
/// &amp;lt;param name=&amp;quot;newOrder2&amp;quot;&amp;gt;Вторая новая заявка, которую нужно зарегистрировать.&amp;lt;/param&amp;gt;
/// &amp;lt;param name=&amp;quot;regime&amp;quot;&amp;gt;Режим замены заявок в Плазе-2.&amp;lt;/param&amp;gt;
public void ReRegisterOrderPair(Order oldOrder1, Order newOrder1, Order oldOrder2, Order newOrder2, PlazaReRegisterRegime regime)
{
	encodeRegime(newOrder1, regime);

	encodeRegime(newOrder2, regime);

	base.ReRegisterOrderPair(oldOrder1, newOrder1, oldOrder2, newOrder2);  
}

/// &amp;lt;summary&amp;gt;
/// Перерегистрировать заявку на бирже.
/// &amp;lt;/summary&amp;gt;
/// &amp;lt;param name=&amp;quot;oldOrder&amp;quot;&amp;gt;Заявка, которую нужно снять.&amp;lt;/param&amp;gt;
/// &amp;lt;param name=&amp;quot;newOrder&amp;quot;&amp;gt;Новая заявка, которую нужно зарегистрировать.&amp;lt;/param&amp;gt;
/// &amp;lt;param name=&amp;quot;regime&amp;quot;&amp;gt;Режим замены заявок в Плазе-2.&amp;lt;/param&amp;gt;
public void ReRegisterOrder(Order oldOrder, Order newOrder, PlazaReRegisterRegime regime)
{
	encodeRegime(newOrder, regime);            

	base.ReRegisterOrder(oldOrder, newOrder);        
}


&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;В PlazaTrader.cs изменил методы:&lt;/p&gt;
&lt;pre&gt;&lt;code class="language-csharp"&gt;


/// &amp;lt;summary&amp;gt;
/// Перерегистрировать заявку на бирже.
/// &amp;lt;/summary&amp;gt;
/// &amp;lt;param name=&amp;quot;oldOrder&amp;quot;&amp;gt;Заявка, которую нужно снять.&amp;lt;/param&amp;gt;
/// &amp;lt;param name=&amp;quot;newOrder&amp;quot;&amp;gt;Новая заявка, которую нужно зарегистрировать.&amp;lt;/param&amp;gt;
protected override void OnReRegisterOrder(Order oldOrder, Order newOrder)
{
	// Определяем режим замены заявок
	PlazaReRegisterRegime regime = decodeRegime(newOrder);           

	// Продолжаем замену. Логика из оригинальной верисии коннектора.
	InitNewOrder(newOrder);

	var transaction = _transactionManager.Factory.CreateReRegister(oldOrder, newOrder);

	transaction
		.SetMoveMode(regime)
		.SetFirstOrderId(oldOrder.Id)
		.SetFirstVolume((int)newOrder.Volume)
		.SetFirstPrice(newOrder.Price)
		.SetFirstTransactionId(newOrder.TransactionId);

	_transactionManager.SendTransaction(transaction);
}

/// &amp;lt;summary&amp;gt;
/// Перерегистрировать пару заявок на бирже.
/// &amp;lt;/summary&amp;gt;
/// &amp;lt;param name=&amp;quot;oldOrder1&amp;quot;&amp;gt;Первая заявка, которую нужно снять.&amp;lt;/param&amp;gt;
/// &amp;lt;param name=&amp;quot;newOrder1&amp;quot;&amp;gt;Первая новая заявка, которую нужно зарегистрировать.&amp;lt;/param&amp;gt;
/// &amp;lt;param name=&amp;quot;oldOrder2&amp;quot;&amp;gt;Вторая заявка, которую нужно снять.&amp;lt;/param&amp;gt;
/// &amp;lt;param name=&amp;quot;newOrder2&amp;quot;&amp;gt;Вторая новая заявка, которую нужно зарегистрировать.&amp;lt;/param&amp;gt;
protected override void OnReRegisterOrderPair(Order oldOrder1, Order newOrder1, Order oldOrder2, Order newOrder2)
{
	// Определяем режим замены заявок
	PlazaReRegisterRegime regime1 = decodeRegime(newOrder1);        
	PlazaReRegisterRegime regime2 = decodeRegime(newOrder2);
	PlazaReRegisterRegime regime = regime1 == regime2 ? regime1 : PlazaReRegisterRegime.SetVolumeFromNewOrderVolume;     

	 // Продолжаем замену. Логика из оригинальной верисии коннектора.
	InitNewOrder(newOrder1);
	InitNewOrder(newOrder2);

	var transaction = _transactionManager.Factory.CreateReRegisterPair(oldOrder1, newOrder1, oldOrder2, newOrder2);

	transaction
		.SetMoveMode(regime)
		.SetFirstOrderId(oldOrder1.Id)
		.SetFirstVolume((int)newOrder1.Volume)
		.SetFirstPrice(newOrder1.Price)
		.SetFirstTransactionId(newOrder1.TransactionId)

		.SetSecondOrderId(oldOrder2.Id)
		.SetSecondVolume((int)newOrder2.Volume)
		.SetSecondPrice(newOrder2.Price)
		.SetSecondTransactionId(newOrder2.TransactionId);

	_transactionManager.SendTransaction(transaction);
}


&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;В Transaction.cs изменил метод:&lt;/p&gt;
&lt;pre&gt;&lt;code class="language-csharp"&gt;
/// &amp;lt;summary&amp;gt;
/// Установить режим перемещения заявок.
/// &amp;lt;/summary&amp;gt;
/// &amp;lt;param name=&amp;quot;regime&amp;quot;&amp;gt;Тип изменения объема заявок.&amp;lt;/param&amp;gt;
/// &amp;lt;returns&amp;gt;Транзакция.&amp;lt;/returns&amp;gt;
public Transaction SetMoveMode(PlazaReRegisterRegime regime)
{
	CheckType(Messages.FutureReRegister, Messages.OptionReRegister);

	return SetField(&amp;quot;regime&amp;quot;, (Int32)regime);
}

&lt;/code&gt;&lt;/pre&gt;
</content>
    <rights type="html">Copyright @ StockSharp Platform LLC 2010 - 2025</rights>
  </entry>
  <entry>
    <id>https://stocksharp.com/posts/m/24195/</id>
    <title type="text">FiNick скорей всего имел ввиду вот это место доки http://stocksharp.com/doc/html/M_StockSharp_Plaza_...</title>
    <published>2013-02-24T04:55:29Z</published>
    <updated>2013-02-24T04:55:29Z</updated>
    <author>
      <name>Maxim</name>
      <uri>https://stocksharp.com/users/6182/</uri>
      <email>info@stocksharp.com</email>
    </author>
    <content type="html">&lt;p&gt;FiNick скорей всего имел ввиду вот это место доки
&lt;a href="http://stocksharp.com/doc/html/M_StockSharp_Plaza_PlazaTrader_OnReRegisterOrder.htm"&gt;http://stocksharp.com/doc/html/M_StockSharp_Plaza_PlazaTrader_OnReRegisterOrder.htm&lt;/a&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.com/posts/m/19424/</id>
    <title type="text">Режим 0 задаётся если задать нулевой объём у новой заявки. Цитата из доки: Если объём не задан, меня...</title>
    <published>2012-05-29T06:54:52Z</published>
    <updated>2012-05-29T07:18:45Z</updated>
    <author>
      <name>Alexander</name>
      <uri>https://stocksharp.com/users/2826/</uri>
      <email>info@stocksharp.com</email>
    </author>
    <content type="html">&lt;p&gt;Режим 0 задаётся если задать нулевой объём у новой заявки.&lt;/p&gt;
&lt;p&gt;Цитата из доки:&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;Если объём не задан, меняется только цена.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;А вот это то что нужно, спасибо!
Кстати, перед тем, как писать на форум, я просматривал доки на этот вопрос. В разделе &amp;quot;Управление заявками -&amp;gt; Замена заявок&amp;quot; этого нет. В описании самого метода ReRegisterOrder тоже нет.&lt;/p&gt;
&lt;p&gt;В доке есть:
&lt;a href="http://stocksharp.com/doc/html/M_StockSharp_Algo_BaseTrader_ReRegisterOrder_1.htm"&gt;BaseTrader.ReRegisterOrder&lt;/a&gt;&lt;/p&gt;
</content>
    <rights type="html">Copyright @ StockSharp Platform LLC 2010 - 2025</rights>
  </entry>
  <entry>
    <id>https://stocksharp.com/posts/m/19421/</id>
    <title type="text">Режим 0 задаётся если задать нулевой объём у новой заявки. Цитата из доки: Если объём не задан, меня...</title>
    <published>2012-05-29T06:25:20Z</published>
    <updated>2012-05-29T06:25:20Z</updated>
    <author>
      <name>FiNick</name>
      <uri>https://stocksharp.com/users/6053/</uri>
      <email>info@stocksharp.com</email>
    </author>
    <content type="html">&lt;p&gt;Режим 0 задаётся если задать нулевой объём у новой заявки.&lt;/p&gt;
&lt;p&gt;Цитата из доки:&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;Если объём не задан, меняется только цена.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;А вот это то что нужно, спасибо!
Кстати, перед тем, как писать на форум, я просматривал доки на этот вопрос. В разделе &amp;quot;Управление заявками -&amp;gt; Замена заявок&amp;quot; этого нет. В описании самого метода ReRegisterOrder тоже нет.&lt;/p&gt;
</content>
    <rights type="html">Copyright @ StockSharp Platform LLC 2010 - 2025</rights>
  </entry>
  <entry>
    <id>https://stocksharp.com/posts/m/19419/</id>
    <title type="text">FiNick: По-моему мне нужен regime == 0, посмотрите ссылку http://forum.rts.ru/viewtopic.asp?t=17354 ...</title>
    <published>2012-05-28T21:26:57Z</published>
    <updated>2012-05-28T21:27:53Z</updated>
    <author>
      <name>Alexander</name>
      <uri>https://stocksharp.com/users/2826/</uri>
      <email>info@stocksharp.com</email>
    </author>
    <content type="html">&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;&lt;a href="@message(19418)" rel="nofollow" target="_blank"&gt;FiNick&lt;/a&gt;:&lt;/strong&gt;
По-моему мне нужен regime == 0, посмотрите ссылку &lt;a href="http://forum.rts.ru/viewtopic.asp?t=17354" rel="nofollow" target="_blank"&gt;http://forum.rts.ru/viewtopic.asp?t=17354&lt;/a&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;Режим 0 задаётся если задать нулевой объём у новой заявки.&lt;/p&gt;
&lt;p&gt;Цитата из доки:&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;Если объём не задан, меняется только цена.&lt;/p&gt;
&lt;/blockquote&gt;
</content>
    <rights type="html">Copyright @ StockSharp Platform LLC 2010 - 2025</rights>
  </entry>
  <entry>
    <id>https://stocksharp.com/posts/m/19418/</id>
    <title type="text">По-моему мне нужен regime == 0, посмотрите ссылку http://forum.rts.ru/viewtopic.asp?t=17354 </title>
    <published>2012-05-28T21:24:25Z</published>
    <updated>2012-05-28T21:24:25Z</updated>
    <author>
      <name>FiNick</name>
      <uri>https://stocksharp.com/users/6053/</uri>
      <email>info@stocksharp.com</email>
    </author>
    <content type="html">&lt;p&gt;По-моему мне нужен regime == 0, посмотрите ссылку &lt;a href="http://forum.rts.ru/viewtopic.asp?t=17354" rel="nofollow" target="_blank"&gt;http://forum.rts.ru/viewtopic.asp?t=17354&lt;/a&gt;&lt;/p&gt;
</content>
    <rights type="html">Copyright @ StockSharp Platform LLC 2010 - 2025</rights>
  </entry>
  <entry>
    <id>https://stocksharp.com/posts/m/19417/</id>
    <title type="text">regime == 3 сейчас никак не используется и не задаётся. именно он вам нужен? </title>
    <published>2012-05-28T20:37:21Z</published>
    <updated>2012-05-28T20:37:21Z</updated>
    <author>
      <name>Alexander</name>
      <uri>https://stocksharp.com/users/2826/</uri>
      <email>info@stocksharp.com</email>
    </author>
    <content type="html">&lt;p&gt;regime == 3 сейчас никак не используется и не задаётся.
именно он вам нужен?&lt;/p&gt;
</content>
    <rights type="html">Copyright @ StockSharp Platform LLC 2010 - 2025</rights>
  </entry>
  <entry>
    <id>https://stocksharp.com/posts/m/19416/</id>
    <title type="text">Помните у нас неправильно работал ReRegisterOrder? Так вот, я поставил версию 4.1 (в которой вроде ч...</title>
    <published>2012-05-28T19:57:29Z</published>
    <updated>2012-05-28T19:57:29Z</updated>
    <author>
      <name>FiNick</name>
      <uri>https://stocksharp.com/users/6053/</uri>
      <email>info@stocksharp.com</email>
    </author>
    <content type="html">&lt;p&gt;Помните у нас неправильно работал ReRegisterOrder? Так вот, я поставил версию 4.1 (в которой вроде чинили багу), и не понял как этим пользоваться.
Собственно, вопрос: как послать команду на перерегистрацию так, чтобы биржа сама выставила обьем новой заявки (равный остатку по старой заявке)?
Напомню, что мы не знаем остаток по заявке в произвольный момент времени, только биржа точно знает этот остаток.&lt;/p&gt;
</content>
    <rights type="html">Copyright @ StockSharp Platform LLC 2010 - 2025</rights>
  </entry>
</feed>