Котирование

Котирование
Atom
1/16/2015
Иван З.


Как я понимаю есть 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й не работает Вопрос: это я не правильно использую или это баг?

log.txt 72 KB (764)

Tags:


Thanks:


< 1 2 3 4 5  >
Mikhail Sukhov

Avatar
Date: 2/5/2015
Reply


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

Thanks:

Иван З.

Avatar
Date: 2/5/2015
Reply


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

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 считает свою заявку лучшей, поэтому не откатывает эту заявку "назад" к краю спреда в стакане.

Thanks:

Andrii

Avatar
Date: 2/5/2015
Reply


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

Andrii:

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

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

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


уже ж написал где ошибка, проверить и исправить ее минутное дело
Thanks:

Иван З.

Avatar
Date: 2/12/2015
Reply


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

Thanks: Mikhail Sukhov kornego

Mikhail Sukhov

Avatar
Date: 2/13/2015
Reply


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

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

Thanks:

Иван З.

Avatar
Date: 2/13/2015
Reply


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

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

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

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

Thanks:

Mikhail Sukhov

Avatar
Date: 2/13/2015
Reply


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

Thanks:

Mikhail Sukhov

Avatar
Date: 2/13/2015
Reply


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

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

Thanks:

Иван З.

Avatar
Date: 2/13/2015
Reply


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

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

StockSharp платформа.

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

Thanks:

Mikhail Sukhov

Avatar
Date: 2/16/2015
Reply


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

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

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

Thanks:
< 1 2 3 4 5  >

Attach files by dragging & dropping, , or pasting from the clipboard.

loading
clippy