昨天下午把《我不是药神》这部电影看了,搞得我哭的稀里哗啦,里面有一些情节触痛了内心中最薄弱的地方。药厂没有错,他们要收回前期投入的研发成本。主人公 程勇 只能算是整个事件的牺牲品,通过他的牺牲让国家关注到白血病人这个群体,让国家在医疗卫生改革方面有了一些进展。看的自己好难受!难受!难受!
还是回到我们今天的主题,把 「股票数据分析软件」 最后一个部分带着大家做完。
这套软件分为三个部分,第一部 分数据的获取与存储,第二部分 数据的分析与更新,到此为止,数据一直以记录(Record)的形式存在,很不直观,所以我们最后要做的就是把数据以及分析的结果通过图形的方式形象的表达出来。
怎么做呢?
我在这里利用了第三方开发组件 DotNetBar.Chart Control,大家可以到 http://www.devcomponents.com/dotnetbar/download.aspx 来下载试用版本。
这个组件的体系结构如下:
ChartXy
对象是绘制 X/Y Chart 的核心,ChartXy
对象主要包括:坐标轴 ChartAxis
、图例 ChartLegend
等,该对象存放于 ChartContainer
容器中。图形绘制所用到的数据存放于 ChartSeries
对象的 SeriesPoints
属性中,这个属性是一个存储 SeriesPoint
类型的单链表,通过 SeriesType
可以设置绘制图形的类型,如 Line
、Point
、Bar
,Bubble
,HiLo
等。
关于 DotNetBar.Chart Control 的详细介绍可以参见网址:http://www.devcomponents.com/kb2/?p=1715
绘图的主要步骤如下:
1. CheckData()
在数据可视化之前,先检验是否已经对数据进行了分析。若未分析,则给出提示。
2. SetupContainerStyle(ChartXy chartXy)
设置绘图容器的可视化效果,比如设置蜡烛图使用黑色的背景,直方图使用白的背景等。
3. SetupChartAxes(CharXy chartXy)
设置坐标轴的可视化效果,比如是否显示平行于 X
或 Y
轴的辅助线等。
4. SetupChartLegend(ChartXy chartXy)
设置图例是否可见,可选等。
5. SetupCrosshair(CharXy chartXy)
设置鼠标移动到数据点时的可视化效果。
6. SetupDataLabelStyle(chartXy chartXy)
设置直方图上显示信息的效果。
7. AddChartTitle(ChartXy chartXy,string title)
为图形添加标题样式。
8. AddChartSeries(ChartXy chartXy)
为图形添加数据。
通过以上步骤,把数据按照设定的样式进行可视化展示,我做的 Demo 如下:
程序主界面,在这个软件中,可以选择分析一个周期(2年)或者二个周期(4年)的数据。如下图所示:
蜡烛图,根据数据绘制蜡烛图,也就是我们常见的 K 线图。
历史交易曲线,根据数据绘制历史交易曲线,其中包括25、40、50、60、75分位数线,当然这些线可以通过上方的 Legend 选择是否显示。
分位数曲线 根据每日的分位数绘制曲线,可以方便的看出这个周期内分位数的变化情况。
筹码分布 把这个周期的成交数据 分成10个区间段,通过直方图展现每个区间段成交的笔数。这样可以方便的看出,整个市场主要的成交价格分布。
到这里,七天学会「股票数据分析软件」的开发 这个系列的图文就全部介绍完毕了。如果大家有什么问题可以给我留言,我为大家答疑。
我是从7月14日开始写这套软件的,大概7月20日完成,目前只做了部分单元测试,完善之后,我会传到 Github 上,方便大家学习。另外,由于国内是中心化的交易所,只有沪深两家,它们不免费提供交易接口,简直就是坑!
掌握编程技能的人也不得不通过券商手动挂单,降低大家的做事效率。面对这样强势的市场,却又无能为力,但数字货币的交易所是为我们提供免费 API 接口的,作为编程爱好者,可以写自动化交易系统来验证自己的交易策略,在不同交易所之间进行套利,或者在同一交易所内进行三角套利。如果有同学对这块感兴趣,开学后,我们一起来写这块的代码吧。
今天算是暑期的第一天,暑期是学习技能的最好时期,可以有大块的时间不受干扰。趁着难得的清闲,要好好准备一下下个学期的教学任务,把领导的几个项目做完,把明年学校的考核完成。就这样吧!See You!