没有合适的资源?快使用搜索试试~ 我知道了~
JoinQuant 量化课堂
需积分: 40 32 下载量 49 浏览量
2018-01-13
00:34:15
上传
评论
收藏 26.4MB PDF 举报
温馨提示
试读
589页
JoinQuant 量化课堂 ==================================================
资源详情
资源评论
资源推荐
JoinQuant 量化课堂
来源:https://www.joinquant.com/study
新手专区
聚宽新手指南
如果你想量化交易快速入门
1. 十行代码带你量化交易入门,文章以简单的实例介绍了在聚宽做量化交易最核心的流程——策略编写、策略回测、建立模拟、发送信号,绝对是量化交
易急速入门教程。
如果你是编程苦手
1. 向导式策略生成器已上线,无需编程、快速验证,聚宽最新上线向导式策略生成器,堪称小白的入门福音,大神的偷懒神器。结合编程模式搭配使用,
便能做到无编程快速验证方向,有编程自由精制策略。
如果你想要更多的学习资源
1. 量化课堂,量化课堂里提供了编程,数学,策略实例,统计研究,金融市场等量化相关的知识,尤其是在量化核心的数理方面,比其更好的几乎业界难
觅。
2. 社区干货遴选与整理(持续进行中),上百篇的聚宽社区好文,从心得技巧到策略分享,从机器学习到股指套利,可谓是成吨的量化交易干货。
如果你想发现好策略或你有好策略
1. 策略擂台,旨在发现好策略,发现好宽客,聚宽将助其实现其价值,寻求合作共赢的机会,让人人真正地成为靠策略赚钱的宽客。
2. 另外,策略擂台目前可以免费订阅牛人的策略信号,跟着交易,躺着赚钱不是梦。我们了解到的最厉害的,用户跟策略半年多,6万变到12万。
如果你想了解数据方面
1. 聚宽提供的数据
2. 数据常见疑问汇总(持续汇总中...)
3. 数据调整记录
相信多数数据方面的问题都可以从中找到答案。
如果你还有疑问
1. 常见问题里解答了基础的使用方面的疑问。
2. API文档介绍了聚宽提供的各种功能的API。
3. 【有用功】教你如何调试程序(Debug)为编程新手介绍了基础的代码纠错方法。
4. 善用社区的搜索功能,你的疑问很可能之前已经有人问过了。
5. 可以在社区问答区发帖提问,必要时可以艾特聚宽工作人员蛋蛋-zy与JoinQuant-TWist。
6. 可以加入聚宽qq群,那里经常有很多聚宽用户交流,相信他们愿意友好地帮助你,当然你也可以艾特群的管理员。
JoinQuant聚宽4群 589457056
JoinQuant聚宽3群 524080396
Welcome to JoinQuant !
【新手入门教程】十行代码带你量化交易入门
下一篇文章更新:【新手入门教程】多股票策略
说起量化交易入门,很多时候得到的答案要么是谈理论、要么列书单、要么就过程繁琐难以实践,结果往往是让对量化交易感兴趣的人迈不出那最初的一
步。另外一方面,如果已经学了一些
Python基础又希望能够用上,学以致用,那么这篇文章将教你简单的使用Python去写一个 策略。
这篇文章,力求以简单的例子,手把手教你如何用十行代码,写一个能根据实际行情发送交易信号到微信的量化交易策略!
>学习内容:
>- 学会写一个简单的量化交易策略
>- 理解策略的基本框架
>- 学会建立连接实盘的模拟交易,并使其自动发送交易的信号到微信
首先,进入JoinQuant,新建策略并清空原本模板代码,如下图。注意,未登录用户无法保存编写的策略以及查看回测详情,最好先登录,免得编的策略保存
不了白做了。
左侧是编写策略代码,右侧是策略运行结果。我们就在左侧写策略代码。(图片是老版示例,跟上图不相连,只看大体界面就好)
下面教你用10行代码写个量化交易策略——单股票均线策略
1 确定策略内容与框架
我们明确下策略内容:
若昨日收盘价高出过去20日平均价今天开盘买入股票
若昨日收盘价低于过去20日平均价今天开盘卖出股票
只操作一只股票,很简单对吧,但怎么用代码说给计算机听呢?
想想人是怎么操作的,应该包括这样两个部分
1. 既然是单股票策略,事先决定好交易哪一个股票。
2. 每天看看昨日收盘价是否高出过去20日平均价,是的话开盘就买入,不是开盘就卖出。每天都这么做,循环下去。
对应代码也是这两个部分
def initialize(context):
用来写最开始要做什么的地方
def handle_data(context,data):
用来写每天循环要做什么的地方
> 答疑与延伸:
> - def后面的空格和最后的冒号不能少!
> - 符号都要用英文输入法!
> - 为什么这么写?就这么规定的,先别管了:)
> - handle_data 按天循环时,如此处,其中的操作都是在9:30执行。
几乎所有策略都基于这个基本的策略框架:先初始化,然后循环操作
1 初始化,即最开始要做的事情,如选定股票,设置变量、参数等等
2 周期循环:即每个周期要做的事情,如计算指标,买入卖出等,周期可能是分钟,天等,本文策略的周期是一天。当你要做一些盘中短线操作的时候,周
期就要调成分钟,先别着急会遇到的。
2 初始化
我们要写设置要交易的股票的代码,比如 兔宝宝(002043) ,真的有这个股票哦。
def initialize(context):
g.security = '002043.XSHE'# 存入兔宝宝的股票代码
>答疑与延伸:
>- "g." 是什么?全局变量前都要写"g.",全局变量就是全局都能用的变量,一般变量只能在该函数下使用。如security不加"g.",只能在第一部分即initialize里
用,不能在第二部分handle_data里用。
>- 什么是变量?,可以当变量是各种存放数据的容器,每个都要有个名字,比如
g.security = '002043.XSHE',就是把数据'002043.XSHE'放到变
量
g.security中,如果变量中里面有别的数据会替换掉。具体到量化课堂的python编程里学习下基础内容,或者问问百度。
>- "XSHE" 是什么? 股票代码使用时要加后缀,深交所股票代码后缀为 ".XSHE ",上交所股票代码后缀为 ".XSHG"。
>- 代码中“#” 是什么?”#“后的内容都是注释,是为代码做说明的,不会被计算机当做代码处理。
3 获取收盘价与均价
首先,获取昨日股票的收盘价
# 用法:变量 = data[股票代码].close
last_price = data[g.security].close# 取得最近日收盘价,命名为last_price
然后,获取近二十日股票收盘价的平均价
# 用法:变量 = data[股票代码].mavg(天数,‘close’)
# 获取近二十日股票收盘价的平均价,命名为average_price
average_price = data[g.security].mavg(20, 'close')
>答疑与延伸:
>- data是什么?
>- data[股票代码]后面除了平均价.mavg还能接什么?
>- 这些写法其实都是python写法,如果你觉得不好“理解”可以先记住。
4 判断是否买卖
数据都获取完,该做买卖判断了
# 如果昨日收盘价高出二十日平均价, 则买入,否则卖出
if last_price > average_price:
买入
elif last_price < average_price:
卖出
问题来了,现在该写买卖下单了,但是拿多少钱去买我们还没有告诉计算机,所以每天还要获取账户里现金量。
# 用法:变量 = context.portfolio.cash
cash = context.portfolio.cash# 取得当前的现金量,命名为cash
>答疑与延伸:
>- context.portfolio 是什么?
这句看着有点复杂,先记住吧。然后我们看看买入卖出怎么写。
5 买入卖出
# 用法:order_value(要买入股票股票的股票代码,要多少钱去买)
order_value(g.security, cash)# 用当前所有资金买入股票
# 用法:order_target(要买卖股票的股票代码,目标持仓金额)
order_target(g.security, 0)# 将股票仓位调整到0,即全卖出
>答疑与延伸:
>- 为什么没有指定交易价格?此策略是按天回测进行的且使用的较为简单的市价单下单方法,交易价格为开盘价(加上滑点)
>- 无法交易的情况?涨跌停,停牌,T+1制度等无法交易的情况,系统会自动使下单不成交并在日志中发出警告。
>- 滑点是什么?简言之是为成交误差留出余地。
>- 下单方法有哪些?
6 策略代码写完,进行回测
把买入卖出的代码写好,策略就写完了,如下
def initialize(context):#初始化
g.security = '002043.XSHE'# 股票名:兔宝宝
def handle_data(context, data):#每日循环
last_price = data[g.security].close# 取得最近日收盘价
# 取得过去二十天的平均价格
average_price = data[g.security].mavg(20, 'close')
cash = context.portfolio.cash# 取得当前的现金
# 如果昨日收盘价高出二十日平均价, 则买入,否则卖出。
if last_price > average_price:
order_value(g.security, cash)# 用当前所有资金买入股票
elif last_price < average_price:
order_target(g.security, 0)# 将股票仓位调整到0,即全卖出
现在,在策略回测界面右上部,设置回测时间从20140101到20160601,设置初始资金100000,设置回测频率,然后点击运行回测。
> 答疑与延伸:
> - 什么是回测?回测是量化交易策略研究中的关键,是指给定一段时间的历史数据(如此处是20140101到20160601的每日数据),计算机按照所编写的策
略进行模拟仿真交易,以测试策略效果好坏。
如果你代码没有问题,就会顺利的进行回测,回测结果如下图:
至此,你就完成了一个简单策略的回测了。
> 答疑与延伸:
> - 如何根据回测结果评价策略好坏?很初级地讲,有三:
> 1. 盈利能力:策略收益与年化收益高,则说明盈利能力强。盈利能力不行说啥都没用。
> 1. 盈利稳定性:最大回撤要低。最大回撤是指最大亏损幅度,50%则意味着历史上看最大亏损率为50%。
> 1. 回测可靠性:交易次数要多。交易次数越多意味着经历了越多次的检验,回测的结果也越可靠。
> 更多说明见:风险指标说明
> - 这个策略回撤大,交易次数少,只交易一只股票,并不靠谱。但是结构简单适合新手入门理解整个流程。
7 建立模拟交易,使策略和行情实时连接自动运行
策略写好,回测完成,点击回测结果界面(如上图)右上部红色模拟交易按钮,新建模拟交易如下图。
写好交易名称,设置初始资金,数据频率,此处是每天,设置好后点提交。
>答疑与延伸:
>- 模拟交易创建成功后,需要等待A股至少开盘一次,才能查看模拟交易结果。
8 开启微信通知,接收交易信号
点击聚宽导航栏我的交易,可以看到创建的模拟交易,如下图。
点击右边的微信通知开关,将OFF调到ON,按照指示扫描二维码,绑定微信,就能微信接收交易信号了。
当策略买卖操作,微信会收到信号提醒类似下图。
>答疑与延伸:
>- 能不能自动下单?目前不能,国家管制。你可根据信号手动下单买卖,施行策略。
自测与自学
1. 能否理解整个策略框架。
剩余588页未读,继续阅读
绝不原创的飞龙
- 粉丝: 1w+
- 资源: 1091
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功
评论0