Программирование - это просто
Advertisement
Главная arrow Биржевые роботы arrow Пишем биржевого робота на C# (платный раздел) arrow Пишем биржевого робота на C#. Урок 7. Графический анализ котировок
29.05.2024 г.
Главное меню
Главная
Интернет магазин
Программные продукты
Биржевые роботы
Искусственный интеллект
Математика и информатика
1С:Предприятие
Уроки C#
Уроки Delphi
Уроки программирования
Web-программирование
Дизайн и графика
Компьютер для блондинок
Исходники
Статьи
Платный раздел
Рассказы про компьютеры
Хитрости и секреты
Системный подход
Размышления
Наука для чайников
Друзья сайта
Excel-это не сложно
Все о финансах
.
Пишем биржевого робота на C#. Урок 7. Графический анализ котировок Печать E-mail
Автор megabax   
10.12.2011 г.
Структура программы на примере простейшей программы

  Пишем биржевого робота на C#. Урок 7. Графический анализ котировок

Что бы смотреть урок полностью, подпишитесь на платный раздел.

В платном разделе статья находиться здесь.


Исходники к уроку можно скачать в платном разделе.

Может возникнуть вопрос: а зачем нужен графический анализ в роботах на C#. Зачем нам что то рисовать? Предположим, мы разработали собственный индикатор и построили на его основе стратегию, написали по этой стратегии робота на C# с использование нашей библиотеки. Далее, используя симулятор, входящий в настоящую библиотеку, протестировали стратегию и захотели ее улучшить. И вот тут то нам и понадобиться график, что бы посмотреть, где наша стратегия дает сбои и внести в нее изменения, например, ввести дополнительные фильтры или улучшить каким то другим способом. И как же мы увидим график? Особенно, если это наш индикатор, наше ноу хау и ни в каких программах технического анализа его нет. Вот тут то нам и понадобиться построение графиков. Вот этим мы сейчас и займемся, для начала создадим базовые классы, при помощи которых мы будет осуществлять вывод, а так же специальный класс для отображения на графике японский свечей.

Для данного урока вам понадобятся некоторые библиотеки из прошлых уроков. В исходниках этого урока эти библиотеки тоже есть.

Для начала объявим базовый интерфейс графического объекта (графическим объектом может быть график котировок, индикатор, трендовая линия и так далее):

    /// <summary>

    /// Интерфейс графического объекта

    /// </summary>

    public interface IStockDrawObject

    {

        /// <summary>

        /// Включена ли поддержка автоматической перерисовки

        /// </summary>

        /// <returns>true или false</returns>

        bool getAutoDraw();

 

        /// <summary>

        /// Нарисовать объект

        /// </summary>

        /// <param name="a_gr">Графическое поле</param>

        /// <param name="a_axes">Система координат</param>

        void draw(Graphics a_gr,AxesSystem a_axes);

 

        /// <summary>

        /// Получить графическое поле

        /// </summary>

        /// <returns>Объект графического поля</returns>

        Graphics getGraphics();

 

        /// <summary>

        /// Получить систему координат

        /// </summary>

        /// <returns>Система координат</returns>

        AxesSystem getAxes();

    }

 

Класс Graphics - это стандартный графический класс, на при помощи которого можно рисовать (см. урок "Пишем компьютерную игру на C#. Урок 2.  Методика рисования графических примитивов (Graphics, Paint)".).  А вот класс AxesSystem - система координат, мы разработаем сами. Он будет предназначен для перевода координат из нашей системы координат в систему координат в компьютере. Таким образом, при помощи этого класса мы сможем масштабировать изображение, а так же сдвигать. Но его мы разберем чуть позже. А с сейчас разработаем ...

 

...

 

 

... Теперь создадим обработчик нажатия на кнопочку, который вызывает диалог выбора файла, загружает его и отображает на графике:

        private void btnShow_Click(object sender, EventArgs e)

        {

            //Создадим графическое поле биржевой информации

            StockGraphics gr = new StockGraphics(Graphics.FromImage(pbGraphics.Image));

 

            //Создадим источник котировок

            PriceSource source = new PriceSource();

 

            //диалог открытия файла

            if (openFileDialog.ShowDialog() == System.Windows.Forms.DialogResult.OK)

            {

                //загрузим файл

                source.LoadFromTextFile(openFileDialog.FileName);

 

                //создадим и настроим систему координат

                gr.axesSystem = new AxesSystem(gr);

                gr.axesSystem.maxX = 250;

                gr.axesSystem.maxY = 200;

                gr.axesSystem.ratioX = 20;

                gr.axesSystem.ratioY = -4; //на экране идет отчет по оси y сверху вниз, а нам надо наоборот

                gr.axesSystem.xBegin = 0;

                gr.axesSystem.уBegin = 210;

                gr.axesSystem.xScreen = 0;

                gr.axesSystem.yScreen = 0;

               

                //Создадим график котировок

                GraphPrices gp = new GraphPrices(gr);

                gp.priceSource = source;

                gr.addObject(gp);

                gp.downCandleColor = Color.Black;

                gp.upCandleColor = Color.White;

 

                //рисование графика

                gr.draw();

                pbGraphics.Invalidate();

            }

      }

Система координат в данном примере настроена на акции Газпром, дневные таймфреймы, начиная с 07.11.2011. Файл котировок так же прилагается к исходникам. Вообще, котировки можно скачать с сайта Финам. Если вы возьмете другие котировки, то вам придется изменить настройки координатной системы.

Теперь смотрим результат:

Пишем биржевого робота на C#. Урок 7. Графический анализ котировок

Если мы хотим поменять цвета, то просто меняем настройки:

                gp.downCandleColor = Color.Red;

                gp.upCandleColor = Color.Green;

 

И у нас будут свечи теперь зеленые и красные:

Пишем биржевого робота на C#. Урок 7. Графический анализ котировок

 

На этом урок закончен, но в будущем мы продолжим тему биржевой графики.

Последнее обновление ( 31.01.2013 г. )
 
« След.   Пред. »
 
© 2024 Программирование - это просто
Joomla! - свободное программное обеспечение, распространяемое по лицензии GNU/GPL.
Русская локализация © 2005-2008 Joom.Ru - Русский Дом Joomla!
Design by Mamboteam.com | Powered by Mambobanner.de
Я принимаю Яндекс.Деньги