﻿<?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">Котирование</title>
  <id>~/topic/4861/kotirovanie/</id>
  <rights type="text">Copyright @ StockSharp Platform LLC 2010 - 2025</rights>
  <updated>2026-06-05T05:43:01Z</updated>
  <logo>https://stocksharp.ru/images/logo.png</logo>
  <link href="https://stocksharp.ru/handlers/atom.ashx?category=topic&amp;id=4861" rel="self" type="application/rss+xml" />
  <entry>
    <id>https://stocksharp.ru/posts/m/32398/</id>
    <title type="text">Как я понимаю есть 2 варианта запустить котирования из документации http://stocksharp.com/doc/?topic...</title>
    <published>2015-01-16T13:09:50Z</published>
    <updated>2016-08-16T00:19:41Z</updated>
    <author>
      <name>Иван З.</name>
      <uri>https://stocksharp.ru/users/6502/</uri>
      <email>info@stocksharp.ru</email>
    </author>
    <content type="html">&lt;p&gt;Как я понимаю есть 2 варианта запустить котирования&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;&lt;p&gt;из документации &lt;a href="http://stocksharp.com/doc/?topic=html/24250c24-029c-4dbc-bc8b-4afde645e483.htm"&gt;http://stocksharp.com/doc/?topic=html/24250c24-029c-4dbc-bc8b-4afde645e483.htm&lt;/a&gt;
[code=csharp]var strategy = new MarketQuotingStrategy(order, new Unit());
base.ChildStrategies.Add(strategy);[/code]
Работает нормально, по крайней мере позиции набирает.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;&lt;p&gt;из одного из обновления &lt;a href="http://stocksharp.com/forum/2285/Stock--4-0-Release/"&gt;http://stocksharp.com/forum/2285/Stock--4-0-Release/&lt;/a&gt;
[code=csharp]
this.OpenPositionByQuoting(10);
[/code]
Работает не нормально, либо не правильно использую
В стратегии просто набираю позицию
[SPOILER][code=csharp]
using MoreLinq;
using StockSharp.Algo.Strategies.Quoting;
using StockSharp.BusinessEntities;&lt;/p&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;namespace Sample
{
using StockSharp.Algo;
using StockSharp.Algo.Candles;
using StockSharp.Algo.Indicators;
using StockSharp.Algo.Strategies;
using StockSharp.Messages;&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;class MyStrategy : Strategy
{
    public MyStrategy(){}
    protected override void OnStarted()
    {
        Process();
        base.OnStarted();
    }


    private void Process()
    {
        // если наша стратегия в процессе остановки
        if (ProcessState == ProcessStates.Stopping)
        {
            // отменяем активные заявки
            CancelActiveOrders();
            return;
        }
        if (Position == 0)
        {
           //var strat = new MarketQuotingStrategy(Sides.Buy, 10);
           //base.ChildStrategies.Add(strat);
           this.OpenPositionByQuoting(10);
        }

    }
}
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;}
[/code][/SPOILER]
В тестовом КВИКе выдает ошибку
[img]http://clickscreen.ru/screens/2/a04e66b2.png [/img]
Лог приложу
Еще раз повторю, что 1й работает а 2й не работает
Вопрос: это я не правильно использую или это баг?&lt;/p&gt;
</content>
    <rights type="html">Copyright @ StockSharp Platform LLC 2010 - 2025</rights>
  </entry>
  <entry>
    <id>https://stocksharp.ru/posts/m/32805/</id>
    <title type="text">Судя по коду на кодплексе проблема в том, что [code=csharp] this.AddInfoLog(&amp;quot;Отмена заявки {0}.&amp;quot;, _o...</title>
    <published>2015-03-08T10:57:25Z</published>
    <updated>2015-03-08T11:45:46Z</updated>
    <author>
      <name>RomSunZ</name>
      <uri>https://stocksharp.ru/users/6384/</uri>
      <email>info@stocksharp.ru</email>
    </author>
    <content type="html">&lt;p&gt;Судя по коду на кодплексе проблема в том, что
[code=csharp]
this.AddInfoLog(&amp;quot;Отмена заявки {0}.&amp;quot;, _order.TransactionId);
_isCanceling = true;&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;				_order
					.WhenCanceled()
					.Do((r, o) =&amp;gt;
					{
						this.AddInfoLog(&amp;quot;Заявка {0} была снята. Время снятия {1}.&amp;quot;, o.TransactionId, o.LastChangeTime);

						Rules.RemoveRulesByToken(o, r);

						if (_order == o)
						{
							_manualReRegisterOrder = _order;
							_order = null;
							_isCanceling = false;
							ProcessQuoting();
						}
						else
							this.AddWarningLog(&amp;quot;Заявка {0} устарела.&amp;quot;, o.TransactionId);
					})
					.Once()
					.Sync(_syncToken)
					.Apply(this);

				CancelOrder(_order);
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;[/code]
_order.WhenCanceled() не срабатывает, т.к. ордер УЖЕ отменен до того, как подписались на это событие. Думаю, нужно добавить проверку типа _order.State&lt;mark&gt;OrderStates.Active. Если да, то выполнить выше приведенную ветку, если нет и орден не NULL и состояние стратегии Active, то вызвать ProcessQuoting, либо в конце процедуры ProcessQuoting делать проверку
[code=csharp]
if (_isCanceling&lt;/mark&gt;true &amp;amp;&amp;amp; this.ProcessState&lt;mark&gt;ProcessStates.Active &amp;amp;&amp;amp; _order.State&lt;/mark&gt;OrderStates.Done)
{
_isCanceling=false;
ProcessQuoting();
//либо вызвать здесь событие orderCancelled, чтобы сработала ветка приведенная выше, либо делать подписку на событие WhenCanceled в момент создания ордера...
}
[/code]&lt;/p&gt;
</content>
    <rights type="html">Copyright @ StockSharp Platform LLC 2010 - 2025</rights>
  </entry>
  <entry>
    <id>https://stocksharp.ru/posts/m/32804/</id>
    <title type="text">Коннектор Quik Lua, АПИ 4.2.68. В стратегии QuotingStrategy если котируемая заявка была снята в ручн...</title>
    <published>2015-03-08T10:25:26Z</published>
    <updated>2015-03-08T10:26:25Z</updated>
    <author>
      <name>RomSunZ</name>
      <uri>https://stocksharp.ru/users/6384/</uri>
      <email>info@stocksharp.ru</email>
    </author>
    <content type="html">&lt;p&gt;Коннектор Quik Lua, АПИ 4.2.68.
В стратегии QuotingStrategy если котируемая заявка была снята в ручную или системой (например на вечернем клиринге), то стратегия никак не отрабатывает этот момент.
В логе по этой заявке только такие строки:
[quote]
16:12:35.712|       |LQS_SBER@TQBR_10182|Заявка 58272625 (0xF5B24E) принята биржей.
...
16:12:57.155|Debug  |LQS_SBER@TQBR_10182|Правило 'Отмена заявки  58272625/811066918 (0xEF627A) OR Полное исполнение  58272625/811066918 (0x311387F) OR Все сделки заявки  58272625/811066918 (0x1C20C5F) OR Ошибка регистрации заявки  58272625/811066918 (0x31E27EC)'. Активация.
16:12:57.155|       |LQS_SBER@TQBR_10182|Заявка 58272625 (0xF5B24E) больше не активна.
...
16:13:06.165|       |LQS_SBER@TQBR_10182|Отмена заявки 58272625 (0xF5B24E).
16:13:06.165|       |LQS_SBER@TQBR_10182|Отмена заявки 58272625 (0xF5B24E).
16:13:06.165|Debug  |LQS_SBER@TQBR_10182|Правило 'Изменение стакана инструмента SBER@TQBR (0xC06E73) OR Изменение стакана инструмента LKOH@TQBR (0x1CC831B)'. Активация.
16:13:16.176|Debug  |LQS_SBER@TQBR_10182|Правило 'Изменение стакана инструмента SBER@TQBR (0x3F19E1D) OR Изменение стакана инструмента LKOH@TQBR (0x25EE953)'. Активация.
16:13:16.176|Debug  |LQS_SBER@TQBR_10182|Заявка 58272625 (0xF5B24E) в процессе снятия.
16:13:16.176|Debug  |LQS_SBER@TQBR_10182|Правило 'Изменение стакана инструмента SBER@TQBR (0xC06E73) OR Изменение стакана инструмента LKOH@TQBR (0x1CC831B)'. Активация.
16:13:16.186|Debug  |LQS_SBER@TQBR_10182|Правило 'Изменение стакана инструмента SBER@TQBR (0x3F19E1D) OR Изменение стакана инструмента LKOH@TQBR (0x25EE953)'. Активация.
16:13:16.186|Debug  |LQS_SBER@TQBR_10182|Заявка 58272625 (0xF5B24E) в процессе снятия.
16:13:16.186|Debug  |LQS_SBER@TQBR_10182|Правило 'Изменение стакана инструмента SBER@TQBR (0xC06E73) OR Изменение стакана инструмента LKOH@TQBR (0x1CC831B)'. Активация.
16:13:16.191|Debug  |LQS_SBER@TQBR_10182|Правило 'Изменение стакана инструмента SBER@TQBR (0x3F19E1D) OR Изменение стакана инструмента LKOH@TQBR (0x25EE953)'. Активация.
16:13:16.191|Debug  |LQS_SBER@TQBR_10182|Заявка 58272625 (0xF5B24E) в процессе снятия.
16:13:16.191|Debug  |LQS_SBER@TQBR_10182|Правило 'Изменение стакана инструмента SBER@TQBR (0xC06E73) OR Изменение стакана инструмента LKOH@TQBR (0x1CC831B)'. Активация.
16:13:16.194|Debug  |LQS_SBER@TQBR_10182|Правило 'Изменение стакана инструмента SBER@TQBR (0x3F19E1D) OR Изменение стакана инструмента LKOH@TQBR (0x25EE953)'. Активация.
16:13:16.194|Debug  |LQS_SBER@TQBR_10182|Заявка 58272625 (0xF5B24E) в процессе снятия.
16:13:16.194|Debug  |LQS_SBER@TQBR_10182|Правило 'Изменение стакана инструмента SBER@TQBR (0xC06E73) OR Изменение стакана инструмента LKOH@TQBR (0x1CC831B)'. Активация.
16:13:16.198|Debug  |LQS_SBER@TQBR_10182|Правило 'Изменение стакана инструмента SBER@TQBR (0x3F19E1D) OR Изменение стакана инструмента LKOH@TQBR (0x25EE953)'. Активация.
16:13:16.198|Debug  |LQS_SBER@TQBR_10182|Заявка 58272625 (0xF5B24E) в процессе снятия.
16:13:16.198|Debug  |LQS_SBER@TQBR_10182|Правило 'Изменение стакана инструмента SBER@TQBR (0xC06E73) OR Изменение стакана инструмента LKOH@TQBR (0x1CC831B)'. Активация.
16:13:16.211|Debug  |LQS_SBER@TQBR_10182|Правило 'Изменение стакана инструмента SBER@TQBR (0x3F19E1D) OR Изменение стакана инструмента LKOH@TQBR (0x25EE953)'. Активация.
16:13:16.211|Debug  |LQS_SBER@TQBR_10182|Заявка 58272625 (0xF5B24E) в процессе снятия.
16:13:16.211|Debug  |LQS_SBER@TQBR_10182|Правило 'Изменение стакана инструмента SBER@TQBR (0xC06E73) OR Изменение стакана инструмента LKOH@TQBR (0x1CC831B)'. Активация.
16:13:16.217|Debug  |LQS_SBER@TQBR_10182|Правило 'Изменение стакана инструмента SBER@TQBR (0x3F19E1D) OR Изменение стакана инструмента LKOH@TQBR (0x25EE953)'. Активация.
16:13:16.217|Debug  |LQS_SBER@TQBR_10182|Заявка 58272625 (0xF5B24E) в процессе снятия.
16:13:16.217|Debug  |LQS_SBER@TQBR_10182|Правило 'Изменение стакана инструмента SBER@TQBR (0xC06E73) OR Изменение стакана инструмента LKOH@TQBR (0x1CC831B)'. Активация.
...
16:16:49.933|Debug  |LQS_SBER@TQBR_10182|Правило 'Изменение стакана инструмента SBER@TQBR (0x3F19E1D) OR Изменение стакана инструмента LKOH@TQBR (0x25EE953)'. Активация.
16:16:49.933|Debug  |LQS_SBER@TQBR_10182|Заявка 58272625 (0xF5B24E) в процессе снятия.
16:16:49.933|Debug  |LQS_SBER@TQBR_10182|Правило 'Изменение стакана инструмента SBER@TQBR (0xC06E73) OR Изменение стакана инструмента LKOH@TQBR (0x1CC831B)'. Активация.
16:16:52.980|Debug  |LQS_SBER@TQBR_10182|Правило 'Изменение стакана инструмента SBER@TQBR (0x3F19E1D) OR Изменение стакана инструмента LKOH@TQBR (0x25EE953)'. Активация.
16:16:52.980|Debug  |LQS_SBER@TQBR_10182|Заявка 58272625 (0xF5B24E) в процессе снятия.
16:16:52.980|Debug  |LQS_SBER@TQBR_10182|Правило 'Изменение стакана инструмента SBER@TQBR (0xC06E73) OR Изменение стакана инструмента LKOH@TQBR (0x1CC831B)'. Активация.
16:16:53.968|Debug  |LQS_SBER@TQBR_10182|Правило 'Изменение стакана инструмента SBER@TQBR (0x3F19E1D) OR Изменение стакана инструмента LKOH@TQBR (0x25EE953)'. Активация.
16:16:53.968|Debug  |LQS_SBER@TQBR_10182|Заявка 58272625 (0xF5B24E) в процессе снятия.
16:16:53.968|Debug  |LQS_SBER@TQBR_10182|Правило 'Изменение стакана инструмента SBER@TQBR (0xC06E73) OR Изменение стакана инструмента LKOH@TQBR (0x1CC831B)'. Активация.
16:16:58.015|Debug  |LQS_SBER@TQBR_10182|Правило 'Изменение стакана инструмента SBER@TQBR (0x3F19E1D) OR Изменение стакана инструмента LKOH@TQBR (0x25EE953)'. Активация.
16:16:58.015|Debug  |LQS_SBER@TQBR_10182|Заявка 58272625 (0xF5B24E) в процессе снятия.
16:16:58.015|Debug  |LQS_SBER@TQBR_10182|Правило 'Изменение стакана инструмента SBER@TQBR (0xC06E73) OR Изменение стакана инструмента LKOH@TQBR (0x1CC831B)'. Активация.
16:17:00.090|Debug  |LQS_SBER@TQBR_10182|Правило 'Изменение стакана инструмента SBER@TQBR (0x3F19E1D) OR Изменение стакана инструмента LKOH@TQBR (0x25EE953)'. Активация.
16:17:00.090|Debug  |LQS_SBER@TQBR_10182|Заявка 58272625 (0xF5B24E) в процессе снятия.
16:17:00.090|Debug  |LQS_SBER@TQBR_10182|Правило 'Изменение стакана инструмента SBER@TQBR (0xC06E73) OR Изменение стакана инструмента LKOH@TQBR (0x1CC831B)'. Активация.
16:17:02.904|Debug  |LQS_SBER@TQBR_10182|Правило 'Изменение стакана инструмента SBER@TQBR (0x3F19E1D) OR Изменение стакана инструмента LKOH@TQBR (0x25EE953)'. Активация.
16:17:02.904|Debug  |LQS_SBER@TQBR_10182|Заявка 58272625 (0xF5B24E) в процессе снятия.
16:17:02.904|Debug  |LQS_SBER@TQBR_10182|Правило 'Изменение стакана инструмента SBER@TQBR (0xC06E73) OR Изменение стакана инструмента LKOH@TQBR (0x1CC831B)'. Активация.
16:17:04.136|Debug  |LQS_SBER@TQBR_10182|Правило 'Изменение стакана инструмента SBER@TQBR (0x3F19E1D) OR Изменение стакана инструмента LKOH@TQBR (0x25EE953)'. Активация.
16:17:04.136|Debug  |LQS_SBER@TQBR_10182|Заявка 58272625 (0xF5B24E) в процессе снятия.
16:17:04.136|Debug  |LQS_SBER@TQBR_10182|Правило 'Изменение стакана инструмента SBER@TQBR (0xC06E73) OR Изменение стакана инструмента LKOH@TQBR (0x1CC831B)'. Активация.
16:17:05.122|Debug  |LQS_SBER@TQBR_10182|Правило 'Изменение стакана инструмента SBER@TQBR (0x3F19E1D) OR Изменение стакана инструмента LKOH@TQBR (0x25EE953)'. Активация.
16:17:05.122|Debug  |LQS_SBER@TQBR_10182|Заявка 58272625 (0xF5B24E) в процессе снятия.
[/quote]
Логичнее было-бы сделать остановку стратегии.&lt;/p&gt;
</content>
    <rights type="html">Copyright @ StockSharp Platform LLC 2010 - 2025</rights>
  </entry>
  <entry>
    <id>https://stocksharp.ru/posts/m/32759/</id>
    <title type="text">По BestByPrice. Залил исправленное. Просьба проверить. По BestByVolume. Ничего не понял. Лучше не пы...</title>
    <published>2015-03-03T14:03:58Z</published>
    <updated>2015-03-03T14:03:58Z</updated>
    <author>
      <name>Mikhail Sukhov</name>
      <uri>https://stocksharp.ru/users/201/</uri>
      <email>info@stocksharp.ru</email>
    </author>
    <content type="html">&lt;p&gt;По BestByPrice. Залил исправленное. Просьба проверить.&lt;/p&gt;
&lt;p&gt;По BestByVolume. Ничего не понял. Лучше не пытаться исправлять код. Лучше написать что с ним не так. Потому что сечас код написан неправильно с точки зрения S#.&lt;/p&gt;
</content>
    <rights type="html">Copyright @ StockSharp Platform LLC 2010 - 2025</rights>
  </entry>
  <entry>
    <id>https://stocksharp.ru/posts/m/32758/</id>
    <title type="text">[quote=RomSunZ;32732]В версии 4.2.66 проблема осталась. Доступ к переопределению GetAcceptablePriceR...</title>
    <published>2015-03-03T12:16:43Z</published>
    <updated>2015-03-03T12:16:43Z</updated>
    <author>
      <name>Mikhail Sukhov</name>
      <uri>https://stocksharp.ru/users/201/</uri>
      <email>info@stocksharp.ru</email>
    </author>
    <content type="html">&lt;p&gt;[quote=RomSunZ;32732]В версии 4.2.66 проблема осталась. Доступ к переопределению GetAcceptablePriceRange будет, или нужно переделывать логику своего робота?[/quote]&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.ru/posts/m/32732/</id>
    <title type="text">В версии 4.2.66 проблема осталась. Доступ к переопределению GetAcceptablePriceRange будет, или нужно...</title>
    <published>2015-02-26T04:57:46Z</published>
    <updated>2015-02-26T04:57:46Z</updated>
    <author>
      <name>RomSunZ</name>
      <uri>https://stocksharp.ru/users/6384/</uri>
      <email>info@stocksharp.ru</email>
    </author>
    <content type="html">&lt;p&gt;В версии 4.2.66 проблема осталась. Доступ к переопределению GetAcceptablePriceRange будет, или нужно переделывать логику своего робота?&lt;/p&gt;
</content>
    <rights type="html">Copyright @ StockSharp Platform LLC 2010 - 2025</rights>
  </entry>
  <entry>
    <id>https://stocksharp.ru/posts/m/32701/</id>
    <title type="text">А в версии 65 была изменена логика QuotingStrategy? У меня код: [code=csharp] public class myQuoting...</title>
    <published>2015-02-24T08:45:42Z</published>
    <updated>2015-02-24T08:48:56Z</updated>
    <author>
      <name>RomSunZ</name>
      <uri>https://stocksharp.ru/users/6384/</uri>
      <email>info@stocksharp.ru</email>
    </author>
    <content type="html">&lt;p&gt;А в версии 65 была изменена логика QuotingStrategy?
У меня код:
[code=csharp]
public class myQuotingStrategy : QuotingStrategy
{
protected override Range&lt;decimal&gt; GetAcceptablePriceRange()
}
[/code]
при построении проекта начал выдавать ошибку &amp;quot;не найден метод, пригодный для переопределения&amp;quot;...&lt;/p&gt;
</content>
    <rights type="html">Copyright @ StockSharp Platform LLC 2010 - 2025</rights>
  </entry>
  <entry>
    <id>https://stocksharp.ru/posts/m/32647/</id>
    <title type="text">Все это уже было и даже работало[biggrin] [quote]отступ был рассчитан исходя из уровней стакана, а н...</title>
    <published>2015-02-18T07:03:56Z</published>
    <updated>2015-02-18T07:03:56Z</updated>
    <author>
      <name>Иван З.</name>
      <uri>https://stocksharp.ru/users/6502/</uri>
      <email>info@stocksharp.ru</email>
    </author>
    <content type="html">&lt;p&gt;Все это уже было и даже работало[biggrin]
[quote]отступ был рассчитан исходя из уровней стакана, а не тупой дельты от лучшей цены.[/quote]
что вы имеете ввиду?&lt;/p&gt;
</content>
    <rights type="html">Copyright @ StockSharp Platform LLC 2010 - 2025</rights>
  </entry>
  <entry>
    <id>https://stocksharp.ru/posts/m/32644/</id>
    <title type="text">Что вы паритесь? GetAcceptablePriceRange: [code=csharp] if (this.Order != null) _bestprice = this.Or...</title>
    <published>2015-02-18T05:43:43Z</published>
    <updated>2015-02-18T06:01:11Z</updated>
    <author>
      <name>RomSunZ</name>
      <uri>https://stocksharp.ru/users/6384/</uri>
      <email>info@stocksharp.ru</email>
    </author>
    <content type="html">&lt;p&gt;Что вы паритесь? GetAcceptablePriceRange:
[code=csharp]
if (this.Order != null) _bestprice = this.Order.Price;
else return base.GetAcceptablePriceRange();
if (_bestprice == 0)
return new Range&lt;decimal&gt;(0m, 0m);
var limit = QuotingDirection == Sides.Buy ? (decimal)(_bestprice + BestPriceOffset) : (decimal)(_bestprice - BestPriceOffset);
//var md = GetFilteredQuotes(QuotingDirection);
var md11 = Connector.GetFilteredMarketDepth(this.Security);
var md = QuotingDirection == Sides.Buy ? md11.Bids : md11.Asks;&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;        if (md != null)
        {
            int i = 0;
            foreach (var q in md)
            {
                if (QuotingDirection == Sides.Buy &amp;amp;&amp;amp; q.Price &amp;lt;= _bestprice
                    || QuotingDirection == Sides.Sell &amp;amp;&amp;amp; q.Price &amp;gt;= _bestprice)
                {
                    i -= (int)BestPriceOffset.Value;

                    if (i &amp;lt; 0) i = 0;
                    limit = QuotingDirection == Sides.Buy ?
                        Math.Max(limit, md.ElementAt(i).Price)
                        : Math.Min(limit, md.ElementAt(i).Price);
                    break;
                }
                i++;
            }
        }
        var range = QuotingDirection == Sides.Buy
                        ? new Range&amp;lt;decimal&amp;gt;(_bestprice.Value, limit)
                        : new Range&amp;lt;decimal&amp;gt;(limit, _bestprice.Value);


        return range;
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;[/code]
Цикл можете убрать. Для меня было интересно, чтобы отступ был рассчитан исходя из уровней стакана, а не тупой дельты от лучшей цены.&lt;/p&gt;
&lt;p&gt;P.S. Возможно придется также изменить NeedQuoting:&lt;/p&gt;
&lt;p&gt;[code=csharp]
var _bestprice = BestPrice;
if (_bestprice == null || _bestprice == 0) return null;&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;        if (!acceptablePriceRange.Contains((decimal)_bestprice) || currentVolume != newVolume)
            return _bestprice;
        else
            return null;
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;[/code]&lt;/p&gt;
</content>
    <rights type="html">Copyright @ StockSharp Platform LLC 2010 - 2025</rights>
  </entry>
  <entry>
    <id>https://stocksharp.ru/posts/m/32643/</id>
    <title type="text">По стратегиям из последней версии BestByPriceQuotingStrategy и MarketQuotingStrategy Так как MarketQ...</title>
    <published>2015-02-18T03:50:45Z</published>
    <updated>2015-02-18T03:57:32Z</updated>
    <author>
      <name>Иван З.</name>
      <uri>https://stocksharp.ru/users/6502/</uri>
      <email>info@stocksharp.ru</email>
    </author>
    <content type="html">&lt;p&gt;По стратегиям из последней версии
BestByPriceQuotingStrategy и MarketQuotingStrategy
Так как MarketQuotingStrategy унаследована от BestByPriceQuotingStrategy, метод NeedQuoting у них общий. Проблема с тем, что заявка не откатывается у них общая
[SPOILER][code=csharp]
if (QuotingDirection == Sides.Sell)
{
//Здесь если BestPrice &amp;gt; currentPrice то ни чего происходить не будет, и заявка не откатится назад
if (currentPrice == null || (decimal)(price + BestPriceOffset) &amp;lt; currentPrice)
return price + (decimal)BestPriceOffset / 2;
}
else
{
//Здесь если BestPrice &amp;lt; currentPrice то ни чего происходить не будет, и заявка не откатится назад
if (currentPrice == null || (decimal)(price - BestPriceOffset) &amp;gt; currentPrice)
return price - (decimal)BestPriceOffset / 2;
}
[/code][/SPOILER]
Можно вылечить так
[SPOILER][code=csharp]
if (QuotingDirection == Sides.Sell)
{
var newPrice = Security.ShrinkPrice((decimal) price + (decimal) BestPriceOffset/2);
if (currentPrice == null || (newPrice != currentPrice)) return newPrice;
}
else
{
var newPrice = Security.ShrinkPrice((decimal) price - (decimal) BestPriceOffset/2);
if (currentPrice == null || (newPrice != currentPrice)) return newPrice;
}
[/code][/SPOILER]
В таком случае, заявка будет всегда переставляться на параметры заданные стратегией. Кроме случая если она уже стоит на нужной цене.
Изучив код подробней этих стратегий, понял что мое представление о том как они должны работать не совпадают с реализованным.&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;BestPriceOffset - Отступ от лучшей цены, на который [h]может [/h]уйти котируемая заявка.
Слово может очень сбивает с толку, в стратегии строго забито, что она в любом случае отступит от лучшей цены на значение BestPriceOffset&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;В моем представлении, если взять для примера BestByPriceQuotingStrategy, то стратегия должна выставлять заявку на лучшую цену(на то это и [h]BestByPrice[/h]QuotingStrategy). Но если заявка уйдет от BestPrice на значение меньшее чем BestPriceOffset то переставляться не будет.&lt;/p&gt;
&lt;ol start="2"&gt;
&lt;li&gt;PriceOffset - Отступ цены для выставляемой заявки. Определяет размер отступа от лучшей котировки (для покупки прибавляется к цене, для продажи - вычитается).
Этот отступ есть у MarketQuotingStrategy если он положительный а сделка Buy, стратегия выставит заявку на BestPrice - BestPriceOffset + PriceOffset. То есть выше описанный BestPriceOffset тоже вычитается.&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;В общем мне кажется BestPriceOffset сейчас работает не так как надо, а GetAcceptablePriceRange() все таки нужный метод, по крайней мере для BestByPriceQuotingStrategy. Править?&lt;/p&gt;
&lt;p&gt;В BestByVolumeQuotingStrategy я исправил один метод NeedQuoting. В коде постарался пояснения написать по подробнее. Протестировал, стратегия работает, выложил в ВК.&lt;/p&gt;
</content>
    <rights type="html">Copyright @ StockSharp Platform LLC 2010 - 2025</rights>
  </entry>
  <entry>
    <id>https://stocksharp.ru/posts/m/32630/</id>
    <title type="text">[quote=Иван З.;32629] остальные не смотрел, завтра посмотрю.[/quote] Сырцы теперь есть. Предлагаю ср...</title>
    <published>2015-02-16T18:03:20Z</published>
    <updated>2015-02-16T18:03:20Z</updated>
    <author>
      <name>Mikhail Sukhov</name>
      <uri>https://stocksharp.ru/users/201/</uri>
      <email>info@stocksharp.ru</email>
    </author>
    <content type="html">&lt;p&gt;[quote=Иван З.;32629]
остальные не смотрел, завтра посмотрю.[/quote]&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.ru/posts/m/32629/</id>
    <title type="text">Проверил. MarketQuotingStrategy также не откатывает на лучшую цену. при параметре [code=csharp]Price...</title>
    <published>2015-02-16T17:23:05Z</published>
    <updated>2015-02-16T17:23:05Z</updated>
    <author>
      <name>Иван З.</name>
      <uri>https://stocksharp.ru/users/6502/</uri>
      <email>info@stocksharp.ru</email>
    </author>
    <content type="html">&lt;p&gt;Проверил.
MarketQuotingStrategy также не откатывает на лучшую цену.
при параметре [code=csharp]PriceOffset = Security.PriceStep, [/code] выставляет заявку на BestPrice а должен перед ней.&lt;/p&gt;
&lt;p&gt;BestByPriceQuotingStrategy вообще не выставляет заявку.&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.ru/posts/m/32628/</id>
    <title type="text">Перезалил в группе архив со стратегиями. Что сделано: Применены изменения (не все). Порефакторено са...</title>
    <published>2015-02-16T13:08:01Z</published>
    <updated>2015-02-16T13:08:01Z</updated>
    <author>
      <name>Mikhail Sukhov</name>
      <uri>https://stocksharp.ru/users/201/</uri>
      <email>info@stocksharp.ru</email>
    </author>
    <content type="html">&lt;p&gt;Перезалил в группе архив со стратегиями. Что сделано:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Применены изменения (не все).&lt;/li&gt;
&lt;li&gt;Порефакторено само котирование (убрано множество виртуальных методов).&lt;/li&gt;
&lt;li&gt;Поправлены некоторые котирования другие.&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;Проверите? Чтобы выложить это уже на ГитХаб.&lt;/p&gt;
</content>
    <rights type="html">Copyright @ StockSharp Platform LLC 2010 - 2025</rights>
  </entry>
  <entry>
    <id>https://stocksharp.ru/posts/m/32609/</id>
    <title type="text">В BestByVolumeQuotingStrategy когда у лучшей заявки объем больше, чем суммарный который может стоять...</title>
    <published>2015-02-13T14:35:34Z</published>
    <updated>2015-02-13T14:35:34Z</updated>
    <author>
      <name>Иван З.</name>
      <uri>https://stocksharp.ru/users/6502/</uri>
      <email>info@stocksharp.ru</email>
    </author>
    <content type="html">&lt;p&gt;В BestByVolumeQuotingStrategy когда у лучшей заявки объем больше, чем суммарный который может стоять перед заявкой VolumeExchange. То заявку следует выставить перед этим объемом, то есть на 1 PriceStep лучше лучшей цены.&lt;/p&gt;
&lt;p&gt;[quote]А это условие зачем? Если у нас заявка попадает в приемлемый диапазон, то ведь это еще не значит, что ее не надо изменить (улучшить цену).&lt;/p&gt;
&lt;p&gt;StockSharp платформа.[/quote]&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.ru/posts/m/32608/</id>
    <title type="text">[code=csharp]if (Order != null &amp;amp;&amp;amp; acceptablePriceRange.Contains(Order.Price)) return null;[/code] А ...</title>
    <published>2015-02-13T14:23:42Z</published>
    <updated>2015-02-13T14:23:42Z</updated>
    <author>
      <name>Mikhail Sukhov</name>
      <uri>https://stocksharp.ru/users/201/</uri>
      <email>info@stocksharp.ru</email>
    </author>
    <content type="html">&lt;p&gt;[code=csharp]if (Order != null &amp;amp;&amp;amp; acceptablePriceRange.Contains(Order.Price))
return null;[/code]&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.ru/posts/m/32607/</id>
    <title type="text">Я можно теперь своими словами сказать зачем нужен этот сдвиг? </title>
    <published>2015-02-13T14:19:56Z</published>
    <updated>2015-02-13T14:19:56Z</updated>
    <author>
      <name>Mikhail Sukhov</name>
      <uri>https://stocksharp.ru/users/201/</uri>
      <email>info@stocksharp.ru</email>
    </author>
    <content type="html">&lt;p&gt;Я можно теперь своими словами сказать зачем нужен этот сдвиг?&lt;/p&gt;
</content>
    <rights type="html">Copyright @ StockSharp Platform LLC 2010 - 2025</rights>
  </entry>
  <entry>
    <id>https://stocksharp.ru/posts/m/32606/</id>
    <title type="text">Свойство. Упс. [quote]Получить цену лучше лучшей цены BestPrice, на минимальный шаг цены PriceStep, ...</title>
    <published>2015-02-13T13:57:49Z</published>
    <updated>2015-02-13T13:57:49Z</updated>
    <author>
      <name>Иван З.</name>
      <uri>https://stocksharp.ru/users/6502/</uri>
      <email>info@stocksharp.ru</email>
    </author>
    <content type="html">&lt;p&gt;Свойство. Упс.&lt;/p&gt;
&lt;p&gt;[quote]Получить цену лучше лучшей цены BestPrice, на минимальный шаг цены PriceStep, если отсутствуют котировки то будет возвращено &lt;see langword="null"/&gt;.[/quote]&lt;/p&gt;
&lt;p&gt;Если покупка BestPriceAddPriceStep=BestPrice+PriceStep
если продажа BestPriceAddPriceStep=BestPrice-PriceStep&lt;/p&gt;
&lt;p&gt;Я C# изучал на курсах у S#. Код рабочий, но он может быть не изящный как у тру програмистов.&lt;/p&gt;
</content>
    <rights type="html">Copyright @ StockSharp Platform LLC 2010 - 2025</rights>
  </entry>
  <entry>
    <id>https://stocksharp.ru/posts/m/32604/</id>
    <title type="text">А что делает метод BestPriceAddPriceStep? У него такое описание, что то ли половина слов пропало, то...</title>
    <published>2015-02-13T13:36:14Z</published>
    <updated>2015-02-13T13:36:14Z</updated>
    <author>
      <name>Mikhail Sukhov</name>
      <uri>https://stocksharp.ru/users/201/</uri>
      <email>info@stocksharp.ru</email>
    </author>
    <content type="html">&lt;p&gt;А что делает метод BestPriceAddPriceStep? У него такое описание, что то ли половина слов пропало, то ли запятые не выставлены:&lt;/p&gt;
&lt;p&gt;[quote]Получить цену лучше лучшей цены BestPrice, на минимальный шаг цены PriceStep то будет возвращено null.[/quote]&lt;/p&gt;
</content>
    <rights type="html">Copyright @ StockSharp Platform LLC 2010 - 2025</rights>
  </entry>
  <entry>
    <id>https://stocksharp.ru/posts/m/32593/</id>
    <title type="text">Почти на всех стратегиях котирования наблюдалась выше описанная проблема. Проблему поправил, провери...</title>
    <published>2015-02-12T19:24:25Z</published>
    <updated>2015-02-12T19:24:25Z</updated>
    <author>
      <name>Иван З.</name>
      <uri>https://stocksharp.ru/users/6502/</uri>
      <email>info@stocksharp.ru</email>
    </author>
    <content type="html">&lt;p&gt;Почти на всех стратегиях котирования наблюдалась выше описанная проблема. Проблему поправил, проверил на учебном Квике, выложил стратегии ВКонтакте &lt;a href="http://vk.com/docs?oid=-66650972" rel="nofollow" target="_blank"&gt;http://vk.com/docs?oid=-66650972&lt;/a&gt;&lt;/p&gt;
</content>
    <rights type="html">Copyright @ StockSharp Platform LLC 2010 - 2025</rights>
  </entry>
  <entry>
    <id>https://stocksharp.ru/posts/m/32548/</id>
    <title type="text">[quote=Михаил Сухов;32547]Думаю что вы не правы. Котирование как раз реагирует на изменение стакана....</title>
    <published>2015-02-05T13:15:39Z</published>
    <updated>2015-02-05T15:32:24Z</updated>
    <author>
      <name>Иван З.</name>
      <uri>https://stocksharp.ru/users/6502/</uri>
      <email>info@stocksharp.ru</email>
    </author>
    <content type="html">&lt;p&gt;[quote=Михаил Сухов;32547]Думаю что вы не правы. Котирование как раз реагирует на изменение стакана.[/quote]
Конечно реагирует, и пишет в лог, что стакан изменился.
[SPOILER]2015/02/05 21:37:54.294|Debug |MQS_HALS@QJSIM_83312|Правило 'Изменение стакана инструмента HALS@QJSIM (0x3B3F729)'. Активация.[/SPOILER]
Только она не видит, что изменилась лучшая цена, и поэтому ничего не делает.&lt;/p&gt;
&lt;p&gt;А должна написать (должна но не пишет и не делает), что лучшая цена изменилась
[SPOILER]2015/02/05 21:37:54.294| |MQS_HALS@QJSIM_83312|Цена текущей 1281 и лучшей 1278.
2015/02/05 21:37:54.294| |MQS_HALS@QJSIM_83312|Лучший бид 1281 и лучший аск 1289.[/SPOILER]
поэтому начинаю котирование
[SPOILER]2015/02/05 21:37:54.294| |MQS_HALS@QJSIM_83312|Котирование заявки 77834723 (0x2641245) на Buy с ценой 1281 объемом 1.[/SPOILER]&lt;/p&gt;
&lt;p&gt;RomSunZ все верно сказал,	
[quote]MQS считает свою заявку лучшей, поэтому не откатывает эту заявку &amp;quot;назад&amp;quot; к краю спреда в стакане. [/quote]&lt;/p&gt;
</content>
    <rights type="html">Copyright @ StockSharp Platform LLC 2010 - 2025</rights>
  </entry>
</feed>