Блог им. Tyam

Выгрузка свечей на График chart Open Source

На днях начинающие алготрейдеры просили подсказать, каким классом в .net можно воспользоваться для прорисовки свечного графика. Вот здесь: smart-lab.ru/blog/225333.php

 

Растрогался, вспоминая как выл над кодом и не мог нормально прорисовать свечки.))

 

Короче сделал пример вывода свечек из файла на График. Visual Studio 2013, WPF, а для графика System.Windows.Forms.DataVisualization.Charting.Chart.

 Выгрузка свечей на График chart Open Source

    Пример хорошо закомментирован. Хоть и не совсем прям для второго курса получился. Пару левых потоков пришлось вызвать, чтоб не зависала форма.

    Будете в свои проекты WPF переносить, не забывайте добавлять пространства имён Windows Forms в references и using:

 Выгрузка свечей на График chart Open Source

 

 Всё. Скачать можно от сюда: sib-algo.ru/open-source/выгрузка-свечей-на-chart.html

★5
10 комментариев
Добрый день, Алексей!
Чисто из любопытства решил посмотреть на Ваш пример)
1) Установите Решарпер и узнаете много интересного о Вашем коде.
2) Выводите данные пачками (если на стандартных контролах такое возможно). Это значительно увеличит скорость отрисовки.
3) Для производительности рекомендую «замораживать» график при отрисовке, а то на каждой новой свечке у Вас все отрисовывается по-новому.

Серьезно задумайтесь над производительностью. Потому что если надумаете выводить маленькие таймфреймы или, что еще страшнее, тики (а Вы рано или поздно захотите это сделать), то успеете посидеть и состариться пока график отрисуется. В Вашем примере 1 год на часовых свечках строиться ~15-20 сек, у меня это график строится за ~0,1-0,4 сек. Сразу оговорюсь, что использую сторонние контролы, но в любом случае даже на стандартных эти процессы должны быть много быстрее.
avatar
SoftAlgoTrade,
Добрый.
Там есть кнопка перемотки (большая такая ">>>"), которая «замораживает» график, пряча его. После чего любые данные отрисовываются мгновенно.
Мой Stock Pattern Viewer проводит тесты десятилетий за секунды. Не видел ничего быстрее пока. Т.ч. не надо тут про оптимизацию.

upd: да, конечно можно было всё сразу и быстро прорисовать. Но мне показалось правильным вынести логику в отдельный поток и подгружать всё по одной свечке, как это в жизни происходит. Большие задержки создаёт именно процесс прорисовки (по этапный, пачкой — мгновенно), поэтому выход — спрятать чарт или нужные элементы на время динамической прорисовки. Можно ещё отключить принудительную прорисовку(Refresh) у чарта, но тогда будет не ровно выходить.
Что-то Ваша чудо-кнопка не работает)
Ну, да, ладно, это не так важно. Быстрее и лучше решения, конечно, есть. Главное, что Вы в курсе нюансов построения графиков в WPF.
Удачи!
avatar
SoftAlgoTrade,
Можно было прорисовать всё пачкой, формируя её прям в StreamReader и минуя массив свечей и потом за раз прорисовать. Было бы охрененно быстро, но в плане обучающего примера это бы было не хорошо. т.к из моего примера, сейчас уже и тестер собрать можно потихоньку, а из «быстрого» нет.
upd: убрал гадости из коммента
Откуда столько агрессии, Алексей? Я и не пытался Вас в чем-то упрекнуть. Для меня, например, это был тяжелый опыт. Отрисовка в WPF задача не такая простая как кажется. Просто хотел поделиться опытом. Основное преимущество Вашей отрисовки в том, что она абсолютно бесплатная и как я понял при хорошей оптимизации вполне производительная! А это уже хорошо. Мне же за свой SciChart приходится платить(
Кстати, было бы реально круто, если бы Вы смогли выложить пример производительной отрисовки! Новички бы оценили.
avatar
SoftAlgoTrade, извиняюсь.
Двадцать человек скачали, ни один спасибо не сказал. Расстроился и обидел мимо проходивщего товарища. Явно не образец для подражания.

Да. Оптимизирую пример, прорисую свечки, объёмы и выложу через пару недель. Может даже страничку отдельную для примеров сделаю. Тоже парился с этим делом когда-то.
Алексей, думаю что это только начало) Я вот уже второй год делаю софт и то только подхожу к финалу! Точнее подползаю) Еще только закрытое бета-тестирование проходит...
Так что советую Вам набраться терпения. Все еще только впереди!
Ваш подход в чем-то уникален. Я даже не знаю какие классические системы ТА могут предложить аналогичные решения. Развивайте идею, пусть это будет Вашей фишкой! ;)
avatar
2010-я студия не открывает пример из 2013-й ...
А Генератор скриптов разбираю (как обучение C#).

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

теги блога Алексей Ван <o-s-a.net>

....все тэги



UPDONW
Новый дизайн