ricequant,上实现策略
如何在***Ricequant***上实现策略
你好!以 [单股票均线策略]的代码实现为例说一下如何在Ricequant上实现策略吧。
1确定框架:
[单股票均线策略]的主要策略框架: 5日均线高于 30天均线,则全仓买入股票 5日均线低于 30天均线,则卖出所持股票。从我们日常交易的角度,一般交易者的行为可以拆分以下两部分:
1.1选择标的(初始化):
#在交易之前,我们通常会先选定要交易的股票池或者单个股票
1.2交易(每天盯盘)
#我们会观察该股票的五日均线和30日均线,并进行比较
#如果该股票的五日均线在30天均线以上,则全仓买入股票
#如果该股票的五日均线在30天均线以下,则全仓卖出(空仓)
那么程序中,我们是怎么做的呢?
先看看 Ricequant平台中对应的代码框架会是怎么样的吧:
definit(context):
#程序的初始化,预设股票池、设置参数和变量。只运行一次
defhandle(context,bar_dict):
#从回测的开始日期至结束日期,根据选择的频率(日、分钟)循环运行
对照策略思路及 Ricequant代码框架,你会发现我们可以很轻松地把两者结合起来
以上框架也是 Ricequant平台的最基本也最主要的框架,也就是初始化循环-根据选择的频率(日、分钟)循环运行
2初始化:
选择标的:本策略的交易股票设定为 300059”东方财富“。
definit(context):
context.stock="300059.XSHE"#存入目标股票[东方财富]
延伸阅读:
1在 init中实现程序的初始化,例如存入目标股票池,设置滑点、基准等参数以及设置其它变量。 context是一个全局的容器,你可以通过它设置任何全局变量并初始化:如 context.stock将会在后面代码所被调用到。
2代码中#代表注释,作为代码说明,执行时会被跳过而不为程序所运行。
3如何填写股票代码:你会发现策略代码中股票代码后带有后缀,那么它们分别代表什么呢?
后缀为
XSHE代表在深交所上市交易的股票
XSHG在上交所上市交易的股票
例子:
300059.XSHE为深交所上市的东方财富
600000.XSHG为上交所上市的浦发银行
我们的代码编辑器还提供了非常便利的股票代码自动寻找和补全功能,在 Windows中你可以用 ctrl+i, Mac系统你可以用 cmd+i激活证券代码自动补全功能。如下图:
3获取均价:
我们分别获取该股票 5日和 30日的均价
#用法:变量=bar_dict[股票代码].mavg(天数,frequency='day')
#获取近五日股票收盘价均价,命名为fast
fast=bar_dict[context.stock].mavg(5,frequency='day')
#同上,获取近二十日的收盘价均价,命名为slow:
slow=bar_dict[context.stock].mavg(30,frequency='day')
4判断买卖条件:
获得均价数据之后,我们就可以进行一个判断决定是否买卖了:
iffast>slow:#若快线在慢线之上则用所有现金买入该股票
#买入操作
eliffast<slow:#若慢线在快线之上则清空所持股票
#卖出操作
在判断之前,我们还漏了一步,那是什么呢?就是要知道我们有多少现金,那么在程序中是如何获得现金的呢?我们使用以下代码
#用法:变量=context.portfolio.cash
cash=context.portfolio.cash#取得当前的现金量,命名为cash
5买入/卖出:
在判定买卖的条件成立之后,我们会对股票进行买入或者卖出的操作:
#用法order_value(股票代码,买卖金额)金额为正则为买入,负数则为卖出
#将所有现金买入300059东方财富
order_value(context.stock,cash)
#用法:order_target_value(股票代码,目标持仓比例)比例在1与0之间
#此处将持仓比例调整为0,则等同于全部卖出
order_target_percent(context.stock,0)
6策略回测
以上,我们用几行代码就把策略的框架完整地搭建起来了,最终的完整代码为:
definit(context):#初始化
context.stock="300059.XSHE"#存入要交易的股票代码
defhandle_bar(context,bar_dict):
#每日循环运行
#获取30日均线
slow=bar_dict[context.stock].mavg(30,frequency='day')
#获取5日均线
fast=bar_dict[context.stock].mavg(5,frequency='day')
cash=context.portfolio.cash
#获取持有现金金额
iffast>slow:
#判定买入条件
order_value(context.stock,cash)
#买入目标股票
eliffast<slow:
order_target_percent(context.stock,0)
#卖出目标股票
写完了策略,那么我们接下去做什么呢?先对我们的策略进行一次历史回测,看看它的历史表现是如何吧。
在策略编辑页面右上方,选择从 2015年 1月 4日至 2016年 10月 4日,用资金 10万元进行日回测吧,请点击运行回测
我们可以看到回测详情中有精致的图表,详细的各项风险收益指标、以及持仓、落单等详情辅助你进一步了解你的策略的表现。
到这里,一个完整的从 [构建策略思路]到 [策略代码编写]到 [回测结果检验]的流程就结束了。
Ricequant迎新年50篇干货分享
新年之际,Ricequant精心分享了50篇干货内容,涵盖了投资领域的各个角落,旨在帮助新手入门和提升投资技能。首篇为新手入门模板,通过三篇文章展示策略构建和调参技巧,让初学者了解策略完整结构和优化手段。
在小盘股策略部分,平台热门的策略包括小盘股、趋势投资和轮动。小盘股策略分析了其特点和风险,同时推荐了关于ST股风险评估的“垃圾股”策略,提醒投资者注意市场变化。趋势投资则通过改进RSI和R-Breaker等策略,强调趋势判断和风险控制的重要性。
趋势拐点的把握借助Hurst指数,结合大盘走势,为趋势策略提供优化工具。轮动策略涉及行业和风格轮动,要求投资者有较强的经济形势判断能力,提供了多种轮动模型供参考。
在技术分析和基本面分析中,技术分析如十字星形态和盯盘主力,揭示了市场的价格动向。基本面选股则强调寻找价值洼地,如单摆策略和股息率策略,帮助投资者规避干扰,等待价值回归。
多因子策略融合了基本面和其他因子,如APT和Fama-French模型,提供更稳定的投资选择。雪球舆论则通过量化投资者行为,反映市场情绪。此外,文章还深入探讨了择时与止损的重要性,如希尔伯特变换和多种止损方法。
波动率和风险管理部分,波动率预测和GARCH模型展示了市场波动的复杂性,而指数研究则通过预测大盘走势,揭示市场本质。统计套利作为量化交易基础,展示了序列平稳性和协整性的应用。
最后,机器学习和深度学习的文章展示了智能投资的新思路,如HMM和神经网络在股票领域的应用。Ricequant的量化投研套件也开放申请,欢迎投资者体验。






