начудил :(
Atom Ответить
16.03.2010


теперь при запуске экспорта по ДДЕ одно ядро проца грузится по полной.
где можно было так ошибиться? стратегия еще не запущена.

когда стратегия работает, то ошибками сыпет
2010-03-16T20:51:09.8750000+03:00 [0] None => Strategy runned
ошибка ренжа: System.ArgumentOutOfRangeException: Specified argument
was out of the range of valid values.
Parameter name: min
at Ecng.ComponentModel.Range`1.ValidateBounds(T min, T max)
at Ecng.ComponentModel.Range`1.Init(T min, T max)
at Ecng.ComponentModel.Range`1..ctor(T min, T max)
at SampleSMA.MainWindow.DrawSma() in D:\trade\bot\code\stockSharp
\SampleSMA\MainWindow.xaml.cs:line 267
Первый этап обработки исключения типа
"System.ArgumentOutOfRangeException" в приложении
Ecng.ComponentModel.dll
2010-03-16T20:53:35.7187500+03:00 [0] None => Strategy stopping
2010-03-16T20:53:35.8281250+03:00 [0] None => Strategy stopped

код
private void DrawSma()
{
// нас не интересует текущая свечка, так как она еще не
сформировалась
// и из нее нельзя брать цену закрытия

// вычисляем временные отрезки текущей свечки
var bounds = _timeFrame.GetCandleBounds(_trader);

// если появились новые полностью сформированные свечки
if (_lastCandleTime < bounds.Min)
{
try
{
// отстут с конца интервала, чтобы не захватить
текущую свечку.
var endOffset = TimeSpan.FromSeconds(1);
bounds = new Range<DateTime>(_lastCandleTime +
_timeFrame, bounds.Min - endOffset); // line 267

// получаем эти свечки
var candles =
_candleManager.GetTimeFrameCandles(_strategy.Security, _timeFrame,
bounds);

но перед этим еще вилы были с вот этим
this._trader.NewTrades += (_all_trades) =>
this.Sync(() =>
{
try
{
var _lt = _all_trades.Last(tmp =>
tmp.Security.Code.Equals(mysec)); // trap
papir.price = _lt.Price;
}
catch (InvalidOperationException ex)
{
Console.WriteLine("ошибка определения
последней сделки: {0}", ex);
}
});
кривой обработчик всех сделок может грузить проц при выключенной
стратегии?

Теги:


Спасибо:




34 Ответов
1 2  >
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

Фотография
Дата: 17.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

Фотография
Автор статей Программист Трейдер
Дата: 17.03.2010
Ответить


Подождите, так Ваш же код код ошибки кидает =) Вот это
"System.InvalidOperationException: Sequence contains no matching
element" говорит о том, что выражение _all_trades.Last(tmp =>
tmp.Security.Code.Equals(mysec)); не находит необходимой сделки. Вам
нужно вызывать LastOrDefault, тогда в случае ненахождения он возвратит
null. А так действительно, у Вас каждый тик (хотел сказать чих) по
ошибке.
Вот и получается, что как только вы сменили фильтр, ошибки
прекратились. Потому как приходят только те сделки, которые
соответветствуют Вашему инструменту. Не нужно забывать,
ITrader.NewTrades возвращает сделки для ВСЕХ инструментов.

Спасибо:

denis

Фотография
Дата: 17.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 - это та, которая акция?

Конечно, присылай. Только я позднее посмотрю. А в чем причина?

Спасибо:

denis

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


https://docs.google.com/leaf?id=0Bw2gQDvf41vtZTJkMzQ0Y2UtZmY2MC00N2Y2LTgzOWItNjI5YzQ1MTgzM2Rh&sort=name&layout=list&num=50


думаю что и-за малого тайм фрейма и большого кол-ва свечек начинаются
тормоза

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

Dord

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


Тормоза могут быть из-за таблицы "Все сделки" если там выбраны все
инструменты. У меня за сегодня например на учебном квике накопилось
почти 540к сделок.
Отключив висфаир, выбор по всем сделкам любого нужного инструмента у
меня занимал по 18-20 секунд времени загружая проц на 100%, при этом
таймфрейм у свечек
был разный от 5 секунд до 30 минут. Если оставить в таблице "Все
сделки" только "RIM0", по которому накопилось 24к сделок, то dde будет
висеть 2-3 секунды. Тормоза
из-за малого таймфрейма и большого кол-ва свечек начинаются при
отрисовке графика видимо из-за тормознутости висфаир чарта. Я сегодня
разбирался с премудростями
amCharts, визуально он мне больше нравится. Если получится то в
симплСМА его прикручу, надо взглянуть на его скорострельность.

Спасибо:

denis

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


Вчера на РИМ0 сделок 220т, на луке 65т. Тромоза были на РИМ0, но не на
луке.
Визифайр выключил еще две недели назад, как только понял что он жрет
ресурсы и может быть отключен.
Таймфрейм минута. Инструмент только РИМ0. Тормозит всегда после обеда.
Как включил, пошел экспорт, так и тормозит, хоть полчаса, но иногда
загруз падает до 0. Проц АМД Х2 5200.

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

зачем рисовалка-то? терминала от тестера не хватает? :)

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

Mikhail Sukhov

Фотография
Автор статей Программист Трейдер
Дата: 19.03.2010
Ответить


Ну вот как раз один из наших роботов - это фьюч на индекс. ТФ - аж 20
сек... А алго стартует сразу, не дожидаясь падения нагрузки при
экспорте всех сделок? К этому довольно привередлив CandleManager. Его
лучше запускать, когда уже все экспортнулось.

Спасибо:

denis

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


Кнопка старта стратегии становится активной через 5-15 сек, видимо
когда экспорт пройдет.
Сейчас попробую перенести запуск CandleManager из кнопки "экспорт ДДЕ"
в кнопку "Старт". В этом случае не будет потерянных данных?

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

Mikhail Sukhov

Фотография
Автор статей Программист Трейдер
Дата: 19.03.2010
Ответить


Я не закладывал никакой логики с активностью кнопки. Видимо это просто
тормоза.

Спасибо:

Dord

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


Эти 5-15 секунд уходят на экспорт по дде сделок по выбранному
инструменту из квика. Для проверки можешь оставить в окне все сделки
какой-нибудь малоликвидный инструмент (я вчера на акциях автоваза это
проверял) по которому есть какие-то сделки за сегодня и прописав его в
симплсма запустить и посмотреть.

Спасибо:

denis

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


за половину недели ковыряний, я слегка уловил что ДДЕ экспорт при
старте может прогружать проц, но вот чего мне до сих пор не понятно,
так это почему он жрет 100% ядра все остальное торговое время? и не
жрет во время клиринга. Стратегия выключена в обоих случаях.

Вопрос ни разу в этих стартовых 15 секах, вопрос все время в полном
прогрузе ядра.

Что мне делать? Куда бежать?

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

Mikhail Sukhov

Фотография
Автор статей Программист Трейдер
Дата: 19.03.2010
Ответить


Локализация ошибки?

1. Отключить весь код логики (+ выкинуть логику из обработчиков).
2. Включить экспорт всех сделок. Тормозит больше чем нужно (скажем,
уже все сделки подгрузились, а нагрузка не спадает)? Если да, то
выход.
3. Включить CandleManager на нужный тайм фрейм. Тормозит? Если да, то
выход.
4. Влючить стратегию. Тормозит? Если да, то выход.

Пока надо определить шаг, на котором происходит нагрузка.

Спасибо:

denis

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


на риме это тормозит? ссылка на симплСМА

http://www.google.com/url?sa=D&q=https://docs.google.com/leaf%3Fid%3D0Bw2gQDvf41vtZTJkMzQ0Y2UtZmY2MC00N2Y2LTgzOWItNjI5YzQ1MTgzM2Rh%26sort%3Dname%26layout%3Dlist%26num%3D50&usg=AFQjCNHB_jc4k8D3GeWbBmLdBQUc0w4Rwg


То что на автовазе оно не будет тормозить это я и без тестов могу
сказать, ибо на луке оно летает, а таз вообще шлак папир.
И спасибо что напомнил о тазе, он застрял в среднесрочном роботе,
написанном в экселе. Там 65 папир, 400 уровней при прохождении которых
заявы выставляются или снимаются. Жрет не более 5% ядра, но глючит
иногда :(

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

denis

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


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

Для быстрого воспроизведения ситуации можно переставить таймфрейм на
30 секунд и лук заменить на риму.

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

Mikhail Sukhov

Фотография
Автор статей Программист Трейдер
Дата: 19.03.2010
Ответить


Тоесть, виновник CandleManager? Для чистоты эксперимента, можете
именно оставить скажем минут на 10. Ничего не нужно включать, просто
регистрация свечки. Не упадет нагрузка?

Спасибо:

denis

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


однако засада :(
включаю 10 мин на риме - тормоза остаются,
переключаюсь на лук - летает, ставлю фрейм 1 мин - летает,
переключаюсь на фьюч лука - летает.

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

Mikhail Sukhov

Фотография
Автор статей Программист Трейдер
Дата: 19.03.2010
Ответить


Тоесть, на 10 минут тормозит, а на 1 - нет? Интересно. Надо бы
поглубже копнуть. Пока с ходу не ясно.

Спасибо:

denis

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


На риме тормозит и на 1 мин и на 10 мин,
на луке 1 мин - летает, на фуче лука тоже летает
как будто боится риму :)

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

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

loading
clippy