Не переворачивается позиция в примере SampleSMA
Atom Ответить
12.10.2012


Код

2012.10.12 14:53:56.975|       |MQS_RIZ2@RTS_SPBFUT00627|Стратегия запущена.
2012.10.12 14:53:56.975|       |MQS_RIZ2@RTS_SPBFUT00627|Котирование на Sell объема 1.
2012.10.12 14:53:56.975|       |MQS_RIZ2@RTS_SPBFUT00627|Приостановка правил. _rulesSuspendCount 1.
2012.10.12 14:53:56.975|       |MQS_RIZ2@RTS_SPBFUT00627|Возобновление правил. _rulesSuspendCount 0.
2012.10.12 14:53:56.975|       |MQS_RIZ2@RTS_SPBFUT00627|Цена текущей NULL и лучшей 146900.
2012.10.12 14:53:56.975|       |MQS_RIZ2@RTS_SPBFUT00627|Лучший бид 146890 и лучший аск 146900.
2012.10.12 14:53:56.975|       |MQS_RIZ2@RTS_SPBFUT00627|Регистрация новой заявки на Sell с ценой 146900 и объемом 1.
2012.10.12 14:53:56.975|       |MQS_RIZ2@RTS_SPBFUT00627|Заявка 63746365 на Sell отправлена с ценой 146900 объемом 1.
2012.10.12 14:53:57.730|       |MQS_RIZ2@RTS_SPBFUT00627|Заявка 63746365 принята биржей.
2012.10.12 14:53:57.730|       |MQS_RIZ2@RTS_SPBFUT00627|Сброс счетчика ошибок регистрации с 0 до нуля.
2012.10.12 14:53:57.737|       |SS_RIZ2@RTS_SPBFUT00627|Новая позиция -1.
2012.10.12 14:53:57.737|       |MQS_RIZ2@RTS_SPBFUT00627|Новая позиция -1.
2012.10.12 14:53:57.737|       |MQS_RIZ2@RTS_SPBFUT00627|Позиция изменилась на -1. Оставшийся объем 0.
2012.10.12 14:53:57.737|       |MQS_RIZ2@RTS_SPBFUT00627|Заканчиваем котирование.
2012.10.12 14:53:57.738|       |MQS_RIZ2@RTS_SPBFUT00627|Стратегия останавливается.
2012.10.12 14:53:57.738|       |MQS_RIZ2@RTS_SPBFUT00627|Ожидание снятия всех активных заявок.
2012.10.12 14:53:57.738|       |MQS_RIZ2@RTS_SPBFUT00627|Стратегия остановлена.
2012.10.12 14:53:57.740|       |SS_RIZ2@RTS_SPBFUT00627|Новая Sell сделка 76452271 по цене 146900 на 1 заявки 63746365.
2012.10.12 14:53:57.756|       |MQS_RIZ2@RTS_SPBFUT00627|Новая Sell сделка 76452271 по цене 146900 на 1 заявки 63746365.
2012.10.12 14:59:52.857|       |MQS_RIZ2@RTS_SPBFUT00627|Стратегия запущена.
2012.10.12 14:59:52.857|       |MQS_RIZ2@RTS_SPBFUT00627|Котирование на Buy объема 1.
2012.10.12 14:59:52.858|       |MQS_RIZ2@RTS_SPBFUT00627|Приостановка правил. _rulesSuspendCount 1.
2012.10.12 14:59:52.858|       |MQS_RIZ2@RTS_SPBFUT00627|Возобновление правил. _rulesSuspendCount 0.
2012.10.12 14:59:52.858|       |MQS_RIZ2@RTS_SPBFUT00627|Цена текущей NULL и лучшей 147150.
2012.10.12 14:59:52.858|       |MQS_RIZ2@RTS_SPBFUT00627|Лучший бид 147150 и лучший аск 147200.
2012.10.12 14:59:52.858|       |MQS_RIZ2@RTS_SPBFUT00627|Регистрация новой заявки на Buy с ценой 147150 и объемом 1.
2012.10.12 14:59:52.858|       |MQS_RIZ2@RTS_SPBFUT00627|Заявка 63746366 на Buy отправлена с ценой 147150 объемом 1.
2012.10.12 14:59:52.874|Warning|MQS_RIZ2@RTS_SPBFUT00627|Заявка 63746366 в процессе регистрации.
2012.10.12 14:59:53.197|       |MQS_RIZ2@RTS_SPBFUT00627|Заявка 63746366 принята биржей.
2012.10.12 14:59:53.197|       |MQS_RIZ2@RTS_SPBFUT00627|Сброс счетчика ошибок регистрации с 0 до нуля.
2012.10.12 14:59:53.887|       |SS_RIZ2@RTS_SPBFUT00627|Новая Buy сделка 76452855 по цене 147150 на 1 заявки 63746366.
2012.10.12 14:59:53.887|       |SS_RIZ2@RTS_SPBFUT00627|Новая позиция 0.
2012.10.12 14:59:53.887|       |MQS_RIZ2@RTS_SPBFUT00627|Новая позиция 1.
2012.10.12 14:59:53.887|       |MQS_RIZ2@RTS_SPBFUT00627|Позиция изменилась на 1. Оставшийся объем 0.
2012.10.12 14:59:53.887|       |MQS_RIZ2@RTS_SPBFUT00627|Заканчиваем котирование.
2012.10.12 14:59:53.888|       |MQS_RIZ2@RTS_SPBFUT00627|Стратегия останавливается.
2012.10.12 14:59:53.888|       |MQS_RIZ2@RTS_SPBFUT00627|Ожидание снятия всех активных заявок.
2012.10.12 14:59:53.888|       |MQS_RIZ2@RTS_SPBFUT00627|Стратегия остановлена.
2012.10.12 14:59:53.888|       |MQS_RIZ2@RTS_SPBFUT00627|Новая Buy сделка 76452855 по цене 147150 на 1 заявки 63746366.


Позиция закрывается в 0, но не переворачивается.
Если первая сделка бай, то соответственно не открывается короткая позиция.
Если селл, то длинная.

В коде стратегии добавлена только проверка на риал-тайм, больше ничего не трогал.

Теги:


Спасибо:




5 Ответов
Moadip

Фотография
Автор статей Программист
Дата: 12.10.2012
Ответить


А где написано что она должна переворачиваться?
Спасибо:

RomSunZ

Фотография
Программист
Дата: 12.10.2012
Ответить


Если посмотрите код стратегии, то в комментарии увидите. Это первое.
Код

            // если произошло пересечение
            if (_isShortLessThenLong != isShortLessThenLong)
            {
                // если короткая меньше чем длинная, то продажа, иначе, покупка.
                var direction = isShortLessThenLong ? OrderDirections.Sell : OrderDirections.Buy;

                // регистрируем заявку (обычным способом - лимитированной заявкой)
                //RegisterOrder(this.CreateOrder(direction, (decimal)Security.GetCurrentPrice(direction), Volume));

                // переворачиваем позицию через котирование
                if (realtime)
                {
                    var strategy = new MarketQuotingStrategy(direction, Volume);
                    ChildStrategies.Add(strategy);
                }

                // запоминаем текущее положение относительно друг друга
                _isShortLessThenLong = isShortLessThenLong;
            }


В примере SampleHistoryTesting та же самая стратегия при котировании переворачивает позицию. Это второе.
Если вы посмотрите лог, то увидите, что есть две строчки:
Код

2012.10.12 14:59:53.887|       |SS_RIZ2@RTS_SPBFUT00627|Новая позиция 0.
2012.10.12 14:59:53.887|       |MQS_RIZ2@RTS_SPBFUT00627|Новая позиция 1.

Это третье.

С уважением,
Роман
Автор топика
Спасибо:

esper

Фотография
Программист
Дата: 12.10.2012
Ответить


1. В комментариях иногда бывают ошибки. Здесь как раз такой случай.
2. Если стратегии одинаковы, то как одна может переворачивать позу, а другая нет?
3. Все верно, стратегии разные и позиции у них так же разные. Если при запуске котирования у SS позиция была -1 и котирование купило контракт, то у SS будет 0, а у котирования 1.
Спасибо:

RomSunZ

Фотография
Программист
Дата: 12.10.2012
Ответить


Тогда все понятно. Я еще понять не мог, почему котирует несколько раз по одному контракту.
Тогда еще один вопрос. В примере SampleHistoryTesting вываливаются ошибки при запуске каждой дочерней стратегии на котирование, которых в Quik SampleSMA нет:
Код

2009.05.31 20:00:00.000|       |SS_RIU9@RTS_test account|Стратегия запущена.
2009.06.02 06:40:00.970|       |MQS_RIU9@RTS_test account|Стратегия запущена.
2009.06.02 06:40:00.970|       |MQS_RIU9@RTS_test account|Котирование на Sell объема 1.
2009.06.02 06:40:00.970|       |MQS_RIU9@RTS_test account|Приостановка правил. _rulesSuspendCount 1.
2009.06.02 06:40:00.970|       |MQS_RIU9@RTS_test account|Возобновление правил. _rulesSuspendCount 0.
2009.06.02 06:40:00.970|       |MQS_RIU9@RTS_test account|Цена текущей NULL и лучшей 116155.
2009.06.02 06:40:00.970|       |MQS_RIU9@RTS_test account|Лучший бид NULL и лучший аск NULL.
2009.06.02 06:40:00.970|       |MQS_RIU9@RTS_test account|Регистрация новой заявки на Sell с ценой 116155 и объемом 1.
2009.06.02 06:40:00.970|       |MQS_RIU9@RTS_test account|Заявка 80254917 на Sell отправлена с ценой 116155 объемом 1.
2009.06.02 06:40:01.737|       |MQS_RIU9@RTS_test account|Заявка 80254917 принята биржей.
2009.06.02 06:40:01.737|       |MQS_RIU9@RTS_test account|Сброс счетчика ошибок регистрации с 0 до нуля.
2009.06.02 06:40:01.737|       |MQS_RIU9@RTS_test account|Цена текущей 116155 и лучшей 116000.
2009.06.02 06:40:01.737|       |MQS_RIU9@RTS_test account|Лучший бид NULL и лучший аск NULL.
2009.06.02 06:40:01.737|       |MQS_RIU9@RTS_test account|Котирование заявки 80254917 на Sell с ценой 116155 объемом 1.
2009.06.02 06:40:01.737|Error  |MQS_RIU9@RTS_test account|Заявка 0 не была принята по причине System.ArgumentException: Заявка уже имеет номер '1'. Возможно, она уже была зарегистрирована.
Имя параметра: order
   в StockSharp.Algo.Testing.MarketEmulator.ReRegisterOrder(Order order, Order newOrder)
   в StockSharp.Algo.Testing.EmulationTrader.OnReRegisterOrder(Order oldOrder, Order newOrder)
   в StockSharp.Algo.BaseTrader.ReRegisterOrder(Order oldOrder, Order newOrder).
2009.06.02 06:40:01.737|Error  |MQS_RIU9@RTS_test account|System.ArgumentException: Заявка уже имеет номер '1'. Возможно, она уже была зарегистрирована.
Имя параметра: order
   в StockSharp.Algo.Testing.MarketEmulator.ReRegisterOrder(Order order, Order newOrder)
   в StockSharp.Algo.Testing.EmulationTrader.OnReRegisterOrder(Order oldOrder, Order newOrder)
   в StockSharp.Algo.BaseTrader.ReRegisterOrder(Order oldOrder, Order newOrder)
   в StockSharp.Algo.Strategies.Strategy.ReRegisterOrder(Order oldOrder, Order newOrder)
   в StockSharp.Algo.Strategies.QuotingStrategy.ProcessQuoting()
   в StockSharp.Algo.Strategies.QuotingStrategy.#=ql8FZcZl1VhoSfxj6bxBSmoDgJ6B2gT6ImGejxU1jvuQ=(Order #=qP5IG1jy682SV9oLq5xh5xw==)
   в StockSharp.Algo.MarketRule`2.#=qD2pySzb7SwcKqbf509xbCf4ETRnYzZpS8F4NvKjD1Cg=()
   в StockSharp.Algo.MarketRuleHelper.#=qQ813stF5rdU7vR12V$ax_w==(IMarketRuleContainer #=qrcq1peQJX8wVd5bucjdK5Q==, IMarketRule #=qhASjoS2d0T$yCziW8qaZow==, Func`1 #=qarKRLFkIjTz$sLdPcQaF4w==)
   в StockSharp.Algo.Strategies.Strategy.#=qcUFLS8UKZFDgbx2X3BZSfEUGq5pxvIDpIdlvrsG_Q6JT74bgQBqKgNKlz2z_$METWffqXRfxwWIOkgvRG3QAtg==(IMarketRule #=qB7ROmUjGdaG1jUWU0vPRbA==, Func`1 #=qVPSEf_woMd2b0g2sKq7R1w==)
2009.06.02 06:40:01.737|       |MQS_RIU9@RTS_test account|Стратегия останавливается.
2009.06.02 06:40:01.737|Warning|MQS_RIU9@RTS_test account|Заканчиваем котирование с неисполненным объемом равный 1.
2009.06.02 06:40:01.737|       |MQS_RIU9@RTS_test account|Ожидание снятия всех активных заявок.
2009.06.02 06:40:01.737|       |MQS_RIU9@RTS_test account|Отмена заявки 80254917.
2009.06.02 06:40:01.737|       |MQS_RIU9@RTS_test account|Заявка 80254917 больше не активна.
2009.06.02 06:40:01.737|       |MQS_RIU9@RTS_test account|Стратегия остановлена.
2009.06.02 10:26:03.077|       |MQS_RIU9@RTS_test account|Стратегия запущена.
2009.06.02 10:26:03.077|       |MQS_RIU9@RTS_test account|Котирование на Buy объема 1.
2009.06.02 10:26:03.077|       |MQS_RIU9@RTS_test account|Приостановка правил. _rulesSuspendCount 1.
2009.06.02 10:26:03.077|       |MQS_RIU9@RTS_test account|Возобновление правил. _rulesSuspendCount 0.
2009.06.02 10:26:03.077|       |MQS_RIU9@RTS_test account|Цена текущей NULL и лучшей 119500.
2009.06.02 10:26:03.077|       |MQS_RIU9@RTS_test account|Лучший бид NULL и лучший аск NULL.
2009.06.02 10:26:03.077|       |MQS_RIU9@RTS_test account|Регистрация новой заявки на Buy с ценой 119500 и объемом 1.
2009.06.02 10:26:03.077|       |MQS_RIU9@RTS_test account|Заявка 80254918 на Buy отправлена с ценой 119500 объемом 1.
2009.06.02 10:26:03.077|       |MQS_RIU9@RTS_test account|Заявка 80254918 принята биржей.
2009.06.02 10:26:03.077|       |MQS_RIU9@RTS_test account|Сброс счетчика ошибок регистрации с 0 до нуля.
2009.06.02 10:26:03.077|       |MQS_RIU9@RTS_test account|Цена текущей 119500 и лучшей 119800.
2009.06.02 10:26:03.077|       |MQS_RIU9@RTS_test account|Лучший бид NULL и лучший аск NULL.
2009.06.02 10:26:03.077|       |MQS_RIU9@RTS_test account|Котирование заявки 80254918 на Buy с ценой 119500 объемом 1.
2009.06.02 10:26:03.077|Error  |MQS_RIU9@RTS_test account|Заявка 0 не была принята по причине System.ArgumentException: Заявка уже имеет номер '2'. Возможно, она уже была зарегистрирована.
Имя параметра: order
   в StockSharp.Algo.Testing.MarketEmulator.ReRegisterOrder(Order order, Order newOrder)
   в StockSharp.Algo.Testing.EmulationTrader.OnReRegisterOrder(Order oldOrder, Order newOrder)
   в StockSharp.Algo.BaseTrader.ReRegisterOrder(Order oldOrder, Order newOrder).
2009.06.02 10:26:03.077|Error  |MQS_RIU9@RTS_test account|System.ArgumentException: Заявка уже имеет номер '2'. Возможно, она уже была зарегистрирована.
Имя параметра: order
   в StockSharp.Algo.Testing.MarketEmulator.ReRegisterOrder(Order order, Order newOrder)
   в StockSharp.Algo.Testing.EmulationTrader.OnReRegisterOrder(Order oldOrder, Order newOrder)
   в StockSharp.Algo.BaseTrader.ReRegisterOrder(Order oldOrder, Order newOrder)
   в StockSharp.Algo.Strategies.Strategy.ReRegisterOrder(Order oldOrder, Order newOrder)
   в StockSharp.Algo.Strategies.QuotingStrategy.ProcessQuoting()
   в StockSharp.Algo.Strategies.QuotingStrategy.#=ql8FZcZl1VhoSfxj6bxBSmoDgJ6B2gT6ImGejxU1jvuQ=(Order #=qP5IG1jy682SV9oLq5xh5xw==)
   в StockSharp.Algo.MarketRule`2.#=qD2pySzb7SwcKqbf509xbCf4ETRnYzZpS8F4NvKjD1Cg=()
   в StockSharp.Algo.MarketRuleHelper.#=qQ813stF5rdU7vR12V$ax_w==(IMarketRuleContainer #=qrcq1peQJX8wVd5bucjdK5Q==, IMarketRule #=qhASjoS2d0T$yCziW8qaZow==, Func`1 #=qarKRLFkIjTz$sLdPcQaF4w==)
   в StockSharp.Algo.Strategies.Strategy.#=qcUFLS8UKZFDgbx2X3BZSfEUGq5pxvIDpIdlvrsG_Q6JT74bgQBqKgNKlz2z_$METWffqXRfxwWIOkgvRG3QAtg==(IMarketRule #=qB7ROmUjGdaG1jUWU0vPRbA==, Func`1 #=qVPSEf_woMd2b0g2sKq7R1w==)
2009.06.02 10:26:03.077|       |MQS_RIU9@RTS_test account|Стратегия останавливается.
2009.06.02 10:26:03.077|Warning|MQS_RIU9@RTS_test account|Заканчиваем котирование с неисполненным объемом равный 1.
2009.06.02 10:26:03.077|       |MQS_RIU9@RTS_test account|Ожидание снятия всех активных заявок.
2009.06.02 10:26:03.077|       |MQS_RIU9@RTS_test account|Отмена заявки 80254918.
2009.06.02 10:26:03.077|       |MQS_RIU9@RTS_test account|Заявка 80254918 больше не активна.
2009.06.02 10:26:03.077|       |MQS_RIU9@RTS_test account|Стратегия остановлена.



С чем это может быть связано.
Автор топика
Спасибо:

esper

Фотография
Программист
Дата: 12.10.2012
Ответить


Цитата:
Тогда все понятно. Я еще понять не мог, почему котирует несколько раз по одному контракту.

У стратегии котирования необходимо указать Volume.

По SampleHistoryTesting лучше создать отдельную тему в разделе Тестирование.
Спасибо:


Добавить файлы через драг-н-дроп, , или вставить из буфера обмена.

loading
clippy