[简介]

作为一名专业程序化交易者,编程是一个程序员的基本功,本文是作者在做的一个期货CTP项目中有关K线绘图的一部分,偿试类MT4中图表 设计而写,在编写绘图时,查阅了相关资料,感觉还是用NPlot的这个图表控件比较好,特点是:免费,可以用于winform程序,而且速度比较快,可以实时动态显示图表数据,下面就进入主题.

[内容]

一,NPlot控件相关知识简介:

图表控件一直是很难找的,特别是免费又强大的。NPlot是一款非常难得的.Net平台下的图表控件,能做各种曲线图,柱状图,饼图,散点图,股票图等,而且它免费又开源,使用起来也非常符合程序员的习惯。唯一的缺点就是文档特别难找,难读。通过对其文档的阅读和对示例程序源代码的分析,现在将NPlot的基本概念整理如下:

NPlot的命名空间包括NPlot,NPlot.Bitmap,NPlot.Web,NPlot.Web.Design,NPlot.Windows等,其中最核心的,管理各种图表的类都属于NPlot命名空间,NPlot.Bitmap针对位图的管理,NPlot.Web,NPlot.Web.Design和NPlot.Windows则可视为NPlot图表在Web Form和Windows Form上的容器(PlotSurface2D)。这些容器可以拖到Form上,也可以位于其他容器之中。

要在应用程序中应用NPlot控件,首先要把所下载的NPlot.dll添加到.Net工程中。并将其添加到工具箱托盘中。添加方式为:在工具箱上单击右键,选择“选择项”,会出现“选择工具箱项”对话框,在“.Net Frameworks组件”属性页,选择浏览,找到NPlot.dll添加到工具箱项。这时工具箱中会出现NPlot控件。在设计应用程序界面时,可以将其拖入应用程序界面,系统会在代码中自动创建一个PlotSurface2D对象。

PlotSurface2D对象是NPlot图表的容器,所有的图表图形,坐标,标题(都继承IDrawable接口)等各种信息都可以被加入PlotSurface2D。PlotSurface2D拥有一个非常重要的方法:Add。各种图表图形,坐标,标题都可以通过Add加入PlotSurface2D对象。

二.NPlot控件使用方法:

1.下载NPlot控件文件:NPlpt.dll(内含说明文档及源码)下载

2.新建C#项目,如candlePlot

3.右击工具箱中菜单:选择项-->在弹出的选择工具箱项中.net框架上对话框-->浏览按钮-->找到刚才下载的NPlot.dll文件-->选中打开

4.在.net Framework组件中找到NPlot程序集中的两个组件plotsurfase2d都选中,就添加到工具箱中了

5.拖plotsurfase2d控件到窗体上,命名myPlot,声明using NPlot;

下面放置蜡烛图绘制的基本代码:

 1         /////////各种绘图//////////
2 private void plot()
3 {
4 this.myPlot.Clear();
7 ////////网格//////////
8 Grid mygrid = new Grid();
9 mygrid.HorizontalGridType = Grid.GridType.Fine;
10 mygrid.VerticalGridType = Grid.GridType.Fine;
11 this.myPlot.Add(mygrid);
1213 ///////水平线//////////
14 HorizontalLine line = new HorizontalLine(10);
15 line.LengthScale = 2.89f;
16 //line.OrdinateValue = 2;
17 this.myPlot.Add(line, 10);
18 ///////垂直线///////////
19 VerticalLine line2 = new VerticalLine(10);
20 line2.LengthScale = 0.89f;
21 this.myPlot.Add(line2);
22
23
24 ///////蜡烛图///////////
25 int[] opens = { 1, 2, 1, 2, 1, 3 };
26 double[] closes = { 2, 2, 2, 1, 2, 1 };
27 float[] lows = { 1, 1, 1, 1, 1, 1 };
28 System.Int64[] highs = { 3, 2, 3, 3, 3, 4 };
29 int[] times = { 0, 1, 2, 3, 4, 5 };
30 CandlePlot cp = new CandlePlot();
31 cp.CloseData = closes;
32 cp.OpenData = opens;
33 cp.LowData = lows;
34 cp.HighData = highs;
35 cp.AbscissaData = times;
36 this.myPlot.Add(cp);
37
this.myPlot.Refresh();
62 }

C#下如何用NPlot绘制期货股票K线图(1)?的更多相关文章

  1. C#下如何用NPlot绘制期货股票K线图(2):读取数据文件让K线图自动更新

    [内容介绍]上一篇介绍了K线图的基本绘制方法,但很不完善,本篇增加了它直接读取数据的功能,这对于金融市场的数据量大且又需要动态刷新功能的实现很重要. [实现方法] 1.需要一个数据文件,这里用的是直接 ...

  2. C#下如何用NPlot绘制期货股票K线图(3):设计要显示的股票价格图表窗口并定义相应类的成员及函数

    [内容简介] 上一篇介绍了要显示K线图所需要的数据结构,及要动态显示K线图,需要动态读取数据文件必需的几个功能函数.本篇介绍要显示蜡烛图所用到的窗口界面设计及对应类定义.下面分述如下: [窗口界面] ...

  3. 利用JFreeChart绘制股票K线图完整解决方案

    http://blog.sina.com.cn/s/blog_4ad042e50100q7d9.html 利用JFreeChart绘制股票K线图完整解决方案 (2011-04-30 13:27:17) ...

  4. WPF中使用amCharts绘制股票K线图

    原文:WPF中使用amCharts绘制股票K线图 本想自己用GDI绘图, 通过数据直接绘制一张蜡柱图, 但觉得这样子的功能比较少, 所以到网上搜索一些能画出K线图的控件. 发现DynamicDataD ...

  5. PHP使用HighChart生成股票K线图详解

    本人qq群也有许多的技术文档,希望可以为你提供一些帮助(非技术的勿加). QQ群:   281442983 (点击链接加入群:http://jq.qq.com/?_wv=1027&k=29Lo ...

  6. 股票K线图-JfreeChart版

    http://blog.csdn.net/ami121/article/details/3953272 股票K线图-JfreeChart版 标签: jfreechartpropertiesapplet ...

  7. python pandas 画图、显示中文、股票K线图

    目录: 1.pandas官方画图链接 2.标记图中数据点 3.画图显示中文 4.画股票K线图 5.matplotlib基本用法 6.format输出 6.format输出例子 eps_range=[0 ...

  8. IOS 股票K线图、分时图

    IOS 股票K线图.分时图,网上开源项目很少,质量也是参差不齐:偶尔搜索到看似有希望的文章,点进去,还是个标题党:深受毒害.经过一段时间的探索,终于在开源基础上完成了自己的股票K线图.分时图: 先放出 ...

  9. 基于Echarts的股票K线图展示

    发布时间:2018-10-31   技术:javascript+html5+canvas   概述 基于echarts的股票K线图展示,只需引用单个插件,通过简单配置,导入数据,即可实现炫酷复杂的K线 ...

随机推荐

  1. 转载.NET 4.0中的泛型的协变和逆变

    先做点准备工作,定义两个类:Animal类和其子类Dog类,一个泛型接口IMyInterface<T>, 他们的定义如下:   public class Animal { } public ...

  2. 解决eclipse 使用run运行,始终会跳到debug模式!

    查看此选项是否选择中卫always,若是,更改为never或prompt,重启eclipse即可

  3. 菜单设计器(Menu Designer)及其B/S,C/S双重实现(B/S开源)

    ERP/MIS开发 菜单设计器(Menu Designer)及其B/S,C/S双重实现(B/S开源)   一直从事ERP/MIS的开发工作,今天来展现一下菜单设计器的设计,及其用途,并对B/S部分代码 ...

  4. Sass 默认样式库

    Sass 默认初始化样式库 @charset "utf-8"; // 变量存储 // 字体Unicode编码 微软雅黑:\5FAE\8F6F\96C5\9ED1 , 宋体:\5B8 ...

  5. iOS 定时器Timer常见问题

    最近有朋友问我使用NStimer遇见与ScrollView并存时存在主线程阻塞的问题,自己总结几种解决方法: 问题原因: 一般定时器timer都会被以默认模式default添加到主线程的runloop ...

  6. hdu 2844 Coins (多重背包)

    题意是给你几个数,再给你这几个数的可以用的个数,然后随机找几个数来累加, 让我算可以累加得到的数的种数! 解题思路:先将背包初始化为-1,再用多重背包计算,最后检索,若bb[i]==i,则说明i这个数 ...

  7. Nginx+Keepalived+Tomcat之动静分离的web集群

    #vi /etc/nginx/nginx.conf############################################user nginx nginx;worker_process ...

  8. MySQL to Redis

    [TOC] 简介 使用mysql2redis可以非常便捷的将mysql中的数据导出到redis中去, 通常是需要一个select语句即可实现. 软件安装 // 安装apr + apr-util $ w ...

  9. vmware mac虚拟机 停在启动界面

    前言: 关于vmware安装mac 10.8 可以从参看:http://www.cnblogs.com/zyf2013/p/3888242.html 安装完成以后重新启动,卡在了白苹果启动画面处. 或 ...

  10. SVN 之 去掉SVN管理标记

    当项目不需要SVN标志的时候, 方式一:很多人设置Windows显示隐藏文件,然后将项目中的所有.svn文件删除,这种方法是最笨的方法. 方式二:通过注册表方式 [1]新建一个文本文件.文本的内容为: ...