NullReferenceException при вызове Strategy.Security.BestAsk.Price


NullReferenceException при вызове Strategy.Security.BestAsk.Price
Atom
5/28/2012


В версии 4.0.23 при вызове Strategy.Security.BestAsk.Price получал нужную цену.
Скачал самую последнюю версию 17334, с dev-ветки.
Теперь Strategy.Security.BestAsk равно null и вылетает NullReferenceException

Tags:


Thanks:


1 2  >
Alexander

Avatar
Date: 5/28/2012
Reply


Какой шлюз? Экспорт стакана запускается?
Thanks:

Кот Матроскин

Avatar
Date: 5/28/2012
Reply


Alexander Mukhanchikov Go to
Какой шлюз? Экспорт стакана запускается?

Тестирую в EmulationTrader
Экспорт стакана не запускал ни в 4.0.23, ни в текущей
Thanks:

esper

Avatar
Date: 5/28/2012
Reply


Кот Матроскин Go to
Тестирую в EmulationTrader
Экспорт стакана не запускал ни в 4.0.23, ни в текущей

Если нет сохраненных стаканов, то у EmulationTrader надо выставить UseMarketDepth = false
Thanks: Кот Матроскин Yury Smykalov

Кот Матроскин

Avatar
Date: 5/28/2012
Reply


esper Go to
Кот Матроскин Go to
Тестирую в EmulationTrader
Экспорт стакана не запускал ни в 4.0.23, ни в текущей

Если нет сохраненных стаканов, то у EmulationTrader надо выставить UseMarketDepth = false

Спасибо, помогло, NullReferenceException больше не вылетает. В 4.0.23 не было такого свойства.
А то, что мы создаем генератор стаканов:
_trader.DepthGenerators[_security] = new TrendMarketDepthGenerator(_security)
это что-то другое?
Thanks:

esper

Avatar
Date: 5/28/2012
Reply


Если UseMarketDepth = false, то стаканы как раз генерируются, иначе читаются из БД.
Thanks: Кот Матроскин

Кот Матроскин

Avatar
Date: 5/28/2012
Reply


esper Go to
Если UseMarketDepth = false, то стаканы как раз генерируются, иначе читаются из БД.

Спасибо, теперь полностью разобрался)))
Thanks:

Кот Матроскин

Avatar
Date: 5/29/2012
Reply


Все-таки еще иногда вылазит NullReferenceException. Но не всегда:
Quote:
Метка 3-1 MarketTime:2012.03.07 18:30:01, BestAsk = 97,42000, H = 97,56000, L = 97,36000
Метка 3-1 MarketTime:2012.03.07 18:40:00, BestAsk = 97,25000, H = 97,65000, L = 97,21000
Метка 3-1 MarketTime:2012.03.11 09:59:59, NullReferenceException
Метка 3-1 MarketTime:2012.03.11 10:00:00, BestAsk = 99,60000, H = 99,60000, L = 99,60000
Метка 3-1 MarketTime:2012.03.11 10:10:00, BestAsk = 99,44000, H = 99,80000, L = 99,39000
Метка 3-1 MarketTime:2012.03.11 10:20:00, BestAsk = 99,51000, H = 99,57000, L = 99,35000

Сначала думал, что из-за корявого времени свечи, но в других случаях все нормально

Quote:
Метка 3-1 MarketTime:2012.03.15 18:30:00, BestAsk = 100,86000, H = 100,89000, L = 100,65000
Метка 3-1 MarketTime:2012.03.15 18:40:00, BestAsk = 100,69000, H = 100,88000, L = 100,54000
Метка 3-1 MarketTime:2012.03.16 09:59:59, BestAsk = 100,67000, H = 100,70000, L = 100,54000
Метка 3-1 MarketTime:2012.03.16 10:00:00, BestAsk = 100,99000, H = 100,99000, L = 100,99000
Метка 3-1 MarketTime:2012.03.16 10:10:00, BestAsk = 100,75000, H = 100,97000, L = 100,35000

Thanks:

Кот Матроскин

Avatar
Date: 6/18/2012
Reply


Опять полезло NullReferenceException при вызове Strategy.Security.BestBid.Price
при этом UseMarketDepth = false
Quote:
10:00:00.000 | Error | FDS_SBER@EQBR_test account | System.NullReferenceException: Ссылка на объект не указывает на экземпляр объекта.
в SampleHistoryTesting.FDStrategy.OnCandlesFinished(Candle candle) в F:\S#\4.1.0\StockSharp_4.1\Samples\Testing\HistoryTesting\Strategy\FDStrategy.cs:строка 334
в SampleHistoryTesting.FDStrategy.<OnStarting>b__6(Candle newCandles) в F:\S#\4.1.0\StockSharp_4.1\Samples\Testing\HistoryTesting\Strategy\FDStrategy.cs:строка 96
в StockSharp.Algo.Strategies.StrategyRule`1.#=qbKPfZP$sHNKewBoWTxOVIZWKc2RxMGQkOvMNrefS8FE=()
в StockSharp.Algo.Strategies.Strategy.#=qYja9YukY0RAy8kUzPEwBAg==(IStrategyRule #=quLfxru5uzbPCCVRiCLmC0g==, Func`1 #=qyw4EbBr3D$tMVupgMHmy2Q==, Object #=qayY1ai3QioJ7b725$BZRPA==, Boolean #=qUT7qwl2456HPh4xYvHuyMA==)

Причем вылезает постоянно
Версия stocksharp-17830 trunk
Thanks:

pyhta4og

Avatar
Date: 6/21/2012
Reply


Вообще-то вы в своей стратегии случай BestBid=null должны сами обрабатывать отдельно потому что
это вполне норм ситуация - в стакане нет бидов.

Почему так получается в вашем случае с генерироваными стаканами сложно сразу понять, но есть гипотеза
Поставьте Emulator.Settings.DepthExpirationTime=TimeSpan.MaxValue

Дело в том, что эмулятор очищает стаканы которые старше чем 1 сутки.

Дйте знать, изменится ли поведение.
Thanks:

Кот Матроскин

Avatar
Date: 6/21/2012
Reply


pyhta4og Go to
Вообще-то вы в своей стратегии случай BestBid=null должны сами обрабатывать отдельно потому что
это вполне норм ситуация - в стакане нет бидов.

Мне кажется, что для Сбербанка отсутствие в стакане бидов все же не есть норма
pyhta4og Go to
Почему так получается в вашем случае с генерироваными стаканами сложно сразу понять, но есть гипотеза
Поставьте Emulator.Settings.DepthExpirationTime=TimeSpan.MaxValue

Дело в том, что эмулятор очищает стаканы которые старше чем 1 сутки.

Дйте знать, изменится ли поведение.

Поставил
_trader.MarketEmulator.Settings.DepthExpirationTime = TimeSpan.MaxValue;
Результат то же
Thanks:
1 2  >

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

loading
clippy