学下学下
对照策略思路 及 Ricequant 代码框架,你会发现我们可以很轻松地把 两者结合起来
以上框架也是 Ricequant 平台的最基本也最主要的框架,也就是
1.初始化2.循环 - 根据选择的频率(日、分钟)循环运行
选择标的:本策略的交易股票设定为 300059 ”东方财富“。
延伸阅读:
1 在 init 中实现程序的初始化,例如存入目标股票池,设置滑点、基准等参数以及设置其它变量。
context 是一个全局的容器,你可以通过它设置任何全局变量并初始化:如 context.stock 将会在后面代码所被调用到。
2 代码中 # 代表注释,作为代码说明,执行时会被跳过而不为程序所运行。
3 如何填写股票代码:你会发现策略代码中 股票代码后带有后缀,那么它们分别代表什么呢?
后缀为
(1)XSHE 代表在深交所上市交易的股票XSHG 在上交所上市交易的股票例子:
(2)300059.XSHE 为深交所上市的东方财富600000.XSHG 为上交所上市的浦发银行我们的代码编辑器还提供了非常便利的股票代码自动寻找和补全功能,在 Windows 中你可以用 ctrl+i,
Mac 系统你可以用 cmd+i 激活证券代码自动补全功能。如下图:
我们分别获取该股票 5 日和 30 日的均价
获得均价数据之后,我们就可以进行一个判断决定是否买卖了:
在判断之前,我们还漏了一步,那是什么呢?就是要知道我们有多少现金,那么在程序中是如何获得现金的呢?我们使用以下代码
延伸阅读: portfolio 中 包含所有的投资组合的信息,请参考文档 - Portfolio 对象
在判定买卖的条件成立之后,我们会对股票进行买入或者卖出的操作:
6 策略回测
以上,我们用几行代码就把策略的框架完整地搭建起来了,最终的完整代码为:
写完了策略,那么我们接下去做什么呢? 先对我们的策略进行一次历史回测,看看它的历史表现是如何吧。
在策略编辑页面右上方,选择从2015年1月4日至2016年10月4日,用资金10万元进行日回测吧,请点击 运行回测
如代码没有问题,在数秒之后,我们就会拿到该策略的历史表现结果:
我们可以看到回测详情中有精致的图表,详细的各项风险收益指标、以及持仓、落单等详情辅助你进一步了解你的策略的表现。
到这里,一个完整的从 [构建策略思路] 到 [策略代码编写] 到 [回测结果检验] 的流程就结束了。
在循环部分, handle 函数根据选择的频率(日、分钟)循环运行,在以上的日回测中, handle 内的代码会每日被触发一次
如果是进行分钟回测或模拟实盘,那么这个 handle 里的代码就会被每分钟触发一次;
因此,我们的代码逻辑也势必要进行一定的改进,使得策略按照我们的逻辑正常地运行。
我们先把修改好的代码贴上来:
可以看到这里改动并不多,
这里需要介绍到框架中常用到的函数 before_trading :
我们在 before_trading 中设置一个变量命名为 fired ,赋值为0
由于 before_trading 是每天开盘前运行一次,所以 context.fired 会被每天重置为 0
在 handle 函数中,我们加入了判断,如 context.fired 为 0 ,则继续执行下面的代码,否则本次循环结束。
并在执行完判断和买卖操作之后,设定 context.fired 的值等于 1 ,使得当日余下的分钟循环操作均被跳过。
在完成以上代码后,我们开始进行分钟回测吧: 在策略编辑页面右上方,选择从2015年1月4日至2016年10月4日
,用资金10万元进行分钟回测吧,请点击 运行回测
模拟交易通过实时的分钟切片数据进行撮合,也就是 handle 函数会每分钟被触发一次循环。在开启你的策略的模拟交易之前,
你必须要对它进行一次分钟回测,才可以开启模拟交易。在上面分钟回测之后,你可以在策略回测详情页面点击 开启模拟交易。
然后你将在模拟交易列表中看到进行中的策略。
点击导航栏中的 [我的策略] ,可以在 [模拟交易] 一栏看到创建的模拟交易,如下图:
点击右边的微信通知开关,将 OFF 调至 ON ,并按照指示扫描二维码,绑定微信,就能通过微信接收交易信号了。
当该策略进行买卖操作,你的微信会收到类似下图的信号提醒。微信推送的延迟非常小,使得你能根据信号进行及时的下单操作。
是不是很轻松,数行代码就可以把你的投资策略变成代码,大家都来试试吧!
@今日话题 @一只特立独行的猪 @量化钢铁侠 @ETF拯救世界 @市值风云 @DAVID自由之路 @没干货不废话 @stockmarker @弱弱的投资者