Котирование
Atom Ответить
16.01.2015


Как я понимаю есть 2 варианта запустить котирования
1) из документации https://stocksharp.ru/do...c-bc8b-4afde645e483.htm
Код
var strategy = new MarketQuotingStrategy(order, new Unit());
base.ChildStrategies.Add(strategy);

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


2) из одного из обновления https://stocksharp.ru/fo...285/Stock--4-0-Release/
Код

this.OpenPositionByQuoting(10);

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

В тестовом КВИКе выдает ошибку

Лог приложу
Еще раз повторю, что 1й работает а 2й не работает
Вопрос: это я не правильно использую или это баг?
log.txt 72 KB (1)

Теги:


Спасибо:




41 Ответов
1 2  >
Иван З.

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


В общем соврал я. Оба не работают, просто 2 вариант несколько раз без ошибок отработал.
Прикрепляю лог в него писал и Trader и Stratagy
В логе есть такая строка
Цитата:
85487309/ Покупка Цена=9615 Объем=0 Сост=Failed Бал=0
System.InvalidOperationException: kolichestvo v zayavke dolzhno byt' polozhitel'no
log.txt 531 KB (0)
Автор топика
Спасибо:

Иван З.

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


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

Код

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


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

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

Mikhail Sukhov

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


Луа?
Спасибо:

Иван З.

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


Да
Автор топика
Спасибо:

Иван З.

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


И еще заметил, что при котировании заявка не откатывается на лучшую цену.

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

Автор топика
Спасибо:

Mikhail Sukhov

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


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

Иван З.

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


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

Mikhail Sukhov

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


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


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

Иван З.

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


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

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



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



Автор топика
Спасибо:

Mikhail Sukhov

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


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

Иван З.

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


Перед стартом стратегии

После старта стратегии, 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.codepl...gies/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());
             }
         }

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

Смотреть всем!

Михаил, думаю полезно будет выложить актуальные сорцы адаптированны к последней версии S# на github, которые не имеют коммерческой ценности или уже выложены. Стратегии, индикаторы и др., они уже выложены codeplex но слегка устарели. Пользователю будет польза, и к вам меньше вопросов на подобие этого.
Народ выскажитесь кто что думает по этому поводу, может коллективом уговорим! BigGrin
log.txt 12 KB (0)
Автор топика
Спасибо:

Mikhail Sukhov

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


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

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

Иван З.

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



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

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

Mikhail Sukhov

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


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

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

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

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

Иван З.

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


Михаил Сухов Перейти
1. Лог обрезан.

Лог не обрезан, такое поведение MQS

Автор топика
Спасибо:

Иван З.

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


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

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

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

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

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

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

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


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


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


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


Лог стратегии не обрезан. Стратеги просто ничего не делает.
Прикрепляю логи, и стратегию.
Если MarketQuotingStrategy скопировать здесь http://stocksharp.codepl...arketQuotingStrategy.cs адаптировать под последнюю версию S#. То проблема уходит.
Автор топика
Спасибо:

Mikhail Sukhov

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


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

Andrii

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


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


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

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


Спасибо:

RomSunZ

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


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

Иван З.

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


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


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

Mikhail Sukhov

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


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

Иван З.

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


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

Конечно реагирует, и пишет в лог, что стакан изменился.

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

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

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


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.
Спасибо:
1 2  >

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

loading
clippy