﻿<?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">QuikLua ReRegisterOrder Баг</title>
  <id>~/topic/8365/quiklua-reregisterorder-bag/</id>
  <rights type="text">Copyright @ StockSharp Platform LLC 2010 - 2025</rights>
  <updated>2026-04-16T05:48:00Z</updated>
  <logo>https://stocksharp.com/images/logo.png</logo>
  <link href="https://stocksharp.com/handlers/atom.ashx?category=topic&amp;id=8365" rel="self" type="application/rss+xml" />
  <entry>
    <id>https://stocksharp.com/posts/m/40294/</id>
    <title type="text">На каком-то этапе работы с СтокШарпом, тебе откроется одна простая истина - что всё надо переписыват...</title>
    <published>2017-07-06T10:19:22Z</published>
    <updated>2017-07-06T10:37:15Z</updated>
    <author>
      <name>Slepoy</name>
      <uri>https://stocksharp.com/users/820/</uri>
      <email>info@stocksharp.com</email>
    </author>
    <content type="html">На каком-то этапе работы с СтокШарпом, тебе откроется одна простая истина - что всё надо переписывать под себя. Создаёшь в боте отдельную либу, в которую постепенно переписываешь все методы, которые тебе необходимы. К примеру, твой метод  ReRegisterOrder(order, price, vol). На него есть исходники, которые ты просто копируешь в свою либу и правишь под свои нужды. К примеру, в твоём методе, после создания клона заявки вызывается метод  ReRegisterOrder(oldOrder, order) в котором обнаружишь нижеприведённый участок, где показано как они перерегистрируют стопы:&lt;br /&gt;&lt;b&gt;if (oldOrder.Type == OrderTypes.Conditional)&lt;br /&gt;{&lt;br /&gt;	this.CancelOrder(oldOrder);&lt;br /&gt;	this.RegisterOrder(newOrder);&lt;br /&gt;}&lt;/b&gt;&lt;br /&gt;То есть, тупо проверяют тип ордера, если он условный(т.е. стоп заявка) то просто отменяют старую и тут же регают новую. Код банален и работает. С обычными заявками, там код иной, гораздо сложнее. С  простыми заявками они создают там сообщение на переристрацию и т.п. Кстати, насколько мне известно, далеко не все биржевые площадки нативно поддерживают механизм переригистрации заявок. Вот этот сложный код и не робит ))). Нужен ли тебе сложный код который не робит? Я думаю, что нет. Так делай точно также как сделано со стопами, т.е. просто выпили проверку на тип заявки, т.е. выпили блок if  и введи проверку на снятие заявки:&lt;br /&gt;&lt;b&gt;1. Делаешь клон заявки, тупо скопируй строчку из их же метода: Order order = oldOrder.ReRegisterClone(new decimal?(price), new decimal?(volume));&lt;br /&gt;2. Снимаешь старую заявку: this.CancelOrder(oldOrder); &lt;br /&gt;3. Тут нужна проверка, о том что заявка снята, т.е. нужно подписаться на событие снятия и проверить снят ордер или нет&lt;br /&gt;4. Если проверка прошла успешно, то регаешь новый ордер: this.RegisterOrder(newOrder);&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;Тут четыре строки кода и это будет работать. Да, желательно всё это дело обезопасить в конструкции try-catch, но это необязательно. Всё будет робить и так. Вот такие дела. По-другому тут не выжить, ибо разработчики постоянно видоизменяют API и с каждым новым релизом API, у твоего бота будет что-то отваливаться. Надо всё переписывать под себя, ковыряясь в их исходинках ты сразу поймёшь насколько их код избыточен, запутан и сложен. Там такие цепочки связей и зависимостей, что мозг закипает. Неудивительно, что они раз за разом попадают на баги ))). Сами виноваты, правда расплачиваемся за это мы - простые пользователи.</content>
    <rights type="html">Copyright @ StockSharp Platform LLC 2010 - 2025</rights>
  </entry>
  <entry>
    <id>https://stocksharp.com/posts/m/40288/</id>
    <title type="text">При использовании ReRegisterOrder(order, price, vol) новая заявка встает как надо, но старая так и о...</title>
    <published>2017-07-05T11:38:51Z</published>
    <updated>2017-07-05T11:38:51Z</updated>
    <author>
      <name>v3Rtex</name>
      <uri>https://stocksharp.com/users/62061/</uri>
      <email>info@stocksharp.com</email>
    </author>
    <content type="html">При использовании ReRegisterOrder(order, price, vol) новая заявка встает как надо, но старая так и остается висеть, хотя должна удаляться. В итоге вместо движения одной заявки по стакану, в нем плодится целая орава неуправляемых заявок.&lt;br /&gt;В логе луа есть 2017/07/05 12:39:07.178|Error  |FixServer |System.InvalidOperationException: Операция является недопустимой из-за текущего состояния объекта.&lt;br /&gt;&lt;br /&gt;Что не так?&lt;br /&gt;&lt;br /&gt;Есть ли какие нибудь не закрытые методы для отправки собственных транзакций в квик, или все сообщение с квиком закрыто и можно пользоваться только готовыми функциями типа register,cancel итд?&lt;br /&gt;&lt;br /&gt;зы. версия билда 4.3.24&lt;br /&gt;кстати arqa недавно фиксила баг с move_orders в trans2quik, мб появились некие изменения в архитектуре и дело в этом?</content>
    <rights type="html">Copyright @ StockSharp Platform LLC 2010 - 2025</rights>
  </entry>
</feed>