Mikhail Sukhov
|
Дата: 17.03.2010
1. ArgumentOutOfRangeException выбрасывается по всей видимости от того, что _lastCandleTime + _timeFrame оказался больше чем bounds.Min - endOffset 2. Насчет обработчика всех сделок. Его деятельность не зависит от того, работают стратегии или нет. Но я не вижу особых тормозов в его коде.
|
|
Спасибо:
|
|
|
|
|
denis
|
Дата: 17.03.2010
1. Да, вываливается на первой свечке. Только сегодня заметил. 2. С утра попробовал на 1,6 - летает, потом на 1,7 - аналогично... подожду вечера, может выловлю чего Хорошо что SVN поставил, спасает. А то бы ща уже с бубнами плясал :)
|
|
Спасибо:
|
|
|
|
|
denis
|
Дата: 17.03.2010
На риме опять заргуз до включения стратегии, возможно, я не так обрабатываю "все сделки". Сейчас откачусь на 1.6, может что нового узнаю.
|
|
Спасибо:
|
|
|
|
|
Mikhail Sukhov
|
Дата: 17.03.2010
Загрузка - это случайно не та, которая при первом экспорте всех сделок? Так может подождать? Попробуйте отписаться от события? Что-нибудь изменится? Какие свечки созданы? CandleManager тоже зависит от всех сделок. Вообщем, локализация ошибки.
|
|
Спасибо:
|
|
|
|
|
denis
|
Дата: 18.03.2010
|
|
|
|
Да, верно, туплю :( спать надо больше. Откатывался на разные версии своих изменений - бесполезно. Выключал все кроме минутных свечек. 1,6 отличается от 1,7 тем, что нагрузка на первом постоянная, а на втором падает до нуля, а когда проходят сделки в окне "все сделки", то подскакивает до 80% от ядра. В обоих случаях помогает следующая последовательность: 1) выбрать Лукойл, чтобы в окне "все сделки" был только лук, 2) запустить экспорт, 3) игнорировать следуещее: ошибка определения последней сделки: System.InvalidOperationException: Sequence contains no matching element at System.Linq.Enumerable.Last[TSource](IEnumerable`1 source, Func`2 predicate) at SampleSMA.MainWindow.<>c__DisplayClass21.<Connect_Click>b__c() in D:\trade\bot\code\stockSharp\SampleSMA\MainWindow.xaml.cs:line 201 4) переключится на риму, 5) через 5-15 сек наслаждаться нагрузкой от 0 до 10% ядра. Если не плясать с бубнами, то до 80% ядра будет поедаться.
Учел что конфиги для квика отличаются у 1,6 и 1,7. То же про длл. На лукойле воспроизвести такое поведение не удалось. Какую очевидную вещь я упустил из виду? Может при переходе с 1,6 на 1,7 нужно не только перекинуть библиотеки и поправить код, но и еще что-то где-то нажать/прописать?
|
|
Спасибо:
|
|
|
|
|
Mikhail Sukhov
|
Дата: 18.03.2010
Подождите, так Ваш же код код ошибки кидает =) Вот это "System.InvalidOperationException: Sequence contains no matching element" говорит о том, что выражение _all_trades.Last(tmp => tmp.Security.Code.Equals(mysec)); не находит необходимой сделки. Вам нужно вызывать LastOrDefault, тогда в случае ненахождения он возвратит null. А так действительно, у Вас каждый тик (хотел сказать чих) по ошибке. Вот и получается, что как только вы сменили фильтр, ошибки прекратились. Потому как приходят только те сделки, которые соответветствуют Вашему инструменту. Не нужно забывать, ITrader.NewTrades возвращает сделки для ВСЕХ инструментов.
|
|
Спасибо:
|
|
|
|
|
denis
|
Дата: 18.03.2010
Ну не нашел, сгенерил исключение, перехватили, отпечатали... если бы все так просто :) я пробовал комментировать этот обработчик и другие, кроме работы со свечками. Нагрузка остается. Сейчас делаю так: this._trader.NewTrades += (_all_trades) => this.Sync(() => { var _lt = _all_trades.LastOrDefault(tmp => tmp.Security.Code.Equals(mysec)); if (_lt != null) papir.price = _lt.Price; }); изменений нет, кроме как отсутствия провалов в нагрузке проца. Комментирую этот обработчик - аналогично. Завтра вырежу все что не требуется дальше обработки кнопки "экспорт ДДЕ" и потестирую на риме, после обеда :) ибо до обеда оно работает. А на луке работает всегда.
После смены фильтра не только ошибки пропадают, но и нагрузка падает в раз в пять. А если начинать экспорт сразу на риме, то ошибок нет, но нагрузка поедает все ядро. Вот и вся разница. Включаю риму "через лук" - все летает, если сразу риму - жрет ядро.
У других-то работает :( чего же я не так сделал?
|
|
Спасибо:
|
|
|
|
|
denis
|
Дата: 18.03.2010
ехо! :) нарыл! смысл такой: у симплСМА оторвать рисовалку, чтобы эксперимент был точнее. Потом поставить таймфрейм 30 сек и заменить LKOH на RIM0. Запустить, подключится, начать экспорт. Могу выложить свою версию покоцанного симплСМА.
|
|
Спасибо:
|
|
|
|
|
dart
|
Дата: 18.03.2010
Давай
|
|
Спасибо:
|
|
|
|
|
Mikhail Sukhov
|
Дата: 18.03.2010
LKOH - это та, которая акция?
Конечно, присылай. Только я позднее посмотрю. А в чем причина?
|
|
Спасибо:
|
|
|
|