← Zurück

как отлавливать свои глюки?

переделал алгоритм SMA на свой, все работает, но как-то не так :) нужно посмотреть какие значения в буфере private readonly List<TimeFrameCandle> _buffer = new List<TimeFrameCandle>();

сделал вывод в файл, там формат разделителя разный :) он меняется с точки на запятую и обратно при следующем вызове вот лои пятиминуток лука ----- первый вызов -------- L 1577,4 L 1577,02 L 1577,13 L 1577,03 L 1578,08 L 1578,08 L 1578,94 L 1578,94 L 1579,2 L 1579,2 L 1578,08 L 1578,08 L 1579,4 L 1579,4 ----- второй вызов -------- L 1577.4 L 1577.02 L 1577.13 L 1577.03 L 1578.08 L 1578.08 L 1578.94 L 1578.94 L 1579.2 L 1579.2 L 1578.08 L 1578.08 L 1579.4 L 1579.4 L 1580 ----- дальше опять будут запятые :( --------

в какую сторону надо копать?

War dieses Thema hilfreich?

Thema teilen

Kommentare (11)

Anmelden oder Konto erstellen, Melden Sie sich an oder registrieren Sie sich, um einen Kommentar zu hinterlassen

denis
denis Autor

спасибо. вылечил через var cci2 = new CultureInfo(Thread.CurrentThread.CurrentCulture.Name); cci2.NumberFormat.NumberDecimalSeparator = "."; Thread.CurrentThread.CurrentCulture = cci2; код робота выполняется в другом потоке, вот и выставил на другой поток.

правильно я понял, что Strategy.OnProcess() вызывается когда истечет время отрисовки свечи? на примере SampleSMA. заморочка в том что хочу при выходе из канала запустить чилдСтратеги лучший бид, а не лупить в рынок стоп приказом. Как нужно сделать, чтобы проверять каждый тик и рассчитывать уровень по свечкам?

Mikhail Sukhov
Mikhail Sukhov

Вот тут я ответил, когда вызывается onProcess

http://groups.google.co.uk/group/stocksharp/browse_thread/thread/5d141bfd66e1b38d?hl=en

denis
denis Autor

ага, спасибо. еще вопрос: public partial class MainWindow { private readonly TimeSpan _timeFrame = TimeSpan.FromMinutes(5); private readonly TimeSpan _timeFrameTS = TimeSpan.FromSeconds(1); а в protected override bool OnProcess() пишу это var lt = this.Security.LastTrade.Price;

       using (StreamWriter sw = File.AppendText("debug.txt"))
        {
            sw.WriteLine("  lt = {0} ", lt);
        }

фаром смотрел лог, там последняя сделка притормаживает от трех сек до десяти - это нормально? при том что свечки рисуются мгновенно, а вот стратеги думает. если смотреть через "type debug.txt", то все аналогично. не пойму где накосячил и куда копать

denis
denis Autor

правильно я понимаю что значение Security.LastTrade.Price берется из таблицы "Инструменты"? которая сама тормозит относительно таблицы "Все сделки" и как взять из всех сделок? Trade.Price ? ща проверю

Mikhail Sukhov
Mikhail Sukhov

Да, таблица инструмент чуть тормознее, чем все сделки, и еще более тормознее, чем стакан. Только уж 3 секунды совсем много. Квиковцы декларируют около 1 сек. Видимо брокер шалит...

denis
denis Autor

Смотрю на загрузку проца в таск менеджере и никак не могу понять "чего там сложного такого считать?". Запущен пример симплСМА. От того вопрос: что нужно вырезать, чтобы избавится от лишней нагрузки? в порядке ресурсоемкости.

Mikhail Sukhov
Mikhail Sukhov

Загрузка только на SampleSma? Вообще, большая нагрузка при экспорте всех сделок. Но это происходит только в первые моменты - когда робот стартует и сделок набралось порядочно. Что касается SampleSma - то это графика =) Компонент для графиков я брал сhttp://www.visifire.com/У них он не совсем в релиз стадии. Но другого тогда я не нашел - потому что мне нужно и под WPF и под Sliverlight. Вот он у меня тормозит. Может быть обновить версию. Я давно не слежу за новыми версиями этой компоненты. А вообще мне больше понравился вот этот компонент

http://wpf.amcharts.com/По скорости его не смотрел, но в отличии от ВисиФаер он ориентирован на трейдинг. С удовольствием вставлю в дистрибутив исходники (можно не исходники) замену для ChartWindow что есть сейчас в S#.

denis
denis Autor

еще на SampleCandles, поставил 20 сек свечи на фуче ГП и через час ядро нагружено по полной рисованием :) разовая нагрузка при старте - это понятно, вопрос в постоянной и увеличивающейся нагрузке. ладно, ща попробую вырезать рисовалку, но оставить _candleManager, о нагрузке отпишусь. про впф пока ничего не скажу, в книге это следующая глава :) прочу - наковыряю.

denis
denis Autor

сделал так private void DrawCandles(IEnumerable<Candle> candles) { //this.Sync(() => _chart.DrawCandles(candles)); } все летает :) даже при старте нет эпических тормозов, а при работе почти простой на проце амд х2 5200

Mikhail Sukhov
Mikhail Sukhov

Визуализация - это тормоза. Поэтому у меня роботы и графические пульты разнесены на разные компьютеры ;-)