График исторических значений Dow Jones Industrial Average в C#

Эта программа отображает исторические цены на индекс Dow Jones Industrial Average. Я получил данные с этого URL:

Поля в URL:

Результаты приведены в примере в файле DjiPrices.csv. Во время разработки я добавил файл в проект и установил его свойство «Копировать в выходной каталог» в «Копировать, если новый», поэтому файл входит в выходной каталог с исполняемой программой, поэтому программа легко найти.

Программа сохраняет данные о ценах в следующей структуре.

Эта структура просто содержит дату и соответствующую цену закрытия. Вы можете легко добавить другие поля, такие как цена открытия и общий объем, если вы хотите отобразить эти данные. Структура определяет конструктор, чтобы упростить инициализацию новой структуры PriceData.

Следующий код показывает, как программа загружает данные о ценах.

Этот код использует File.ReadAllLines для чтения строк в файле данных в массив строк. Он считывает строку заголовка, чтобы найти столбцы, содержащие дату и скорректированную цену закрытия. (Они должны быть первым и последним столбцами.)

Затем код перебирает оставшиеся строки в файле. Для каждой строки программа создает структуру PriceData, чтобы удерживать цену закрытия Dow Jones этого дня и добавляет ее в список.

Следующий код показывает, как программа рисует данные о ценах.

Код начинается с создания растрового изображения для сохранения результата. Он использует запрос LINQ, чтобы найти самую большую цену, чтобы он мог масштабировать график, чтобы он хорошо соответствовал. Затем он дает Graphics масштаб объекта и преобразования трансляции, чтобы сделать будущий рисунок объекта подходящим растровым изображением.

Затем программа рисует горизонтальные линии, представляющие цены, кратные 1000 долларов. Для каждой цены он вызывает метод DrawTextAt (описанный в скором времени) для отображения цены на графике.

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

Наконец, код проходит через данные, создавая Point для каждого значения. Затем он рисует линии, соединяющие точки.

В следующем коде показан метод DrawTextAt, который рисует непереведенный текст в определенной точке графика.

Трюк здесь заключается в том, что точка, в которой текст должен быть нарисован, находится в преобразованной системе координат графа, но текст не следует преобразовывать, чтобы он не растягивался или не перевернулся вверх ногами. Метод DrawTextAt сначала сохраняет свойство Transform объекта Graphics объекта, которое представляет текущее преобразование. Затем он применяет текущее преобразование к точке (x, y), где текст должен выглядеть так, чтобы видеть, где на графике находится эта точка.

Источник: http://csharphelper.com/blog/2016/08/graph-historical-dow-jones-industrial-average-values-in-c/

1 Звезда2 Звезды3 Звезды4 Звезды5 Звезд (Пока оценок нет)

Add a Comment

Ваш e-mail не будет опубликован. Обязательные поля помечены *