S# 4.1.5: перестало срабатывать правило WhenNewMyTrades()

S# 4.1.5: перестало срабатывать правило WhenNewMyTrades()
Atom
10/16/2012
Ant.On.


Напишу сразу несколько проблем с которыми столкнулся при переходе на новые версии.
Выкачал с codeplex из trunk версию S# (4.1.5 видимо) и стратегия перестала заходить в функцию обработчик правила WhenNewMyTrades(). Правило добавляю так:
this.WhenNewMyTrades().Do(Proc).Apply(this);
Сделки в системе есть. В логах ничего, и ошибок не выдает.
На версиях 4.1.4 и 4.1.3 работало.

Еще RealTimeEmulationTrader при работе выкидывает Exception:
Quote:
|Error |QuikTrader|System.InvalidOperationException: Priority queue is empty
at Ecng.Collections.PriorityQueue`2.Peek()
at Ecng.Collections.PriorityQueue`2.PeekValue()
at StockSharp.Algo.Testing.MarketEmulator.#=qJBGOJSwSh1TIzfSCaBP_NjwG2KLTkF4SftYzOjliS5k=.#=qyHleL509f0chKkK2FQrqgg==()
at StockSharp.Algo.Testing.MarketEmulator.Emulate(Message msg)
at StockSharp.Algo.Testing.MarketEmulator.UpdateQuotes(MarketDepth marketDepth, MarketDepth delta)
at StockSharp.Algo.Testing.RealTimeEmulationTrader`1.#=qfiTYh07Tf3X0oetJXF6rUxRfV7XLv04MClyynJxpMZ8=(IEnumerable`1 #=q4rrcDObcvigkYsB8qiYEmA==)
at Ecng.Common.DelegateHelper.SafeInvoke[T](Action`1 handler, T arg)
at Ecng.ComponentModel.EventsContainer`1.Raise(IEnumerable`1 items)


Также с версии 4.1.3 (раньше был на 4.0) не работают правила Security.WhenBestBidPriceLess() и Security.WhenBestAskPriceLess(); - тоже просто не заходит в обработчик.
Может быть это просто связано с какими то изменениями и надо стратегии/правила/EmulationTrader как-то по-другому запускать?
Заранее спасибо!

Tags:


Thanks:


1 2  >
esper

Avatar
Date: 10/16/2012
Reply


Это все на эмуляторе?
Thanks:

Ant.On.

Avatar
Date: 10/16/2012
Reply


нет, на эмуляторе сделки не проходят. Это на реальных сделках не работает
Thanks:

esper

Avatar
Date: 10/16/2012
Reply


[confused] Все же не понял, где именно не работает?
Лог нужен в любом случае.
Thanks:

Ant.On.

Avatar
Date: 10/16/2012
Reply


Есть 3 проблемы:
1. Проблема с эмулятором: не срабатывает лимитный ордер (рыночный работает и сделки совершаются). Лог если кидать выше рынка (Exception из-за того что стакан открыт старый, если стакан открыть заново в ТС, то его нет - может баг?):
Quote:
2012/10/16 19:17:17.810| |QuikTrader|Экспорт запущен.
2012/10/16 19:17:18.669|Error |QuikTrader|System.InvalidOperationException: Priority queue is empty
at Ecng.Collections.PriorityQueue`2.Peek()
at Ecng.Collections.PriorityQueue`2.PeekValue()
at StockSharp.Algo.Testing.MarketEmulator.#=qJBGOJSwSh1TIzfSCaBP_NjwG2KLTkF4SftYzOjliS5k=.#=qyHleL509f0chKkK2FQrqgg==()
at StockSharp.Algo.Testing.MarketEmulator.Emulate(Message msg)
at StockSharp.Algo.Testing.MarketEmulator.UpdateQuotes(MarketDepth marketDepth, MarketDepth delta)
at StockSharp.Algo.Testing.RealTimeEmulationTrader`1.#=qfiTYh07Tf3X0oetJXF6rUxRfV7XLv04MClyynJxpMZ8=(IEnumerable`1 #=q4rrcDObcvigkYsB8qiYEmA==)
at Ecng.Common.DelegateHelper.SafeInvoke[T](Action`1 handler, T arg)
at Ecng.ComponentModel.EventsContainer`1.Raise(IEnumerable`1 items)
2012/10/16 19:17:18.701|Error |QuikTrader|System.InvalidOperationException: Priority queue is empty
at Ecng.Collections.PriorityQueue`2.Peek()
at Ecng.Collections.PriorityQueue`2.PeekValue()
at StockSharp.Algo.Testing.MarketEmulator.#=qJBGOJSwSh1TIzfSCaBP_NjwG2KLTkF4SftYzOjliS5k=.#=qyHleL509f0chKkK2FQrqgg==()
at StockSharp.Algo.Testing.MarketEmulator.Emulate(Message msg)
at StockSharp.Algo.Testing.MarketEmulator.UpdateQuotes(MarketDepth marketDepth, MarketDepth delta)
at StockSharp.Algo.Testing.RealTimeEmulationTrader`1.#=qfiTYh07Tf3X0oetJXF6rUxRfV7XLv04MClyynJxpMZ8=(IEnumerable`1 #=q4rrcDObcvigkYsB8qiYEmA==)
at Ecng.Common.DelegateHelper.SafeInvoke[T](Action`1 handler, T arg)
at Ecng.ComponentModel.EventsContainer`1.Raise(IEnumerable`1 items)
2012/10/16 19:19:48.263| |PTC_SBRF-12.12@RTS_SPBFUT00360|Стратегия запущена. [0,-1]. Позиция при старте 0.
2012/10/16 19:19:48.294| |Q_SBRF-12.12@RTS_SPBFUT00360|Стратегия запущена. [0,2]. Позиция при старте 0.
2012/10/16 19:19:48.326| |BS_SBRF-12.12@RTS_SPBFUT00360|Стратегия запущена. [2,1]. Позиция при старте 0.
2012/10/16 19:19:49.701| |PTC_SBRF-12.12@RTS_SPBFUT00360|Новая позиция: SPBFUT00360-SBRF-12.12@RTS=1.
2012/10/16 19:19:49.701| |BS_SBRF-12.12@RTS_SPBFUT00360|Новая позиция: SPBFUT00360-SBRF-12.12@RTS=1.
2012/10/16 19:19:49.701| |Q_SBRF-12.12@RTS_SPBFUT00360|Новая позиция: SPBFUT00360-SBRF-12.12@RTS=1.
2012/10/16 19:19:49.701| |Q_SBRF-12.12@RTS_SPBFUT00360|Заявка 69434405 больше не активна.
2012/10/16 19:19:49.701| |PTC_SBRF-12.12@RTS_SPBFUT00360|Новая позиция: SPBFUT00360-SBRF-12.12@RTS=1, SPBFUT00360-VTBR-12.12@RTS=-2.
2012/10/16 19:19:49.701| |BS_SBRF-12.12@RTS_SPBFUT00360|Новая позиция: SPBFUT00360-SBRF-12.12@RTS=1, SPBFUT00360-VTBR-12.12@RTS=-2.


а вот лог если ставить лимитки( цена проходила через них)
Quote:

2012/10/16 19:26:39.060| |QuikTrader|Экспорт запущен.
2012/10/16 19:27:03.826|Error |QuikTrader|System.InvalidOperationException: Priority queue is empty
at Ecng.Collections.PriorityQueue`2.Dequeue()
at StockSharp.Algo.Testing.MarketEmulator.#=qJBGOJSwSh1TIzfSCaBP_NjwG2KLTkF4SftYzOjliS5k=.#=qZFq6HLTDmkhFmcbjC1g$Dg==()
at StockSharp.Algo.Testing.MarketEmulator.Emulate(Message msg)
at StockSharp.Algo.Testing.MarketEmulator.UpdateQuotes(MarketDepth marketDepth, MarketDepth delta)
at StockSharp.Algo.Testing.RealTimeEmulationTrader`1.#=qfiTYh07Tf3X0oetJXF6rUxRfV7XLv04MClyynJxpMZ8=(IEnumerable`1 #=q4rrcDObcvigkYsB8qiYEmA==)
at Ecng.Common.DelegateHelper.SafeInvoke[T](Action`1 handler, T arg)
at Ecng.ComponentModel.EventsContainer`1.Raise(IEnumerable`1 items)
2012/10/16 19:29:32.466| |PTC_SBRF-12.12@RTS_SPBFUT00360|Стратегия запущена. [0,-1]. Позиция при старте 0.
2012/10/16 19:29:32.529| |Q_SBRF-12.12@RTS_SPBFUT00360|Стратегия запущена. [0,2]. Позиция при старте 0.
2012/10/16 19:29:32.607| |BS_SBRF-12.12@RTS_SPBFUT00360|Стратегия запущена. [2,1]. Позиция при старте 0.

2. не работает правило WhenNewMyTrades() - не входит в функцию обработчик. Запускаю на реальном счете. Сделки в квике есть. На версиях 4.1.4 и 4.1.3 тот же код работал. Лог:
Quote:
2012/10/16 19:06:08.591| |QuikTrader|Экспорт запущен.
2012/10/16 19:06:24.669| |PTC_SBRF-12.12@RTS_SPBFUT00360|Стратегия запущена. [0,-1]. Позиция при старте 0.
2012/10/16 19:06:24.701| |Q_SBRF-12.12@RTS_SPBFUT00360|Стратегия запущена. [0,2]. Позиция при старте 0.
2012/10/16 19:06:24.732| |BS_SBRF-12.12@RTS_SPBFUT00360|Стратегия запущена. [2,1]. Позиция при старте 0.
2012/10/16 19:06:24.919| |QuikTrader|New order: 68763953/9190308641 Покупка Цена=9297 Объем=1 Сост=Active Бал=1
2012/10/16 19:06:24.919| |QuikTrader|Order changed: 68763953/9190308641 Покупка Цена=9297 Объем=1 Сост=Active Бал=1
2012/10/16 19:11:29.716| |QuikTrader|Order changed: 68763953/9190308641 Покупка Цена=9297 Объем=1 Сост=Done Бал=1


3.не работает правило Security.WhenBestAskPriceLess(); Раньше его не использовал и не могу сказать работало ли оно на 4.0. Но на 4.1.х у меня не запускается...
Thanks:

Marco

Avatar
Date: 10/17/2012
Reply


Привет,

Что касается WhenNewMyTrades, посмотрите тему http://www.stocksharp.com/forum/3042/Nie-prikhodit-sobytiie-OnNewMyTrades/. Для заявок, размещаемых через котирование, попробуйте выставлять WaitAllTrades=true. Свойство было введено в 4.1.4.
Thanks:

Mikhail Sukhov

Avatar
Date: 10/17/2012
Reply


На КП лежит фикс с доп логами. Можете включить прогнать свой код еще раз с новыми сборками? При этом надо включить у RTEmuTrader режим логирования Debug.
Thanks:

tony_inv

Avatar
Date: 10/18/2012
Reply


Проблема 2 была решена - спасибо. правило WhenNewMyTrades работает как надо.
Проблема 1. Эмулятор еще не запускал, - завтра напишу результаты.
Проблема 3 осталась: правило WhenBid/AskPriceLess/More не срабатывает. В логах ничего (правда режим логгирования был не дебаг здесь)
Thanks:

Mikhail Sukhov

Avatar
Date: 10/18/2012
Reply


tony_inv
Проблема 3 осталась: правило WhenBid/AskPriceLess/More не срабатывает. В логах ничего (правда режим логгирования был не дебаг здесь)


Больше подробностей. Код, логи, что ожидается, что в реальности, как проверяется.

А почему юзер новый?
Thanks:

esper

Avatar
Date: 10/18/2012
Reply


tony_inv
Проблема 3 осталась: правило WhenBid/AskPriceLess/More не срабатывает. В логах ничего (правда режим логгирования был не дебаг здесь)

Экспорт стакана запущен?
Thanks:

tony_inv

Avatar
Date: 10/19/2012
Reply


Да, экспорт стакана запущен. Пробовал применять правило как
Code
sec.WhenBestBidPriceLess(sec.ShrinkPrice(price / (1 + treshold / 100))).Do(ReQuote).Apply(this);

так и:
Code
sec.GetMarketDepth().WhenBestBidPriceLess(sec.ShrinkPrice(price / (1 + treshold / 100))).Do(ReQuote).Apply(this);


Возможно когда правило применяется к конкретному инструменту то нужно что-то еще указать?
В логах не пишет ничего. Вроде режим логгирования поставил Debug (LogLevels.Debug). Хочется, чтобы когда бид падает ниже определнной цены запускался обработчик ReQuote(). Логов и полного кода сейчас дать не могу, т.к. нет доступа к компу с системой (собственно по этой причине и юзер новый и с эмулятором еще нет ответа). Что именно нужно - лог стратегии? лог трейдера? я приводил полные логи фактически выше...
Thanks:
1 2  >

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

loading
clippy