用 Python / Matplotlib 画出来的股票 K线图 (四) - Jacky Liu's Blog

用 Python / Matplotlib 画出来的股票 K线图 (四)

Jacky Liu posted @ 2013年4月20日 07:10 in Python with tags 股票 python Matplotlib , 17128 阅读

 

    ---- 前一篇在这: 用 Python / Matplotlib 画出来的股票 K线图 (三)

    ---- 日线与分时对比行情:

    ---- 下面是绘图脚本与绘图数据合在一起的压缩文件。注意:

        1. 是 py3 脚本,matplotlib 已经支持 py3。绝大部分都是中文写的,不想被英文虐出翔了。

        2. 是 Linux 下写的,需要在 Linux 下执行。先解压,然后到生成的目录下执行:

python3   绘图.py

            就可以了。会生成一个 绘图.log 文件和一个图片文件放在相同目录下。

        <补记>:已经证实经过很小的改动就可以在 windows 下运行,输出中文字内容的大小样式有区别,其它一样,得益于 python 和 matplotlib 的跨平台特性。但是我不知道具体改哪些。

    ---- 解压后的文件结构:

        日线分时对比行情/
        ├Public/
        │├Public.py
        │└__init__.py
        ├子图定义/
        │├__init__.py
        │├公司信息子图.py
        │├分时价格子图.py
        │├分时手数子图.py
        │├实盘价格子图.py
        │├实盘手数子图.py
        │├日线价格子图.py
        │└日线换手子图.py
        ├绘图.py
        └绘图数据.pickle

    ---- 关于授权:除了特别说明的以外,本博客里的代码都用 “干啥随你便” 协议进行授权。

    Unless otherwise noted, all code pieces in this blog are licensed under the "DWYW(Do What the f Whatever You Want)" agreement. Good luck.

    ---- Download

Avatar_small
unicorn 说:
2013年5月27日 15:25

博主牛的,刚还在网上找个画k线图的python代码,这里都已经有行情界面了

Avatar_small
Ginger 说:
2013年11月11日 11:17

博主,请问在windows下运行怎么改动呢?或者您知道谁已经在windows下运行通过的吗?调了好久没调出来。。。

Avatar_small
Jacky Liu 说:
2013年11月12日 06:28

@Ginger: 我不知道该怎么改。有个人曾经改成功而且给我看了图,pdf 格式的,但是联系不到了 。。。

Avatar_small
Ginger 说:
2013年11月12日 08:17

@Jacky Liu: 好吧。还是谢谢了!P.S.您的博客好厉害啊,受益匪浅

Avatar_small
Jacky Liu 说:
2013年11月13日 00:09

@Ginger: 你先检查一下版本,python 必须是 3, 最好 3.2 以上。matplotlib 必须是最新的 1.2, 1.0 以下不行。只要版本对了剩下应该很简单,设置一下字体文件,把目录处理按 windows 的方式改改应该就行了,别的我也想不起来有什么。python 和 matplotlib 的通用型都很好的。

Avatar_small
Ginger 说:
2013年11月13日 08:34

@Jacky Liu: 我的python是3.3的,matplotlib是1.3的,字体也设置了。运行的时候会说内部有语法错误,就像"return [ 时间 if 时间<dtc_120000 else 时间-午间时差 for 时间 in 时间序列 ]"这句说有错误,不晓得怎么回事,以为会有其他内部问题。Cpython的代码我也不太会看,因为没有用汉语写过程序,⊙﹏⊙b汗~~好奇楼主为什么用CPYTHON写呢?

Avatar_small
Jacky Liu 说:
2013年11月13日 10:38

@Ginger: 这是哪跟哪。怀疑是中文的问题是吧?不太会看中文,当然可以搜索替换成你喜欢的语言再看。用 Cpython 当然因为它是默认的 python 解释器。请问一下,Cpython 的代码跟其它 python 的代码会有什么区别?

Avatar_small
Ginger 说:
2013年11月14日 09:12

@Jacky Liu: 啊。是说cpython的使用和python一点区别都没有吗?那为什么还会报内部语法错误呢?我是初学者,调代码能力不强,也没用过Lunix系统,菜鸟一个。我问您也只是基于好奇心,并没有一点埋怨或者不好的意思。因为身边好像没有用中文写程序的人,我也从来都不知道变量、路径、文件名等都可以用中文,所以觉得很好奇很好玩。博主要是觉得跟我这种小白交流有障碍的话那就不浪费您的时间了~~还是谢谢您之前的回答

Avatar_small
Jacky Liu 说:
2013年11月14日 13:09

@Ginger: 你自己用的也是 Cpython。看看是不是编码问题,把源文件用记事本重新保存一下。再不行就没辙了。

Avatar_small
chris 说:
2014年1月16日 14:48

很强大 多谢分享。有个问题问下博主,我有个python2环境的 但是因为python3的pickle和2版本的不同 导致没法load解析数据
有没有python2 版本的pickle数据呢 或者怎么能创建一份用python2的pickle能load的数据呢 十分感谢

Avatar_small
Jacky Liu 说:
2014年1月16日 18:46

@chris: python3 默认的 pickle 格式跟 python2 不兼容。pickle.dump() 和 pickle.load() 都可以通过参数指定使用旧的 pickle 格式,但是博文里包含的数据格式是 python3 默认的。

如果你想查看数据格式,不如搭建一个 python3 的环境。很方便,只要安装 python3、numpy、matplotlib 就好了。绘图脚本里自带了一个函数,能在 log 文件里用比较可读的方式输出绘图数据的结构。

Avatar_small
gkiwi 说:
2014年1月19日 02:17

正好弄这块,谢啦!

Avatar_small
丁丁 说:
2014年2月16日 16:26

@Jacky Liu: 只要把判断文件是否存在那两句注释掉(因为windows和linux文件机制不同,所以不存在os.mknod模块);另外把字体文件目录统一改成C:\WINDOWS\Fonts\wqy-zenhei.ttc就行(前提是要装上这个字体)。刚刚摸索玩运行成功,谢谢博主的代码,我估计还得慢慢消化好久。

Avatar_small
wood 说:
2014年4月28日 23:18

请问博主怎么获取的新浪复权日线啊?貌似只有不复权的?

Avatar_small
Jacky Liu 说:
2014年4月28日 23:32

@wood: 新浪 有复权日线,但是准确性很差,我现在已经不用了。

Avatar_small
wood 说:
2014年4月29日 06:52

@Jacky Liu: 那博主现在用的是什么日线数据?能不能把日线数据的获取方法分享一下?谢谢。

Avatar_small
Jacky Liu 说:
2014年4月29日 07:21

@wood: 当然是原始日线啊,不复权的。日线数据也是新浪的。

Avatar_small
Nate 说:
2014年6月18日 09:18

同样的码农,同样尊重缠师,同样决定用python在程序化交易做点东西。
python用来做程序化交易在国外网站上的资料非常丰富。
不知道博主交易几年,有没有稳定的盈利模式。我觉得如果对于市场和交易没有自己的理解的情况下,单靠一些简单的程序化交易的东西也还是很难盈利。
不知道博主有没有想过把R利用起来
关于画K线图,可以实现一般行情软件的缩放吗?

Avatar_small
Jacky Liu 说:
2014年7月26日 05:59

@Nate: 我没用 R,Python 目前够用了

目前正在完善基于 Vim 的股票交易界面。交易模式有手动和自动,有粗有细,细的可以花很多时间进去,是一个慢慢打磨的过程。目前有正在用的,但是打磨的过程不会中断,也不排除开发基于其它原理的新模式。

缩放属于实时性的任务,速度要求高。matplotlib 可以做,但是太慢。如果想实现,建议看一看 PyQT

Avatar_small
cmmtarget 说:
2014年8月09日 21:13

@Jacky Liu: 博主你的日线数据从新浪网站获取?不知道这样准确性如何。我是从大智慧导出数据读取,没实时性。这样每次都要手动导出数据再画图,比较麻烦。你的程序好牛逼。我只画了一副黑白的带量k线图。orz~

Avatar_small
Jacky Liu 说:
2014年8月09日 22:10

@cmmtarget: 我的日线数据是下载以后存在数据库里的,画图时从数据库里读。也可以把所有股票最近一年的日线先读进 Python,画图时直接从 Python 取。从股软导出是个好主意,我的开发平台是 Linux 所以从股软导出比较麻烦。你用什么工具画的图?

Avatar_small
cmmtarget 说:
2014年8月10日 08:44

@Jacky Liu: 我也用的matplotlib。因为我的需求比较低,所以画的东西极为原始。主要是要看清整个走势的全貌,数据都是上市以来的所有日K线。要复权看,所以就遇到除权数据的准确性问题,不同的股软好像都有点差异。

Avatar_small
Jacky Liu 说:
2014年8月10日 14:55

@cmmtarget: 哦,我觉得复权因子的准确性不是那么重要,离关心的时间点(比如当前最新)越远,重要性就越低。

Avatar_small
cmmtarget 说:
2014年8月10日 19:36

@Jacky Liu: 对于小级别买卖点确实不重要的。其用处在于判断牛熊,这种情况需要的k线就多了,期间除权几次就看不清了。可能我们着眼点比较不同吧。

Avatar_small
Jacky Liu 说:
2014年11月10日 02:32

@cmmtarget: 不,我说的不是复不复权,而是复权因子的准确性。也就是说,复权因子到底是 1.20 还是 1.18, 实际上一点都不重要。

Avatar_small
Stephen Hu 说:
2015年6月14日 06:42

@cmmtarget: 直接下载复权的历史日数据就可以。

Avatar_small
Firesnail 说:
2015年7月05日 22:31

Python中文编程~~~(*^__^*)

Avatar_small
nerdbihai 说:
2016年4月10日 17:25

你好,Jacky Liu!看了你的博客,发现你太牛了,我也是在查找相关画K线图的资料,找到你这!如果可以有你的邮箱或QQ 就好了!

Avatar_small
nerdbihai 说:
2016年4月10日 17:30

我是python新手,且是跨行开始学,
请教你菜鸟问题:
日K线,如何画;使用plt.bar画出来的吗?还是其他?

Avatar_small
nerdbihai 说:
2016年4月20日 17:41

看来网络上什么都有,只是自己不要懒!相关问题已解决

Avatar_small
searchjack 说:
2016年12月12日 01:35

thanks a lot , 代码测试通过


登录 *


loading captcha image...
(输入验证码)
or Ctrl+Enter
Host by is-Programmer.com | Power by Chito 1.3.3 beta | © 2007 LinuxGem | Design by Matthew "Agent Spork" McGee