大家好,欢迎来到IT知识分享网。
前言
上一篇文章我们使用了ScottPlot进行了入门级操作。ScottPlot 是一个能够处理大量的数据并实时更新图表的开源绘图库和ScottPlot教程之基本用法。今天我们来使用较为有难度的,使用ScottPlot实现K线图。
准备数据
在金融分析软件或交易系统中,OHLC 数据通常用于绘制K线图(蜡烛图)。K线图是一种流行的图表类型,通过展示一段时间内的开盘价、收盘价、最高价和最低价,为投资者提供了关于市场情绪和可能的价格趋势的重要视觉信息。
声明结构体 OHLC 是用于表示金融市场中某个交易品种(如股票、期货、外汇等)在一定时间段内的价格变动信息。OHLC 是一个常见的缩写,代表开盘价(Open)、最高价(High)、最低价(Low)和收盘价(Close)。除了这四个基本属性外,此结构体还包含了一个 DateTime 属性和一个 TimeSpan 属性,分别用来表示这个时间段的开始时间和持续时长。
public struct OHLC
{
//表示在该时间段开始时的交易价格
public double Open { get; set; }
//表示在该时间段内达到的最高交易价格
public double High { get; set; }
//表示在该时间段内达到的最低交易价格
public double Low { get; set; }
//表示在该时间段结束时的交易价格
public double Close { get; set; }
//表示这个时间段的开始日期和时间
public DateTime DateTime { get; set; }
//表示这个时间段的持续时长
public TimeSpan TimeSpan { get; set; }
public OHLC(double open, double high, double low, double close, DateTime start, TimeSpan span)
{
Open = open;
High = high;
Low = low;
Close = close;
DateTime = start;
TimeSpan = span;
}
}
编码
结合我们前面的构建的项目,我们只需要写入如下代码:
var formsPlot1 = new ScottPlot.WinForms.FormsPlot() { Dock = DockStyle.Fill };
var prices = Generate.RandomOHLCs(30); //随机生成30组OHLC数据
formsPlot1.Plot.Add.Candlestick(prices);
formsPlot1.Plot.Axes.DateTimeTicksBottom();
formsPlot1.Plot.Axes.AutoScale();
Controls.Add(formsPlot1);
运行结果
F5运行项目,我们将得到一个K线图。速度非常快,而且非常丝滑。矩形表示开盘价和收盘价,中心线表示给定时间段内的最低价和最高价。颜色表示价格在开盘和收盘之间是上涨还是下跌。3
不同数据量下的呈现
300个点的数据呈现(总共耗时:00:00:00.0628310)
3000个点的数据呈现(总共耗时:00:00:00.0615104)
30000个数据点的呈现(总共耗时:00:00:00.0761425)
300000个数据点的呈现(总共耗时:00:00:00.2188430)
2000000个数据点的呈现(总共耗时:00:00:00.4711002)
数据限制,随机生成数据,无法生成300万,我们就以生成200万来测试。
移动平均线
ScottPlot还可以创建简单的移动平均线 (SMA) 曲线。我们只需要在上面的加入部分代码即可实现:
var formsPlot1 = new ScottPlot.WinForms.FormsPlot() { Dock = DockStyle.Fill };
var prices = Generate.RandomOHLCs(30);
formsPlot1.Plot.Add.Candlestick(prices);
formsPlot1.Plot.Axes.DateTimeTicksBottom();
// 计算并显示移动平均线
int[] windowSizes = { 3, 8, 20 };
foreach (int windowSize in windowSizes)
{
ScottPlot.Finance.SimpleMovingAverage sma = new(prices, windowSize);
var sp = formsPlot1.Plot.Add.Scatter(sma.Dates, sma.Means);
sp.Label = #34;SMA {windowSize}";
sp.MarkerSize = 0;
sp.LineWidth = 3;
sp.Color = Colors.Navy.WithAlpha(1 - windowSize / 30.0);
}
formsPlot1.Plot.ShowLegend();
formsPlot1.Plot.Axes.AutoScale();
Controls.Add(formsPlot1);
运行结果
总结
ScottPlot 在处理大量金融数据时,能表现出高性能的优势,能够轻松的绘制渲染 数十万甚至百万个数据点,而且不会对用户页面造成卡顿的情况。对于需要实时更新数据的金融交易和分析软件尤其重要。
ScottPlot 在财务图表上的作用主要体现在其强大的数据可视化能力、高性能的数据呈现、丰富的自定义选项和良好的跨平台支持上。这些特性使得ScottPlot 成为金融分析和交易软件开发中的一个有价值的工具,能够帮助分析师更好地理解市场动态,为投资决策提供支持
#股票分析# #文章首发挑战赛##记录我的2024##头条创作挑战赛#
免责声明:本站所有文章内容,图片,视频等均是来源于用户投稿和互联网及文摘转载整编而成,不代表本站观点,不承担相关法律责任。其著作权各归其原作者或其出版社所有。如发现本站有涉嫌抄袭侵权/违法违规的内容,侵犯到您的权益,请在线联系站长,一经查实,本站将立刻删除。 本文来自网络,若有侵权,请联系删除,如若转载,请注明出处:https://yundeesoft.com/50194.html