一、问题
近看到大家在群里讨论如何充分利用多核CPU的性能,把回测效率提升起来,这其实是所有量化人的一个大痛点,走到参数优化这条路上,就必然遇到速度的问题,动辄小时起步,不够干净利索。有人建议换语言、有人建议换写法,有人建议换设备,说的都对,做着都难,有没有一种方式实现起来又简单效果又好?我告诉你,其实QMT投研版就可以,而且方法简单,成本低,效果好,今天就带大家一起感受一下, 99%的人看完就能掌握。
二、实现效果
先演示一下效果,我们有两种模式:
1. 第一种是大家最常用的,也是非常熟悉的,内置 Python 写策略,handlebar机制回测,并进行参数优化;
2. 第二种是内置 Python 调用因子公式 策略回测并进行参数优化。
2.1 方式一:纯 Python 实现
我们先用第一种,就是在官方文档里面可以复制的模板策略:用Python写的handlebar双均线单股回测,我们就跑茅台这一只品种的全历史,从 2001 年开始到现在。如果只点击回测,就是跑一组参数,大概花费 12 秒。
然后我们在右侧参数设置,这里我快线和慢线分别设置参数,共构成 50 组参数。点击策略优化,我们选择策略、选择我要观测的指标-单位净值,选择品种茅台、计算周期选择日线,复权方式选择等比前复权,点击优化,勾选上我要优化的参数,点击开始,第一种模式的参数优化就开始了,这里我们稍微加一点速……最终,50 组参数跑完花费了 380 秒。
2.2 方式二:Python 调用 因子公式
接下来,我们跑第二种,这里也是一个内置 Python 的策略,但区别是,我这里的策略回测交给了一个用因子公式写的单股回测模型,我们可以清晰地看到信号买卖点,是否准确执行,在单股模型上点击右键,选择编辑指标,就会进入因子公式编辑器。
那什么是因子公式?如果你对通达信的VBA指标很熟悉,那你肯定很熟悉。因为他们的语法几乎是一致,你的通达信指标几乎可以无缝迁移过来。你只需要在这里通过简单的加减乘除、比较运算就可以实现自己的策略思路,点击运行,就可以在主图上得到上面我们想要的信号执行效果。
让我们继续回到Python脚本,QMT投研版里有个函数叫 call_formula,它可以调用因子公式,让因子公式跑完返回结果,充分利用因子公式并行跑满多核CPU的高性能。我这里跟刚刚第一种模式的参数优化意义,同样是构造了一个 50 组参数的优化,这里我同样有加时间统计。
那我们来运行一下看看,不要眨眼。点运行,结果出来,最佳参数组合也是 7-51,跟刚刚Python回测的效果一致,花费时间:1.3 秒,结束。
策略源码如下附件:
PYTHON_调用因子公式单股回测_多进程参数优化.rzrk
(14.75 KB, 下载次数: 93)
因子公式_单股_双均线_止盈止损_示例.rzrk
(8.45 KB, 下载次数: 80)
PYTHON_双均线单股回测_参数优化.rzrk
(4.02 KB, 下载次数: 63)
不清楚的内容可添加下方助理微信咨询,有其他 QMT 小技巧想学习的吗?欢迎在下方留言,笔者将根据大家的留言持续更新哦!
欢迎和我一起加入迅投组建的 QMT 实战交流社群,交流群内有许多做量化交易的高手和大佬,具有良好的分享和互助氛围。且迅投官方会不定期为多次分享、乐于助人的群友申请送投研专业版的机会。
只需扫描下方的二维码,名额有限,限时加入。一起分享见解、交换信息、并共同进步,就像群友说的:“就算周末,晚上也有地方沟通交流!” |