tushare 均线支持自定义均线吗

基于TuShare和ECharts实现数据可视化
你好,想跟你请教个问题:
hi 你好, 本人小白一枚,学习了你这这篇关于tushare和echarts画出K线图的文章,有些地方不是太明白,望指点: 1.根据你的python源码,我生成的.html文件在浏览器加载后,报reguire为定义的错,请问你当时是怎么解决这个问题的? 2.如果我想在手机上实现这个K线图,是否需要起一个HTTP服务?
附:.py文件和生成的.html文件在这里发不出来,我这里有个链接分享给你进去后可以查看到,期待您的解答,谢谢。链接: /s/1nuNFGjZ
require是python库,使用pip安装。我做的是基于服务的,手机端作为客户端访问,转成网页应该是可以浏览器直接用的。
跟风舞烟学大数据可视化-Echarts从入门到上手实战
课程观看地址:
课程出自学途无忧网:
课程讲师:风舞烟
课时数:三个模块,共70课时
一、课程特色:
1、最全的Echarts课程讲解
& & 70学时课时量,360度全方位,无死角的课程设计,让你通透Echarts可视化技术
2、最适合小白学员学习的课程,没有之一
& & 只要你了解一点基本的Html,CSS,JavaScript,结合讲师丰富而专业的教学经验,深入浅出的让你就快速掌握Echarts
3、不仅仅是Echarts脚本,更侧重于可视化
& & 课程不仅讲到的Echarts技术,更对可视化进行全方位解读(什么是可视化,可视化的最佳实践与误区等),将可视化理论与实践解合,项目案例最后压轴,让理论回归实践
4、不仅授人以鱼,更授人以渔
& & 我们不仅仅是案例的代码讲解,演示,更侧于数据结构的分析、业务需求的分析及手把手教你如何阅读官方文档API及示例代码的剖析,让你不但知其然,还知其所以然
5、教学采用的是Echarts3.x的最新版本
& & 我们教学使的是Echarts3.x的最新版本,同时兼顾Echarts2.0,让你即把握住该项技术的未来趋势,又能快速把所学应用到现在的工作中
二、课程目录(三个模块,共70节):
模块一、大数据可视化技术:可视化技术概述与Echarts入门
1.课程目标
2.数据可视化概述
3.什么是数据可视化?
4.经典可视化案例
5.大数据可视化的价值
6.数据可视化工具、案例、书籍
7.Echarts概述
8.Echarts特性介绍
9.如何快速上手开发一个Echarts可视化图表
10.如何阅读Echarts官方文档
11.Echarts学习必备基础知识
12.Echarts3.x与Echarts2.x的区别
13.Echarts基础架构与常见名词术语
14.Echarts标准开发模板
15.Echarts 柱状图(bar)详解
16.授人以渔01_Echarts 配置项查看技巧
17.Echarts 拆线图(line)详解_基本配置
18.Echarts 拆线图(line)详解_动态数据展示
19.授人以渔02_定制输出数据视图(dataView)的内容
20.授人以渔03_利用百度图说实现Echarts的可视化配置
模块二、大数据可视化技术:Echarts图表详解
1.授人以渔04_Echarts图表标准配置图示技巧
2.饼图(pie)详解_标准饼图
3.小技巧01_辅助线的作用及Echart3.x与2.x中的区别
4.小技巧02_托动自动计算(calculable)功能实现及Echart3.x与2.x中的区别
5.饼图(pie)高级_环形图
6.饼图(pie)高级_嵌套环形图
8.散点图(scatter)高级_提示信息及坐标轴的自定义
9.气泡图(bubble)详解
10.雷达图(radar)详解
11.地图(map)详解
12.漏斗图(funnel)详解
13.词云(wordCloud)详解
14.仪表盘(gauge)详解_基础配置
15.仪表盘(gauge)详解_多仪表盘高级配置
16.十大常见图表_小结
模块三、大数据可视化技术:Echarts高级与综合案例实战
1.Echarts图表高级_混搭折线与柱状图+双轴 01
2.Echarts图表高级_混搭折线与柱状图+双轴 02
3.Echarts图表高级_多图表联动
4.Echarts图表高级_如何自定义并动态切换主题
5.Echarts图表高级_Echarts异步数据加载
6.Echarts图表高级_Echarts异步数据加载并显示Loading动画进度
7.Echarts图表高级_Echarts数据动态更新
8.Echarts图表高级_Echarts事件与行为概述
9.Echarts图表高级_Echarts事件与行为_鼠标事件处理
10.Echarts图表高级_Echarts事件与行为_鼠标点击位置判断及技巧
11.Echarts图表高级_Echarts事件与行为_点击事件+异步获取数据明细
12.Echarts图表高级_Echarts事件与行为_动态图表联动(事件驱动)
13.Echarts图表高级_Echarts事件与行为_组件交互行为事件
14.Echarts图表高级_小结
15.北上广最佳前10航行路线图_案例分析
16.北上广最佳前10航行路线图_代码实现01
17.北上广最佳前10航行路线图_代码实现02
18.北上广最佳前10航行路线图_代码实现03
19.北上广最佳前10航行路线图_代码实现04
20.北上广最佳前10航行路线图_重构实现数据动态异常加载_思路分析
21.北上广最佳前10航行路线图_重构实现数据动态异常加载_代码实现
22.豆瓣最新热映电影排名分析_案例分析
23.豆瓣最新热映电影排名分析_豆瓣API简介&案例思路分析
24.豆瓣最新热映电影排名分析_框架代码实现剖析
25.豆瓣最新热映电影排名分析_实现异步跨域获取数据并本地缓存
26.豆瓣最新热映电影排名分析_三种类型图形堆叠技巧实现
27.豆瓣最新热映电影排名分析_电影海报显示功能的实现
28.豆瓣最新热映电影排名分析_点击查看电影明细
29.图表适用场景概述
30.图表适用场景_柱状图、条形图、拆线图、饼图
31.图表适用场景_地图、雷达图、漏斗图、词云、散点图、双轴图
32.数据可视化方法
33.数据可视化误区
34.课程总结
三、课程面向人群:
1、有志于学习数据可视化工具的在职IT人员
2、工作中需要用到Echarts进行数据展示的前端开发人员
3、工作中需要用到Echarts进行可视化展示的后台开发人员
4、大数据开发人员需要用到Echarts进行数据展示
5、数据分析人员需要利用进行更高级更个性化的可视化效果展示
四、学习完可以做什么?
1、可以让你快速零基础上手Echarts图表开发
2、让你对Echarts的基本配置、图表详细用法、高级技巧有深入的理解和认识
3、学习完本门课程后,你将能够利用Echarts图表结合后端数据进行前端可视化报表展示
4、结合后台数据,根据业务需求利用Echarts进行更高级更个性化的可视化效果展示
相关课程推荐:
《Tableau商业智能与可视化应用实战》
课程介绍:
百度云盘的密码是多少?作为量化投资领域从业几年的老兵,关于&b&量化投资入门&/b&,分&b&工具篇&/b&和&b&思路篇&/b&给题主一些借鉴:&br&&b&&br&.............................................................. 工具篇 .....................................................................................&/b&&br&对于入门工具,本人推荐使用Python,分享一封写给一个朋友的邮件,以此介绍一下在量化投资领域Python的一些学习资料。&br&&br&在实际操作中,虽然我们工作的回测系统和交易系统都不是基于Python的,但是作为起步学习量化投资的朋友,我个人比较推荐Python,这主要是由于:&br&1. Python入门容易,上手快;&br&2. Python作为一门开源的脚本语言,应用非常广泛,在数据处理方面又有许多library,我们模型前期的一些测试也都是用Python完成的;&br&3. 目前量化投资领域基于Python的学习工具、开源资源非常多。&br&&br&&img data-rawheight=&238& data-rawwidth=&687& src=&/0f089f5bf9da8b06de917_b.jpg& class=&origin_image zh-lightbox-thumb& width=&687& data-original=&/0f089f5bf9da8b06de917_r.jpg&&&br&首先,介绍一下Python入门的书籍:&br&1. 首推《利用Python进行数据分析》,pandas的作者原先就职于AQR,pandas的开发初衷就是用来处理金融数据的;&br&2. 《Python 3程序开发指南》&br&3. 《Python数据分析基础教程:NumPy学习指南(第2版)》&br&4. 相关tutorial&br&&br&基于Python的研究平台有以下一些,知乎上有大量关于这些平台的探讨,选择一个自己喜欢的,或者同时都用。&br&国外:1. quantopian:&a href=&///?target=https%3A///home& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&Quantopian&i class=&icon-external&&&/i&&/a& ,其library在github开源:&a href=&///?target=https%3A///quantopian/zipline& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&GitHub - quantopian/zipline: Zipline, a Pythonic Algorithmic Trading Library&i class=&icon-external&&&/i&&/a&&br&国内:1. &a href=&///?target=http%3A///%23/home& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&通联数据—让投资更容易,一站式金融信息服务云平台&i class=&icon-external&&&/i&&/a&
通联数据这家公司相当熟悉,也来我们公司路演过他们的产品,个人非常喜欢他们的工作方式和氛围。&br&2. &a href=&///?target=https%3A///& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&JoinQuant聚宽量化交易平台&i class=&icon-external&&&/i&&/a&&br&3. &a href=&///?target=https%3A///& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&Ricequant - Beta&i class=&icon-external&&&/i&&/a&&br&&br&一些相关开源资源,非常敬佩作者们的开源精神,仔细阅读他们的代码,绝对会受益匪浅。&br&1. 交易方面,用Python写的一个交易平台:&a class=& wrap external& href=&///?target=https%3A///vnpy/vnpy& target=&_blank& rel=&nofollow noreferrer&&GitHub - vnpy/vnpy: 基于python的开源交易平台开发框架&i class=&icon-external&&&/i&&/a& ,作者在之乎上非常活跃与热心,其专栏有许多干活 &a class=&internal& href=&/vn-py&&vn.py - 知乎专栏&/a&&br&2. 数据方面,用Python写的抓取数据的library: &a class=& wrap external& href=&///?target=https%3A///waditu/tushare& target=&_blank& rel=&nofollow noreferrer&&GitHub - waditu/tushare: TuShare is a utility for crawling historical data of China stocks&i class=&icon-external&&&/i&&/a&,官方网站:&a href=&///?target=http%3A///index.html& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&TuShare -财经数据接口包&i class=&icon-external&&&/i&&/a&&br&&br&&b&.............................................................. 思路篇
.....................................................................................&/b&&br&关于投资方法和思路,首当其冲的肯定是量化投资领域的&b&经典著作&/b&:&br&1.《主动投资组合管理:创造高收益并控制风险的量化投资方法》,该书问世已经20多年,一直是权威之作。两位作者都曾在BARRA供职10多年,BARRA的一些手册也是学习量化投资必备的,如:USE3、富国大拿李笑薇写的CHE2: Forecasting Chinese Equity Risk等;&br&2.《证券组合定量管理:构建与管理证券组合的积极策略》;&br&&br&一堆&b&学术期刊&/b&可以常常去浏览一下,也会有许多思路,作者常常看的有:&br&Journal of Finance&br&Journal of Financial Economics&br&Review of Financial Studies&br&Journal of Accounting and Economics&br&Review of Accounting Studies&br&Journal of Accounting Research&br&Accounting Review&br&Journal of Financial and Quantitative Analysis&br&Financial Analysts Journal&br&Financial Management&br&Journal of Empirical Finance&br&Quantitative Finance&br&Journal of Alternative Investments&br&Journal of Fixed Income&br&Journal of Investing&br&Journal of Portfolio Management&br&Journal of Trading&br&Review of Asset Pricing Studies&br&经济研究&br&经济学(季刊)&br&金融研究&br&管理世界&br&会计研究&br&投资研究&br&&br&我们在&b&SSRN&/b&上也能找到一些&b&行业前辈&/b&,可以follow,如:&br&&ol&&li&Clifford S. Asness,AQR的创始合伙人,&a href=&///?target=http%3A///sol3/cf_dev/AbsByAuth.cfm%3Fper_id%3D77768& class=& external& target=&_blank& rel=&nofollow noreferrer&&&span class=&invisible&&http://&/span&&span class=&visible&&/sol3/cf&/span&&span class=&invisible&&_dev/AbsByAuth.cfm?per_id=77768&/span&&span class=&ellipsis&&&/span&&i class=&icon-external&&&/i&&/a&&br&&/li&&li&Ari Levine,AQR,&a href=&///?target=http%3A///sol3/cf_dev/AbsByAuth.cfm%3Fper_id%3D2395000& class=& external& target=&_blank& rel=&nofollow noreferrer&&&span class=&invisible&&http://&/span&&span class=&visible&&/sol3/cf&/span&&span class=&invisible&&_dev/AbsByAuth.cfm?per_id=2395000&/span&&span class=&ellipsis&&&/span&&i class=&icon-external&&&/i&&/a&&/li&&li&Lasse Heje Pedersen,AQR,&a href=&///?target=http%3A///sol3/cf_dev/AbsByAuth.cfm%3Fper_id%3D277060& class=& external& target=&_blank& rel=&nofollow noreferrer&&&span class=&invisible&&http://&/span&&span class=&visible&&/sol3/cf&/span&&span class=&invisible&&_dev/AbsByAuth.cfm?per_id=277060&/span&&span class=&ellipsis&&&/span&&i class=&icon-external&&&/i&&/a&&/li&&li&Ananth Madhavan,BlackRock,&a href=&///?target=http%3A///sol3/cf_dev/AbsByAuth.cfm%3Fper_id%3D17360& class=& external& target=&_blank& rel=&nofollow noreferrer&&&span class=&invisible&&http://&/span&&span class=&visible&&/sol3/cf&/span&&span class=&invisible&&_dev/AbsByAuth.cfm?per_id=17360&/span&&span class=&ellipsis&&&/span&&i class=&icon-external&&&/i&&/a&&/li&&li&Vinesh Jha,ExtractAlpha的CEO,&a href=&///?target=http%3A///sol3/cf_dev/AbsByAuth.cfm%3Fper_id%3D2516022& class=& external& target=&_blank& rel=&nofollow noreferrer&&&span class=&invisible&&http://&/span&&span class=&visible&&/sol3/cf&/span&&span class=&invisible&&_dev/AbsByAuth.cfm?per_id=2516022&/span&&span class=&ellipsis&&&/span&&i class=&icon-external&&&/i&&/a&&/li&&li&Zura Kakushadze,Quantigic Solutions的 President,&a href=&///?target=http%3A///sol3/cf_dev/AbsByAuth.cfm%3Fper_id%3D2224789& class=& external& target=&_blank& rel=&nofollow noreferrer&&&span class=&invisible&&http://&/span&&span class=&visible&&/sol3/cf&/span&&span class=&invisible&&_dev/AbsByAuth.cfm?per_id=2224789&/span&&span class=&ellipsis&&&/span&&i class=&icon-external&&&/i&&/a&&/li&&li&Igor Tulchinsky,WorldQuant的Founder and CEO,&a class=& external& href=&///?target=http%3A///sol3/cf_dev/AbsByAuth.cfm%3Fper_id%3D2446171& target=&_blank& rel=&nofollow noreferrer&&&span class=&invisible&&http://&/span&&span class=&visible&&/sol3/cf&/span&&span class=&invisible&&_dev/AbsByAuth.cfm?per_id=2446171&/span&&span class=&ellipsis&&&/span&&i class=&icon-external&&&/i&&/a&&/li&&/ol&&br&跑程序的时候可以去浏览一些&b&热门blog&/b&:&br&&ol&&li&银行股的大拿flitter,&a href=&///?target=http%3A//.cn/u/& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&flitter_新浪博客&i class=&icon-external&&&/i&&/a&&/li&&li&《低风险投资之路》的作者David,&a class=& wrap external& href=&///?target=http%3A//.cn/financialindependence& target=&_blank& rel=&nofollow noreferrer&&david自由之路&i class=&icon-external&&&/i&&/a&&/li&&li&可转债的大拿安道全:&a href=&///?target=http%3A//.cn/hj10n& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&作者安道全_新浪博客&i class=&icon-external&&&/i&&/a&&/li&&li&债券的大拿没钱又丑:&a href=&///?target=http%3A//wangzhai2008./& class=& external& target=&_blank& rel=&nofollow noreferrer&&&span class=&invisible&&http://&/span&&span class=&visible&&wangzhai2008.&/span&&span class=&invisible&&/&/span&&span class=&ellipsis&&&/span&&i class=&icon-external&&&/i&&/a&&/li&&li&期货用来复盘的blog:&a href=&///?target=http%3A//huzi2010./& class=& external& target=&_blank& rel=&nofollow noreferrer&&&span class=&invisible&&http://&/span&&span class=&visible&&huzi2010.&/span&&span class=&invisible&&/&/span&&span class=&ellipsis&&&/span&&i class=&icon-external&&&/i&&/a&&/li&&li&股市职业操盘专家,知名财经作家花荣:&a href=&///?target=http%3A//.cn/hjhh& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&花荣_新浪博客&i class=&icon-external&&&/i&&/a&&/li&&li&股海泛舟:&a href=&///?target=http%3A//xman707./& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&股海泛舟 - 股海范舟&i class=&icon-external&&&/i&&/a&&/li&&li&股票狂人带头大哥777:&a class=& wrap external& href=&///?target=http%3A//dtdg777./& target=&_blank& rel=&nofollow noreferrer&&带头大哥777的博客&i class=&icon-external&&&/i&&/a&&/li&&li&Paul Wilmott:&a href=&///?target=https%3A///blogs/paul/index.cfm& class=& external& target=&_blank& rel=&nofollow noreferrer&&&span class=&invisible&&https://www.&/span&&span class=&visible&&/blogs/paul/&/span&&span class=&invisible&&index.cfm&/span&&span class=&ellipsis&&&/span&&i class=&icon-external&&&/i&&/a&&/li&&li&quantopian:&a href=&///?target=http%3A///& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&Quantopian Blog&i class=&icon-external&&&/i&&/a&&/li&&li&The Trend is your Friend:&a href=&///?target=http%3A//www.the-trend-is-/& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&The Trend is your Friend&i class=&icon-external&&&/i&&/a&&/li&&li&Practical Quant:&a href=&///?target=http%3A///& class=& external& target=&_blank& rel=&nofollow noreferrer&&&span class=&invisible&&http://&/span&&span class=&visible&&&/span&&span class=&invisible&&/&/span&&span class=&ellipsis&&&/span&&i class=&icon-external&&&/i&&/a&&/li&&li&John Mauldin:&a href=&///?target=http%3A///blogs/john_mauldins_outside_the_box/default.aspx& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&John Mauldin's Outside the Box&i class=&icon-external&&&/i&&/a&&/li&&li&Quantum Financier:&a href=&///?target=https%3A///& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&Quantum Financier&i class=&icon-external&&&/i&&/a&&/li&&li&Quantified Strategies:&a href=&///?target=http%3A///& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&Quantified Strategies&i class=&icon-external&&&/i&&/a&&/li&&li&BlackRock Blog:&a class=& external& href=&///?target=https%3A///& target=&_blank& rel=&nofollow noreferrer&&&span class=&invisible&&https://www.&/span&&span class=&visible&&/&/span&&span class=&invisible&&&/span&&i class=&icon-external&&&/i&&/a&&/li&&li&Quant at Risk:&a href=&///?target=http%3A///& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&Quant at Risk&i class=&icon-external&&&/i&&/a&&/li&&/ol&&br&&b&卖方的研究报告&/b&不得不提一下,虽然说绝大多数报告的研究结果都不可信,过拟合算是比较轻微的现象,更有甚者是压根无法提供中间数据,但是从动机上讲,卖方研究员也同样有动力开发又好和又新的策略,卖方金工团队大的近20人,小的也有3、5人,这些智慧也不能忽视。&br&&br&&img data-rawheight=&1382& data-rawwidth=&1920& src=&/74a444b658fcbbe4958d2ac_b.jpg& class=&origin_image zh-lightbox-thumb& width=&1920& data-original=&/74a444b658fcbbe4958d2ac_r.jpg&&&br&最后要提的是,上述资料主要给我们提供一些思路,在投资实践中如何精炼出其中的金子,需要我们细心和用心的去挖掘,挖矿的过程常常是单调和枯燥的,但是当我们真正找到金子、或者单单是从一个思路衍生出另一个思路的时候又是喜悦的 ,希望题主和我一样,乐于其中
作为量化投资领域从业几年的老兵,关于量化投资入门,分工具篇和思路篇给题主一些借鉴:
.............................................................. 工具篇 .....................................................................................…
&p&一、首先要学习量化的工具&/p&&p&1、
软件推荐:python&/p&&p&常用的量化软件有python、matlab、java、C++。从开发难度而言python和matlab都比较容易,java和C++麻烦一些。从运行速度而言,C++、java要快于matlab和python。不过对于大部分人而言,尤其是初学者,开发占用的时间远大于运行时间。如果追求运行速度的话,先将策略开发出来,再用C重写也不迟。另外,从量化资源而言,python资源多于matlab,而且matlab是商业软件,python是免费的。因此我推荐大家用python。&/p&&p&使用python的话,最好下载一个anaconda。这个软件将常用的库都集成好了,免去自己安装的烦恼。下载地址:&a href=&///?target=https%3A//www.continuum.io/downloads& class=& external& target=&_blank& rel=&nofollow noreferrer&&&span class=&invisible&&https://www.&/span&&span class=&visible&&continuum.io/downloads&/span&&span class=&invisible&&&/span&&i class=&icon-external&&&/i&&/a&&/p&&p&python教程推荐这个网站:&a href=&///?target=http%3A//lectures.quantecon.org/py/index.html& class=& external& target=&_blank& rel=&nofollow noreferrer&&&span class=&invisible&&http://&/span&&span class=&visible&&lectures.quantecon.org/&/span&&span class=&invisible&&py/index.html&/span&&span class=&ellipsis&&&/span&&i class=&icon-external&&&/i&&/a&只需要看第一部分就可以了。该教程不仅介绍了python,而且介绍了numpy,scipy,pandas,matplotlib等科学计算库。&/p&&p&2、
数据源推荐:tushare&/p&&p&Tushare支持的数据很全面,相比wind个人版量化接口,tushare更友好。因此推荐tushare。下载地址:&a href=&///?target=http%3A///& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&TuShare -财经数据接口包&i class=&icon-external&&&/i&&/a&&/p&&p&3、
量化框架:推荐使用量化平台&/p&&p&量化平台可以看成是一个已经搭建好的框架。用户只需添加一些自己的买卖条件,即可回测策略,免去了自己从无到有搭建基础框架的过程。&/p&&p&以上是做量化的一些基础工具。另外根据策略类型的不同,也会用到一些其他工具。&/p&&p&1、
数据库推荐:sqlite&/p&&p&如果所做的策略需要存储很多数据,那么就需要一个数据库软件,配合使用。Python自带sqlite3库,可以在python中方便的操作sqlite数据库。Sqlite下载地址:&a href=&///?target=https%3A//www.sqlite.org/& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&SQLite Home Page&i class=&icon-external&&&/i&&/a&&/p&&p&使用方法可以参考:&a href=&///?target=http%3A///sqlite/sqlite-python.html& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&SQLite - Python | 菜鸟教程&i class=&icon-external&&&/i&&/a&&/p&&p&2、
机器学习推荐:scikit-learn&/p&&p&Scikit-learn封装了很多常用的算法,直接用就可以了,避免了自己写算法。网址:&/p&&a href=&///?target=http%3A//scikit-learn.org/stable/& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&scikit-learn: machine learning in Python&i class=&icon-external&&&/i&&/a&&p&另外推荐一本机器学习的书“集体智慧编程”,至于购买链接嘛
就不发了免得别人以为我是打广告的。&/p&&p&3、
网络信息采集推荐:Beautifulsoup等&/p&&p&关于这方面可以参考“Python网络数据采集”这本书。链接也不说了 QAQ。&/p&&p&二、选择一个量化平台跟量化工具&/p&&p&由于现在主流量化都是python,免费资料在下面。&/p&&br&&p&新手专区:&/p&&p&量化学习资料:&a href=&///?target=https%3A//club./quant/topic/789049& class=& external& target=&_blank& rel=&nofollow noreferrer&&&span class=&invisible&&https://&/span&&span class=&visible&&club./quant/to&/span&&span class=&invisible&&pic/789049&/span&&span class=&ellipsis&&&/span&&i class=&icon-external&&&/i&&/a&&/p&&p&Python学习资料:&a href=&///?target=https%3A//club./quant/topic/834227& class=& external& target=&_blank& rel=&nofollow noreferrer&&&span class=&invisible&&https://&/span&&span class=&visible&&club./quant/to&/span&&span class=&invisible&&pic/834227&/span&&span class=&ellipsis&&&/span&&i class=&icon-external&&&/i&&/a&&/p&&p&python学习教程:&a href=&///?target=https%3A//club./quant/topic/760702& class=& external& target=&_blank& rel=&nofollow noreferrer&&&span class=&invisible&&https://&/span&&span class=&visible&&club./quant/to&/span&&span class=&invisible&&pic/760702&/span&&span class=&ellipsis&&&/span&&i class=&icon-external&&&/i&&/a&&/p&&p&python、java编程基础视频1:&a href=&///?target=https%3A//club./quant/topic/877114& class=& external& target=&_blank& rel=&nofollow noreferrer&&&span class=&invisible&&https://&/span&&span class=&visible&&club./quant/to&/span&&span class=&invisible&&pic/877114&/span&&span class=&ellipsis&&&/span&&i class=&icon-external&&&/i&&/a&&/p&&p&python、java编程基础视频2:&a href=&///?target=https%3A//club./quant/topic/877215& class=& external& target=&_blank& rel=&nofollow noreferrer&&&span class=&invisible&&https://&/span&&span class=&visible&&club./quant/to&/span&&span class=&invisible&&pic/877215&/span&&span class=&ellipsis&&&/span&&i class=&icon-external&&&/i&&/a&&/p&&p&python技术指标均线应用:&a href=&///?target=https%3A//club./quant/topic/778188& class=& external& target=&_blank& rel=&nofollow noreferrer&&&span class=&invisible&&https://&/span&&span class=&visible&&club./quant/to&/span&&span class=&invisible&&pic/778188&/span&&span class=&ellipsis&&&/span&&i class=&icon-external&&&/i&&/a&&/p&&p&python技术指标kdj应用:&a href=&///?target=https%3A//club./quant/topic/778178& class=& external& target=&_blank& rel=&nofollow noreferrer&&&span class=&invisible&&https://&/span&&span class=&visible&&club./quant/to&/span&&span class=&invisible&&pic/778178&/span&&span class=&ellipsis&&&/span&&i class=&icon-external&&&/i&&/a&&/p&&p&python指标macd的应用:&a href=&///?target=https%3A//club./quant/topic/778177& class=& external& target=&_blank& rel=&nofollow noreferrer&&&span class=&invisible&&https://&/span&&span class=&visible&&club./quant/to&/span&&span class=&invisible&&pic/778177&/span&&span class=&ellipsis&&&/span&&i class=&icon-external&&&/i&&/a&&/p&&p&python去除是停牌、退市、st创业版股票:&a href=&///?target=https%3A//club./quant/topic/778173& class=& external& target=&_blank& rel=&nofollow noreferrer&&&span class=&invisible&&https://&/span&&span class=&visible&&club./quant/to&/span&&span class=&invisible&&pic/778173&/span&&span class=&ellipsis&&&/span&&i class=&icon-external&&&/i&&/a&&/p&&p&python策略中获取指数成分股的历史行情数据:&a href=&///?target=http%3A//club./quant/topic/938309& class=& external& target=&_blank& rel=&nofollow noreferrer&&&span class=&invisible&&http://&/span&&span class=&visible&&club./quant/to&/span&&span class=&invisible&&pic/938309&/span&&span class=&ellipsis&&&/span&&i class=&icon-external&&&/i&&/a&&/p&&p&&b&最新的Java内容。&/b&&/p&&p&羊驼策略初步研究:&a href=&///?target=https%3A//club./quant/topic/854721& class=& external& target=&_blank& rel=&nofollow noreferrer&&&span class=&invisible&&https://&/span&&span class=&visible&&club./quant/to&/span&&span class=&invisible&&pic/854721&/span&&span class=&ellipsis&&&/span&&i class=&icon-external&&&/i&&/a& &/p&&p&统计套利之配对交易(pairs trading):&a href=&///?target=https%3A//club./quant/topic/787798& class=& external& target=&_blank& rel=&nofollow noreferrer&&&span class=&invisible&&https://&/span&&span class=&visible&&club./quant/to&/span&&span class=&invisible&&pic/787798&/span&&span class=&ellipsis&&&/span&&i class=&icon-external&&&/i&&/a&&/p&&p&文本挖掘如何应用于量化投资:&a href=&///?target=https%3A//club./quant/topic/843393& class=& external& target=&_blank& rel=&nofollow noreferrer&&&span class=&invisible&&https://&/span&&span class=&visible&&club./quant/to&/span&&span class=&invisible&&pic/843393&/span&&span class=&ellipsis&&&/span&&i class=&icon-external&&&/i&&/a&&/p&&p&文本挖掘之数据爬虫:&a href=&///?target=https%3A//club./quant/topic/871691& class=& external& target=&_blank& rel=&nofollow noreferrer&&&span class=&invisible&&https://&/span&&span class=&visible&&club./quant/to&/span&&span class=&invisible&&pic/871691&/span&&span class=&ellipsis&&&/span&&i class=&icon-external&&&/i&&/a&&/p&&p&利用舆情情感得分进行量化选股初探:&a href=&///?target=https%3A//club./quant/topic/856753& class=& external& target=&_blank& rel=&nofollow noreferrer&&&span class=&invisible&&https://&/span&&span class=&visible&&club./quant/to&/span&&span class=&invisible&&pic/856753&/span&&span class=&ellipsis&&&/span&&i class=&icon-external&&&/i&&/a&&/p&&p&技术分析量化大讲堂之开篇—SMA:talib vs.行情软件:&a href=&///?target=https%3A//club./quant/topic/839442& class=& external& target=&_blank& rel=&nofollow noreferrer&&&span class=&invisible&&https://&/span&&span class=&visible&&club./quant/to&/span&&span class=&invisible&&pic/839442&/span&&span class=&ellipsis&&&/span&&i class=&icon-external&&&/i&&/a&&/p&&p&技术分析量化大讲堂——上升三角形整理形态:&a href=&///?target=https%3A//club./quant/topic/853825& class=& external& target=&_blank& rel=&nofollow noreferrer&&&span class=&invisible&&https://&/span&&span class=&visible&&club./quant/to&/span&&span class=&invisible&&pic/853825&/span&&span class=&ellipsis&&&/span&&i class=&icon-external&&&/i&&/a&&/p&&p&技术分析量化大讲堂------上升三角形(修改版):&a href=&///?target=https%3A//club./quant/topic/867675& class=& external& target=&_blank& rel=&nofollow noreferrer&&&span class=&invisible&&https://&/span&&span class=&visible&&club./quant/to&/span&&span class=&invisible&&pic/867675&/span&&span class=&ellipsis&&&/span&&i class=&icon-external&&&/i&&/a&&/p&&p&技术分析量化大讲堂——多方炮:&a href=&///?target=https%3A//club./quant/topic/881252& class=& external& target=&_blank& rel=&nofollow noreferrer&&&span class=&invisible&&https://&/span&&span class=&visible&&club./quant/to&/span&&span class=&invisible&&pic/881252&/span&&span class=&ellipsis&&&/span&&i class=&icon-external&&&/i&&/a&&/p&&p&量化策略方法分享之数据挖掘工具——决策树算法:&a href=&///?target=https%3A//club./quant/topic/841642& class=& external& target=&_blank& rel=&nofollow noreferrer&&&span class=&invisible&&https://&/span&&span class=&visible&&club./quant/to&/span&&span class=&invisible&&pic/841642&/span&&span class=&ellipsis&&&/span&&i class=&icon-external&&&/i&&/a&&/p&&p&量化策略方法分享之数据挖掘工具——决策树算法(续):&a href=&///?target=https%3A//club./quant/topic/841923& class=& external& target=&_blank& rel=&nofollow noreferrer&&&span class=&invisible&&https://&/span&&span class=&visible&&club./quant/to&/span&&span class=&invisible&&pic/841923&/span&&span class=&ellipsis&&&/span&&i class=&icon-external&&&/i&&/a&&/p&&p&摩根斯坦利旗下基金的择时指标介绍:&a href=&///?target=https%3A//club./quant/topic/854923& class=& external& target=&_blank& rel=&nofollow noreferrer&&&span class=&invisible&&https://&/span&&span class=&visible&&club./quant/to&/span&&span class=&invisible&&pic/854923&/span&&span class=&ellipsis&&&/span&&i class=&icon-external&&&/i&&/a&&/p&&p&基于隐式马尔可夫模型的市场择时简介:&a href=&///?target=https%3A//club./quant/topic/883453& class=& external& target=&_blank& rel=&nofollow noreferrer&&&span class=&invisible&&https://&/span&&span class=&visible&&club./quant/to&/span&&span class=&invisible&&pic/883453&/span&&span class=&ellipsis&&&/span&&i class=&icon-external&&&/i&&/a&&/p&&p&成长股内在价值策略分享:&a href=&///?target=https%3A//club./quant/topic/902319& class=& external& target=&_blank& rel=&nofollow noreferrer&&&span class=&invisible&&https://&/span&&span class=&visible&&club./quant/to&/span&&span class=&invisible&&pic/902319&/span&&span class=&ellipsis&&&/span&&i class=&icon-external&&&/i&&/a&&/p&&p&股价增长率与营业利润率之比选股策略:&a href=&///?target=https%3A//club./quant/topic/836018& class=& external& target=&_blank& rel=&nofollow noreferrer&&&span class=&invisible&&https://&/span&&span class=&visible&&club./quant/to&/span&&span class=&invisible&&pic/836018&/span&&span class=&ellipsis&&&/span&&i class=&icon-external&&&/i&&/a&&/p&&p&股价增长率与营业利润率之比选股策略(修改版):&a href=&///?target=https%3A//club./quant/topic/846196& class=& external& target=&_blank& rel=&nofollow noreferrer&&&span class=&invisible&&https://&/span&&span class=&visible&&club./quant/to&/span&&span class=&invisible&&pic/846196&/span&&span class=&ellipsis&&&/span&&i class=&icon-external&&&/i&&/a&&/p&&p&股价增长率与营业利润率之比选股策略(修改X2版):&a href=&///?target=https%3A//club./quant/topic/860683& class=& external& target=&_blank& rel=&nofollow noreferrer&&&span class=&invisible&&https://&/span&&span class=&visible&&club./quant/to&/span&&span class=&invisible&&pic/860683&/span&&span class=&ellipsis&&&/span&&i class=&icon-external&&&/i&&/a&&/p&&p&选择涨停股的技巧有哪些:&a href=&///?target=https%3A//club./quant/topic/774972& class=& external& target=&_blank& rel=&nofollow noreferrer&&&span class=&invisible&&https://&/span&&span class=&visible&&club./quant/to&/span&&span class=&invisible&&pic/774972&/span&&span class=&ellipsis&&&/span&&i class=&icon-external&&&/i&&/a&&/p&&p&京东量化平台初始化类函数及任务事件类函数介绍:&a href=&///?target=https%3A//club./quant/topic/877220& class=& external& target=&_blank& rel=&nofollow noreferrer&&&span class=&invisible&&https://&/span&&span class=&visible&&club./quant/to&/span&&span class=&invisible&&pic/877220&/span&&span class=&ellipsis&&&/span&&i class=&icon-external&&&/i&&/a&&/p&&p&多因子选股:&a href=&///?target=https%3A//club./quant/topic/878463& class=& external& target=&_blank& rel=&nofollow noreferrer&&&span class=&invisible&&https://&/span&&span class=&visible&&club./quant/to&/span&&span class=&invisible&&pic/878463&/span&&span class=&ellipsis&&&/span&&i class=&icon-external&&&/i&&/a&&/p&&p&小市值策略:&a href=&///?target=https%3A//club./quant/topic/894215& class=& external& target=&_blank& rel=&nofollow noreferrer&&&span class=&invisible&&https://&/span&&span class=&visible&&club./quant/to&/span&&span class=&invisible&&pic/894215&/span&&span class=&ellipsis&&&/span&&i class=&icon-external&&&/i&&/a&&/p&&p&如何控制回撤:&a href=&///?target=http%3A//club./quant/topic/913308& class=& external& target=&_blank& rel=&nofollow noreferrer&&&span class=&invisible&&http://&/span&&span class=&visible&&club./quant/to&/span&&span class=&invisible&&pic/913308&/span&&span class=&ellipsis&&&/span&&i class=&icon-external&&&/i&&/a&&/p&&p&控制回撤的第二种方法--依据持仓总资金:&a href=&///?target=http%3A//club./quant/topic/914524& class=& external& target=&_blank& rel=&nofollow noreferrer&&&span class=&invisible&&http://&/span&&span class=&visible&&club./quant/to&/span&&span class=&invisible&&pic/914524&/span&&span class=&ellipsis&&&/span&&i class=&icon-external&&&/i&&/a&&/p&&p&小工具函数——查询涨跌停:&a href=&///?target=http%3A//club./quant/topic/930708& class=& external& target=&_blank& rel=&nofollow noreferrer&&&span class=&invisible&&http://&/span&&span class=&visible&&club./quant/to&/span&&span class=&invisible&&pic/930708&/span&&span class=&ellipsis&&&/span&&i class=&icon-external&&&/i&&/a&&/p&&p&高卖低买赚Spread策略分享:&a href=&///?target=http%3A//club./quant/topic/921694& class=& external& target=&_blank& rel=&nofollow noreferrer&&&span class=&invisible&&http://&/span&&span class=&visible&&club./quant/to&/span&&span class=&invisible&&pic/921694&/span&&span class=&ellipsis&&&/span&&i class=&icon-external&&&/i&&/a&&/p&&p&资本资产定价模型简介-多因子寻找Alpha&统计套利:&a href=&///?target=http%3A//club./quant/topic/935852& class=& external& target=&_blank& rel=&nofollow noreferrer&&&span class=&invisible&&http://&/span&&span class=&visible&&club./quant/to&/span&&span class=&invisible&&pic/935852&/span&&span class=&ellipsis&&&/span&&i class=&icon-external&&&/i&&/a&&/p&&p&依据最大回撤择时策略:&a href=&///?target=http%3A//club./quant/topic/940473& class=& external& target=&_blank& rel=&nofollow noreferrer&&&span class=&invisible&&http://&/span&&span class=&visible&&club./quant/to&/span&&span class=&invisible&&pic/940473&/span&&span class=&ellipsis&&&/span&&i class=&icon-external&&&/i&&/a&&/p&&p&一个简单的买卖止盈止损分时买卖框架:&a href=&///?target=http%3A//club./quant/topic/939467& class=& external& target=&_blank& rel=&nofollow noreferrer&&&span class=&invisible&&http://&/span&&span class=&visible&&club./quant/to&/span&&span class=&invisible&&pic/939467&/span&&span class=&ellipsis&&&/span&&i class=&icon-external&&&/i&&/a&&/p&&p&Java编程:&/p&&p&[JAVA]简单买卖策略:
&a href=&///?target=https%3A//club./quant/topic/913981& class=& external& target=&_blank& rel=&nofollow noreferrer&&&span class=&invisible&&https://&/span&&span class=&visible&&club./quant/to&/span&&span class=&invisible&&pic/913981&/span&&span class=&ellipsis&&&/span&&i class=&icon-external&&&/i&&/a&&/p&&p&[JAVA]MACD选股:&a href=&///?target=https%3A//club./quant/topic/743815& class=& external& target=&_blank& rel=&nofollow noreferrer&&&span class=&invisible&&https://&/span&&span class=&visible&&club./quant/to&/span&&span class=&invisible&&pic/743815&/span&&span class=&ellipsis&&&/span&&i class=&icon-external&&&/i&&/a&&/p&&p&[JAVA]RSI策略: &a href=&///?target=https%3A//club./quant/topic/743816& class=& external& target=&_blank& rel=&nofollow noreferrer&&&span class=&invisible&&https://&/span&&span class=&visible&&club./quant/to&/span&&span class=&invisible&&pic/743816&/span&&span class=&ellipsis&&&/span&&i class=&icon-external&&&/i&&/a&&/p&&p&[JAVA]按财务数据选股策略: &a href=&///?target=https%3A//club./quant/topic/743817& class=& external& target=&_blank& rel=&nofollow noreferrer&&&span class=&invisible&&https://&/span&&span class=&visible&&club./quant/to&/span&&span class=&invisible&&pic/743817&/span&&span class=&ellipsis&&&/span&&i class=&icon-external&&&/i&&/a&&/p&&p&[JAVA]mas策略: &a href=&///?target=https%3A//club./quant/topic/913988& class=& external& target=&_blank& rel=&nofollow noreferrer&&&span class=&invisible&&https://&/span&&span class=&visible&&club./quant/to&/span&&span class=&invisible&&pic/913988&/span&&span class=&ellipsis&&&/span&&i class=&icon-external&&&/i&&/a&&/p&&p&突然发现汇总起来还是蛮多的,各位观众老爷寻找几个适合自己的就好。&/p&&p&三、说一下国内国内量化交易员的日常工作吧&/p&&p&其实我也没见过,就是想让大家多了解下。&/p&&p&随着量化投资的概念在国内逐渐流行,量化交易员这个听起来神秘又高大上的职业也逐渐走入人们的视野,笔者也曾经面试相关的岗位,有考核行测+投资理念的,也有考核各种衍生品相关知识外加编程及数据库相关知识的,大体上都要求有较好的数理分析和逻辑思维,至少掌握一门熟练的语言等,通常计算机水平对采用程序化交易方式来说要求更高,笔者在浏览了相关大牛的看法之后,结合自己的一些见解,总结了量化交易员日常的工作内容:&/p&&p&量化交易员平常的工作其实没有固定的模式,但总结下来大都包括: 现有策略的管理维护,看盘(通常开N个窗口,大都是定制化的各种彩色表格、图、列表和滚动新闻的组合)以及查看策略有没有乱发单,开发新的策略,每日进行盘后处理,统计委托、持仓、波动率、滑点等等,这些工作听起来琐碎且机械,但真正开发出所谓的印钞机达到躺赢的境界可谓少之又少,大部分人仍然需要不断学习并且经历各种市场的考验,笔者观察下来量化交易日常工作中那些不可言说的痛苦之处在于: &/p&&p&1、灵感,这种东西说起来很虚,实际上在市场上策略逐渐趋同、逐渐失效的过程中是很重要的,当技术和知识不再成为做交易的壁垒之时,也许我们缺乏的就是些许创造性与洞察力,搬运国外学术paper中介绍的方法一定是有效的吗,自己绞尽脑汁更新了好几个版本的新策略回测时各种指标竟然远不如行业内正火热的几个“经典策略”,是数据不对还是自己遗漏了什么细节,市场总是公平而又残酷的。&/p&&p&2、心理,投资讲求的是心理战,对于量化交易员来说,程序化交易的方式可以避免一部分人性的因素,但是否干预、何时干预模型(尤其是模型并不完备)一直是一个长期困扰交易员的问题,长期在概率上占优看起来美好,可是当来自客户的要求越来越多,账户持续亏损的情况下,有多少人不对自己的模型产生怀疑,又有多少人拥有长期的机会,实盘中的交易员无异于在前线上的士兵只不过他的对手更加凶狠且无形。&/p&&p&3、不确定性,个人认为,量化交易者同时也需要结合一些基本面,尤其是在国内金融市场信息不对称、噪声大以及监管因素变化下能够从市场调研中获得有效信息以减少不确定性是相当重要的,尤其是当结合爬虫和自然语言分析等的舆情分析系统日渐成熟后使得量化交易员能够迅速对极端事件做出反映。此外,不确定性的来源较多以至于交易者在某些条件不具备的情况下依然能对交易产生巨大影响,相信在商品期货急速上涨下跌的黑色星期五被强平在跌停价的交易者都深有体会。量化交易这条路充满凶险,注定是少数“成功者”分享胜利果实,努力拼搏,保持热忱,争取成为这条群雄逐鹿的勇者之路上最后活着的一批人吧。&/p&&p&勇者之路-国内量化交易员的日常工作状态
&a href=&///?target=http%3A//club./quant/topic/963592& class=& external& target=&_blank& rel=&nofollow noreferrer&&&span class=&invisible&&http://&/span&&span class=&visible&&club./quant/to&/span&&span class=&invisible&&pic/963592&/span&&span class=&ellipsis&&&/span&&i class=&icon-external&&&/i&&/a&&/p&&p&四、推荐图书&/p&&p&想了想还是给大家推荐几本书吧,全发出来太长了放个链接好了。&/p&&p&图书推荐传送门:&a href=&///?target=http%3A//club./quant/topic/963246& class=& external& target=&_blank& rel=&nofollow noreferrer&&&span class=&invisible&&http://&/span&&span class=&visible&&club./quant/to&/span&&span class=&invisible&&pic/963246&/span&&span class=&ellipsis&&&/span&&i class=&icon-external&&&/i&&/a&&/p&&p&&b&五、如何设计量化交易策略?&/b&&/p&&p&设计量化交易策略其实就是一个想法+验证的过程。下面分别说一下:&/p&&p&&b&一、想法的来源&/b&:&/p&&p&大概有以下几个思路:&/p&&p&1、金融理论。&/p&&p&金融理论里资产定价的核心就是无套利原则。这里说的套利既包括通常意义的统计套利,也包括更宽泛的概念比如相同的预期收益率下,卖出风险较大的组合,买入风险较小的组合,也是一种套利。因此,多因子模型就是一种套利模型,承担相同风险下,寻找收益率最高的因子组合,从而得到对冲后的alpha。由于这部分是比较学院派的做法,因此推荐大家看下知名的教科书,比如博迪的《投资学》。&/p&&p&2、符合逻辑的直觉&/p&&p&比如从内部人获取信息的角度,大股东以及管理层增持意味着对本公司发展有信心,因此预期公司业绩向好。比如破增发价且距解禁日在一段时间内,那么上市公司可能有维持股价的动力。再比如通过分析与个股相关的新闻,从而能够判断市场对该股的情绪、态度等。这种类型的策略的关键是想法要符合逻辑,符合直觉。&/p&&p&3、一些经典的方法&/p&&p&比如海龟策略,dual thrust,羊驼选股、二八轮动等等。可以借鉴一下这些经典策略的思路,不过要注意一下这些策略在今天还是否有效。&/p&&p&&b&二、验证过程:&/b&&/p&&p&1、 目测观察&/p&&p&这个方法主要适用上述的第二种方法。比如大股东增持,我们可以先在交易软件中,寻找到大股东增持的个股及发生的时间点,然后观察一下之后的走势,是不是和我们的逻辑一样。&/p&&p&2、 回测&/p&&p&这部分主要是用历史数据对上述想法进行验证,也包括调参数等。&/p&&p&3、 测试稳定性&/p&&p&在回测中,我们通常会反复调整参数,让策略达到理想的表现,但这样往往会导致过拟合。一中排除方法是将参数稍微做些变动,观察策略的表现。比如原策略是每月1日调仓,我们可以改为每月3日调仓,然后观察一下结果,如果策略差距较大,那么原策略就很可能是过拟合。&/p&&p&另外持仓数量也值得注意。与基本面分析需要深入个股层面不同,量化策略并不对个股基本面进行深度研究,而是通过分散化降低个股层面的异质风险。因此如果一个策略平均持仓很少(10只一下)那么策略的表现可能只是某一只个股表现好,这是可能采取一些验证方法,比如原来选股是选排名前10,那么可以换成排名10-20,如果差距较大,那么说明策略可能只是运气好。&/p&
一、首先要学习量化的工具1、 软件推荐:python常用的量化软件有python、matlab、java、C++。从开发难度而言python和matlab都比较容易,java和C++麻烦一些。从运行速度而言,C++、java要快于matlab和python。不过对于大部分人而言,尤其是初学者,开发占用…
&img src=&/v2-49ec86b4759aaa7fcb6ec5_b.png& data-rawwidth=&1271& data-rawheight=&619& class=&origin_image zh-lightbox-thumb& width=&1271& data-original=&/v2-49ec86b4759aaa7fcb6ec5_r.png&&&h2&&b&update:&/b&&/h2&&p&再次更新了这个库,最多可支持 30 支股票同时推送,具体用法戳:&a href=&/?target=https%3A///ipreacher/Stock_WeChat& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&GitHub - ipreacher/Stock_WeChat: 微信股价预警提示&i class=&icon-external&&&/i&&/a&&/p&&p&# ==============================&/p&&h2&&b&update:&/b&&/h2&&p&更新了这个库,在原本推送模式的基础上增加了提醒模式,具体用法戳:&a href=&/?target=https%3A///ipreacher/Stock_WeChat& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&GitHub - ipreacher/Stock_WeChat: 微信股价预警提示&i class=&icon-external&&&/i&&/a&&/p&&p&# ==============================&/p&&h2&&b&update:&/b&&/h2&&p&早上把这个小脚本打包传到 pypi 上,也算是个“库”了,。&br&&/p&&p&不单独发专栏污染大家的 tl 了,戳这里看吧:&a href=&/?target=https%3A//ipreacher.github.io/2017/pip/& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&Stock_WeChat 上线啦&i class=&icon-external&&&/i&&/a&&/p&&p&# ==============================&/p&&br&&p&昨晚上想做一个股价提示,一旦指定的股价到达预警价格就向自己的微信发一条信息,于是早上就把这东西搞定了。但也没想到原来只需要 50 行代码就搞定了。&/p&&p&据此操作的一切交易后果与本人无关,但如果这些对你有帮助,不妨通过 &a href=&/?target=http%3A//ol5pvu2w5./wechat.JPG& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&微信&i class=&icon-external&&&/i&&/a& 或 &a href=&/?target=http%3A//ol5pvu2w5./Alipay.JPG& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&支付宝&i class=&icon-external&&&/i&&/a& 对我捐助。&/p&&br&&h1&&b&实现功能&/b&&/h1&&ul&&li&&p&设置单支股票价格微信提示&/p&&/li&&li&&p&测试版脚本支持定时开启,但尚不稳定&/p&&/li&&/ul&&p&微信端截图:&/p&&img src=&/v2-531f9e736fa39ed9b740360bea2b9eb1_b.png& data-rawwidth=&750& data-rawheight=&1334& class=&origin_image zh-lightbox-thumb& width=&750& data-original=&/v2-531f9e736fa39ed9b740360bea2b9eb1_r.png&&&br&&p&Terminal 截图:&br&&/p&&img src=&/v2-c6ef6ea4c0edb40f0c8fd5d3b3963e9d_b.png& data-rawwidth=&1364& data-rawheight=&956& class=&origin_image zh-lightbox-thumb& width=&1364& data-original=&/v2-c6ef6ea4c0edb40f0c8fd5d3b3963e9d_r.png&&&br&&h1&&b&起因&/b&&/h1&&p&前些天卖飞了一支股票,原因是没有一直盯盘,把单子一挂就忘了这事,到收盘才发现原来卖飞了。很多 app 不是支持买卖价格预警吗?但问题是,我并不会留心去打开这些 app,特别是在我习惯于把所有 app 的提示全关了的情况下。而微信提示就很有优势,下面这张截图应该很能说明问题:&/p&&img src=&/v2-9dafbbfffd_b.png& data-rawwidth=&750& data-rawheight=&1334& class=&origin_image zh-lightbox-thumb& width=&750& data-original=&/v2-9dafbbfffd_r.png&&&br&&p&所以推送到微信来提示我买卖价格已经到位,是一个非常不错的选择。&/p&&br&&h1&&b&思路&/b&&/h1&&p&最开始的思路是用新浪股票的接口,爬下来之后再推送到手机上。但是转念一想,股票价格的接口,当然是现成的轮子最好——那就不用说了,用 &a href=&/?target=https%3A///waditu/tushare& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&tushare&i class=&icon-external&&&/i&&/a& 吧。&/p&&p&然后怎么推送到微信上呢?还有个轮子很实用,那就是 &a href=&/?target=https%3A///littlecodersh/ItChat& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&ItChat&i class=&icon-external&&&/i&&/a&。&/p&&p&有了这两个轮子,想实现“微信股价提示”也就并不难了。&/p&&br&&h1&&b&具体代码&/b&&/h1&&p&其实注释里把具体的代码思路都写得蛮清楚的了:&/p&&div class=&highlight&&&pre&&code class=&language-text&&&span&&/span&__author__ = 'ipreacher'
import time
import itchat
import datetime
import tushare as ts
stock_symbol = input('请输入股票代码 \n&
price_low = input('请输入最低预警价格 \n&
price_high = input('请输入最高预警价格 \n&
# 登陆微信
def login():
itchat.auto_login()
# 获取股价并发送提醒
def stock():
time = datetime.datetime.now()
# 获取当前时间
now = time.strftime('%H:%M:%S')
data = ts.get_realtime_quotes(stock_symbol)
# 获取股票信息
r1 = float(data['price'])
r2 = str(stock_symbol) + ' 的当前价格为 ' + str(r1)
content = now + '\n' + r2
itchat.send(content, toUserName='filehelper')
print(content)
# 设置预警价格并发送预警信息
if r1 &= float(price_low):
itchat.send('低于最低预警价格', toUserName='filehelper')
print('低于最低预警价格')
elif r1 &= float(price_high):
itchat.send('高于最高预警价格', toUserName='filehelper')
print('高于最高预警价格')
itchat.send('价格正常', toUserName='filehelper')
print('价格正常')
# 每 3 秒循环执行
if __name__ == '__main__':
while True:
time.sleep(3)
except KeyboardInterrupt:
itchat.send('Stock_WeChat 已执行完毕!\n'
'更多有意思的小玩意,请戳----&\n'
'[/ipreacher/tricks]',
toUserName='filehelper')
print('Stock_WeChat 已执行完毕!\n'
'更多有意思的小玩意,请戳----&\n'
'[/ipreacher/tricks]')
&/code&&/pre&&/div&&p&最后一段实现的,是每 3 秒循环执行上面这个微信股价提示——其实我还写了一个可以定时循环执行的脚本,但实际执行的时候发现这个脚本开销大,而且并不稳定。这个测试版的脚本在这里:&a href=&/?target=https%3A///ipreacher/tricks/blob/master/Stock_WeChat/Stock_WeChat_timer.py& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&Stock_WeChat_timer.py&i class=&icon-external&&&/i&&/a&,欢迎大家提供改进意见。&/p&&p&实际上大家可以稍微修改一下代码,使得其只在超出预警价位的时候才发送提示,而不是像我这样每 3 秒就推送一次。&/p&&br&&h1&&b&待解决问题&/b&&/h1&&p&这里其实还是有不少东西没有完善:&/p&&ul&&li&&p&手机端控制脚本开启关闭&/p&&/li&&li&&p&对输入部分做严格检验&/p&&/li&&li&&p&设置多支股票同时提示&/p&&/li&&li&&p&重新构建 Stock_WeChat_timer.py&/p&&/li&&/ul&&br&&h1&&b&拓展前景&/b&&/h1&&p&目前尚未看到有类似功能的东西(也可能只是我自己没看到过),其实上面这个脚本做一个 GUI 出来,应该是有实用前景的。&/p&&p&理论上说,只要是 tushare 能搞得到的数据,都可以通过 itChat 设置微信提示,我想甚至可以是在 Terminal 里将数据可视化,然后推送给微信端。也就是说,理论上完全可以定制自己的微信股价提示,而且是功能极其强大的定制提示。&/p&&h1&&b&tricks&/b&&/h1&&p&源代码在这里:&a href=&/?target=https%3A///ipreacher/tricks/tree/master/Stock_WeChat& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&tricks/Stock_WeChat at master · ipreacher/tricks · GitHub&i class=&icon-external&&&/i&&/a&&/p&&p&更多有意思的小玩意,请戳----&[&a href=&/?target=https%3A///ipreacher/tricks& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&ipreacher/tricks: 一些 Python 方面的小东西&i class=&icon-external&&&/i&&/a&]&br&&/p&&p&&i&(Photo credit:&a href=&/?target=http%3A///2016/38.html& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&USDCAD &i class=&icon-external&&&/i&&/a&)&/i&&/p&
update:再次更新了这个库,最多可支持 30 支股票同时推送,具体用法戳:# ==============================update:更新了这个库,在原本推送模式的基础上增加了提醒模式,具体用法…
&img src=&/v2-aa36e72cf930_b.png& data-rawwidth=&840& data-rawheight=&452& class=&origin_image zh-lightbox-thumb& width=&840& data-original=&/v2-aa36e72cf930_r.png&&&h1&0 前言&br&&/h1&&p&自从我组建了Tushare开发者的群,一直有群友(加入方式见最后)问我怎么下载Tushare的数据,我一直觉得这不应该是技术的瓶颈,结果却成了大家问的最多的问题。&br&所以我决定写一篇技术博客,来回答所有这样的问题。这一篇文章是针对技术小白的,也就是对怎么下载数据毫无思路的人。&/p&&p&首先感谢一下Jimmy(Tushare作者)开发并维护了这么好的库,用起来真的得心应手。&/p&&p&简而言之,下载数据就和把大象装进冰箱里一样,只有两部,下载下来,然后保存到数据库里。&/p&&h2&1 技术选型&/h2&&p&第一件要做的事情是技术选型,你使用MySQL还是PostgreSQL?Mongodb?或者是SQLServer?&br&这些都无所谓,你选择一种技术,并且熟练掌握就好。&br&为什么要用数据库?这个其实不需要多说,方便选择,查询和存储,这个就是最大的意义了。&br&至于下载的部分,建议选择Python,很简单,Tushare就是Python写的。&/p&&h2&2 数据库表结构设计&/h2&&p&我的选型是MySQL,存储的数据主要有2类,一类是日数据,第二类是高频的5min数据。&br&数据的结构设计如下:&br&code(varchar(10),pk)&br&tick(timestamp,pk)&br&volume(double)&br&open(double)&br&close(double)&br&high(double)&br&low(double)&br&其中code和tick共同组成主键,这样对于同一个股票的同一个时间的数据不会产生冗余。&/p&&p&还有一类数据是stock_list_data,也就是股票列表,这个表的核心字段也就是code,如果有其他的内容那么自己增加吧!&/p&&h2&3 下载下来的数据怎么存到数据库里去&/h2&&p&首先是怎么下载数据,这个查看文档:&/p&&p&&a href=&/?target=http%3A//tushare.org/trading.html& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&TuShare -财经数据接口包&i class=&icon-external&&&/i&&/a&&br&&/p&&p&下载下来的数据是Pandas的DataFrame类型的数据,详细的操作可以去翻阅文档,我这里给出针对行遍历的例子:&/p&&div class=&highlight&&&pre&&code class=&language-python&&&span&&/span&&span class=&kn&&import&/span& &span class=&nn&&tushare&/span& &span class=&kn&&as&/span& &span class=&nn&&ts&/span&
&span class=&n&&data_frame&/span& &span class=&o&&=&/span& &span class=&n&&ts&/span&&span class=&o&&.&/span&&span class=&n&&get_hist_data&/span&&span class=&p&&(&/span&&span class=&s1&&'600848'&/span&&span class=&p&&,&/span&&span class=&n&&start&/span&&span class=&o&&=&/span&&span class=&s1&&''&/span&&span class=&p&&,&/span&&span class=&n&&end&/span&&span class=&o&&=&/span&&span class=&s1&&''&/span&&span class=&p&&)&/span&
&span class=&k&&for&/span& &span class=&n&&index&/span&&span class=&p&&,&/span& &span class=&n&&row&/span& &span class=&ow&&in&/span& &span class=&n&&data_frame&/span&&span class=&o&&.&/span&&span class=&n&&iterrows&/span&&span class=&p&&():&/span&
&span class=&c1&&# 这里修改为组装SQL并执行的语句&/span&
&span class=&k&&print&/span& &span class=&n&&index&/span&&span class=&p&&,&/span&&span class=&n&&row&/span&
&/code&&/pre&&/div&&p&一句插入的SQL模板应该是这样的:&/p&&div class=&highlight&&&pre&&code class=&language-python&&&span&&/span&&span class=&n&&insert_sql&/span& &span class=&o&&=&/span& &span class=&s2&&&INSERT INTO stock_5min_tick (code, tick, volume, open, close, high, low) VALUES ('&/span&&span class=&si&&%s&/span&&span class=&s2&&', '&/span&&span class=&si&&%s&/span&&span class=&s2&&', &/span&&span class=&si&&%f&/span&&span class=&s2&&, &/span&&span class=&si&&%f&/span&&span class=&s2&&, &/span&&span class=&si&&%f&/span&&span class=&s2&&, &/span&&span class=&si&&%f&/span&&span class=&s2&&, &/span&&span class=&si&&%f&/span&&span class=&s2&&);&&/span&
&/code&&/pre&&/div&&p&VALUES后面的内容可以拓展的,也就是可以N条一起写入,但是考虑到数据量并不大,而且重写容易引起冲突失败,我们就老老实实一条条写入,并且把语句放在try-except块里面。&br&我给出我下载数据使用的代码给大家参考:&br&以前仓促写就,但是一直没出问题,所以就干脆不改了。&br&这个是写入5min数据的代码,日数据的其实基本一样,我就不给出了。&/p&&div class=&highlight&&&pre&&code class=&language-python&&&span&&/span&&span class=&c1&&# -*- coding: utf-8 -*-&/span&
&span class=&sd&&&&&&/span&
&span class=&sd&&Created on Fri Nov 11 10:36:52 2016&/span&
&span class=&sd&&@author: Tsing Jyujing&/span&
&span class=&sd&&&&&&/span&
&span class=&kn&&import&/span& &span class=&nn&&tushare&/span& &span class=&kn&&as&/span& &span class=&nn&&ts&/span&
&span class=&kn&&import&/span& &span class=&nn&&MySQLdb&/span&
&span class=&n&&insert_sql&/span& &span class=&o&&=&/span& &span class=&s2&&&INSERT INTO stock_5min_tick (code, tick, volume, open, close, high, low) VALUES ('&/span&&span class=&si&&%s&/span&&span class=&s2&&', '&/span&&span class=&si&&%s&/span&&span class=&s2&&', &/span&&span class=&si&&%s&/span&&span class=&s2&&, &/span&&span class=&si&&%s&/span&&span class=&s2&&, &/span&&span class=&si&&%s&/span&&span class=&s2&&, &/span&&span class=&si&&%s&/span&&span class=&s2&&, &/span&&span class=&si&&%s&/span&&span class=&s2&&);&&/span&
&span class=&k&&def&/span& &span class=&nf&&get_5min_tick&/span&&span class=&p&&(&/span&&span class=&n&&code&/span&&span class=&p&&):&/span&
&span class=&k&&return&/span& &span class=&n&&ts&/span&&span class=&o&&.&/span&&span class=&n&&get_k_data&/span&&span class=&p&&(&/span&&span class=&n&&code&/span&&span class=&p&&,&/span&&span class=&n&&ktype&/span& &span class=&o&&=&/span& &span class=&s1&&'5'&/span&&span class=&p&&)&/span&
&span class=&k&&def&/span& &span class=&nf&&write_5min_data&/span&&span class=&p&&(&/span&&span class=&n&&conn&/span&&span class=&p&&,&/span&&span class=&n&&data&/span&&span class=&p&&):&/span&
&span class=&n&&cur&/span& &span class=&o&&=&/span& &span class=&n&&conn&/span&&span class=&o&&.&/span&&span class=&n&&cursor&/span&&span class=&p&&()&/span&
&span class=&k&&for&/span& &span class=&n&&index&/span&&span class=&p&&,&/span& &span class=&n&&row&/span& &span class=&ow&&in&/span& &span class=&n&&data&/span&&span class=&o&&.&/span&&span class=&n&&iterrows&/span&&span class=&p&&():&/span&
&span class=&n&&row_tulpe&/span& &span class=&o&&=&/span& &span class=&p&&(&/span&&span class=&n&&row&/span&&span class=&p&&[&/span&&span class=&s1&&'code'&/span&&span class=&p&&],&/span&&span class=&n&&row&/span&&span class=&p&&[&/span&&span class=&s1&&'date'&/span&&span class=&p&&],&/span&&span class=&n&&row&/span&&span class=&p&&[&/span&&span class=&s1&&'volume'&/span&&span class=&p&&],&/span&&span class=&n&&row&/span&&span class=&p&&[&/span&&span class=&s1&&'open'&/span&&span class=&p&&],&/span&&span class=&n&&row&/span&&span class=&p&&[&/span&&span class=&s1&&'close'&/span&&span class=&p&&],&/span&&span class=&n&&row&/span&&span class=&p&&[&/span&&span class=&s1&&'high'&/span&&span class=&p&&],&/span&&span class=&n&&row&/span&&span class=&p&&[&/span&&span class=&s1&&'low'&/span&&span class=&p&&])&/span&
&span class=&n&&wsql&/span& &span class=&o&&=&/span& &span class=&n&&insert_sql&/span& &span class=&o&&%&/span& &span class=&n&&row_tulpe&/span&
&span class=&k&&try&/span&&span class=&p&&:&/span&
&span class=&n&&cur&/span&&span class=&o&&.&/span&&span class=&n&&execute&/span&&span class=&p&&(&/span&&span class=&n&&wsql&/span&&span class=&p&&)&/span&
&span class=&k&&except&/span&&span class=&p&&:&/span&
&span class=&k&&pass&/span&&span class=&p&&;&/span&
&span class=&n&&conn&/span&&span class=&o&&.&/span&&span class=&n&&commit&/span&&span class=&p&&()&/span&
&span class=&k&&def&/span& &span class=&nf&&main&/span&&span class=&p&&():&/span&
&span class=&n&&conn&/span& &span class=&o&&=&/span& &span class=&n&&MySQLdb&/span&&span class=&o&&.&/span&&span class=&n&&connect&/span&&span class=&p&&(&/span&&span class=&s2&&&localhost&&/span&&span class=&p&&,&/span&&span class=&s2&&&root&&/span&&span class=&p&&,&/span&&span class=&s2&&&979323&&/span&&span class=&p&&,&/span&&span class=&s2&&&stockdata&&/span& &span class=&p&&)&/span&
&span class=&n&&stock_list&/span& &span class=&o&&=&/span& &span class=&n&&ts&/span&&span class=&o&&.&/span&&span class=&n&&get_stock_basics&/span&&span class=&p&&();&/span&
&span class=&k&&for&/span& &span class=&n&&code&/span&&span class=&p&&,&/span&&span class=&n&&info&/span& &span class=&ow&&in&/span& &span class=&n&&stock_list&/span&&span class=&o&&.&/span&&span class=&n&&iterrows&/span&&span class=&p&&():&/span&
&span class=&k&&print&/span& &span class=&s2&&&Trying:&&/span&&span class=&o&&+&/span&&span class=&n&&code&/span&
&span class=&k&&print&/span& &span class=&n&&info&/span&
&span class=&k&&for&/span& &span class=&n&&i&/span& &span class=&ow&&in&/span& &span class=&nb&&range&/span&&span class=&p&&(&/span&&span class=&mi&&5&/span&&span class=&p&&):&/span&
&span class=&k&&try&/span&&span class=&p&&:&/span&
&span class=&n&&write_5min_data&/span&&span class=&p&&(&/span&&span class=&n&&conn&/span&&span class=&p&&,&/span&&span class=&n&&get_5min_tick&/span&&span class=&p&&(&/span&&span class=&n&&code&/span&&span class=&p&&));&/span&
&span class=&k&&print&/span& &span class=&s2&&&Written:&&/span&&span class=&o&&+&/span&&span class=&n&&code&/span&
&span class=&k&&break&/span&&span class=&p&&;&/span&
&span class=&k&&except&/span&&span class=&p&&:&/span&
&span class=&k&&print&/span& &span class=&s2&&&Retrying...&&/span&&span class=&o&&+&/span&&span class=&n&&code&/span&
&span class=&n&&conn&/span&&span class=&o&&.&/span&&span class=&n&&close&/span&&span class=&p&&();&/span&
&span class=&k&&if&/span& &span class=&n&&__name__&/span&&span class=&o&&==&/span&&span class=&s2&&&__main__&&/span&&span class=&p&&:&/span&
&span class=&n&&main&/span&&span class=&p&&();&/span&
&/code&&/pre&&/div&&br&&h2&部分可能出现的QA和我的回答&/h2&&p&Q:下载经常出错,例如Timeout,怎么办?&br&A:下载老出错可能是网络问题,比如我们公司就无耻的屏蔽了所有财经类网站,但是不屏蔽Github,我用的服务器不屏蔽财经类网站,但屏蔽了Github。这个是硬伤,没有什么好的办法。&/p&&p&Q:数据库到底用哪种比较好?&/p&&p&A:都行,这个数据量真的不大。&/p&&br&&p&Q:我不会写SQL语句/配置数据库/配置Python环境&/p&&p&A:出门左拐百度,右拐搜狗,直走必应,翻墙谷歌,随你。&/p&&br&&p&Q:如何定期自动更新?&/p&&p&A:你可以试试Windows的计划惹怒,定期运行Python的脚本即可。&/p&&br&&p&Q:能不能帮我弄一下,真的不会弄啊!&br&&/p&&h2&A:&b&滚。&/b&&/h2&&br&&p&Q:如何加入Tushare开发群?&/p&&p&A:QQ群号,回答一个很简单的Python问题即可入内,我和另一个管理猿(Tushare的开发者Jimmy)都不会卡着你们,不许发广告,不聊选股的问题,只交流技术,尽可能多交流策略。那么我欢迎你们!&/p&
0 前言 自从我组建了Tushare开发者的群,一直有群友(加入方式见最后)问我怎么下载Tushare的数据,我一直觉得这不应该是技术的瓶颈,结果却成了大家问的最多的问题。 所以我决定写一篇技术博客,来回答所有这样的问题。这一篇文章是针对技术小白的,也就是…
&img src=&/v2-cf_b.png& data-rawwidth=&696& data-rawheight=&456& class=&origin_image zh-lightbox-thumb& width=&696& data-original=&/v2-cf_r.png&&&p&原创文章,转载请注明出处:用Python的交易员&/p&&h3&性能问题&/h3&&p&Python在2016年里可以说是风靡国内量化投资圈,目前整个生态链已经初具规模:&/p&&ul&&li&交易:vn.py、easytrader、at_py&/li&&li&数据:tushare&/li&&li&回测:rqalpha&/li&&li&在线平台:UQER、RiceQuant、JoinQuant&/li&&/ul&&p&随着用户越来越多,Python语言的性能问题也就逐渐成为整个社区关注的重点,经常遇到新手问:Python写的量化交易程序是不是很慢啊?&/p&&p&在他们心中,Python估计是这个样子:&/p&&img src=&/v2-00a331c4b01853d57fcebe_b.jpg& data-rawwidth=&473& data-rawheight=&309& class=&origin_image zh-lightbox-thumb& width=&473& data-original=&/v2-00a331c4b01853d57fcebe_r.jpg&&&p&(即使作为破旧自行车,我也深表怀疑这辆能不能骑好吧)&/p&&p&网上关于如何提升Python程序性能的文章不少,但大多不成体系只是非常简单的例子,总有点隔靴搔痒的感觉,和现实中应用的距离比较远。&/p&&p&作者一看,填补市场空白(装逼)的机会来了!!&/p&&p&&strong&在这篇文章里,将会通过实际的例子展示如何对一段量化策略常用的代码实现百倍加速。&/strong&&/p&&img src=&/v2-9d5c7ce2be2c342eacfccf785c1dc5af_b.jpg& data-rawwidth=&401& data-rawheight=&193& class=&content_image& width=&401&&&h3&一段常用的代码&/h3&&p&接下来要用的例子相信几乎所有做量化策略的人都写过类似的代码:对时间序列求算术移动平均值。&/p&&p&这里我们先初始化即将用到的数据:10万个数据点(随机整数),遍历计算窗口为500的算术移动平均值,每种算法运行10次求平均耗时。&/p&&br&&div class=&highlight&&&pre&&code class=&language-python&&&span&&/span&&span class=&c1&&# 这个测试目标在于仿造一个类似于实盘中,不断有新的数据推送过来,&/span&
&span class=&c1&&# 然后需要计算移动平均线数值,这么一个比较常见的任务。&/span&
&span class=&kn&&from&/span& &span class=&nn&&__future__&/span& &span class=&kn&&import&/span& &span class=&n&&division&/span&
&span class=&kn&&import&/span& &span class=&nn&&time&/span&
&span class=&kn&&import&/span& &span class=&nn&&random&/span&
&span class=&c1&&# 生成测试用的数据&/span&
&span class=&n&&data&/span& &span class=&o&&=&/span& &span class=&p&&[]&/span&
&span class=&n&&data_length&/span& &span class=&o&&=&/span& &span class=&mi&&100000&/span&
&span class=&c1&&# 总数据量&/span&
&span class=&n&&ma_length&/span& &span class=&o&&=&/span& &span class=&mi&&500&/span&
&span class=&c1&&# 移动均线的窗口&/span&
&span class=&n&&test_times&/span& &span class=&o&&=&/span& &span class=&mi&&10&/span&
&span class=&c1&&# 测试次数&/span&
&span class=&k&&for&/span& &span class=&n&&i&/span& &span class=&ow&&in&/span& &span class=&nb&&range&/span&&span class=&p&&(&/span&&span class=&n&&data_length&/span&&span class=&p&&):&/span&
&span class=&n&&data&/span&&span class=&o&&.&/span&&span class=&n&&append&/span&&span class=&p&&(&/span&&span class=&n&&random&/span&&span class=&o&&.&/span&&span class=&n&&randint&/span&&span class=&p&&(&/span&&span class=&mi&&1&/span&&span class=&p&&,&/span& &span class=&mi&&100&/span&&span class=&p&&))&/span&
&/code&&/pre&&/div&&p&在每次测试中,我们都通过遍历测试用数据的方式来模拟实盘中策略不断收到新数据推送的情况(同样适用于事件驱动的回测模式),将计算出的移动平均值不断保存到一个列表list中作为最终结果返回。&/p&&p&测试用电脑的配置情况:Core i7-G/16G/Windows 7。&/p&&p&第一步我们以最简单、最原始的方式来计算移动平均值:&/p&&br&&div class=&highlight&&&pre&&code class=&language-python&&&span&&/span&&span class=&c1&&# 计算500期的移动均线,并将结果保存到一个列表里返回&/span&
&span class=&k&&def&/span& &span class=&nf&&ma_basic&/span&&span class=&p&&(&/span&&span class=&n&&data&/span&&span class=&p&&,&/span& &span class=&n&&ma_length&/span&&span class=&p&&):&/span&
&span class=&c1&&# 用于保存均线输出结果的列表&/span&
&span class=&n&&ma&/span& &span class=&o&&=&/span& &span class=&p&&[]&/span&
&span class=&c1&&# 计算均线用的数据窗口&/span&
&span class=&n&&data_window&/span& &span class=&o&&=&/span& &span class=&n&&data&/span&&span class=&p&&[:&/span&&span class=&n&&ma_length&/span&&span class=&p&&]&/span&
&span class=&c1&&# 测试用数据(去除了之前初始化用的部分)&/span&
&span class=&n&&test_data&/span& &span class=&o&&=&/span& &span class=&n&&data&/span&&span class=&p&&[&/span&&span class=&n&&ma_length&/span&&span class=&p&&:]&/span&
&span class=&c1&&# 模拟实盘不断收到新数据推送的情景,遍历历史数据计算均线&/span&
&span class=&k&&for&/span& &span class=&n&&new_tick&/span& &span class=&ow&&in&/span& &span class=&n&&test_data&/span&&span class=&p&&:&/span&
&span class=&c1&&# 移除最老的数据点并增加最新的数据点&/span&
&span class=&n&&data_window&/span&&span class=&o&&.&/span&&span class=&n&&pop&/span&&span class=&p&&(&/span&&span class=&mi&&0&/span&&span class=&p&&)&/span&
&span class=&n&&data_window&/span&&span class=&o&&.&/span&&span class=&n&&append&/span&&span class=&p&&(&/span&&span class=&n&&new_tick&/span&&span class=&p&&)&/span&
&span class=&c1&&# 遍历求均线&/span&
&span class=&n&&sum_tick&/span& &span class=&o&&=&/span& &span class=&mi&&0&/span&
&span class=&k&&for&/span& &span class=&n&&tick&/span& &span class=&ow&&in&/span& &span class=&n&&data_window&/span&&span class=&p&&:&/span&
&span class=&n&&sum_tick&/span& &span class=&o&&+=&/span& &span class=&n&&tick&/span&
&span class=&n&&ma&/span&&span class=&o&&.&/span&&span class=&n&&append&/span&&span class=&p&&(&/span&&span class=&n&&sum_tick&/span&&span class=&o&&/&/span&&span class=&n&&ma_length&/span&&span class=&p&&)&/span&
&span class=&c1&&# 返回数据&/span&
&span class=&k&&return&/span& &span class=&n&&ma&/span&
&span class=&c1&&# 运行测试&/span&
&span class=&n&&start&/span& &span class=&o&&=&/span& &span class=&n&&time&/span&&span class=&o&&.&/span&&span class=&n&&time&/span&&span class=&p&&()&/span&
&span class=&k&&for&/span& &span class=&n&&i&/span& &span class=&ow&&in&/span& &span class=&nb&&range&/span&&span class=&p&&(&/span&&span class=&n&&test_times&/span&&span class=&p&&):&/span&
&span class=&n&&result&/span& &span class=&o&&=&/span& &span class=&n&&ma_basic&/span&&span class=&p&&(&/span&&span class=&n&&data&/span&&span class=&p&&,&/span& &span class=&n&&ma_length&/span&&span class=&p&&)&/span&
&span class=&n&&time_per_test&/span& &span class=&o&&=&/span& &span class=&p&&(&/span&&span class=&n&&time&/span&&span class=&o&&.&/span&&span class=&n&&time&/span&&span class=&p&&()&/span&&span class=&o&&-&/span&&span class=&n&&start&/span&&span class=&p&&)&/span&&span class=&o&&/&/span&&span class=&n&&test_times&/span&
&span class=&n&&time_per_point&/span& &span class=&o&&=&/span& &span class=&n&&time_per_test&/span&&span class=&o&&/&/span&&span class=&p&&(&/span&&span class=&n&&data_length&/span& &span class=&o&&-&/span& &span class=&n&&ma_length&/span&&span class=&p&&)&/span&
&span class=&k&&print&/span& &span class=&s1&&u'单次耗时:&/span&&span class=&si&&%s&/span&&span class=&s1&&秒'&/span& &span class=&o&&%&/span&&span class=&n&&time_per_test&/span&
&span class=&k&&print&/span& &span class=&s1&&u'单个数据点耗时:&/span&&span class=&si&&%s&/span&&span class=&s1&&微秒'&/span& &span class=&o&&%&/span&&span class=&p&&(&/span&&span class=&n&&time_per_point&/span&&span class=&o&&*&/span&&span class=&mi&&1000000&/span&&span class=&p&&)&/span&
&span class=&k&&print&/span& &span class=&s1&&u'最后10个移动平均值:'&/span&&span class=&p&&,&/span& &span class=&n&&result&/span&&span class=&p&&[&/span&&span class=&o&&-&/span&&span class=&mi&&10&/span&&span class=&p&&:]&/span&
&/code&&/pre&&/div&&p&单次耗时指的是遍历完整个测试数据计算移动平均值所需的时间,单个数据点耗时指的是遍历过程中每个数据点的平均计算耗时,最后10个移动平均值用于和后续的算法进行比对,保证计算结果的正确性。&/p&&p&&strong&ma_basic测试结果&/strong&&/p&&ul&&li&单次耗时:1.秒&/li&&li&单个数据点耗时:11.微秒&/li&&/ul&&p&大约10万个数据点(说大约因为有500个用于初始化了),这个测试结果不能说很好但也还过得去。考虑到一个简单的双均线CTA策略(Double SMA Strategy),每个数据点来了后会进行两次均线计算,通常均线窗口不会超过500,且比较两根均线交叉情况的算法开销更低,估计策略单纯在信号计算方面的耗时会在30微秒以内,对于一个通常跑在1分钟线甚至更高时间周期上的策略而言已经是绰绰有余。&/p&&p&有了起点,下面来试着一步步提升性能。&/p&&h3&试试NumPy?&/h3&&p&用Python做数值运算性能不够的时候,很多人的第一反应就是上NumPy:之前的ma_basic里,比较慢的地方应该在每一个新的数据点加入到data_window中后遍历求平均值的代码,那么改用numpy.array数组来求和应该性能就会有所提升了吧?&/p&&br&&div class=&highlight&&&pre&&code class=&language-python&&&span&&/span&&span class=&c1&&# 改用numpy(首先是一种常见的错误用法)&/span&
&span class=&kn&&import&/span& &span class=&nn&&numpy&/span& &span class=&kn&&as&/span& &span class=&nn&&np&/span&
&span class=&k&&def&/span& &span class=&nf&&ma_numpy_wrong&/span&&span class=&p&&(&/span&&spa

我要回帖

更多关于 tushare停止维护 的文章

 

随机推荐