ローソク足チャートは、金融市場の価格変動を視覚化するためによく使用されるグラフの一種で
ローソク足チャートは、金融市場の価格変動を視覚化するためによく使用されるグラフの一種です。以下に、C# WPFアプリケーションでローソク足チャートを描画するための基本的なサンプルコードを示します。このサンプルでは、WPFの`Canvas`要素を使用してグラフを描画します。まず、`Candlestick`クラスを定義します。このクラスは、個々のローソク足を表します。```csharppublic class Candlestick{ public DateTime Date { get; set; } public double Open { get; set; } public double High { get; set; } public double Low { get; set; } public double Close { get; set; }}```次に、WPFアプリケーションの`MainWindow.xaml`ファイルを設定します。```xml<Window x:Class="CandlestickChart.MainWindow" xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" Title="Candlestick Chart" Width="800" Height="600"> <Grid> <Canvas x:Name="canvas" Background="White"/> </Grid></Window>```最後に、`MainWindow.xaml.cs`でローソク足チャートを描画します。```csharpusing System;using System.Collections.Generic;using System.Windows;using System.Windows.Controls;using System.Windows.Media;namespace CandlestickChart{ public partial class MainWindow : Window { private List<Candlestick> data; public MainWindow() { InitializeComponent(); data = GetData(); // ダミーデータの取得 DrawCandlestickChart(); } private void DrawCandlestickChart() { double canvasWidth = canvas.ActualWidth; double canvasHeight = canvas.ActualHeight; double minX = 0; double minY = 0; double maxX = data.Count; double maxY = data[0].High; foreach (var candle in data) { maxY = Math.Max(maxY, candle.High); minY = Math.Min(minY, candle.Low); } double xRatio = canvasWidth / (maxX - minX); double yRatio = canvasHeight / (maxY - minY); for (int i = 0; i < data.Count; i++) { var candle = data[i]; double x = (i + 0.5) * xRatio; double yHigh = (maxY - candle.High) * yRatio; double yLow = (maxY - candle.Low) * yRatio; double yOpen = (maxY - candle.Open) * yRatio; double yClose = (maxY - candle.Close) * yRatio; DrawLine(canvas, x, yHigh, x, yLow, Brushes.Black, 1); // ローソク足の縦線 DrawRectangle(canvas, x - 5, yOpen, x + 5, yClose, candle.Open < candle.Close ? Brushes.Green : Brushes.Red); // ローソク足の矩形 } } private void DrawLine(Canvas canvas, double x1, double y1, double x2, double y2, Brush color, double thickness) { Line line = new Line { X1 = x1, Y1 = y1, X2 = x2, Y2 = y2, Stroke = color, StrokeThickness = thickness }; canvas.Children.Add(line); } private void DrawRectangle(Canvas canvas, double x1, double y1, double x2, double y2, Brush color) { Rectangle rectangle = new Rectangle { Width = Math.Abs(x2 - x1), Height = Math.Abs(y2 - y1), Fill = color }; Canvas.SetLeft(rectangle, Math.Min(x1, x2)); Canvas.SetTop(rectangle, Math.Min(y1, y2)); canvas.Children.Add(rectangle); } private List<Candlestick> GetData() { // ダミーデータを返す List<Candlestick> dummyData = new List<Candlestick>(); Random random = new Random(); DateTime currentDate = DateTime.Today; for (int i = 0; i < 30; i++) { var candle = new Candlestick { Date = currentDate.AddDays(i), Open = random.Next(100, 200), High = random.Next(200, 300), Low = random.Next(50, 100), Close = random.Next(100, 200) }; dummyData.Add(candle); } return dummyData; } }}```このサンプルでは、`DrawCandlestickChart`メソッドでローソク足チャートを描画します。`DrawLine`メソッドと`DrawRectangle`メソッドを使用して、線と矩形を描画します。これで、C# WPFアプリケーションでローソク足チャートを描画するサンプルコードが完成しました。