使用ScottPlot库轻松绘制K线图

使用ScottPlot库轻松绘制K线图前言上一篇文章我们使用了ScottPlot进行了入门级操作。ScottPlot 是一个能够处理大量的数据并实时更新图表的开源绘图库和ScottP

大家好,欢迎来到IT知识分享网。

前言

上一篇文章我们使用了ScottPlot进行了入门级操作。ScottPlot 是一个能够处理大量的数据并实时更新图表的开源绘图库和ScottPlot教程之基本用法。今天我们来使用较为有难度的,使用ScottPlot实现K线图。

使用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

使用ScottPlot库轻松绘制K线图

不同数据量下的呈现

300个点的数据呈现(总共耗时:00:00:00.0628310)

使用ScottPlot库轻松绘制K线图

3000个点的数据呈现(总共耗时:00:00:00.0615104)

使用ScottPlot库轻松绘制K线图

30000个数据点的呈现(总共耗时:00:00:00.0761425)

使用ScottPlot库轻松绘制K线图

300000个数据点的呈现(总共耗时:00:00:00.2188430)

使用ScottPlot库轻松绘制K线图

2000000个数据点的呈现(总共耗时:00:00:00.4711002)

使用ScottPlot库轻松绘制K线图

数据限制,随机生成数据,无法生成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库轻松绘制K线图

总结

ScottPlot 在处理大量金融数据时,能表现出高性能的优势,能够轻松的绘制渲染 数十万甚至百万个数据点,而且不会对用户页面造成卡顿的情况。对于需要实时更新数据的金融交易和分析软件尤其重要。

ScottPlot 在财务图表上的作用主要体现在其强大的数据可视化能力、高性能的数据呈现、丰富的自定义选项和良好的跨平台支持上。这些特性使得ScottPlot 成为金融分析和交易软件开发中的一个有价值的工具,能够帮助分析师更好地理解市场动态,为投资决策提供支持

#股票分析# #文章首发挑战赛##记录我的2024##头条创作挑战赛#

免责声明:本站所有文章内容,图片,视频等均是来源于用户投稿和互联网及文摘转载整编而成,不代表本站观点,不承担相关法律责任。其著作权各归其原作者或其出版社所有。如发现本站有涉嫌抄袭侵权/违法违规的内容,侵犯到您的权益,请在线联系站长,一经查实,本站将立刻删除。 本文来自网络,若有侵权,请联系删除,如若转载,请注明出处:https://yundeesoft.com/50194.html

(0)

相关推荐

发表回复

您的电子邮箱地址不会被公开。 必填项已用 * 标注

关注微信