← Назад

Котирование

Как я понимаю есть 2 варианта запустить котирования

  1. из документации http://stocksharp.com/doc/?topic=html/24250c24-029c-4dbc-bc8b-4afde645e483.htm
var strategy = new MarketQuotingStrategy(order, new Unit());
base.ChildStrategies.Add(strategy);

Работает нормально, по крайней мере позиции набирает.

  1. из одного из обновления http://stocksharp.com/forum/2285/Stock--4-0-Release/

this.OpenPositionByQuoting(10);

Работает не нормально, либо не правильно использую В стратегии просто набираю позицию


using MoreLinq;
using StockSharp.Algo.Strategies.Quoting;
using StockSharp.BusinessEntities;

namespace Sample
{
    using StockSharp.Algo;
    using StockSharp.Algo.Candles;
    using StockSharp.Algo.Indicators;
    using StockSharp.Algo.Strategies;
    using StockSharp.Messages;
  
    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);
            }
  
        }
    }
}

В тестовом КВИКе выдает ошибку Лог приложу Еще раз повторю, что 1й работает а 2й не работает Вопрос: это я не правильно использую или это баг?

Комментарии (41)

Вход или Создать аккаунт, Войдите или зарегистрируйтесь, чтобы оставить комментарий

Иван З.
Иван З. Автор

В общем соврал я. Оба не работают, просто 2 вариант несколько раз без ошибок отработал. Прикрепляю лог в него писал и Trader и Stratagy В логе есть такая строка

85487309/ Покупка Цена=9615 <mark>Объем=0</mark> Сост=Failed Бал=0 System.InvalidOperationException: kolichestvo v zayavke dolzhno byt' polozhitel'no

Иван З.
Иван З. Автор

Проблема появляется при перерегистрации заявки. Если написать так


               var strat = new MarketQuotingStrategy(Sides.Buy, 10)
               {
                   IsSupportAtomicReRegister = false,
                   //Поддерживается ли перерегистрация заявок через метод ReRegisterOrder(Order,Order) в виде одной транзакции. По-умолчанию включено.
               };
               base.ChildStrategies.Add(strat);

то работает нормально.

По какой то причине через метод ReRegisterOrder работать не хочет, это проблема в Квике? где то настраивается? в S#? Где то читал, что перетаскивать только на срочке можно, так ли это? Подскажите пожалуйста.

Mikhail Sukhov
Mikhail Sukhov

Луа?

Иван З.
Иван З. Автор

Да

Иван З.
Иван З. Автор

И еще заметил, что при котировании заявка не откатывается на лучшую цену. на рисунке видно, что заявка стоит по 9518 а должна бы передвинутся на 9516. Пробовал уже всяко, все параметры по переставлял не откатывает. Если перед заявкой появляется другая то передвигает как положено, а если после заявки уходят, то на лучшую цену не откатывает. Как быть?

Mikhail Sukhov
Mikhail Sukhov

В кратце - мув для ММВБ не реализован в Квике.

Иван З.
Иван З. Автор

Спасибо! А можно еще кратенько прокоментировать ситуацию, про то что котирование не откатывается на лучшую цену. На форуме этот вопрос уже поднимался, а ответа нет. На мой взгляд очень важное замечание.

  1. это баг
  2. это можно настроить в MQS
  3. не понятно о чем речь
  4. надо больше информации 😀
Mikhail Sukhov
Mikhail Sukhov

Иван З.: Спасибо! А можно еще кратенько прокоментировать ситуацию, про то что котирование не откатывается на лучшую цену. На форуме этот вопрос уже поднимался, а ответа нет. На мой взгляд очень важное замечание.

  1. это баг
  2. это можно настроить в MQS
  3. не понятно о чем речь
  4. надо больше информации 😀

По логам вам нужно понять причину и нам сообщить ее.😀

Иван З.
Иван З. Автор

Вот поведение MQS при перекотировании заявки, когда перед ней встала другая заявка. Перекотировалась на новую цену.

2015/01/21 23:40:20.639|Debug <mark>|QuikTrader|BP:Level1Change,T(L)=2015.01.21 23:40:20.661,T(S)=2015.01.21 16:40:20.659,Sec=S#:LNZL@QJSIM, Native:,Type:Stock,Changes=[PriceStep, 10],[BestBidPrice, 4750],[BestBidVolume, 1],[BestAskPrice, 4858],[BestAskVolume, 1],[BidsCount, 20],[AsksCount, 19],[BidsVolume, 47],[AsksVolume, 60],[OpenPrice, 4760],[LowPrice, 4609],[HighPrice, 4950],[ClosePrice, 3660],[LastTradePrice, 4858],[LastTradeVolume, 1],[VWAP, 4763],[TradesCount, 151],[Volume, 341]</mark> 2015/01/21 23:40:20.667|Debug |Quik |Сессия '#=q6lfbb4h3ENxsMQYxU6M9vubQgYKnsf_o4mdLTJ1QUONE7S4TC9sTg$ICIR4Z2dpZFa6oGgAmOK8bHIYf8ieO1w=='. From server: '8=FIX.4.49=18635=834=13049=quik52=20150121-13:40:20.66656=StockSharpTS1=8331211=014=037=126680986438=139=040=241=044=475054=155=LNZL59=160=20150121-13:40:30.000150=0151=1207=QJSIM10=043' 2015/01/21 23:40:20.667|Debug |Quik |Сессия 'StockSharp.Fix.FixMessageAdapter'. From server: '8=FIX.4.49=71035=X34=1049=quik52=20150121-13:40:20.66656=StockSharpMD262=85159581268=10279=1269=0270=4682271=2272=20150121273=13:40:20.662290=0279=1269=0270=4689271=3272=20150121273=13:40:20.662290=1279=1269=0270=4690271=5272=20150121273=13:40:20.662290=2279=1269=0270=4691271=1272=20150121273=13:40:20.662290=3279=1269=0270=4695271=1272=20150121273=13:40:20.662290=4279=1269=0270=4698271=2272=20150121273=13:40:20.662290=5279=1269=0270=4700271=1272=20150121273=13:40:20.662290=6279=1269=0270=4719271=1272=20150121273=13:40:20.662290=7279=1269=0270=4720271=2272=20150121273=13:40:20.662290=8279=1269=0270=4750271=1272=20150121273=13:40:20.662290=910=210' 2015/01/21 23:40:20.661|Debug |QuikTrader|BP:QuoteChange,T(L)=2015.01.21 23:40:20.667,T(S)=2015.01.21 16:40:20.666 <mark>2015/01/21 23:40:20.667|Debug |MQS_LNZL@QJSIM_83312|Правило 'Изменение стакана инструмента LNZL@QJSIM (0x31E27EC)'. Активация.</mark> <mark>2015/01/21 23:40:20.667| |MQS_LNZL@QJSIM_83312|Цена текущей 4720 и лучшей 4750. 2015/01/21 23:40:20.667| |MQS_LNZL@QJSIM_83312|Лучший бид 4750 и лучший аск 4858. 2015/01/21 23:40:20.667| |MQS_LNZL@QJSIM_83312|Котирование заявки 85159582 (0x3E12596) на Buy с ценой 4720 объемом 1. 2015/01/21 23:40:20.667| |MQS_LNZL@QJSIM_83312|Отмена заявки 85159582 (0x3E12596). 2015/01/21 23:40:20.667| |MQS_LNZL@QJSIM_83312|Отмена заявки 85159582 (0x3E12596).</mark> 2015/01/21 23:40:20.667| |QuikTrader|CancelOrder: 85159582/1266809102 Покупка Цена=4720 Объем=1 Сост=Active Бал=1 2015/01/21 23:40:20.672|Debug |Quik |Сессия '#=q6lfbb4h3ENxsMQYxU6M9vubQgYKnsf_o4mdLTJ1QUONE7S4TC9sTg$ICIR4Z2dpZFa6oGgAmOK8bHIYf8ieO1w=='. From server: '8=FIX.4.49=18635=834=13149=quik52=20150121-13:40:20.67156=StockSharpTS1=8331211=014=037=126680986438=139=040=241=044=475054=155=LNZL59=160=20150121-13:40:30.000150=0151=1207=QJSIM10=040' 2015/01/21 23:40:20.673|Debug |Quik |Sending to 127.0.0.1:5001: 8=FIX.4.49=17535=F34=549=quik52=20150121-13:40:20.67256=StockSharpTS1=8331211=8515958337=126680910238=141=8515958255=LNZL58=Limit60=20150121-23:40:20.672167=CS207=QJSIM461=E10=080 2015/01/21 23:40:21.697|Debug |Quik |Сессия 'StockSharp.Fix.FixMessageAdapter'. From server: '8=FIX.4.49=97735=X34=1149=quik52=20150121-13:40:21.69556=StockSharpMD262=85159577268=18279=1269=#270=10272=20150121273=23:40:21.692279=1269=b270=4750272=20150121273=23:40:21.692279=1269=n270=1272=20150121273=23:40:21.692279=1269=c270=4858272=20150121273=23:40:21.692279=1269=m270=1272=20150121273=23:40:21.692279=1269=q270=19272=20150121273=23:40:21.692279=1269=r270=19272=20150121273=23:40:21.692279=1269=w270=46272=20150121273=23:40:21.692279=1269=e270=60272=20150121273=23:40:21.692279=1269=4270=4760272=20150121273=23:40:21.692279=1269=8270=4609272=20150121273=23:40:21.692279=1269=7270=4950272=20150121273=23:40:21.692279=1269=5270=3660272=20150121273=23:40:21.692279=1269=p270=4858272=20150121273=23:40:21.692279=1269=v270=1272=20150121273=23:40:21.692279=1269=9270=4763272=20150121273=23:40:21.692279=1269=d270=151272=20150121273=23:40:21.692279=1269=B270=341272=20150121273=23:40:21.69210=061' 2015/01/21 23:40:21.685|Debug |QuikTrader|BP:Level1Change,T(L)=2015.01.21 23:40:21.698,T(S)=2015.01.21 16:40:21.695,Sec=S#:LNZL@QJSIM, Native:,Type:Stock,Changes=[PriceStep, 10],[BestBidPrice, 4750],[BestBidVolume, 1],[BestAskPrice, 4858],[BestAskVolume, 1],[BidsCount, 19],[AsksCount, 19],[BidsVolume, 46],[AsksVolume, 60],[OpenPrice, 4760],[LowPrice, 4609],[HighPrice, 4950],[ClosePrice, 3660],[LastTradePrice, 4858],[LastTradeVolume, 1],[VWAP, 4763],[TradesCount, 151],[Volume, 341] 2015/01/21 23:40:21.701|Debug |Quik |Сессия 'StockSharp.Fix.FixMessageAdapter'. From server: '8=FIX.4.49=14235=X34=1249=quik52=20150121-13:40:21.70056=StockSharpMD262=85159581268=1279=1269=0270=4720271=1272=20150121273=13:40:21.696290=810=184' 2015/01/21 23:40:21.698|Debug |QuikTrader|BP:QuoteChange,T(L)=2015.01.21 23:40:21.701,T(S)=2015.01.21 16:40:21.700 2015/01/21 23:40:21.701|Debug |Quik |Сессия '#=q6lfbb4h3ENxsMQYxU6M9vubQgYKnsf_o4mdLTJ1QUONE7S4TC9sTg$ICIR4Z2dpZFa6oGgAmOK8bHIYf8ieO1w=='. From server: '8=FIX.4.49=19335=834=13249=quik52=20150121-13:40:21.70056=StockSharpTS1=8331211=014=037=126680910238=139=440=241=8515958244=472054=155=LNZL59=160=20150121-13:39:57.000150=4151=1207=QJSIM10=163' 2015/01/21 23:40:21.701|Debug |MQS_LNZL@QJSIM_83312|Правило 'Изменение стакана инструмента LNZL@QJSIM (0x31E27EC)'. Активация. 2015/01/21 23:40:21.701|Debug |MQS_LNZL@QJSIM_83312|Заявка 85159582 (0x3E12596) в процессе снятия. 2015/01/21 23:40:21.701|Debug |QuikTrader|BP:Execution,T(L)=2015.01.21 23:40:21.701,T(S)=2015.01.21 16:39:57.000,(Order),Sec=S#:LNZL@QJSIM, Native:,Type:,Ord=1266809102/0/85159582,Fail=,TId=0,Pf=83312,TPrice=0,UId= 2015/01/21 23:40:21.701| |QuikTrader|Order changed: 85159582/1266809102 Покупка Цена=4720 Объем=1 Сост=Done Бал=1 2015/01/21 23:40:21.701|Debug |MQS_LNZL@QJSIM_83312|Правило 'Отмена заявки 85159582/1266809102 (0x283D742) OR Полное исполнение 85159582/1266809102 (0x10D5FB2) OR Ошибка регистрации заявки 85159582/1266809102 (0xEF627A)'. Активация. 2015/01/21 23:40:21.701| |MQS_LNZL@QJSIM_83312|Заявка 85159582 (0x3E12596) больше не активна. 2015/01/21 23:40:21.701|Debug |MQS_LNZL@QJSIM_83312|Правило 'Отмена заявки 85159582/1266809102 (0x283D742) OR Полное исполнение 85159582/1266809102 (0x10D5FB2) OR Ошибка регистрации заявки 85159582/1266809102 (0xEF627A)'. Удаляется. 2015/01/21 23:40:21.701|Debug |MQS_LNZL@QJSIM_83312|Правило 'Отмена заявки 85159582/1266809102 (0x283D742)'. Освободило ресурсы. 2015/01/21 23:40:21.701|Debug |MQS_LNZL@QJSIM_83312|Правило 'Полное исполнение 85159582/1266809102 (0x10D5FB2)'. Освободило ресурсы. 2015/01/21 23:40:21.701|Debug |MQS_LNZL@QJSIM_83312|Правило 'Ошибка регистрации заявки 85159582/1266809102 (0xEF627A)'. Освободило ресурсы. 2015/01/21 23:40:21.701|Debug |MQS_LNZL@QJSIM_83312|Правило 'Отмена заявки 85159582/1266809102 (0x283D742) OR Полное исполнение 85159582/1266809102 (0x10D5FB2) OR Ошибка регистрации заявки 85159582/1266809102 (0xEF627A)'. Освободило ресурсы. 2015/01/21 23:40:21.701|Debug |MQS_LNZL@QJSIM_83312|Правило 'Ошибка снятия заявки 85159582/1266809102 (0x2A4D469)'. Удаляется. 2015/01/21 23:40:21.701|Debug |MQS_LNZL@QJSIM_83312|Правило 'Ошибка снятия заявки 85159582/1266809102 (0x2A4D469)'. Освободило ресурсы. 2015/01/21 23:40:21.701|Debug |MQS_LNZL@QJSIM_83312|Правило 'Ошибка снятия заявки 85159582/1266809102 (0x2A4D469)'. Удалено. 2015/01/21 23:40:21.701|Debug |MQS_LNZL@QJSIM_83312|Правило 'Отмена заявки 85159582/1266809102 (0x283D742) OR Полное исполнение 85159582/1266809102 (0x10D5FB2) OR Ошибка регистрации заявки 85159582/1266809102 (0xEF627A)'. Удаление. 2015/01/21 23:40:21.701|Debug |MQS_LNZL@QJSIM_83312|Правило 'Ошибка снятия заявки 85159582/1266809102 (0x2A4D469)'. Удаление. 2015/01/21 23:40:21.701|Debug |MQS_LNZL@QJSIM_83312|Правило 'Отмена заявки 85159582/1266809102 (0x26F7D43)'. Активация. 2015/01/21 23:40:21.701| |MQS_LNZL@QJSIM_83312|Заявка 85159582 (0x3E12596) была снята. Время снятия 21.01.2015 23:40:21 +10:00. 2015/01/21 23:40:21.701|Debug |MQS_LNZL@QJSIM_83312|Правило 'Полное исполнение 85159582/1266809102 (0x167CEC8)'. Удаляется. 2015/01/21 23:40:21.701|Debug |MQS_LNZL@QJSIM_83312|Правило 'Полное исполнение 85159582/1266809102 (0x167CEC8)'. Освободило ресурсы. 2015/01/21 23:40:21.701| |MQS_LNZL@QJSIM_83312|Цена текущей NULL и лучшей 4750. 2015/01/21 23:40:21.701| |MQS_LNZL@QJSIM_83312|Лучший бид 4750 и лучший аск 4858. 2015/01/21 23:40:21.701| |MQS_LNZL@QJSIM_83312|Регистрация новой Limit (0x283B9E6) заявки на Buy с ценой 4750 и объемом 1. 2015/01/21 23:40:21.701| |QuikTrader|RegisterOrder: 0/ Покупка Цена=4750 Объем=1 Сост=None Бал=0 2015/01/21 23:40:21.701|Debug |MQS_LNZL@QJSIM_83312|Правило 'Регистрация заявки 85159585/ (0x90D914)'. Подписалось на события. 2015/01/21 23:40:21.701|Debug |MQS_LNZL@QJSIM_83312|Правило 'Ошибка регистрации заявки 85159585/ (0x1634BE2)'. Подписалось на события. 2015/01/21 23:40:21.701|Debug |MQS_LNZL@QJSIM_83312|Правило 'Полное исполнение 85159585/ (0xA914DB)'. Подписалось на события. 2015/01/21 23:40:21.701|Debug |MQS_LNZL@QJSIM_83312|Правило 'Полное исполнение 85159585/ (0x230DF28)'. Подписалось на события. 2015/01/21 23:40:21.701|Debug |MQS_LNZL@QJSIM_83312|Правило 'Отмена заявки 85159585/ (0x1480B08)'. Подписалось на события. 2015/01/21 23:40:21.701|Debug |MQS_LNZL@QJSIM_83312|Правило 'Ошибка регистрации заявки 85159585/ (0x16C5A70)'. Подписалось на события. 2015/01/21 23:40:21.701|Debug |MQS_LNZL@QJSIM_83312|Правило 'Ошибка снятия заявки 85159585/ (0x1A0309A)'. Подписалось на события. 2015/01/21 23:40:21.701|Debug |MQS_LNZL@QJSIM_83312|Правило 'Отмена заявки 85159582/1266809102 (0x26F7D43)'. Удаляется. 2015/01/21 23:40:21.701|Debug |MQS_LNZL@QJSIM_83312|Правило 'Отмена заявки 85159582/1266809102 (0x26F7D43)'. Освободило ресурсы. 2015/01/21 23:40:21.701|Debug |MQS_LNZL@QJSIM_83312|Правило 'Отмена заявки 85159582/1266809102 (0x26F7D43)'. Удаление.

А это поведение, когда заявки после нее убрали, если не считать мою заявку, ей есть куда передвигаться. На картинке видно, что [BestBidPrice, 4750],[BestBidVolume, 1] это моя заявка выставленная MQS, а лучшая цена [BestBidPrice, 4721],[BestBidVolume, 14]

2015/01/21 23:40:39.129|Debug |QuikTrader|<mark>BP:Level1Change,T(L)=2015.01.21 23:40:39.134,T(S)=2015.01.21 16:40:39.132,Sec=S#:LNZL@QJSIM, Native:,Type:Stock,Changes=[PriceStep, 10],[BestBidPrice, 4750],[BestBidVolume, 1],[BestAskPrice, 4858],[BestAskVolume, 1],[BidsCount, 18],[AsksCount, 19],[BidsVolume, 45],[AsksVolume, 60],[OpenPrice, 4760],[LowPrice, 4609],[HighPrice, 4950],[ClosePrice, 3660],[LastTradePrice, 4858],[LastTradeVolume, 1],[VWAP, 4763],[TradesCount, 151],[Volume, 341]</mark> 2015/01/21 23:40:39.142|Debug |Quik |Сессия 'StockSharp.Fix.FixMessageAdapter'. From server: '8=FIX.4.49=14235=X34=1949=quik52=20150121-13:40:39.14156=StockSharpMD262=85159581268=1279=1269=0270=4750271=1272=20150121273=13:40:39.137290=910=202' 2015/01/21 23:40:39.140|Debug |QuikTrader|BP:QuoteChange,T(L)=2015.01.21 23:40:39.142,T(S)=2015.01.21 16:40:39.141 <mark>2015/01/21 23:40:39.142|Debug |MQS_LNZL@QJSIM_83312|Правило 'Изменение стакана инструмента LNZL@QJSIM (0x31E27EC)'. Активация.</mark> 2015/01/21 23:40:39.240|Debug |Quik |Сессия '#=q6lfbb4h3ENxsMQYxU6M9vubQgYKnsf_o4mdLTJ1QUONE7S4TC9sTg$ICIR4Z2dpZFa6oGgAmOK8bHIYf8ieO1w=='. From server: '8=FIX.4.49=18635=834=15549=quik52=20150121-13:40:39.23856=StockSharpTS1=8331211=014=037=126680986438=139=440=241=044=475054=155=LNZL59=160=20150121-13:40:30.000150=4151=1207=QJSIM10=063' 2015/01/21 23:40:39.249|Debug |Quik |Сессия '#=q6lfbb4h3ENxsMQYxU6M9vubQgYKnsf_o4mdLTJ1QUONE7S4TC9sTg$ICIR4Z2dpZFa6oGgAmOK8bHIYf8ieO1w=='. From server: '8=FIX.4.49=15335=AP34=15649=quik52=20150121-13:40:39.24856=StockSharpTS1=8331255=StockSharpMoney581=3728=0753=2707=SMTM708=297137.13707=CRES708=296915.4610=008' 2015/01/21 23:40:39.239|Debug |QuikTrader|BP:PortfolioChange,T(L)=2015.01.21 23:40:39.249,T(S)=2015.01.21 16:40:39.248,P=83312,Changes=[BeginValue, 297137,13],[CurrentValue, 296915,46]

В следствии чего можно предположить, что причиной такого поведения MQS, является то, что MQS лучшей ценой считает свою же заявку. Возможно данные о стакане по какой то причине не доходят до MQS. И она работает по последним сделкам. Такое поведение MQS нельзя считать удовлетворительной. Пробовал делать параметр UseLastTradePrice = false. Не помогает. Стакан зарегистрирован. Это все, что я могу по логам предположить.

Mikhail Sukhov
Mikhail Sukhov

По логам мало что понятно. Нужны логи стратегии, а не коннектора.

Иван З.
Иван З. Автор

Перед стартом стратегии После старта стратегии, MQS выставила заявку на 1227 Появилась заявка выше на 1230, MQS переставила заявку на 1231 Заявка что была на 1230 ушла, заявка MQS осталась на 1231, а должна была откатится 1227

код вызова MQS


        void OpenPositionQuoting(Sides side, decimal volume)
        {
            
            var strat = new MarketQuotingStrategy(side, volume)
            {
                IsSupportAtomicReRegister = false,
                BestPriceOffset =Security.PriceStep, // Отступ от лучшей цены, на который может уйти котируемая заявка.
                PriceOffset = Security.PriceStep,     // котировки (для покупки прибавляется к цене, для продажи - вычитается).
                PriceType = MarketPriceTypes.Following,
                LogLevel = LogLevels.Debug,
            };
            base.ChildStrategies.Add(strat);
        }

Лог стратегии прилагается.

Если унаследоваться от MarketQuotingStrategy и переопределить BestPrice на код аналогичный сорцам на http://stocksharp.codeplex.com/SourceControl/latest#Sources/Algo/Strategies/QuotingStrategy.cs


protected override decimal? BestPrice
         {
             get
             {
                 var quote = GetFilteredQuotes(QuotingDirection).FirstOrDefault();
                 if (quote != null) return quote.Price;
                 return (decimal)Security.GetCurrentPrice(Connector, QuotingDirection.Invert());
             }
         }

заявка назад начинает откатывать, правда тоже есть проблемы но уже другого характера.

<mark><u>Смотреть всем!</u></mark>

Михаил, думаю полезно будет выложить актуальные сорцы адаптированны к последней версии S# на github, которые не имеют коммерческой ценности или уже выложены. Стратегии, индикаторы и др., они уже выложены codeplex но слегка устарели. Пользователю будет польза, и к вам меньше вопросов на подобие этого. Народ выскажитесь кто что думает по этому поводу, может коллективом уговорим! 😀

Mikhail Sukhov
Mikhail Sukhov

Я предлагаю все же не уходить сильно далеко от логов.

Они приложены. Анализ логов не увидел.

Иван З.
Иван З. Автор
2015/01/24 23:53:08.127|Debug |MS_HALS@QJSIM_83312|Переход из состояния Stopped в Started. 2015/01/24 23:53:08.127| |MS_HALS@QJSIM_83312|Стратегия запущена. [0,-1]. Позиция 0. 2015/01/24 23:53:08.138|Debug |MQS_HALS@QJSIM_83312|Переход из состояния Stopped в Started. 2015/01/24 23:53:08.138| |MQS_HALS@QJSIM_83312|Стратегия запущена. [0,1]. Позиция 0. 2015/01/24 23:53:08.144| |MQS_HALS@QJSIM_83312|Котирование на Buy объема 1. 2015/01/24 23:53:08.144|Debug |MQS_HALS@QJSIM_83312|Приостановка правил. _rulesSuspendCount 1. 2015/01/24 23:53:08.144|Debug |MQS_HALS@QJSIM_83312|Возобновление правил. _rulesSuspendCount 0. 2015/01/24 23:53:08.160| |MQS_HALS@QJSIM_83312|Цена текущей NULL и лучшей 1227. 2015/01/24 23:53:08.160| |MQS_HALS@QJSIM_83312|Лучший бид 1226 и лучший аск 1248. 2015/01/24 23:53:08.160| |MQS_HALS@QJSIM_83312|Регистрация новой Limit (0x1AE41D5) заявки на Buy с ценой 1227 и объемом 1. 2015/01/24 23:53:08.160|Debug |MQS_HALS@QJSIM_83312|Правило 'Регистрация заявки 85940418/1276155517 (0x42FADC)'. Подписалось на события. 2015/01/24 23:53:08.160|Debug |MQS_HALS@QJSIM_83312|Правило 'Ошибка регистрации заявки 85940418/1276155517 (0x22F83E8)'. Подписалось на события. 2015/01/24 23:53:08.160|Debug |MQS_HALS@QJSIM_83312|Правило 'Полное исполнение 85940418/1276155517 (0xDE1090)'. Подписалось на события. 2015/01/24 23:53:08.160|Debug |MQS_HALS@QJSIM_83312|Правило 'Полное исполнение 85940418/1276155517 (0x224C341)'. Подписалось на события. 2015/01/24 23:53:08.160|Debug |MQS_HALS@QJSIM_83312|Правило 'Отмена заявки 85940418/1276155517 (0x234D49E)'. Подписалось на события. 2015/01/24 23:53:08.160|Debug |MQS_HALS@QJSIM_83312|Правило 'Ошибка регистрации заявки 85940418/1276155517 (0x38A9890)'. Подписалось на события. 2015/01/24 23:53:08.160|Debug |MQS_HALS@QJSIM_83312|Правило 'Ошибка снятия заявки 85940418/1276155517 (0x38695BD)'. Подписалось на события. 2015/01/24 23:53:08.516|Debug |MQS_HALS@QJSIM_83312|Правило 'Регистрация заявки 85940418/1276155517 (0x42FADC)'. Активация. 2015/01/24 23:53:08.516| |MQS_HALS@QJSIM_83312|Заявка 85940418 (0x1AE41D5) принята биржей. 2015/01/24 23:53:08.516| |MQS_HALS@QJSIM_83312|Сброс счетчика ошибок регистрации с 0 до нуля. 2015/01/24 23:53:08.516|Debug |MQS_HALS@QJSIM_83312|Правило 'Регистрация заявки 85940418/1276155517 (0x42FADC)'. Удаляется. 2015/01/24 23:53:08.516|Debug |MQS_HALS@QJSIM_83312|Правило 'Регистрация заявки 85940418/1276155517 (0x42FADC)'. Освободило ресурсы. 2015/01/24 23:53:08.516|Debug |MQS_HALS@QJSIM_83312|Правило 'Ошибка регистрации заявки 85940418/1276155517 (0x22F83E8)'. Удаляется. 2015/01/24 23:53:08.516|Debug |MQS_HALS@QJSIM_83312|Правило 'Ошибка регистрации заявки 85940418/1276155517 (0x22F83E8)'. Освободило ресурсы. 2015/01/24 23:53:08.516|Debug |MQS_HALS@QJSIM_83312|Правило 'Ошибка регистрации заявки 85940418/1276155517 (0x22F83E8)'. Удалено. 2015/01/24 23:53:08.516|Debug |MQS_HALS@QJSIM_83312|Правило 'Регистрация заявки 85940418/1276155517 (0x42FADC)'. Удаление. 2015/01/24 23:53:08.516|Debug |MQS_HALS@QJSIM_83312|Правило 'Ошибка регистрации заявки 85940418/1276155517 (0x22F83E8)'. Удаление. 2015/01/24 23:53:08.520|Debug |MQS_HALS@QJSIM_83312|Правило 'Изменение стакана инструмента HALS@QJSIM (0x104A801)'. Активация. <mark>2015/01/24 23:54:06.615|Debug |MQS_HALS@QJSIM_83312|Правило 'Изменение стакана инструмента HALS@QJSIM (0x104A801)'. Активация. 2015/01/24 23:54:06.615| |MQS_HALS@QJSIM_83312|Цена текущей 1227 и лучшей 1231. 2015/01/24 23:54:06.615| |MQS_HALS@QJSIM_83312|Лучший бид 1230 и лучший аск 1248.</mark> 2015/01/24 23:54:06.615| |MQS_HALS@QJSIM_83312|Котирование заявки 85940418 (0x1AE41D5) на Buy с ценой 1227 объемом 1. 2015/01/24 23:54:06.615| |MQS_HALS@QJSIM_83312|Отмена заявки 85940418 (0x1AE41D5). 2015/01/24 23:54:06.615| |MQS_HALS@QJSIM_83312|Отмена заявки 85940418 (0x1AE41D5). 2015/01/24 23:54:07.494|Debug |MQS_HALS@QJSIM_83312|Правило 'Изменение стакана инструмента HALS@QJSIM (0x104A801)'. Активация. 2015/01/24 23:54:07.494|Debug |MQS_HALS@QJSIM_83312|Заявка 85940418 (0x1AE41D5) в процессе снятия. 2015/01/24 23:54:07.624|Debug |MQS_HALS@QJSIM_83312|Правило 'Отмена заявки 85940418/1276155517 (0x234D49E) OR Полное исполнение 85940418/1276155517 (0x224C341) OR Ошибка регистрации заявки 85940418/1276155517 (0x38A9890)'. Активация. 2015/01/24 23:54:07.624| |MQS_HALS@QJSIM_83312|Заявка 85940418 (0x1AE41D5) больше не активна. 2015/01/24 23:54:07.624|Debug |MQS_HALS@QJSIM_83312|Правило 'Отмена заявки 85940418/1276155517 (0x234D49E) OR Полное исполнение 85940418/1276155517 (0x224C341) OR Ошибка регистрации заявки 85940418/1276155517 (0x38A9890)'. Удаляется. 2015/01/24 23:54:07.624|Debug |MQS_HALS@QJSIM_83312|Правило 'Отмена заявки 85940418/1276155517 (0x234D49E)'. Освободило ресурсы. 2015/01/24 23:54:07.624|Debug |MQS_HALS@QJSIM_83312|Правило 'Полное исполнение 85940418/1276155517 (0x224C341)'. Освободило ресурсы. 2015/01/24 23:54:07.624|Debug |MQS_HALS@QJSIM_83312|Правило 'Ошибка регистрации заявки 85940418/1276155517 (0x38A9890)'. Освободило ресурсы. 2015/01/24 23:54:07.624|Debug |MQS_HALS@QJSIM_83312|Правило 'Отмена заявки 85940418/1276155517 (0x234D49E) OR Полное исполнение 85940418/1276155517 (0x224C341) OR Ошибка регистрации заявки 85940418/1276155517 (0x38A9890)'. Освободило ресурсы. 2015/01/24 23:54:07.624|Debug |MQS_HALS@QJSIM_83312|Правило 'Ошибка снятия заявки 85940418/1276155517 (0x38695BD)'. Удаляется. 2015/01/24 23:54:07.624|Debug |MQS_HALS@QJSIM_83312|Правило 'Ошибка снятия заявки 85940418/1276155517 (0x38695BD)'. Освободило ресурсы. 2015/01/24 23:54:07.624|Debug |MQS_HALS@QJSIM_83312|Правило 'Ошибка снятия заявки 85940418/1276155517 (0x38695BD)'. Удалено. 2015/01/24 23:54:07.624|Debug |MQS_HALS@QJSIM_83312|Правило 'Отмена заявки 85940418/1276155517 (0x234D49E) OR Полное исполнение 85940418/1276155517 (0x224C341) OR Ошибка регистрации заявки 85940418/1276155517 (0x38A9890)'. Удаление. 2015/01/24 23:54:07.624|Debug |MQS_HALS@QJSIM_83312|Правило 'Ошибка снятия заявки 85940418/1276155517 (0x38695BD)'. Удаление. 2015/01/24 23:54:07.624|Debug |MQS_HALS@QJSIM_83312|Правило 'Отмена заявки 85940418/1276155517 (0x3944B11)'. Активация. 2015/01/24 23:54:07.624| |MQS_HALS@QJSIM_83312|Заявка 85940418 (0x1AE41D5) была снята. Время снятия 24.01.2015 23:54:07 +10:00. 2015/01/24 23:54:07.624|Debug |MQS_HALS@QJSIM_83312|Правило 'Полное исполнение 85940418/1276155517 (0xDE1090)'. Удаляется. 2015/01/24 23:54:07.624|Debug |MQS_HALS@QJSIM_83312|Правило 'Полное исполнение 85940418/1276155517 (0xDE1090)'. Освободило ресурсы. 2015/01/24 23:54:07.624| |MQS_HALS@QJSIM_83312|Цена текущей NULL и лучшей 1231. 2015/01/24 23:54:07.624| |MQS_HALS@QJSIM_83312|Лучший бид 1230 и лучший аск 1248. 2015/01/24 23:54:07.624| |MQS_HALS@QJSIM_83312|Регистрация новой Limit (0x2771C25) заявки на Buy с ценой 1231 и объемом 1. 2015/01/24 23:54:07.624|Debug |MQS_HALS@QJSIM_83312|Правило 'Регистрация заявки 85940422/ (0x255E315)'. Подписалось на события. 2015/01/24 23:54:07.624|Debug |MQS_HALS@QJSIM_83312|Правило 'Ошибка регистрации заявки 85940422/ (0x261B4DF)'. Подписалось на события. 2015/01/24 23:54:07.624|Debug |MQS_HALS@QJSIM_83312|Правило 'Полное исполнение 85940422/ (0x1481936)'. Подписалось на события. 2015/01/24 23:54:07.624|Debug |MQS_HALS@QJSIM_83312|Правило 'Полное исполнение 85940422/ (0x7C38D0)'. Подписалось на события. 2015/01/24 23:54:07.624|Debug |MQS_HALS@QJSIM_83312|Правило 'Отмена заявки 85940422/ (0x1026A4D)'. Подписалось на события. 2015/01/24 23:54:07.624|Debug |MQS_HALS@QJSIM_83312|Правило 'Ошибка регистрации заявки 85940422/ (0x1F3F099)'. Подписалось на события. 2015/01/24 23:54:07.624|Debug |MQS_HALS@QJSIM_83312|Правило 'Ошибка снятия заявки 85940422/ (0xF67309)'. Подписалось на события. 2015/01/24 23:54:07.624|Debug |MQS_HALS@QJSIM_83312|Правило 'Отмена заявки 85940418/1276155517 (0x3944B11)'. Удаляется. 2015/01/24 23:54:07.624|Debug |MQS_HALS@QJSIM_83312|Правило 'Отмена заявки 85940418/1276155517 (0x3944B11)'. Освободило ресурсы. 2015/01/24 23:54:07.624|Debug |MQS_HALS@QJSIM_83312|Правило 'Отмена заявки 85940418/1276155517 (0x3944B11)'. Удаление. 2015/01/24 23:54:08.589|Debug |MQS_HALS@QJSIM_83312|Правило 'Регистрация заявки 85940422/1276157798 (0x255E315)'. Активация. 2015/01/24 23:54:08.589| |MQS_HALS@QJSIM_83312|Заявка 85940422 (0x2771C25) принята биржей. 2015/01/24 23:54:08.589| |MQS_HALS@QJSIM_83312|Сброс счетчика ошибок регистрации с 0 до нуля. 2015/01/24 23:54:08.589|Debug |MQS_HALS@QJSIM_83312|Правило 'Регистрация заявки 85940422/1276157798 (0x255E315)'. Удаляется. 2015/01/24 23:54:08.589|Debug |MQS_HALS@QJSIM_83312|Правило 'Регистрация заявки 85940422/1276157798 (0x255E315)'. Освободило ресурсы. 2015/01/24 23:54:08.589|Debug |MQS_HALS@QJSIM_83312|Правило 'Ошибка регистрации заявки 85940422/1276157798 (0x261B4DF)'. Удаляется. 2015/01/24 23:54:08.589|Debug |MQS_HALS@QJSIM_83312|Правило 'Ошибка регистрации заявки 85940422/1276157798 (0x261B4DF)'. Освободило ресурсы. 2015/01/24 23:54:08.589|Debug |MQS_HALS@QJSIM_83312|Правило 'Ошибка регистрации заявки 85940422/1276157798 (0x261B4DF)'. Удалено. 2015/01/24 23:54:08.589|Debug |MQS_HALS@QJSIM_83312|Правило 'Регистрация заявки 85940422/1276157798 (0x255E315)'. Удаление. 2015/01/24 23:54:08.589|Debug |MQS_HALS@QJSIM_83312|Правило 'Ошибка регистрации заявки 85940422/1276157798 (0x261B4DF)'. Удаление. 2015/01/24 23:54:08.591|Debug |MQS_HALS@QJSIM_83312|Правило 'Изменение стакана инструмента HALS@QJSIM (0x104A801)'. Активация. <mark>2015/01/24 23:54:50.026|Debug |MQS_HALS@QJSIM_83312|Правило 'Изменение стакана инструмента HALS@QJSIM (0x104A801)'. Активация.</mark>

Первый раз выделено желтым, поведение MQS на появление заявки перед заявкой MQS. При этом изменилась лучшая цена и стакан конечно. Лог это показывает, на это реагирует стратегия. Второй раз выделено желтым, поведение MQS на исчезновение заявки после заявки MQS. При этом изменился стакан, но лучшие цены не изменились. И MQS не реагирует на это изменение, хотя должно.

Вопрос об сорцах не технический, а скорее политический. И вполне подходит для флудилки в телеграмме.

Mikhail Sukhov
Mikhail Sukhov
  1. Лог обрезан.
  2. Не понимаю вывода насчет должно. Не менялись лучшие цены - нет и изменения заявки.

Мне кажется лучше будет не пытаться поскорее написать на форуме, а все же потратить время, проанализировать лог, и уже затем написать на форуме. Вся эта переписка - это переливание из пустого в порожнее.

Сырцы - https://github.com/stocksharp/stocksharp Посмотрим как будет помощь. Будут коммитить - будут и стратегии в том числе. Не будут - ну значит никому особо и не нужно и достаточно бинарников.

Флудить в чате не нужно. Кросс постить так же не нужно. Ну да теперь только форум доступен, поэтому ошибиться сложно.😀

Иван З.
Иван З. Автор

Михаил Сухов:

  1. Лог обрезан. Лог не обрезан, такое поведение MQS
Иван З.
Иван З. Автор

MarketQuotingStrategy все таки работает не верно. Попытаюсь объяснить еще раз. QUIK демо версия 6.16.1.15 качал здесь http://quik.ru/user/client/quik/how-to-start/ Инструмент выбран(security.Code == "HALS") с большим спредом, чтоб можно было переставлять заявки. Пишу 2 лога. В logAll.txt пишу все логи от трейдера и стратегии, в logStratagy.txt только стратегию. Загружаю программу, подключаюсь к QUIK, запускаю стратегию Картинка

Лог стратегии

2015/02/05 01:59:35.800|Debug |MS_HALS@QJSIM_83312|Переход из состояния Stopped в Started. 2015/02/05 01:59:35.800| |MS_HALS@QJSIM_83312|Стратегия запущена. [0,-1]. Позиция 0. 2015/02/05 01:59:35.833|Debug |MQS_HALS@QJSIM_83312|Переход из состояния Stopped в Started. 2015/02/05 01:59:35.833| |MQS_HALS@QJSIM_83312|Стратегия запущена. [0,1]. Позиция 0. 2015/02/05 01:59:35.845| |MQS_HALS@QJSIM_83312|Котирование на Buy объема 1. 2015/02/05 01:59:35.845|Debug |MQS_HALS@QJSIM_83312|Приостановка правил. _rulesSuspendCount 1. 2015/02/05 01:59:35.855|Debug |MQS_HALS@QJSIM_83312|Возобновление правил. _rulesSuspendCount 0. 2015/02/05 01:59:35.866| |MQS_HALS@QJSIM_83312|Цена текущей NULL и лучшей 1257. 2015/02/05 01:59:35.877| |MQS_HALS@QJSIM_83312|Лучший бид 1256 и лучший аск 1272. 2015/02/05 01:59:35.877| |MQS_HALS@QJSIM_83312|Регистрация новой Limit (0x20B53E) заявки на Buy с ценой 1257 и объемом 1. 2015/02/05 01:59:35.877|Debug |MQS_HALS@QJSIM_83312|Правило 'Регистрация заявки 7170565/ (0x18457EC)'. Подписалось на события. 2015/02/05 01:59:35.877|Debug |MQS_HALS@QJSIM_83312|Правило 'Ошибка регистрации заявки 7170565/ (0xBA3210)'. Подписалось на события. 2015/02/05 01:59:35.877|Debug |MQS_HALS@QJSIM_83312|Правило 'Полное исполнение 7170565/ (0x2E93C51)'. Подписалось на события. 2015/02/05 01:59:35.877|Debug |MQS_HALS@QJSIM_83312|Правило 'Полное исполнение 7170565/ (0x1B9DC95)'. Подписалось на события. 2015/02/05 01:59:35.877|Debug |MQS_HALS@QJSIM_83312|Правило 'Отмена заявки 7170565/ (0x19DAFED)'. Подписалось на события. 2015/02/05 01:59:35.877|Debug |MQS_HALS@QJSIM_83312|Правило 'Ошибка регистрации заявки 7170565/ (0x3D22965)'. Подписалось на события. 2015/02/05 01:59:35.877|Debug |MQS_HALS@QJSIM_83312|Правило 'Ошибка снятия заявки 7170565/ (0x1438E14)'. Подписалось на события. 2015/02/05 01:59:36.810|Debug |MQS_HALS@QJSIM_83312|Правило 'Регистрация заявки 7170565/1311446925 (0x18457EC)'. Активация. 2015/02/05 01:59:36.810| |MQS_HALS@QJSIM_83312|Заявка 7170565 (0x20B53E) принята биржей. 2015/02/05 01:59:36.810| |MQS_HALS@QJSIM_83312|Сброс счетчика ошибок регистрации с 0 до нуля. 2015/02/05 01:59:36.810|Debug |MQS_HALS@QJSIM_83312|Правило 'Регистрация заявки 7170565/1311446925 (0x18457EC)'. Удаляется. 2015/02/05 01:59:36.810|Debug |MQS_HALS@QJSIM_83312|Правило 'Регистрация заявки 7170565/1311446925 (0x18457EC)'. Освободило ресурсы. 2015/02/05 01:59:36.810|Debug |MQS_HALS@QJSIM_83312|Правило 'Ошибка регистрации заявки 7170565/1311446925 (0xBA3210)'. Удаляется. 2015/02/05 01:59:36.810|Debug |MQS_HALS@QJSIM_83312|Правило 'Ошибка регистрации заявки 7170565/1311446925 (0xBA3210)'. Освободило ресурсы. 2015/02/05 01:59:36.810|Debug |MQS_HALS@QJSIM_83312|Правило 'Ошибка регистрации заявки 7170565/1311446925 (0xBA3210)'. Удалено. 2015/02/05 01:59:36.810|Debug |MQS_HALS@QJSIM_83312|Правило 'Регистрация заявки 7170565/1311446925 (0x18457EC)'. Удаление. 2015/02/05 01:59:36.810|Debug |MQS_HALS@QJSIM_83312|Правило 'Ошибка регистрации заявки 7170565/1311446925 (0xBA3210)'. Удаление. 2015/02/05 01:59:36.814|Debug |MQS_HALS@QJSIM_83312|Правило 'Изменение стакана инструмента HALS@QJSIM (0x2A7C2FD)'. Активация.

Открываю QUIK, выставляю руками заявку на 1260. MQS адекватно реагирует на изменение стакана и переставляет котировку на 1261 Картинка

Лог стратегии

2015/02/05 02:00:16.081|Debug |MQS_HALS@QJSIM_83312|Правило 'Изменение стакана инструмента HALS@QJSIM (0x2A7C2FD)'. Активация. 2015/02/05 02:00:16.081| |MQS_HALS@QJSIM_83312|Цена текущей 1257 и лучшей 1261. 2015/02/05 02:00:16.081| |MQS_HALS@QJSIM_83312|Лучший бид 1260 и лучший аск 1272. 2015/02/05 02:00:16.081| |MQS_HALS@QJSIM_83312|Котирование заявки 7170565 (0x20B53E) на Buy с ценой 1257 объемом 1. 2015/02/05 02:00:16.081| |MQS_HALS@QJSIM_83312|Отмена заявки 7170565 (0x20B53E). 2015/02/05 02:00:16.081| |MQS_HALS@QJSIM_83312|Отмена заявки 7170565 (0x20B53E). 2015/02/05 02:00:17.165|Debug |MQS_HALS@QJSIM_83312|Правило 'Отмена заявки 7170565/1311446925 (0x19DAFED) OR Полное исполнение 7170565/1311446925 (0x1B9DC95) OR Ошибка регистрации заявки 7170565/1311446925 (0x3D22965)'. Активация. 2015/02/05 02:00:17.165| |MQS_HALS@QJSIM_83312|Заявка 7170565 (0x20B53E) больше не активна. 2015/02/05 02:00:17.165|Debug |MQS_HALS@QJSIM_83312|Правило 'Отмена заявки 7170565/1311446925 (0x19DAFED) OR Полное исполнение 7170565/1311446925 (0x1B9DC95) OR Ошибка регистрации заявки 7170565/1311446925 (0x3D22965)'. Удаляется. 2015/02/05 02:00:17.165|Debug |MQS_HALS@QJSIM_83312|Правило 'Отмена заявки 7170565/1311446925 (0x19DAFED)'. Освободило ресурсы. 2015/02/05 02:00:17.165|Debug |MQS_HALS@QJSIM_83312|Правило 'Полное исполнение 7170565/1311446925 (0x1B9DC95)'. Освободило ресурсы. 2015/02/05 02:00:17.165|Debug |MQS_HALS@QJSIM_83312|Правило 'Ошибка регистрации заявки 7170565/1311446925 (0x3D22965)'. Освободило ресурсы. 2015/02/05 02:00:17.165|Debug |MQS_HALS@QJSIM_83312|Правило 'Отмена заявки 7170565/1311446925 (0x19DAFED) OR Полное исполнение 7170565/1311446925 (0x1B9DC95) OR Ошибка регистрации заявки 7170565/1311446925 (0x3D22965)'. Освободило ресурсы. 2015/02/05 02:00:17.165|Debug |MQS_HALS@QJSIM_83312|Правило 'Ошибка снятия заявки 7170565/1311446925 (0x1438E14)'. Удаляется. 2015/02/05 02:00:17.165|Debug |MQS_HALS@QJSIM_83312|Правило 'Ошибка снятия заявки 7170565/1311446925 (0x1438E14)'. Освободило ресурсы. 2015/02/05 02:00:17.165|Debug |MQS_HALS@QJSIM_83312|Правило 'Ошибка снятия заявки 7170565/1311446925 (0x1438E14)'. Удалено. 2015/02/05 02:00:17.165|Debug |MQS_HALS@QJSIM_83312|Правило 'Отмена заявки 7170565/1311446925 (0x19DAFED) OR Полное исполнение 7170565/1311446925 (0x1B9DC95) OR Ошибка регистрации заявки 7170565/1311446925 (0x3D22965)'. Удаление. 2015/02/05 02:00:17.165|Debug |MQS_HALS@QJSIM_83312|Правило 'Ошибка снятия заявки 7170565/1311446925 (0x1438E14)'. Удаление. 2015/02/05 02:00:17.165|Debug |MQS_HALS@QJSIM_83312|Правило 'Отмена заявки 7170565/1311446925 (0x235366B)'. Активация. 2015/02/05 02:00:17.165| |MQS_HALS@QJSIM_83312|Заявка 7170565 (0x20B53E) была снята. Время снятия 05.02.2015 2:00:17 +10:00. 2015/02/05 02:00:17.165|Debug |MQS_HALS@QJSIM_83312|Правило 'Полное исполнение 7170565/1311446925 (0x2E93C51)'. Удаляется. 2015/02/05 02:00:17.165|Debug |MQS_HALS@QJSIM_83312|Правило 'Полное исполнение 7170565/1311446925 (0x2E93C51)'. Освободило ресурсы. 2015/02/05 02:00:17.165| |MQS_HALS@QJSIM_83312|Цена текущей NULL и лучшей 1261. 2015/02/05 02:00:17.165| |MQS_HALS@QJSIM_83312|Лучший бид 1260 и лучший аск 1272. 2015/02/05 02:00:17.165| |MQS_HALS@QJSIM_83312|Регистрация новой Limit (0x14D613B) заявки на Buy с ценой 1261 и объемом 1. 2015/02/05 02:00:17.165|Debug |MQS_HALS@QJSIM_83312|Правило 'Регистрация заявки 7170567/ (0x326B8DE)'. Подписалось на события. 2015/02/05 02:00:17.165|Debug |MQS_HALS@QJSIM_83312|Правило 'Ошибка регистрации заявки 7170567/ (0x192F523)'. Подписалось на события. 2015/02/05 02:00:17.165|Debug |MQS_HALS@QJSIM_83312|Правило 'Полное исполнение 7170567/ (0x275DDAE)'. Подписалось на события. 2015/02/05 02:00:17.165|Debug |MQS_HALS@QJSIM_83312|Правило 'Полное исполнение 7170567/ (0x2C4DA13)'. Подписалось на события. 2015/02/05 02:00:17.165|Debug |MQS_HALS@QJSIM_83312|Правило 'Отмена заявки 7170567/ (0x5FA745)'. Подписалось на события. 2015/02/05 02:00:17.165|Debug |MQS_HALS@QJSIM_83312|Правило 'Ошибка регистрации заявки 7170567/ (0x13597F0)'. Подписалось на события. 2015/02/05 02:00:17.165|Debug |MQS_HALS@QJSIM_83312|Правило 'Ошибка снятия заявки 7170567/ (0x2EB61ED)'. Подписалось на события. 2015/02/05 02:00:17.165|Debug |MQS_HALS@QJSIM_83312|Правило 'Отмена заявки 7170565/1311446925 (0x235366B)'. Удаляется. 2015/02/05 02:00:17.165|Debug |MQS_HALS@QJSIM_83312|Правило 'Отмена заявки 7170565/1311446925 (0x235366B)'. Освободило ресурсы. 2015/02/05 02:00:17.165|Debug |MQS_HALS@QJSIM_83312|Правило 'Отмена заявки 7170565/1311446925 (0x235366B)'. Удаление. 2015/02/05 02:00:17.166|Debug |MQS_HALS@QJSIM_83312|Правило 'Изменение стакана инструмента HALS@QJSIM (0x2A7C2FD)'. Активация. 2015/02/05 02:00:17.166|Debug |MQS_HALS@QJSIM_83312|Заявка 7170567 (0x14D613B) в процессе регистрации. 2015/02/05 02:00:18.153|Debug |MQS_HALS@QJSIM_83312|Правило 'Изменение стакана инструмента HALS@QJSIM (0x2A7C2FD)'. Активация. 2015/02/05 02:00:18.153|Debug |MQS_HALS@QJSIM_83312|Заявка 7170567 (0x14D613B) в процессе регистрации. 2015/02/05 02:00:18.304|Debug |MQS_HALS@QJSIM_83312|Правило 'Регистрация заявки 7170567/1311447415 (0x326B8DE)'. Активация. 2015/02/05 02:00:18.304| |MQS_HALS@QJSIM_83312|Заявка 7170567 (0x14D613B) принята биржей. 2015/02/05 02:00:18.304| |MQS_HALS@QJSIM_83312|Сброс счетчика ошибок регистрации с 0 до нуля. 2015/02/05 02:00:18.304|Debug |MQS_HALS@QJSIM_83312|Правило 'Регистрация заявки 7170567/1311447415 (0x326B8DE)'. Удаляется. 2015/02/05 02:00:18.304|Debug |MQS_HALS@QJSIM_83312|Правило 'Регистрация заявки 7170567/1311447415 (0x326B8DE)'. Освободило ресурсы. 2015/02/05 02:00:18.304|Debug |MQS_HALS@QJSIM_83312|Правило 'Ошибка регистрации заявки 7170567/1311447415 (0x192F523)'. Удаляется. 2015/02/05 02:00:18.304|Debug |MQS_HALS@QJSIM_83312|Правило 'Ошибка регистрации заявки 7170567/1311447415 (0x192F523)'. Освободило ресурсы. 2015/02/05 02:00:18.304|Debug |MQS_HALS@QJSIM_83312|Правило 'Ошибка регистрации заявки 7170567/1311447415 (0x192F523)'. Удалено. 2015/02/05 02:00:18.304|Debug |MQS_HALS@QJSIM_83312|Правило 'Регистрация заявки 7170567/1311447415 (0x326B8DE)'. Удаление. 2015/02/05 02:00:18.304|Debug |MQS_HALS@QJSIM_83312|Правило 'Ошибка регистрации заявки 7170567/1311447415 (0x192F523)'. Удаление.

Удаляю выставленную руками заявку на 1260, <mark>для MQS лучшей заявкой должна стать 1256. И MQS должна передвинуть заявку на 1257.</mark>

Лог стратегии

2015/02/05 02:01:01.885|Debug |MQS_HALS@QJSIM_83312|Правило 'Изменение стакана инструмента HALS@QJSIM (0x2A7C2FD)'. Активация.

Лог стратегии + трейдер

2015/02/05 02:00:33.167|Debug |Quik |Sending to 127.0.0.1:5001: 8=FIX.4.49=6435=134=749=quik52=20150204-16:00:33.16656=StockSharpTS112=10=010 2015/02/05 02:00:33.168|Debug |Quik |Сессия '#=qVyGhHttEnHGGbW_wja2i9BNjOEwPJsLu$vwSGiLBP17PeSKIquYRv72sDBwitqdyXNyjAAj9dkQTB7QmjGgSqQ=='. From server: '8=FIX.4.49=6535=034=7649=quik52=20150204-16:00:33.16756=StockSharpTS112=10=065' 2015/02/05 02:00:33.836|Debug |Quik |Sending to 127.0.0.1:5001: 8=FIX.4.49=6435=134=749=quik52=20150204-16:00:33.83756=StockSharpMD112=10=249 2015/02/05 02:00:33.838|Debug |Quik |Сессия 'StockSharp.Fix.FixMessageAdapter'. From server: '8=FIX.4.49=6535=034=1449=quik52=20150204-16:00:33.83856=StockSharpMD112=10=040' 2015/02/05 02:01:01.876|Debug |Quik |Сессия 'StockSharp.Fix.FixMessageAdapter'. From server: '8=FIX.4.49=97835=X34=1549=quik52=20150204-16:01:01.87456=StockSharpMD262=7170559268=18279=1269=#270=1272=20150205273=02:01:01.874279=1269=b270=1261272=20150205273=02:01:01.874279=1269=n270=1272=20150205273=02:01:01.874279=1269=c270=1272272=20150205273=02:01:01.874279=1269=m270=2272=20150205273=02:01:01.874279=1269=q270=19272=20150205273=02:01:01.874279=1269=r270=19272=20150205273=02:01:01.874279=1269=w270=341272=20150205273=02:01:01.874279=1269=e270=275272=20150205273=02:01:01.874279=1269=4270=1268272=20150205273=02:01:01.874279=1269=8270=1255272=20150205273=02:01:01.874279=1269=7270=1281272=20150205273=02:01:01.874279=1269=5270=1540272=20150205273=02:01:01.874279=1269=p270=1271272=20150205273=02:01:01.874279=1269=v270=6272=20150205273=02:01:01.874279=1269=9270=1271272=20150205273=02:01:01.874279=1269=d270=120272=20150205273=02:01:01.874279=1269=B270=1504272=20150205273=02:01:01.87410=253' 2015/02/05 02:01:01.866|Debug |QuikTrader|BP:Level1Change,T(L)=2015.02.05 02:01:01.876,T(S)=2015.02.04 19:01:01.874,Sec=S#:HALS@QJSIM, Native:,Type:Stock,Changes=[PriceStep, 1],[BestBidPrice, 1261],[BestBidVolume, 1],[BestAskPrice, 1272],[BestAskVolume, 2],[BidsCount, 19],[AsksCount, 19],[BidsVolume, 341],[AsksVolume, 275],[OpenPrice, 1268],[LowPrice, 1255],[HighPrice, 1281],[ClosePrice, 1540],[LastTradePrice, 1271],[LastTradeVolume, 6],[VWAP, 1271],[TradesCount, 120],[Volume, 1504] 2015/02/05 02:01:01.885|Debug |Quik |Сессия 'StockSharp.Fix.FixMessageAdapter'. From server: '8=FIX.4.49=15935=X34=1649=quik52=20150204-16:01:01.88456=StockSharpMD262=7170560268=2279=1269=0270=1261271=1272=20150204273=16:01:01.885290=6279=2269=0290=710=190' 2015/02/05 02:01:01.885|Debug |Quik |Сессия '#=qVyGhHttEnHGGbW_wja2i9BNjOEwPJsLu$vwSGiLBP17PeSKIquYRv72sDBwitqdyXNyjAAj9dkQTB7QmjGgSqQ=='. From server: '8=FIX.4.49=18535=834=7749=quik52=20150204-16:01:01.88556=StockSharpTS1=8331211=014=037=131144737938=139=440=241=044=126054=155=HALS59=160=20150204-16:00:09.000150=4151=1207=QJSIM10=238' 2015/02/05 02:01:01.877|Debug |QuikTrader|BP:QuoteChange,T(L)=2015.02.05 02:01:01.885,T(S)=2015.02.04 19:01:01.884 2015/02/05 02:01:01.885|Debug |MQS_HALS@QJSIM_83312|Правило 'Изменение стакана инструмента HALS@QJSIM (0x2A7C2FD)'. Активация. 2015/02/05 02:01:01.905|Debug |Quik |Сессия '#=qVyGhHttEnHGGbW_wja2i9BNjOEwPJsLu$vwSGiLBP17PeSKIquYRv72sDBwitqdyXNyjAAj9dkQTB7QmjGgSqQ=='. From server: '8=FIX.4.49=15235=AP34=7849=quik52=20150204-16:01:01.90456=StockSharpTS1=8331255=StockSharpMoney581=3728=0753=2707=SMTM708=294422.58707=CRES708=294153.5810=206' 2015/02/05 02:01:01.899|Debug |QuikTrader|BP:PortfolioChange,T(L)=2015.02.05 02:01:01.905,T(S)=2015.02.04 19:01:01.904,P=83312,Changes=[BeginValue, 294422,58],[CurrentValue, 294153,58] 2015/02/05 02:01:01.905|Debug |Quik |Сессия '#=qVyGhHttEnHGGbW_wja2i9BNjOEwPJsLu$vwSGiLBP17PeSKIquYRv72sDBwitqdyXNyjAAj9dkQTB7QmjGgSqQ=='. From server: '8=FIX.4.49=15235=AP34=7949=quik52=20150204-16:01:01.90556=StockSharpTS1=8331255=StockSharpMoney581=3728=0753=2707=SMTM708=294422.58707=CRES708=294153.5810=208' 2015/02/05 02:01:01.905|Debug |QuikTrader|BP:PortfolioChange,T(L)=2015.02.05 02:01:01.905,T(S)=2015.02.04 19:01:01.905,P=83312,Changes=[BeginValue, 294422,58],[CurrentValue, 294153,58] 2015/02/05 02:01:01.906|Debug |Quik |Сессия '#=qVyGhHttEnHGGbW_wja2i9BNjOEwPJsLu$vwSGiLBP17PeSKIquYRv72sDBwitqdyXNyjAAj9dkQTB7QmjGgSqQ=='. From server: '8=FIX.4.49=10035=AP34=8049=quik52=20150204-16:01:01.90556=StockSharpTS1=8331255=StockSharpMoney581=3728=010=045' 2015/02/05 02:01:01.905|Debug |QuikTrader|BP:PortfolioChange,T(L)=2015.02.05 02:01:01.906,T(S)=2015.02.04 19:01:01.905,P=83312,Changes= 2015/02/05 02:01:01.906|Debug |Quik |Сессия '#=qVyGhHttEnHGGbW_wja2i9BNjOEwPJsLu$vwSGiLBP17PeSKIquYRv72sDBwitqdyXNyjAAj9dkQTB7QmjGgSqQ=='. From server: '8=FIX.4.49=10035=AP34=8149=quik52=20150204-16:01:01.90556=StockSharpTS1=8331255=StockSharpMoney581=3728=010=046' 2015/02/05 02:01:01.906|Debug |QuikTrader|BP:PortfolioChange,T(L)=2015.02.05 02:01:01.906,T(S)=2015.02.04 19:01:01.905,P=83312,Changes= 2015/02/05 02:01:01.906|Debug |Quik |Сессия '#=qVyGhHttEnHGGbW_wja2i9BNjOEwPJsLu$vwSGiLBP17PeSKIquYRv72sDBwitqdyXNyjAAj9dkQTB7QmjGgSqQ=='. From server: '8=FIX.4.49=15235=AP34=8249=quik52=20150204-16:01:01.90556=StockSharpTS1=8331255=HALS167=CS207=581=3660=0728=0702=2703=SOD704=1706=1703=EP704=1706=110=007' 2015/02/05 02:01:01.906|Debug |QuikTrader|BP:Position,T(L)=2015.02.05 02:01:01.906,Sec=S#:HALS@, Native:,Type:Stock,P=83312 2015/02/05 02:01:01.907|Debug |Quik |Сессия '#=qVyGhHttEnHGGbW_wja2i9BNjOEwPJsLu$vwSGiLBP17PeSKIquYRv72sDBwitqdyXNyjAAj9dkQTB7QmjGgSqQ=='. From server: '8=FIX.4.49=15235=AP34=8349=quik52=20150204-16:01:01.90556=StockSharpTS1=8331255=HALS167=CS207=581=3660=0728=0702=2703=SOD704=1706=1703=EP704=1706=110=008' 2015/02/05 02:01:01.906|Debug |QuikTrader|BP:PositionChange,T(L)=2015.02.05 02:01:01.906,T(S)=2015.02.04 19:01:01.905,Sec=S#:HALS@, Native:,Type:Stock,P=83312,Changes=[BeginValue, 1] 2015/02/05 02:01:01.906|Debug |QuikTrader|BP:PositionChange,T(L)=2015.02.05 02:01:01.906,T(S)=2015.02.04 19:01:01.905,Sec=S#:HALS@, Native:,Type:Stock,P=83312,Changes=[CurrentValue, 1] 2015/02/05 02:01:01.906|Debug |QuikTrader|BP:Position,T(L)=2015.02.05 02:01:01.907,Sec=S#:HALS@, Native:,Type:Stock,P=83312 2015/02/05 02:01:01.907|Debug |QuikTrader|BP:PositionChange,T(L)=2015.02.05 02:01:01.907,T(S)=2015.02.04 19:01:01.905,Sec=S#:HALS@, Native:,Type:Stock,P=83312,Changes=[BeginValue, 1] 2015/02/05 02:01:01.907|Debug |QuikTrader|BP:PositionChange,T(L)=2015.02.05 02:01:01.907,T(S)=2015.02.04 19:01:01.905,Sec=S#:HALS@, Native:,Type:Stock,P=83312,Changes=[CurrentValue, 1]

Выставил руками еще одну заявку на 1258, на это раз лучшей ценой для MQS должна стать 1258. И соответственно переставить заявку на 1259.

Лог стратегии

2015/02/05 02:02:21.784|Debug |MQS_HALS@QJSIM_83312|Правило 'Изменение стакана инструмента HALS@QJSIM (0x2A7C2FD)'. Активация.

Лог стратегии + трейдер

2015/02/05 02:02:20.860|Debug |Quik |Сессия '#=qVyGhHttEnHGGbW_wja2i9BNjOEwPJsLu$vwSGiLBP17PeSKIquYRv72sDBwitqdyXNyjAAj9dkQTB7QmjGgSqQ=='. From server: '8=FIX.4.49=15235=AP34=8549=quik52=20150204-16:02:20.85956=StockSharpTS1=8331255=StockSharpMoney581=3728=0753=2707=SMTM708=294422.58707=CRES708=294153.5810=215' 2015/02/05 02:02:20.848|Debug |QuikTrader|BP:PortfolioChange,T(L)=2015.02.05 02:02:20.860,T(S)=2015.02.04 19:02:20.859,P=83312,Changes=[BeginValue, 294422,58],[CurrentValue, 294153,58] 2015/02/05 02:02:20.860|Debug |Quik |Сессия '#=qVyGhHttEnHGGbW_wja2i9BNjOEwPJsLu$vwSGiLBP17PeSKIquYRv72sDBwitqdyXNyjAAj9dkQTB7QmjGgSqQ=='. From server: '8=FIX.4.49=15235=AP34=8649=quik52=20150204-16:02:20.85956=StockSharpTS1=8331255=StockSharpMoney581=3728=0753=2707=SMTM708=294422.58707=CRES708=294153.5810=216' 2015/02/05 02:02:20.860|Debug |QuikTrader|BP:PortfolioChange,T(L)=2015.02.05 02:02:20.860,T(S)=2015.02.04 19:02:20.859,P=83312,Changes=[BeginValue, 294422,58],[CurrentValue, 294153,58] 2015/02/05 02:02:20.860|Debug |Quik |Сессия '#=qVyGhHttEnHGGbW_wja2i9BNjOEwPJsLu$vwSGiLBP17PeSKIquYRv72sDBwitqdyXNyjAAj9dkQTB7QmjGgSqQ=='. From server: '8=FIX.4.49=10035=AP34=8749=quik52=20150204-16:02:20.85956=StockSharpTS1=8331255=StockSharpMoney581=3728=010=062' 2015/02/05 02:02:20.860|Debug |QuikTrader|BP:PortfolioChange,T(L)=2015.02.05 02:02:20.860,T(S)=2015.02.04 19:02:20.859,P=83312,Changes= 2015/02/05 02:02:20.860|Debug |Quik |Сессия '#=qVyGhHttEnHGGbW_wja2i9BNjOEwPJsLu$vwSGiLBP17PeSKIquYRv72sDBwitqdyXNyjAAj9dkQTB7QmjGgSqQ=='. From server: '8=FIX.4.49=10035=AP34=8849=quik52=20150204-16:02:20.85956=StockSharpTS1=8331255=StockSharpMoney581=3728=010=063' 2015/02/05 02:02:20.860|Debug |QuikTrader|BP:PortfolioChange,T(L)=2015.02.05 02:02:20.860,T(S)=2015.02.04 19:02:20.859,P=83312,Changes= 2015/02/05 02:02:20.861|Debug |Quik |Сессия '#=qVyGhHttEnHGGbW_wja2i9BNjOEwPJsLu$vwSGiLBP17PeSKIquYRv72sDBwitqdyXNyjAAj9dkQTB7QmjGgSqQ=='. From server: '8=FIX.4.49=15235=AP34=8949=quik52=20150204-16:02:20.86056=StockSharpTS1=8331255=HALS167=CS207=581=3660=0728=0702=2703=SOD704=1706=1703=EP704=1706=110=016' 2015/02/05 02:02:20.860|Debug |QuikTrader|BP:Position,T(L)=2015.02.05 02:02:20.861,Sec=S#:HALS@, Native:,Type:Stock,P=83312 2015/02/05 02:02:20.861|Debug |Quik |Сессия '#=qVyGhHttEnHGGbW_wja2i9BNjOEwPJsLu$vwSGiLBP17PeSKIquYRv72sDBwitqdyXNyjAAj9dkQTB7QmjGgSqQ=='. From server: '8=FIX.4.49=15235=AP34=9049=quik52=20150204-16:02:20.86056=StockSharpTS1=8331255=HALS167=CS207=581=3660=0728=0702=2703=SOD704=1706=1703=EP704=1706=110=008' 2015/02/05 02:02:20.861|Debug |QuikTrader|BP:PositionChange,T(L)=2015.02.05 02:02:20.861,T(S)=2015.02.04 19:02:20.860,Sec=S#:HALS@, Native:,Type:Stock,P=83312,Changes=[BeginValue, 1] 2015/02/05 02:02:20.861|Debug |QuikTrader|BP:PositionChange,T(L)=2015.02.05 02:02:20.861,T(S)=2015.02.04 19:02:20.860,Sec=S#:HALS@, Native:,Type:Stock,P=83312,Changes=[CurrentValue, 1] 2015/02/05 02:02:20.861|Debug |QuikTrader|BP:Position,T(L)=2015.02.05 02:02:20.861,Sec=S#:HALS@, Native:,Type:Stock,P=83312 2015/02/05 02:02:20.861|Debug |QuikTrader|BP:PositionChange,T(L)=2015.02.05 02:02:20.861,T(S)=2015.02.04 19:02:20.860,Sec=S#:HALS@, Native:,Type:Stock,P=83312,Changes=[BeginValue, 1] 2015/02/05 02:02:20.861|Debug |QuikTrader|BP:PositionChange,T(L)=2015.02.05 02:02:20.861,T(S)=2015.02.04 19:02:20.860,Sec=S#:HALS@, Native:,Type:Stock,P=83312,Changes=[CurrentValue, 1] 2015/02/05 02:02:21.750|Debug |Quik |Сессия 'StockSharp.Fix.FixMessageAdapter'. From server: '8=FIX.4.49=97835=X34=1849=quik52=20150204-16:02:21.74656=StockSharpMD262=7170559268=18279=1269=#270=1272=20150205273=02:02:21.746279=1269=b270=1261272=20150205273=02:02:21.746279=1269=n270=1272=20150205273=02:02:21.746279=1269=c270=1272272=20150205273=02:02:21.746279=1269=m270=2272=20150205273=02:02:21.746279=1269=q270=20272=20150205273=02:02:21.746279=1269=r270=19272=20150205273=02:02:21.746279=1269=w270=342272=20150205273=02:02:21.746279=1269=e270=275272=20150205273=02:02:21.746279=1269=4270=1268272=20150205273=02:02:21.746279=1269=8270=1255272=20150205273=02:02:21.746279=1269=7270=1281272=20150205273=02:02:21.746279=1269=5270=1540272=20150205273=02:02:21.746279=1269=p270=1271272=20150205273=02:02:21.746279=1269=v270=6272=20150205273=02:02:21.746279=1269=9270=1271272=20150205273=02:02:21.746279=1269=d270=120272=20150205273=02:02:21.746279=1269=B270=1504272=20150205273=02:02:21.74610=012' 2015/02/05 02:02:21.740|Debug |QuikTrader|BP:Level1Change,T(L)=2015.02.05 02:02:21.750,T(S)=2015.02.04 19:02:21.746,Sec=S#:HALS@QJSIM, Native:,Type:Stock,Changes=[PriceStep, 1],[BestBidPrice, 1261],[BestBidVolume, 1],[BestAskPrice, 1272],[BestAskVolume, 2],[BidsCount, 20],[AsksCount, 19],[BidsVolume, 342],[AsksVolume, 275],[OpenPrice, 1268],[LowPrice, 1255],[HighPrice, 1281],[ClosePrice, 1540],[LastTradePrice, 1271],[LastTradeVolume, 6],[VWAP, 1271],[TradesCount, 120],[Volume, 1504] 2015/02/05 02:02:21.783|Debug |Quik |Сессия 'StockSharp.Fix.FixMessageAdapter'. From server: '8=FIX.4.49=20435=X34=1949=quik52=20150204-16:02:21.78256=StockSharpMD262=7170560268=2279=1269=0270=1258271=1272=20150204273=16:02:21.782290=6279=0269=0270=1261271=1272=20150204273=16:02:21.782290=710=021' 2015/02/05 02:02:21.784|Debug |Quik |Сессия '#=qVyGhHttEnHGGbW_wja2i9BNjOEwPJsLu$vwSGiLBP17PeSKIquYRv72sDBwitqdyXNyjAAj9dkQTB7QmjGgSqQ=='. From server: '8=FIX.4.49=18535=834=9149=quik52=20150204-16:02:21.78256=StockSharpTS1=8331211=014=037=131145120238=139=040=241=044=125854=155=HALS59=160=20150204-16:02:14.000150=0151=1207=QJSIM10=210' 2015/02/05 02:02:21.773|Debug |QuikTrader|BP:QuoteChange,T(L)=2015.02.05 02:02:21.784,T(S)=2015.02.04 19:02:21.782 2015/02/05 02:02:21.784|Debug |MQS_HALS@QJSIM_83312|Правило 'Изменение стакана инструмента HALS@QJSIM (0x2A7C2FD)'. Активация. 2015/02/05 02:02:21.810|Debug |Quik |Сессия '#=qVyGhHttEnHGGbW_wja2i9BNjOEwPJsLu$vwSGiLBP17PeSKIquYRv72sDBwitqdyXNyjAAj9dkQTB7QmjGgSqQ=='. From server: '8=FIX.4.49=18535=834=9249=quik52=20150204-16:02:21.80856=StockSharpTS1=8331211=014=037=131145120238=139=040=241=044=125854=155=HALS59=160=20150204-16:02:14.000150=0151=1207=QJSIM10=210' 2015/02/05 02:02:33.182|Debug |Quik |Sending to 127.0.0.1:5001: 8=FIX.4.49=6435=134=949=quik52=20150204-16:02:33.18256=StockSharpTS112=10=012 2015/02/05 02:02:33.183|Debug |Quik |Сессия '#=qVyGhHttEnHGGbW_wja2i9BNjOEwPJsLu$vwSGiLBP17PeSKIquYRv72sDBwitqdyXNyjAAj9dkQTB7QmjGgSqQ=='. From server: '8=FIX.4.49=6535=034=9349=quik52=20150204-16:02:33.18256=StockSharpTS112=10=063' 2015/02/05 02:02:33.852|Debug |Quik |Sending to 127.0.0.1:5001: 8=FIX.4.49=6435=134=949=quik52=20150204-16:02:33.85256=StockSharpMD112=10=250 2015/02/05 02:02:33.852|Debug |Quik |Сессия 'StockSharp.Fix.FixMessageAdapter'. From server: '8=FIX.4.49=6535=034=2049=quik52=20150204-16:02:33.85256=StockSharpMD112=10=035' 2015/02/05 02:03:20.150| |QuikTrader|StopExport 2015/02/05 02:03:20.161|Debug |QuikTrader|BP:MarketData,T(L)=2015.02.05 02:03:20.160,Sec=S#:HALS@QJSIM, Native:,Type:Stock,Sec=S#:HALS@QJSIM, Native:,Type:Stock,Types=Level1,IsSubscribe=False,TransId=7170574,OrigId=7170574 2015/02/05 02:03:20.160|Debug |QuikTrader|BP:MarketData,T(L)=2015.02.05 02:03:20.160,Sec=S#:HALS@EQRP_INFO, Native:,Type:Index,Sec=S#:HALS@EQRP_INFO, Native:,Type:Index,Types=Level1,IsSubscribe=False,TransId=7170575,OrigId=7170575 2015/02/05 02:03:20.160|Debug |QuikTrader|BP:MarketData,T(L)=2015.02.05 02:03:20.161,Sec=S#:HALS@EQRP_INFO, Native:,Type:Index,Sec=S#:HALS@EQRP_INFO, Native:,Type:Index,Types=MarketDepth,IsSubscribe=False,TransId=7170577,OrigId=7170577 2015/02/05 02:03:20.161|Debug |QuikTrader|BP:Disconnect,T(L)=2015.02.05 02:03:20.167 2015/02/05 02:03:20.167| |QuikTrader|Disconnect 2015/02/05 02:03:20.167|Debug |QuikTrader|BP:Disconnect,T(L)=2015.02.05 02:03:20.177

Лог стратегии не обрезан. Стратеги просто ничего не делает. Прикрепляю логи, и стратегию. Если MarketQuotingStrategy скопировать здесь http://stocksharp.codeplex.com/SourceControl/latest#Sources/Algo/Strategies/MarketQuotingStrategy.cs адаптировать под последнюю версию S#. То проблема уходит.

Mikhail Sukhov
Mikhail Sukhov

Давайте еще раз. Покажите где в логе ошибка. Смотреть тонну логов ради непонятной ошибки (есть она или нет) нет возможности. Поберетиге наше время, потратьте пару дней на анализ лога и выложите его с комментариями.

Andrii
Andrii

Михаил Сухов: Давайте еще раз. Покажите где в логе ошибка. Смотреть тонну логов ради непонятной ошибки (есть она или нет) нет возможности. Поберетиге наше время, потратьте пару дней на анализ лога и выложите его с комментариями.

Ошибка в QuotingStrategy.cs свойство BestPrice

if (Direction == Sides.Buy)
{
   if(CurrentOrder.Price > Price)
      return CurrentOrder.Price;
}
RomSunZ
RomSunZ

Михаил, MQS считает свою заявку лучшей, поэтому не откатывает эту заявку "назад" к краю спреда в стакане.

Иван З.
Иван З.
Иван З. Автор

В текущем варианте в лог стратегии пишет так

2015/02/05 21:37:54.294|Debug |MQS_HALS@QJSIM_83312|Правило 'Изменение стакана инструмента HALS@QJSIM (0x3B3F729)'. Активация.

А должен написать так, именно так пишет вариант MQS с codeplex.

2015/02/05 21:37:54.294|Debug |MQS_HALS@QJSIM_83312|Правило 'Изменение стакана инструмента HALS@QJSIM (0x3B3F729)'. Активация. <mark>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. 2015/02/05 21:37:54.294| |MQS_HALS@QJSIM_83312|Котирование заявки 77834723 (0x2641245) на Buy с ценой 1281 объемом 1. 2015/02/05 21:37:54.294| |MQS_HALS@QJSIM_83312|Отмена заявки 77834723 (0x2641245). 2015/02/05 21:37:54.294| |MQS_HALS@QJSIM_83312|Отмена заявки 77834723 (0x2641245). 2015/02/05 21:37:55.298|Debug |MQS_HALS@QJSIM_83312|Правило 'Изменение стакана инструмента HALS@QJSIM (0x3B3F729)'. Активация. 2015/02/05 21:37:55.298|Debug |MQS_HALS@QJSIM_83312|Заявка 77834723 (0x2641245) в процессе снятия. 2015/02/05 21:37:55.298|Debug |MQS_HALS@QJSIM_83312|Правило 'Отмена заявки 77834723/1313753722 (0x93F380) OR Полное исполнение 77834723/1313753722 (0x272F5DD) OR Ошибка регистрации заявки 77834723/1313753722 (0x803D92)'. Активация. 2015/02/05 21:37:55.298| |MQS_HALS@QJSIM_83312|Заявка 77834723 (0x2641245) больше не активна. 2015/02/05 21:37:55.298|Debug |MQS_HALS@QJSIM_83312|Правило 'Отмена заявки 77834723/1313753722 (0x93F380) OR Полное исполнение 77834723/1313753722 (0x272F5DD) OR Ошибка регистрации заявки 77834723/1313753722 (0x803D92)'. Удаляется. 2015/02/05 21:37:55.298|Debug |MQS_HALS@QJSIM_83312|Правило 'Отмена заявки 77834723/1313753722 (0x93F380)'. Освободило ресурсы. 2015/02/05 21:37:55.298|Debug |MQS_HALS@QJSIM_83312|Правило 'Полное исполнение 77834723/1313753722 (0x272F5DD)'. Освободило ресурсы. 2015/02/05 21:37:55.298|Debug |MQS_HALS@QJSIM_83312|Правило 'Ошибка регистрации заявки 77834723/1313753722 (0x803D92)'. Освободило ресурсы. 2015/02/05 21:37:55.298|Debug |MQS_HALS@QJSIM_83312|Правило 'Отмена заявки 77834723/1313753722 (0x93F380) OR Полное исполнение 77834723/1313753722 (0x272F5DD) OR Ошибка регистрации заявки 77834723/1313753722 (0x803D92)'. Освободило ресурсы. 2015/02/05 21:37:55.298|Debug |MQS_HALS@QJSIM_83312|Правило 'Ошибка снятия заявки 77834723/1313753722 (0x82D4D)'. Удаляется. 2015/02/05 21:37:55.298|Debug |MQS_HALS@QJSIM_83312|Правило 'Ошибка снятия заявки 77834723/1313753722 (0x82D4D)'. Освободило ресурсы. 2015/02/05 21:37:55.298|Debug |MQS_HALS@QJSIM_83312|Правило 'Ошибка снятия заявки 77834723/1313753722 (0x82D4D)'. Удалено. 2015/02/05 21:37:55.298|Debug |MQS_HALS@QJSIM_83312|Правило 'Отмена заявки 77834723/1313753722 (0x93F380) OR Полное исполнение 77834723/1313753722 (0x272F5DD) OR Ошибка регистрации заявки 77834723/1313753722 (0x803D92)'. Удаление. 2015/02/05 21:37:55.298|Debug |MQS_HALS@QJSIM_83312|Правило 'Ошибка снятия заявки 77834723/1313753722 (0x82D4D)'. Удаление. 2015/02/05 21:37:55.298|Debug |MQS_HALS@QJSIM_83312|Правило 'Отмена заявки 77834723/1313753722 (0x3BCB43A)'. Активация. 2015/02/05 21:37:55.298| |MQS_HALS@QJSIM_83312|Заявка 77834723 (0x2641245) была снята. Время снятия 05.02.2015 21:37:55 +10:00. 2015/02/05 21:37:55.298|Debug |MQS_HALS@QJSIM_83312|Правило 'Полное исполнение 77834723/1313753722 (0x1150082)'. Удаляется. 2015/02/05 21:37:55.298|Debug |MQS_HALS@QJSIM_83312|Правило 'Полное исполнение 77834723/1313753722 (0x1150082)'. Освободило ресурсы. 2015/02/05 21:37:55.298| |MQS_HALS@QJSIM_83312|Цена текущей NULL и лучшей 1278. 2015/02/05 21:37:55.298| |MQS_HALS@QJSIM_83312|Лучший бид 1277 и лучший аск 1289. 2015/02/05 21:37:55.298| |MQS_HALS@QJSIM_83312|Регистрация новой Limit (0x18139C6) заявки на Buy с ценой 1278 и объемом 1. 2015/02/05 21:37:55.298|Debug |MQS_HALS@QJSIM_83312|Правило 'Регистрация заявки 77834725/ (0x13E5E94)'. Подписалось на события. 2015/02/05 21:37:55.298|Debug |MQS_HALS@QJSIM_83312|Правило 'Ошибка регистрации заявки 77834725/ (0xF67D5)'. Подписалось на события. 2015/02/05 21:37:55.298|Debug |MQS_HALS@QJSIM_83312|Правило 'Полное исполнение 77834725/ (0x30A74B2)'. Подписалось на события. 2015/02/05 21:37:55.298|Debug |MQS_HALS@QJSIM_83312|Правило 'Полное исполнение 77834725/ (0x2EA8E5E)'. Подписалось на события. 2015/02/05 21:37:55.298|Debug |MQS_HALS@QJSIM_83312|Правило 'Отмена заявки 77834725/ (0x3E1456B)'. Подписалось на события. 2015/02/05 21:37:55.298|Debug |MQS_HALS@QJSIM_83312|Правило 'Ошибка регистрации заявки 77834725/ (0x1CC0C92)'. Подписалось на события. 2015/02/05 21:37:55.298|Debug |MQS_HALS@QJSIM_83312|Правило 'Ошибка снятия заявки 77834725/ (0x21A21E3)'. Подписалось на события. 2015/02/05 21:37:55.298|Debug |MQS_HALS@QJSIM_83312|Правило 'Отмена заявки 77834723/1313753722 (0x3BCB43A)'. Удаляется. 2015/02/05 21:37:55.298|Debug |MQS_HALS@QJSIM_83312|Правило 'Отмена заявки 77834723/1313753722 (0x3BCB43A)'. Освободило ресурсы. 2015/02/05 21:37:55.298|Debug |MQS_HALS@QJSIM_83312|Правило 'Отмена заявки 77834723/1313753722 (0x3BCB43A)'. Удаление.</mark>
Mikhail Sukhov
Mikhail Sukhov

Думаю что вы не правы. Котирование как раз реагирует на изменение стакана.

Иван З.
Иван З. Автор

Михаил Сухов: Думаю что вы не правы. Котирование как раз реагирует на изменение стакана. Конечно реагирует, и пишет в лог, что стакан изменился.

2015/02/05 21:37:54.294|Debug |MQS_HALS@QJSIM_83312|Правило 'Изменение стакана инструмента HALS@QJSIM (0x3B3F729)'. Активация.

Только она не видит, что изменилась лучшая цена, и поэтому ничего не делает.

А должна написать (должна но не пишет и не делает), что лучшая цена изменилась

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.

поэтому начинаю котирование

2015/02/05 21:37:54.294| |MQS_HALS@QJSIM_83312|Котирование заявки 77834723 (0x2641245) на Buy с ценой 1281 объемом 1.

RomSunZ все верно сказал,

MQS считает свою заявку лучшей, поэтому не откатывает эту заявку "назад" к краю спреда в стакане.

Andrii
Andrii

Михаил Сухов: Думаю что вы не правы. Котирование как раз реагирует на изменение стакана.

Andrii:

Михаил Сухов: Давайте еще раз. Покажите где в логе ошибка. Смотреть тонну логов ради непонятной ошибки (есть она или нет) нет возможности. Поберетиге наше время, потратьте пару дней на анализ лога и выложите его с комментариями.

Ошибка в QuotingStrategy.cs свойство BestPrice

if (Direction == Sides.Buy) { if(CurrentOrder.Price > Price) return CurrentOrder.Price; }


уже ж написал где ошибка, проверить и исправить ее минутное дело
Иван З.
Иван З. Автор

Почти на всех стратегиях котирования наблюдалась выше описанная проблема. Проблему поправил, проверил на учебном Квике, выложил стратегии ВКонтакте http://vk.com/docs?oid=-66650972

Mikhail Sukhov kornego
Mikhail Sukhov
Mikhail Sukhov

А что делает метод BestPriceAddPriceStep? У него такое описание, что то ли половина слов пропало, то ли запятые не выставлены:

Получить цену лучше лучшей цены BestPrice, на минимальный шаг цены PriceStep то будет возвращено null.

Иван З.
Иван З. Автор

Свойство. Упс.

Получить цену лучше лучшей цены BestPrice, на минимальный шаг цены PriceStep, если отсутствуют котировки то будет возвращено <see langword="null"/>.

Если покупка BestPriceAddPriceStep=BestPrice+PriceStep если продажа BestPriceAddPriceStep=BestPrice-PriceStep

Я C# изучал на курсах у S#. Код рабочий, но он может быть не изящный как у тру програмистов.

Mikhail Sukhov
Mikhail Sukhov

Я можно теперь своими словами сказать зачем нужен этот сдвиг?

Mikhail Sukhov
Mikhail Sukhov
if (Order != null && acceptablePriceRange.Contains(Order.Price))
 return null;

А это условие зачем? Если у нас заявка попадает в приемлемый диапазон, то ведь это еще не значит, что ее не надо изменить (улучшить цену).

Иван З.
Иван З. Автор

В BestByVolumeQuotingStrategy когда у лучшей заявки объем больше, чем суммарный который может стоять перед заявкой VolumeExchange. То заявку следует выставить перед этим объемом, то есть на 1 PriceStep лучше лучшей цены.

А это условие зачем? Если у нас заявка попадает в приемлемый диапазон, то ведь это еще не значит, что ее не надо изменить (улучшить цену).

StockSharp платформа.

если можно улучшить значит не должна попадать в приемлемый диапазон. На практике проверил, если можно улучшить она ее улучшает.

Mikhail Sukhov
Mikhail Sukhov

Перезалил в группе архив со стратегиями. Что сделано:

  1. Применены изменения (не все).
  2. Порефакторено само котирование (убрано множество виртуальных методов).
  3. Поправлены некоторые котирования другие.

Проверите? Чтобы выложить это уже на ГитХаб.

Иван З.
Иван З. Автор

Проверил. MarketQuotingStrategy также не откатывает на лучшую цену. при параметре ```csharp PriceOffset = Security.PriceStep,


BestByPriceQuotingStrategy вообще не выставляет заявку.

остальные не смотрел, завтра посмотрю.
Mikhail Sukhov
Mikhail Sukhov

Иван З.: остальные не смотрел, завтра посмотрю.

Сырцы теперь есть. Предлагаю сразу обсуждать строчки кода, а не что-то абстрактное.

Иван З.
Иван З. Автор

По стратегиям из последней версии BestByPriceQuotingStrategy и MarketQuotingStrategy Так как MarketQuotingStrategy унаследована от BestByPriceQuotingStrategy, метод NeedQuoting у них общий. Проблема с тем, что заявка не откатывается у них общая


			if (QuotingDirection == Sides.Sell)
			{
 //Здесь если BestPrice > currentPrice то ни чего происходить не будет, и заявка не откатится назад
				if (currentPrice == null || (decimal)(price + BestPriceOffset) < currentPrice)
					return price + (decimal)BestPriceOffset / 2;
			}
			else
			{
 //Здесь если BestPrice < currentPrice то ни чего происходить не будет, и заявка не откатится назад
				if (currentPrice == null || (decimal)(price - BestPriceOffset) > currentPrice)
					return price - (decimal)BestPriceOffset / 2;
			}

Можно вылечить так


            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;
            }

В таком случае, заявка будет всегда переставляться на параметры заданные стратегией. Кроме случая если она уже стоит на нужной цене. Изучив код подробней этих стратегий, понял что мое представление о том как они должны работать не совпадают с реализованным.

  1. BestPriceOffset - Отступ от лучшей цены, на который <mark>может </mark>уйти котируемая заявка. Слово может очень сбивает с толку, в стратегии строго забито, что она в любом случае отступит от лучшей цены на значение BestPriceOffset

В моем представлении, если взять для примера BestByPriceQuotingStrategy, то стратегия должна выставлять заявку на лучшую цену(на то это и <mark>BestByPrice</mark>QuotingStrategy). Но если заявка уйдет от BestPrice на значение меньшее чем BestPriceOffset то переставляться не будет.

  1. PriceOffset - Отступ цены для выставляемой заявки. Определяет размер отступа от лучшей котировки (для покупки прибавляется к цене, для продажи - вычитается). Этот отступ есть у MarketQuotingStrategy если он положительный а сделка Buy, стратегия выставит заявку на BestPrice - BestPriceOffset + PriceOffset. То есть выше описанный BestPriceOffset тоже вычитается.

В общем мне кажется BestPriceOffset сейчас работает не так как надо, а GetAcceptablePriceRange() все таки нужный метод, по крайней мере для BestByPriceQuotingStrategy. Править?

В BestByVolumeQuotingStrategy я исправил один метод NeedQuoting. В коде постарался пояснения написать по подробнее. Протестировал, стратегия работает, выложил в ВК.

Mikhail Sukhov
Mikhail Sukhov

По BestByPrice. Залил исправленное. Просьба проверить.

По BestByVolume. Ничего не понял. Лучше не пытаться исправлять код. Лучше написать что с ним не так. Потому что сечас код написан неправильно с точки зрения S#.

RomSunZ
RomSunZ

Что вы паритесь? GetAcceptablePriceRange:


            if (this.Order != null) _bestprice = this.Order.Price;
            else return base.GetAcceptablePriceRange();
            if (_bestprice == 0)
                return new Range<decimal>(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;

            if (md != null)
            {
                int i = 0;
                foreach (var q in md)
                {
                    if (QuotingDirection == Sides.Buy && q.Price <= _bestprice
                        || QuotingDirection == Sides.Sell && q.Price >= _bestprice)
                    {
                        i -= (int)BestPriceOffset.Value;

                        if (i < 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<decimal>(_bestprice.Value, limit)
                            : new Range<decimal>(limit, _bestprice.Value);


            return range;


Цикл можете убрать. Для меня было интересно, чтобы отступ был рассчитан исходя из уровней стакана, а не тупой дельты от лучшей цены.

P.S. Возможно придется также изменить NeedQuoting:


            var _bestprice = BestPrice;
            if (_bestprice == null || _bestprice == 0) return null;

            if (!acceptablePriceRange.Contains((decimal)_bestprice) || currentVolume != newVolume)
                return _bestprice;
            else
                return null;


Иван З.
Иван З. Автор

Все это уже было и даже работало😀

отступ был рассчитан исходя из уровней стакана, а не тупой дельты от лучшей цены. что вы имеете ввиду?

RomSunZ
RomSunZ

А в версии 65 была изменена логика QuotingStrategy? У меня код:


public class myQuotingStrategy : QuotingStrategy
{
protected override Range<decimal> GetAcceptablePriceRange()
{
}
}

при построении проекта начал выдавать ошибку "не найден метод, пригодный для переопределения"...

RomSunZ
RomSunZ

В версии 4.2.66 проблема осталась. Доступ к переопределению GetAcceptablePriceRange будет, или нужно переделывать логику своего робота?

Mikhail Sukhov
Mikhail Sukhov

RomSunZ: В версии 4.2.66 проблема осталась. Доступ к переопределению GetAcceptablePriceRange будет, или нужно переделывать логику своего робота?

Второе.

RomSunZ
RomSunZ

Коннектор Quik Lua, АПИ 4.2.68. В стратегии QuotingStrategy если котируемая заявка была снята в ручную или системой (например на вечернем клиринге), то стратегия никак не отрабатывает этот момент. В логе по этой заявке только такие строки:

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) в процессе снятия. Логичнее было-бы сделать остановку стратегии.

RomSunZ
RomSunZ

Судя по коду на кодплексе проблема в том, что


					this.AddInfoLog("Отмена заявки {0}.", _order.TransactionId);
					_isCanceling = true;

					_order
						.WhenCanceled()
						.Do((r, o) =>
						{
							this.AddInfoLog("Заявка {0} была снята. Время снятия {1}.", o.TransactionId, o.LastChangeTime);

							Rules.RemoveRulesByToken(o, r);

							if (_order == o)
							{
								_manualReRegisterOrder = _order;
								_order = null;
								_isCanceling = false;
								ProcessQuoting();
							}
							else
								this.AddWarningLog("Заявка {0} устарела.", o.TransactionId);
						})
						.Once()
						.Sync(_syncToken)
						.Apply(this);

					CancelOrder(_order);

_order.WhenCanceled() не срабатывает, т.к. ордер УЖЕ отменен до того, как подписались на это событие. Думаю, нужно добавить проверку типа _order.State==OrderStates.Active. Если да, то выполнить выше приведенную ветку, если нет и орден не NULL и состояние стратегии Active, то вызвать ProcessQuoting, либо в конце процедуры ProcessQuoting делать проверку


if (_isCanceling==true && this.ProcessState==ProcessStates.Active && _order.State==OrderStates.Done)
{
_isCanceling=false;
ProcessQuoting();
//либо вызвать здесь событие orderCancelled, чтобы сработала ветка приведенная выше, либо делать подписку на событие WhenCanceled в момент создания ордера...
}