﻿<?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/4720/oshibka-pri-otmene-zayavki/</id>
  <rights type="text">Copyright @ StockSharp Platform LLC 2010 - 2025</rights>
  <updated>2026-04-19T19:33:03Z</updated>
  <logo>https://stocksharp.com/images/logo.png</logo>
  <link href="https://stocksharp.com/handlers/atom.ashx?category=topic&amp;id=4720" rel="self" type="application/rss+xml" />
  <entry>
    <id>https://stocksharp.com/posts/m/31621/</id>
    <title type="text"> Состояние Done согласно документации выставляется, когда заявка полностью удовлетворена или снята. ...</title>
    <published>2014-09-09T15:20:16Z</published>
    <updated>2014-09-09T15:23:03Z</updated>
    <author>
      <name>pma37592</name>
      <uri>https://stocksharp.com/users/50555/</uri>
      <email>info@stocksharp.com</email>
    </author>
    <content type="html">&lt;div class="quote"&gt;&lt;span class="quotetitle"&gt;VirKato &lt;a href="https://stocksharp.com/posts/m/31620/" class="quote_nav"&gt;&lt;/a&gt;&lt;/span&gt;&lt;div class="innerquote"&gt;&lt;br /&gt;Состояние Done согласно документации выставляется, когда заявка полностью удовлетворена или снята. Чтож вы с ней еще хотите сделать?&lt;br /&gt;&lt;/div&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;Проблема в том, что вызывается не то событие об ошибке, а в некоторых случаях вообще не вызывается.&lt;br /&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;

...
order.WhenMatched().Do(_OrderMatched).Apply(this);
...

private void _OrderMatched(Order order)
{
 var msg = String.Format(&amp;quot;[OrderMatched]: Заявка полностью исполнена: {0}; ThreadID: {1}; IsMatched={2}; IsMatchedEmpty={3}; IsMatchedPartially={4}; Vol={5}; Bal={6}; State={7}&amp;quot;,
        order.Id, Thread.CurrentThread.ManagedThreadId, order.IsMatched(), order.IsMatchedEmpty(), order.IsMatchedPartially(),
        order.Volume, order.Balance, order.State);
      Logs.LogMsg(msg);
      this.AddInfoLog(msg);

      CancelOrder(order);
      msg = &amp;quot;[OrderMatched]: Заявку отменили&amp;quot;;
      Logs.LogMsg(msg);
      this.AddInfoLog(msg);
}
&lt;/pre&gt;
&lt;/div&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;То лог будет, таким&lt;br /&gt;&lt;div class='spoilertitle'&gt;&lt;input type='button' value='Show spoiler' class='btn btn-primary' onclick="toggleSpoiler(this, 'spolier_e9db0276a1e74bada3890cd9ac1fba5f');" title='Show spoiler' /&gt;&lt;/div&gt;&lt;div class='spoilerbox' id='spolier_e9db0276a1e74bada3890cd9ac1fba5f' style='display:none'&gt;&lt;br /&gt;Имя	Время	Тип	Сообщение&lt;br /&gt;OCOS_RIU4@FORTS_SPBFUT00J13	09.09.2014 19:08:12	Info	Стратегия запущена. [0,-1]. Позиция 0.&lt;br /&gt;OCOS_RIU4@FORTS_SPBFUT00J13	09.09.2014 19:08:25	Info	Регистрация новой Limit (0x228E01D) заявки на Buy с ценой 125170 и объемом 2. &lt;br /&gt;OCOS_RIU4@FORTS_SPBFUT00J13	09.09.2014 19:08:25	Info	Заявка ID=0; TrasID=68866896; IsMatched=False; IsMatchedEmpty=True; IsMatchedPartially=False; Vol=2; Bal=2; State=Pending&lt;br /&gt;OCOS_RIU4@FORTS_SPBFUT00J13	09.09.2014 19:08:25	Info	Отмена заявки 68866896 (0x228E01D).&lt;br /&gt;OCOS_RIU4@FORTS_SPBFUT00J13	09.09.2014 19:08:25	Info	Заявку отменили&lt;br /&gt;OCOS_RIU4@FORTS_SPBFUT00J13	09.09.2014 19:08:25	Error	Заявка 68866896 (0x228E01D) не была принята по причине System.InvalidOperationException: Ошибка снятия заявки 0. Текст &amp;#39;vy ne mozhete snyat&amp;#39; dannuyu zayavku&amp;#39;..&lt;br /&gt;OCOS_RIU4@FORTS_SPBFUT00J13	09.09.2014 19:08:25	Info	[_OrderFailed]: Ошибка при регистрации заявки: 0; ThreadID: 15; Ошибка: System.InvalidOperationException: Ошибка снятия заявки 0. Текст &amp;#39;vy ne mozhete snyat&amp;#39; dannuyu zayavku&amp;#39;.; IsMatched=False; IsMatchedEmpty=True; IsMatchedPartially=False; Vol=2; Bal=2; State=Pending&lt;br /&gt;OCOS_RIU4@FORTS_SPBFUT00J13	09.09.2014 19:08:25	Info	Заявка 68866896 (0x228E01D) больше не активна.&lt;br /&gt;OCOS_RIU4@FORTS_SPBFUT00J13	09.09.2014 19:08:25	Info	Новая позиция: SPBFUT00J13-RIU4@FORTS=2.&lt;br /&gt;OCOS_RIU4@FORTS_SPBFUT00J13	09.09.2014 19:08:25	Info	Новая Buy сделка 115716930 по цене 125170 на 1 заявки 68866896.&lt;br /&gt;OCOS_RIU4@FORTS_SPBFUT00J13	09.09.2014 19:08:25	Info	Новая Buy сделка 115716931 по цене 125170 на 1 заявки 68866896.&lt;br /&gt;OCOS_RIU4@FORTS_SPBFUT00J13	09.09.2014 19:08:25	Info	[_OrderMatched]: Заявка полностью исполнена: 2442481882; ThreadID: 15; IsMatched=True; IsMatchedEmpty=False; IsMatchedPartially=False; Vol=2; Bal=0; State=Done&lt;br /&gt;OCOS_RIU4@FORTS_SPBFUT00J13	09.09.2014 19:08:25	Warning	Для заявки 68866896 (0x228E01D) уже был послан сигнал на отмену.&lt;br /&gt;OCOS_RIU4@FORTS_SPBFUT00J13	09.09.2014 19:08:25	Info	[_OrderMatched]: Заявку отменили&lt;br /&gt;OCOS_RIU4@FORTS_SPBFUT00J13	09.09.2014 19:08:25	Info	Заявка 68866896 (0x228E01D) больше не активна.&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;Вообще не вызывается ничего, получается ошибка - отмена уже не существующего ордера. При этом запрос на отмену отсылается, но квик сообщает,&lt;br /&gt;что не может отменить заявку.&lt;br /&gt;Возникает вопрос: если все же отменяем заявку, которая на бирже уже исполнилась, а квик эту информацию еще не получил.&lt;br /&gt;Будет вызвано сообщение об ошибке WhenCancelFailed?</content>
    <rights type="html">Copyright @ StockSharp Platform LLC 2010 - 2025</rights>
  </entry>
  <entry>
    <id>https://stocksharp.com/posts/m/31620/</id>
    <title type="text">присоединяюсь, 2014/09/09 15:53:25.451| |QuikTrader|OrderCancelFailed: 52681380/2442218035 Продажа Ц...</title>
    <published>2014-09-09T14:54:12Z</published>
    <updated>2014-09-09T14:57:05Z</updated>
    <author>
      <name>VirKato</name>
      <uri>https://stocksharp.com/users/460/</uri>
      <email>info@stocksharp.com</email>
    </author>
    <content type="html">&lt;div class="quote"&gt;&lt;span class="quotetitle"&gt;Andrii &lt;a href="https://stocksharp.com/posts/m/31618/" class="quote_nav"&gt;&lt;/a&gt;&lt;/span&gt;&lt;div class="innerquote"&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:plain"&gt;
2014/09/09 15:53:25.451|       |QuikTrader|OrderCancelFailed: 52681380/2442218035 Продажа Цена=1152.6 Объем=1 [b]Сост=Done[/b] Бал=0 
System.InvalidOperationException: Ошибка снятия заявки 2442218035. Текст &amp;#39;vy ne mozhete snyat&amp;#39; dannuyu zayavku&amp;#39;.&lt;/pre&gt;
&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;Состояние Done согласно документации выставляется, когда заявка полностью удовлетворена или снята. Чтож вы с ней еще хотите сделать?&lt;br /&gt;&lt;br /&gt;&lt;div class="quote"&gt;&lt;span class="quotetitle"&gt;pma37592&lt;/span&gt;&lt;div class="innerquote"&gt;&lt;br /&gt;Есть такой код. В нем в стратегии выставляем заявку, а потом сразу же отменяем.&lt;br /&gt;&lt;/div&gt;&lt;/div&gt;&lt;br /&gt;На сколько - сразу: по заявке успевает прийти биржевой ID? Судя по логу событие о том, что она зарегистрировано от биржи приходит одновременно с ошибкой. Не уверен на счет forts, но на стоках так точно делать нельзя. May be try sleep(100)?</content>
    <rights type="html">Copyright @ StockSharp Platform LLC 2010 - 2025</rights>
  </entry>
  <entry>
    <id>https://stocksharp.com/posts/m/31618/</id>
    <title type="text">присоединяюсь, 2014/09/09 15:53:25.451| |QuikTrader|OrderCancelFailed: 52681380/2442218035 Продажа Ц...</title>
    <published>2014-09-09T13:56:21Z</published>
    <updated>2014-09-09T13:56:21Z</updated>
    <author>
      <name>Andrii</name>
      <uri>https://stocksharp.com/users/27996/</uri>
      <email>info@stocksharp.com</email>
    </author>
    <content type="html">присоединяюсь,&lt;br /&gt;&lt;div class="code"&gt;&lt;strong&gt;Code&lt;/strong&gt;&lt;div class="innercode"&gt;&lt;pre class="brush:plain"&gt;
2014/09/09 15:53:25.451|       |QuikTrader|OrderCancelFailed: 52681380/2442218035 Продажа Цена=1152.6 Объем=1 Сост=Done Бал=0 
System.InvalidOperationException: Ошибка снятия заявки 2442218035. Текст &amp;#39;vy ne mozhete snyat&amp;#39; dannuyu zayavku&amp;#39;.&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/31615/</id>
    <title type="text">Есть такой код. В нем в стратегии выставляем заявку, а потом сразу же отменяем. Версия stocksharp 4....</title>
    <published>2014-09-09T09:02:07Z</published>
    <updated>2014-09-09T09:03:48Z</updated>
    <author>
      <name>pma37592</name>
      <uri>https://stocksharp.com/users/50555/</uri>
      <email>info@stocksharp.com</email>
    </author>
    <content type="html">Есть такой код. В нем в стратегии выставляем заявку, а потом сразу же отменяем.&lt;br /&gt;Версия stocksharp 4.2.22. Для тестирования использовался терминал Quik Junior брокера finam. Коннектор Lua.&lt;br /&gt;Лог следующий:&lt;br /&gt;&lt;div class='spoilertitle'&gt;&lt;input type='button' value='Show spoiler' class='btn btn-primary' onclick="toggleSpoiler(this, 'spolier_1f9a6895bffb43da8d37f7ea10e49244');" title='Show spoiler' /&gt;&lt;/div&gt;&lt;div class='spoilerbox' id='spolier_1f9a6895bffb43da8d37f7ea10e49244' style='display:none'&gt;&lt;br /&gt;Имя	Время	Тип	Сообщение&lt;br /&gt;OCOS_RIU4@FORTS_SPBFUT00J13	09.09.2014 12:37:02	Info	Стратегия запущена. [0,-1]. Позиция 0.&lt;br /&gt;OCOS_RIU4@FORTS_SPBFUT00J13	09.09.2014 12:37:10	Info	Регистрация новой Limit (0x19D013B) заявки на Buy с ценой 124770 и объемом 8. &lt;br /&gt;OCOS_RIU4@FORTS_SPBFUT00J13	09.09.2014 12:37:10	Info	Заявка UserOrderID=0b7f703e-e375-45a9-9f83-32ffe3209d8b; ID=0; TrasID=45327796; IsMatched=False; IsMatchedEmpty=True; IsMatchedPartially=False; Vol=8; Bal=8; State=Pending&lt;br /&gt;OCOS_RIU4@FORTS_SPBFUT00J13	09.09.2014 12:37:10	Info	Отмена заявки 45327796 (0x19D013B).&lt;br /&gt;OCOS_RIU4@FORTS_SPBFUT00J13	09.09.2014 12:37:10	Info	Заявку отменили&lt;br /&gt;OCOS_RIU4@FORTS_SPBFUT00J13	09.09.2014 12:37:11	Error	Заявка 45327796 (0x19D013B) не была принята по причине System.InvalidOperationException: Ошибка снятия заявки 0. Текст &amp;#39;vy ne mozhete snyat&amp;#39; dannuyu zayavku&amp;#39;..&lt;br /&gt;OCOS_RIU4@FORTS_SPBFUT00J13	09.09.2014 12:37:11	Info	[_OrderFailed]: Ошибка при регистрации заявки: 0; ThreadID: 16; Ошибка: System.InvalidOperationException: Ошибка снятия заявки 0. Текст &amp;#39;vy ne mozhete snyat&amp;#39; dannuyu zayavku&amp;#39;.; IsMatched=False; IsMatchedEmpty=True; IsMatchedPartially=False; Vol=8; Bal=8; State=Pending&lt;br /&gt;OCOS_RIU4@FORTS_SPBFUT00J13	09.09.2014 12:37:11	Info	Заявка 45327796 (0x19D013B) больше не активна.&lt;br /&gt;OCOS_RIU4@FORTS_SPBFUT00J13	09.09.2014 12:37:11	Info	Новая позиция: SPBFUT00J13-RIU4@FORTS=8.&lt;br /&gt;OCOS_RIU4@FORTS_SPBFUT00J13	09.09.2014 12:37:11	Info	Новая Buy сделка 115669077 по цене 124770 на 1 заявки 45327796.&lt;br /&gt;OCOS_RIU4@FORTS_SPBFUT00J13	09.09.2014 12:37:11	Info	Новая позиция: SPBFUT00J13-RIU4@FORTS=1.&lt;br /&gt;OCOS_RIU4@FORTS_SPBFUT00J13	09.09.2014 12:37:11	Info	[_OrderRegistered]: Заявка зарегистрирована: 2441834779; ThreadID: 16; IsMatched=False; IsMatchedEmpty=False; IsMatchedPartially=True; Vol=8; Bal=7; State=Active&lt;br /&gt;OCOS_RIU4@FORTS_SPBFUT00J13	09.09.2014 12:37:11	Info	Новая позиция: SPBFUT00J13-RIU4@FORTS=8.&lt;br /&gt;OCOS_RIU4@FORTS_SPBFUT00J13	09.09.2014 12:37:11	Info	Новая Buy сделка 115669079 по цене 124770 на 5 заявки 45327796.&lt;br /&gt;OCOS_RIU4@FORTS_SPBFUT00J13	09.09.2014 12:37:11	Info	Новая позиция: SPBFUT00J13-RIU4@FORTS=6.&lt;br /&gt;OCOS_RIU4@FORTS_SPBFUT00J13	09.09.2014 12:37:11	Info	Новая позиция: SPBFUT00J13-RIU4@FORTS=8.&lt;br /&gt;OCOS_RIU4@FORTS_SPBFUT00J13	09.09.2014 12:37:11	Info	Новая Buy сделка 115669080 по цене 124770 на 2 заявки 45327796.&lt;br /&gt;OCOS_RIU4@FORTS_SPBFUT00J13	09.09.2014 12:37:11	Info	Заявка 45327796 (0x19D013B) больше не активна.&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;По логу видно, что при отмене заявки, если заявка еще выставляется на сервере вызывается функция _OrderFailed, а не функция _OrderCanceledFailed.&lt;br /&gt;Заявка ведь отменяется и ошибка отмены заявки. Так же не происходит реальной отмены заявки. Заявка выставляется и не происходит ее отмены.&lt;br /&gt;Так же хотелось бы иметь какие-то коды ошибок для заявок.&lt;br /&gt;&lt;br /&gt;Код под катом:&lt;br /&gt;&lt;div class='spoilertitle'&gt;&lt;input type='button' value='Show spoiler' class='btn btn-primary' onclick="toggleSpoiler(this, 'spolier_59e32586de98413887c033f4351cb286');" title='Show spoiler' /&gt;&lt;/div&gt;&lt;div class='spoilerbox' id='spolier_59e32586de98413887c033f4351cb286' style='display:none'&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;

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading;
using System.Threading.Tasks;
using StockSharp.Algo;
using StockSharp.Algo.Strategies;
using StockSharp.Algo.Candles;
using StockSharp.Algo.Testing;
using StockSharp.BusinessEntities;
using StockSharp.Logging;

namespace OrderTest
{
  class OpenCancelOrderStrategy:Strategy
  {
    CandleManager _candleManager; //Менеджер свечек
    CandleSeries _series;     //Серия однотиковых свечек
    
    protected override void OnStarted()
    {
      //Начало 
      _candleManager = new CandleManager(this.Connector);
      _series = new CandleSeries(typeof(TickCandle), this.Security, 1);

      Connector.RegisterMarketDepth(this.Security);

      _series
        .WhenCandlesFinished() //Когда закончится тик
        .Do(ProcessCandle) //Вызывать процедуру
        .Apply(this);

      _candleManager.Start(_series);
      base.OnStarted();
    }

    protected override void OnStopped()
    {
      _candleManager.Stop(_series);
      _series.Dispose();
      _candleManager.Dispose();
      base.OnStopped();
    }

    private int IsOrder = 0;
   
    private void ProcessCandle(Candle candle)
    {
      if (IsOrder &amp;lt; 1)
      {
        if (Security.BestAsk == null)
          return;

        IsOrder++;

        //var order = this.BuyAtMarket(this.Volume);
        
        var price = Security.BestAsk.Price;
        var order = this.CreateOrder(StockSharp.Messages.Sides.Buy, price, Volume);

        order
          .WhenRegistered()
          .Do(_OrderRegistered)
          .Apply(this);

        order
          .WhenRegisterFailed()
          .Do(_OrderFailed)
          .Apply(this);

        order
          .WhenCanceled()
          .Do(_OrderCanceled)
          .Apply(this);

        order
          .WhenCancelFailed()
          .Do(_OrderCanceledFailed)
          .Apply(this);

        RegisterOrder(order);

        var msg = String.Format(&amp;quot;Заявка UserOrderID={0}; ID={1}; TrasID={2}; IsMatched={3}; IsMatchedEmpty={4}; IsMatchedPartially={5}; Vol={6}; Bal={7}; State={8}&amp;quot;, order.UserOrderId, order.Id, order.TransactionId, order.IsMatched(), order.IsMatchedEmpty(), order.IsMatchedPartially(), order.Volume, order.Balance, order.State);
        this.AddInfoLog(msg);

        CancelOrder(order);
        msg = &amp;quot;Заявку отменили&amp;quot;;   
        this.AddInfoLog(msg);
      }
    }

    private void _OrderFailed(OrderFail Error)
    {
      var msg = String.Format(&amp;quot;[OnOrderFailed]: Ошибка при регистрации заявки: {0}; ThreadID: {1}; Ошибка: {2}; IsMatched={3}; IsMatchedEmpty={4}; IsMatchedPartially={5}; Vol={6}; Bal={7}; State={8}&amp;quot;, Error.Order.Id, Thread.CurrentThread.ManagedThreadId, Error.Error, Error.Order.IsMatched(), Error.Order.IsMatchedEmpty(), Error.Order.IsMatchedPartially(), Error.Order.Volume, Error.Order.Balance, Error.Order.State);
      this.AddInfoLog(msg);
    }


    private void _OrderRegistered(Order order)
    {
      var msg = String.Format(&amp;quot;[OnOrderRegistered1]: Заявка зарегистрирована: {0}; ThreadID: {1}; IsMatched={2}; IsMatchedEmpty={3}; IsMatchedPartially={4}; Vol={5}; Bal={6}; State={7}&amp;quot;, order.Id, Thread.CurrentThread.ManagedThreadId, order.IsMatched(), order.IsMatchedEmpty(), order.IsMatchedPartially(), order.Volume, order.Balance, order.State);
      this.AddInfoLog(msg);
    }

    private void _OrderCanceled(Order order)
    {
      var msg = String.Format(&amp;quot;[_OrderCanceled]: Заявка успешно отменена: {0}; ThreadID: {1}; IsMatched={2}; IsMatchedEmpty={3}; IsMatchedPartially={4}; Vol={5}; Bal={6}; State={7}&amp;quot;, order.Id, Thread.CurrentThread.ManagedThreadId, order.IsMatched(), order.IsMatchedEmpty(), order.IsMatchedPartially(), order.Volume, order.Balance, order.State);
      this.AddInfoLog(msg);
    }

    private void _OrderCanceledFailed(OrderFail Error)
    {
      var msg = String.Format(&amp;quot;[_OrderCanceledFailed]: Ошибка при отмене заявки: {0}; ThreadID: {1}; Ошибка: {2}; IsMatched={3}; IsMatchedEmpty={4}; IsMatchedPartially={5}; Vol={6}; Bal={7}; State={8}&amp;quot;, Error.Order.Id, Thread.CurrentThread.ManagedThreadId, Error.Error, Error.Order.IsMatched(), Error.Order.IsMatchedEmpty(), Error.Order.IsMatchedPartially(), Error.Order.Volume, Error.Order.Balance, Error.Order.State);
      this.AddInfoLog(msg);
    }
  }
}
&lt;/pre&gt;
&lt;/div&gt;&lt;/div&gt;&lt;br /&gt;&lt;/div&gt;</content>
    <rights type="html">Copyright @ StockSharp Platform LLC 2010 - 2025</rights>
  </entry>
</feed>