John Jiang

a cup of Java, cheers!
https://github.com/johnshajiang/blog

   :: 首页 ::  :: 联系 :: 聚合  :: 管理 ::
  131 随笔 :: 1 文章 :: 530 评论 :: 0 Trackbacks
JStockChart -- Preview
JStockChart是一款简单但实用的开源图表工具,是对JFreeChart的扩展,仅关注于金融时序图与K线图。(2008.08.29最后更新)

    JStockChart对利用JFreeChart生成金融时序图与K线图进行了简化。目前,JStockChart已实现了时序图部分,包括价格线,均线,量图,中间价和涨跌幅。用户仅需传入指定格式的数据,JStockChart即可生成期望的图片。
    对于时序图,如果提供的数据不是"连续"的,JStockChart能够自动补全缺失的数据--被补数据的价格与最近一笔数据的价格相同,而量为0;价格图的纵坐标以指定的"中间价"为中心均匀分布,可重点突出中间价。
    该项目的源文件会在晚些时候上传到Google Code中,但可以通过下面一组图片先预览一下JStockChart生成的金融时序图。
JStockChart Demo
允许指定中间价(20.88),以中间价为基准向上和向下均匀地分布坐标点;允许自由地指定单个坐标点标签的对齐方式--左对齐,右对齐,居中(对于时间坐标,这尤其有用)。

JStockChart Demo
自动补全缺失的数据(黑色方框指示的区域)。

JStockChart Demo
允许指定各个坐标轴显示的坐标点的个数。

JStockChart Demo
允许指定是否显示某些图线元素(中间价,均线,涨跌幅,...)。

JStockChart Demo
允许只显示价格线图。

JStockChart Demo
允许只显示量图。

对于时序线图,目前我认为JStockChart的三个功能比较重要:
(a)自动补全非连续数据序列中的"缺失"数据。
(b)以"中间价"为中心,价格坐标均匀分布。
(c)"自由"地定制每个坐标的对齐方式,这对于时间坐标尤为重要。
目前JFreeChart就没有提供上述功能,而
[1]JStockChart扩展了JFreeChart中的DateAxis和NumberAxis,根据用户指定的数据与坐标对齐方式,重新计算并生成了DateTick和NumberTick。
[2]JStockChart对JFreeChart中的TimeSeries进行了修饰,结合SegmentedTimeline,新创建了SegmentedTimeSeries,使得能够自动补全缺失的数据。


P.S.
由于近期赋闲在家,在欣赏奥运比赛之余,就将自己早前的一些想法付诸实现,并发起了这个开源项目。
虽然JStockChart关注的功能点有限,在设计方面肯定也有不如人意之处,但我仍然认为这是一次很有益的尝试。
posted on 2008-08-28 17:11 John Jiang 阅读(4494) 评论(57)  编辑  收藏 所属分类: JavaJStockChartJFreeChart原创

评论

# re: JStockChart--Preview 2008-08-28 17:55 Jack.Wang
不错!很好,很强大,想法很好!有时间多交流!  回复  更多评论
  

# re: JStockChart--Preview 2008-08-28 18:03 Sha Jiang
强大的不是JStockChart,而是JFreeChart ^_^  回复  更多评论
  

# re: JStockChart--Preview 2008-08-28 18:37 softwave
比较感兴趣,但是不知这个股市信息的数据源从哪获得呢?  回复  更多评论
  

# re: JStockChart--Preview 2008-08-29 10:52 rubyol
不错, 不过和楼上的问题一样,关注数据来源 ...  回复  更多评论
  

# re: JStockChart--Preview 2008-08-29 11:14 lzycxy
我就没看出与JFreeChart的区别来  回复  更多评论
  

# re: JStockChart--Preview 2008-08-29 15:16 Sha Jiang
> 比较感兴趣,但是不知这个股市信息的数据源从哪获得呢?
为什么一定要用真实的数据呢 *_*

> 我就没看出与JFreeChart的区别来
JStockChart只是在有限之处对JFreeChart进行了扩展,
绘图功能肯定还是用的JFreeChart,所以不能直接看出这两者之间的区别。

JStockChart主要是为了"简化"时序线图与K线图的创建,用户只需要提供指定"形式"的数据,就可直接地生成这类图片了。
另外,使用JStockChart可以指定一个"中间价"(如20.88),然后以该中间价为基准,向上和向下"等距"的显示若干个坐标点(如21.52, 21.36, 21.20, 21.04和20.72, 20.56, 20.40, 20.24);而JFreeChart未能直接提供这一功能。
  回复  更多评论
  

# re: JStockChart--Preview 2008-08-29 17:57 Sha Jiang
对于时序线图,目前我认为JStockChart的三个功能比较重要:
(a)自动补全非连续数据序列中的"缺失"数据。
(b)以"中间价"为中心,价格坐标均匀分布。
(c)"自由"地定制每个坐标的对齐方式,这对于时间坐标尤为重要。
但目前JFreeChart并没有提供上述功能,而
[1]JStockChart扩展了JFreeChart中的DateAxis和NumberAxis,根据用户指定的数据与坐标对齐方式,重新计算并生成了DateTick和NumberTick。
[2]JStockChart对JFreeChart中的TimeSeries进行了修饰,结合SegmentedTimeline,新创建了SegmentedTimeSeries,使得能够自动补全缺失的数据。  回复  更多评论
  

# re: JStockChart -- Preview(原)[未登录] 2008-09-17 17:32 eric
对于除了交易日之外的别的日期可以过滤吗?像如:五一假期,停盘假期.  回复  更多评论
  

# re: JStockChart -- Preview(原) 2008-09-17 20:03 Sha Jiang
> 对于除了交易日之外的别的日期可以过滤吗?像如:五一假期,停盘假期.
在SegmentedTimeline中设置例外(SegmentedTimeline.setExceptionSegments)。  回复  更多评论
  

# re: JStockChart -- Preview(原) 2008-10-15 17:57 eric_yin
我现在得到的是最近一周交易日的分钟数据,想要过滤掉非交易的时间点。可以过滤掉吗?需要用哪些方法,怎么传值啊。
比方说是得到了2008.10.9-2008.10.15之间5个交易日的分钟数据。我需要过滤掉其中2008.10.11和2008.10.12这两个周末时间,还需要过滤掉其余每天的0:00-9:30,11:30-13:00,15:00-24:00的时间轴。
需要怎么做啊,恳请赐教,我的msn:yinyao01@msn.com
  回复  更多评论
  

# re: JStockChart -- Preview(原) 2008-10-15 19:01 Sha Jiang
> 我现在得到的是最近一周交易日的分钟数据,想要过滤掉非交易的时间点。
> 可以过滤掉吗?需要用哪些方法,怎么传值啊。
要首先就从数据源中将"异常"数据过滤掉,而不要让JFreeChart去过滤。实际上,SegmentedTimeline并不能过滤数据。
如果传入的数据有"冗余"的话,JFreeChart仍然会把它们显示出来(得到的图片可能会比较怪)。  回复  更多评论
  

# re: JStockChart -- Preview(原)[未登录] 2008-11-22 17:17 cc
用JreeChart生成图片的性能好像不是很好,要生成两千多只股票,对于实时更新的股票来说,怎样去处理呢?  回复  更多评论
  

# re: JStockChart -- Preview(原) 2008-11-22 22:26 Sha Jiang
> 用JreeChart生成图片的性能好像不是很好,要生成两千多只股票,
> 对于实时更新的股票来说,怎样去处理呢?
如果只是依赖JFreeChart,可能是不行。  回复  更多评论
  

# re: JStockChart -- Preview(原) 2009-05-24 22:38 theseusyang
能在X轴上实现刻度尺滑动箭头的功能吗?  回复  更多评论
  

# re: JStockChart -- Preview(原) 2009-05-25 21:56 Sha Jiang
> 能在X轴上实现刻度尺滑动箭头的功能吗?
JStockChart不直接提供这一功能,但JFreeChart可以动态绘制图形。  回复  更多评论
  

# re: JStockChart -- Preview(原) 2009-06-02 11:49 zw1321@126.com
为什么在日期轴上当前时间至收市时间这段没有呢,虽然现在还没有数据,但是图上应该画出来才对嘛,这个图像扩大了开市时间至当前时间的日期轴的比例。。。  回复  更多评论
  

# re: JStockChart -- Preview(原) 2009-06-02 18:49 Sha Jiang
> 为什么在日期轴上当前时间至收市时间这段没有呢
"当前时间"是指什么时间?

> 虽然现在还没有数据,但是图上应该画出来才对嘛,
> 这个图像扩大了开市时间至当前时间的日期轴的比例
一般地,大家只关心市场交易的时间段,一天中的其它时间不需要展现,因为没有意义。
  回复  更多评论
  

# re: JStockChart -- Preview(原)[未登录] 2009-06-03 13:49 111
请问我获得了DateAxis这个对象,有没有什么办法去掉节假日吗?  回复  更多评论
  

# re: JStockChart -- Preview(原) 2009-06-03 16:14 Sha Jiang
> 请问我获得了DateAxis这个对象,有没有什么办法去掉节假日吗?
SegmentedTimeline可以过滤掉你不期望的时间。  回复  更多评论
  

# re: JStockChart -- Preview(原)[未登录] 2009-06-05 16:03 vivian
量图柱线后面的阴影可以去掉不?jstockchart有定点功能吗 谢谢``````  回复  更多评论
  

# re: JStockChart -- Preview(原) 2009-06-05 17:29 Sha Jiang
> 量图柱线后面的阴影可以去掉不?
哪有阴影?

> jstockchart有定点功能吗
是指什么功能?能说具体一些吗?  回复  更多评论
  

# re: JStockChart -- Preview(原)[未登录] 2009-06-08 11:51 vivian
@Sha Jiang
> 量图柱线后面的阴影可以去掉不?
哪有阴影?
------可惜我看不到你上面的图是不是也有我这种情况,我的量图每根柱线后面老是有一条灰色的柱子,我暂时把量图区域颜色改为灰色,这个问题可以忽略不计
> jstockchart有定点功能吗
是指什么功能?能说具体一些吗?
------就是点到某个坐标点可以显示此点的横纵交叉线,jfreechart是有这个功能的,但我不知道在jstockchart怎么用
谢谢`````````
  回复  更多评论
  

# re: JStockChart -- Preview(原) 2009-06-08 19:17 Sha Jiang
> 可惜我看不到你上面的图是不是也有我这种情况,
> 我的量图每根柱线后面老是有一条灰色的柱子,我暂时把量图区域颜色改为灰色,
> 这个问题可以忽略不计
应该是立体图吧?

> 就是点到某个坐标点可以显示此点的横纵交叉线,jfreechart是有这个功能的,
> 但我不知道在jstockchart怎么用
我没用过JFreeChart的这个功能。
如果JFreeChart有这个功能的话,那么你通过JStockChart获取JFreeChart实例,然后再传给ChartPanel,应该也可以达到你的要求。

仅就该功能而言,应该不难实现。实现一个MouseListener(也可以试试ChartMouseListener),当点击鼠标时,在ChartPanel上绘制十字线,即可。  回复  更多评论
  

# re: JStockChart -- Preview(原) 2009-09-28 15:59 zuo
坐标字体颜色怎么设置。。l  回复  更多评论
  

# re: JStockChart -- Preview(原) 2009-09-28 16:23 Sha Jiang
> 坐标字体颜色怎么设置
基本方法就是:获取Plot的Axis,然后设置它的TickLabelPaint。
如,((CategoryPlot)JFreeChart.getPlot()).getDomainAxis().setTickLabelPaint(Color.RED)  回复  更多评论
  

# re: JStockChart -- Preview(原) 2009-09-28 16:40 zuo
我塞。。
为什么不能这么设置
jfreechart.getXYPlot().getRangeAxis().setLabelPaint(Color.red);
jfreechart.getXYPlot().getRangeAxis()为空
谢谢。。。  回复  更多评论
  

# re: JStockChart -- Preview(原) 2009-09-28 17:13 zuo
大哥,纵坐标字体是不是没办法设置颜色啊。。。
  回复  更多评论
  

# re: JStockChart -- Preview(原) 2009-09-28 18:11 zuo
大哥,告诉我一下,怎么设置走线图纵坐标的字体颜色。。
我的要求是:在那个线之下的坐标字体是绿色,上边的是红色字体
我的QQ:82826200
我的邮箱:zhj28119860501@yahoo.com.cn
非常感谢....
  回复  更多评论
  

# re: JStockChart -- Preview(原) 2009-09-29 08:43 Sha Jiang
> jfreechart.getXYPlot().getRangeAxis()为空
这是你自已程序的问题吧。

> 大哥,纵坐标字体是不是没办法设置颜色啊
一样的到道理啊,拿到range axis,然后设置它的TickLabelPaint。
如,((CategoryPlot)JFreeChart.getPlot()).getRangeAxis().setTickLabelPaint(Color.RED)   回复  更多评论
  

# re: JStockChart -- Preview(原) 2009-09-29 13:32 zuo
大哥,((CategoryPlot)JFreeChart.getPlot()).getRangeAxis().setTickLabelPaint(Color.RED)
这样写你试了吗?
(CategoryPlot)jfreechart.getPlot()强制类型转换错误
jfreechart.getPlot()返回的是CombinedRangeXYPlot  回复  更多评论
  

# re: JStockChart -- Preview(原) 2009-09-29 13:33 zuo
用友的大哥,谢谢了!  回复  更多评论
  

# re: JStockChart -- Preview(原) 2009-10-10 20:59 Sha Jiang
> (CategoryPlot)jfreechart.getPlot()强制类型转换错误
> jfreechart.getPlot()返回的是CombinedRangeXYPlot
那你就cast到CombinedRangeXYPlot撒 ^_^  回复  更多评论
  

# re: JStockChart -- Preview(原) 2009-10-12 10:14 zuo
大哥,谢谢了!
不过还是不行,jfreechart.getPlot()返回的是CombinedDomainXYPlot..
我看了大哥的源码,里面没什么注释,希望大哥能加上一点注释。。
还有就是。。
大哥的DEMO,当数据库里面的数据不全时候,有值为空的情况测试过没有 。。
最后希望大哥能把这个开源的东东做得更完善。。。  回复  更多评论
  

# re: JStockChart -- Preview(原) 2009-10-12 10:30 Sha Jiang
> 不过还是不行,jfreechart.getPlot()返回的是CombinedDomainXYPlot
我不是已经回答了这个问题嘛--"那你就cast到CombinedRangeXYPlot撒"。
使用方法CombinedDomainXYPlot.getDomainAxis/getDomainAxis(int i),你也可以得到相关Axis,然后再去设置它的TickLabelPaint撒。

> 大哥的DEMO,当数据库里面的数据不全时候,有值为空的情况测试过没有 。。
一般地,数据的问题,还是由应用程序自己处理吧。
JFreeChart也不会考虑数据逻辑是否完整这样的问题吧 *_*
但如本文所示,JStockChart的时序图会补充部分缺失的数据。

> 我看了大哥的源码,里面没什么注释,希望大哥能加上一点注释。。
> 最后希望大哥能把这个开源的东东做得更完善。。。
JStockChart只是我去年赋闲时打发时间的产物,确实非常的稚嫩。
最近又进行了一些JFreeChart的应用开发,对它有了一些新的体会,以后有时间的话,会对JStockChart进行完全的重写,尤其是程序的结构要认真地再设计。  回复  更多评论
  

# re: JStockChart -- Preview(原) 2009-10-12 17:03 zuo
大哥,我有些问题想请教你。。。
不知你能否留下一个联系方式,最好是QQ
3KS  回复  更多评论
  

# re: JStockChart -- Preview(原) 2009-10-13 08:37 Sha Jiang
嘿嘿,上班时,MSN或QQ都上不了。
有问题可以在此处留言,或者直接发到我的邮箱:jiangshachina@gmail.com  回复  更多评论
  

# re: JStockChart -- Preview(原) 2009-10-15 18:31 zuo
我想做一个实时的图。。。就类似很多网站上的。。
隔一段时间生成一张图片。。
但正如大哥所说的JStockChart的时序图会补充部分缺失的数据,但当前的时间还没到14:00,确把他的数据补充了。。。
不知道大哥,有什么最好的办法来解决。。。  回复  更多评论
  

# re: JStockChart -- Preview(原) 2009-10-20 09:40 zuo
大哥你的数据是怎么自动不全的。。。
可以简单的介绍一下吗。。。
  回复  更多评论
  

# re: JStockChart -- Preview(原) 2009-10-20 14:22 Sha Jiang
> 但正如大哥所说的JStockChart的时序图会补充部分缺失的数据,
> 但当前的时间还没到14:00,确把他的数据补充了。。。
是不是你提供的数据中的最晚时间已经到14:00了?

> 大哥你的数据是怎么自动不(补)全的。。。
其实我使用方法很简单,很笨拙 :-)
具体的你可以看看类org.jstockchart.time.SegmentedTimeSeries,关键就是其中的addItem方法。  回复  更多评论
  

# re: JStockChart -- Preview(原) 2009-10-20 15:10 zuo
打个比方说吧:
现在是14点。。
但是数据自动补全的原因,14点后的图形也出来了。
我的要求是:
假如现在是14点,图形就到14点为止,14点以后的图形就不出来了。。。
谢谢。。
  回复  更多评论
  

# re: JStockChart -- Preview(原) 2009-10-20 15:14 Sha Jiang
> 现在是14点。。
> 但是数据自动补全的原因,14点后的图形也出来了。
如果给定的数据中确实不存在14:00之后的数据,那这就是JStockChart的Bug :-(  回复  更多评论
  

# re: JStockChart -- Preview(原) 2009-10-20 15:42 zuo
那咋办呀?
你有时间测试一下吗?
该怎么解决这个问题。。。  回复  更多评论
  

# re: JStockChart -- Preview(原) 2009-10-21 08:30 Sha Jiang
最近还真没时间,只能周末再看看,但不要抱什么希望 *_*  回复  更多评论
  

# re: JStockChart -- Preview(原) 2009-10-21 14:21 zuo
大哥,我就靠你了。。。
要么你就告诉我怎么把你那个数据自动补全的功能去掉。。。  回复  更多评论
  

# re: JStockChart -- Preview(原) 2009-10-21 21:00 zuo
大哥你就抽点时间吧。。
我全靠你了。。
  回复  更多评论
  

# re: JStockChart -- Preview(原) 2009-10-22 08:57 zuo
大哥,我真着急啊。。
看到信息后,希望你能留个言。
  回复  更多评论
  

# re: JStockChart -- Preview(原) 2009-11-17 10:49 zuo
大哥,你那个bug解决了没?  回复  更多评论
  

# re: JStockChart -- Preview(原) 2009-11-23 08:57 Sha Jiang
@zuo
首先真的很抱歉,过了如此长的时间才回复。

我昨天进行了几次简单的测试,并没有发现你所提及的BUG。
在我的测试程序中,只提供了09:30-11:30,及13:00-14:00的连续分钟线数据,然后再直接加一个14:30的数据,发现JStockChart只会自动补齐14:01-14:29之间的数据,并不会自动添加14:30之后的数据。

故,希望你能提供与JStockChart应用相关的较详尽代码。  回复  更多评论
  

# re: JStockChart -- Preview(原) 2009-11-23 11:05 Sha Jiang
[Announcement]JStockChart 0.4.2已经发布了!
从该版本开始,JStockChart将只支持5.0或更高版本的JDK;且兼容JFreeChart 1.0.13。  回复  更多评论
  

# re: JStockChart -- Preview(原) 2010-05-08 13:17 大三阳小三阳
大哥你就抽点时间吧。。
我全靠你了。。
  回复  更多评论
  

# re: JStockChart -- Preview(原) 2010-05-24 15:16 何杨
挺好,以后做股票系统就有好工具了。  回复  更多评论
  

# re: JStockChart -- Preview(原) 2010-05-24 20:22 Sha Jiang
@何杨
目前JStockChart还很稚嫩,我正计划进行重写,当然这需要较长时间。  回复  更多评论
  

# re: JStockChart -- Preview(原) 2010-09-13 11:19 wheat
老兄,你的JStockChart 还有没有计划更新,

使用了一下,感觉类之间的耦合性太强,不容易分离。(个人感觉,不一定对)
  回复  更多评论
  

# re: JStockChart -- Preview(原) 2010-09-13 18:02 Sha Jiang
@wheat
> 老兄,你的JStockChart 还有没有计划更新
目前一直没有时间,可能关键还是灵感不足吧...

> 使用了一下,感觉类之间的耦合性太强,不容易分离。(个人感觉,不一定对)
总之,它的问题是显而易见的。  回复  更多评论
  

# re: JStockChart -- Preview(原) 2010-09-19 15:31 wheat
@Sha Jiang


呵呵,加油吧,我先写着玩玩,主要是定义好接口。  回复  更多评论
  

# re: JStockChart -- Preview(原) 2010-09-19 15:54 Sha Jiang
@wheat
Cool!!!大家多交流  回复  更多评论
  

# re: JStockChart -- Preview(原) 2011-08-21 15:24 mal_258
问下你,如何只显示价格图,不显示量图  回复  更多评论
  


只有注册用户登录后才能发表评论。


网站导航: