Котирование
Atom
16.01.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)

Теги:


Спасибо:


< 1 2 3 4 5  >
Mikhail Sukhov

Фотография
Дата: 05.02.2015
Ответить


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

Спасибо:

Иван З.

Фотография
Дата: 05.02.2015
Ответить


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

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

Фотография
Дата: 05.02.2015
Ответить


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

Andrii:

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

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

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


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

Иван З.

Фотография
Дата: 12.02.2015
Ответить


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

Спасибо: Mikhail Sukhov kornego

Mikhail Sukhov

Фотография
Дата: 13.02.2015
Ответить


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

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

Спасибо:

Иван З.

Фотография
Дата: 13.02.2015
Ответить


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

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

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

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

Спасибо:

Mikhail Sukhov

Фотография
Дата: 13.02.2015
Ответить


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

Спасибо:

Mikhail Sukhov

Фотография
Дата: 13.02.2015
Ответить


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

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

Спасибо:

Иван З.

Фотография
Дата: 13.02.2015
Ответить


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

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

StockSharp платформа.

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

Спасибо:

Mikhail Sukhov

Фотография
Дата: 16.02.2015
Ответить


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

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

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

Спасибо:
< 1 2 3 4 5  >

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

loading
clippy