← Zurück

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


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, но не переворачивается. Если первая сделка бай, то соответственно не открывается короткая позиция. Если селл, то длинная.

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

War dieses Thema hilfreich?

Thema teilen

Kommentare (5)

Anmelden oder Konto erstellen, Melden Sie sich an oder registrieren Sie sich, um einen Kommentar zu hinterlassen

Moadip
Moadip

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

RomSunZ
RomSunZ Autor

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


            // если произошло пересечение
            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
esper
  1. В комментариях иногда бывают ошибки. Здесь как раз такой случай.
  2. Если стратегии одинаковы, то как одна может переворачивать позу, а другая нет?
  3. Все верно, стратегии разные и позиции у них так же разные. Если при запуске котирования у SS позиция была -1 и котирование купило контракт, то у SS будет 0, а у котирования 1.
RomSunZ
RomSunZ Autor

Тогда все понятно. Я еще понять не мог, почему котирует несколько раз по одному контракту. Тогда еще один вопрос. В примере 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
esper

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

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