• C#下如何用NPlot绘制期货股票K线图(1)?


    [简介]

    作为一名专业程序化交易者,编程是一个程序员的基本功,本文是作者在做的一个期货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         }
    崇尚代码即法律,做一个智能合约开发者,重点在于合约的交易逻辑设计,交流请访问微信yyy99966
  • 相关阅读:
    Linux中文件夹的读、写、执行权限
    限制提权与sudo -s
    shell支持正则:Linux shell判断字符串是否以某些字符开头
    Linux ssh ftp 用户访问权限
    set ff=unix 转换 为 linux 执行shell报bad interpreter:No such file or directory错误
    Sftp服务器搭建和限制用户目录
    ssh 配置文件讲解大全 ssh调试模式 sftp scp strace进行调试 特权分离
    PAM API
    ssh的chroot配置
    PAM详解(一)PAM介绍
  • 原文地址:https://www.cnblogs.com/juehai/p/5839004.html
Copyright © 2020-2023  润新知