多均线策略思路如下:当5日均线大于10日均线、10日均线大于30日均线时,收盘价格高于5日均线价格的1.01倍,买入股票;
当5日均线小于10日均线、10日均线小于30日均线时,收盘价格低于5日均线价格的0.99倍,卖出股票。
1、编写初始化函数
我们还是以聚宽BigQuant软件为例,给大家详细拆解如何实现一个完整的双均线策略。
首先进入聚宽JoinQuant量化交易平台的首页页面。然后在菜单栏中找到“我的策略”,点击旁边的【进入策略列表】,点击新建策略,命名为“双均线量化策略”。


删除文本框中所有代码,重新编写代码。首先导入函数,然后编写初始化函数,具体代码如下:
# 导入函数库import jqdatafrom jqlib.technical_analysis import *def initialize(context):# 定义一个全局变量, 保存要操作的股票# 000538(股票:云南白药) g.security = '000538.XSHE'# 设定沪深 300 作为基准 set_benchmark('000300.XSHG')# True 为开启动态复权模式,使用真实价格交易 set_option('use_real_price', True)# 设定成交量比例 set_option('order_volume_ratio', 1)# 股票类交易手续费是:买入时佣金万分之三,卖出时佣金万分之三加千分之一印花税, 每笔交易佣金最低扣 5 块钱 set_order_cost(OrderCost(open_tax=0, close_tax=0.001, \ open_commission=0.0003, close_commission=0.0003,\ close_today_commission=0, min_commission=5), type='stock')# 运行函数run_daily(trade, 'every_bar')
2、编写交易程序函数
在定时函数run_daily中,调用了交易程序函数trade,函数的具体代码如下:
def trade(context): security = g.security# 设定均线 n1 = 5 n2 = 10 n3 = 30# 获取股票的收盘价 close_data = attribute_history(security, n3+2, '1d', ['close'],df=False)# 取得过去 ma_n1 天的平均价格 ma_n1 = close_data['close'][-n1:].mean()# 取得过去 ma_n2 天的平均价格 ma_n2 = close_data['close'][-n2:].mean()# 取得过去 ma_n3 天的平均价格 ma_n3 = close_data['close'][-n3:].mean()# 取得上一时间点价格 current_price = close_data['close'][-1]# 取得当前的现金 cash = context.portfolio.cash# 如果当前有余额,并且n1日均线大于n2日均线,n2日均线大于n3日均线,上一时间点价格高出5天平均价1%,则全仓买入if ma_n1 > ma_n2 and ma_n2 > ma_n3 and current_price> 1.01*ma_n1:# 用所有 cash 买入股票 order_value(security, cash)# 记录这次买入 log.info("Buying %s" % (security))# 如果n1日均线小于n2日均线,n2日均线小于n3日均线,上一时间点价格低于5天平均价1%,并且目前有头寸elif ma_n1 < ma_n2 and ma_n2 < ma_n3 and current_price< 0.99*ma_n1 and context.portfolio.positions[security].closeable_amount > 0:# 全部卖出 order_target(security, 0)# 记录这次卖出 log.info("Selling %s" % (security))
利用attribute_history()函数获取股票数据,然后获取5日、10日、30日均线的值及上一时间点价格。
如果当前有余额,并且n1日均线大于n2日均线,n2日均线大于n3日均线,上一时间点价格高出5天平均价1%,则全仓买入,代码如下:
if ma_n1 > ma_n2 and ma_n2 > ma_n3 and current_price > 1.01*ma_n1:
如果n1日均线小于n2日均线,n2日均线小于n3日均线,上一时间点价格低于5天平均价1%,并且目前有头寸,代码如下:
elif ma_n1 < ma_n2 and ma_n2 < ma_n3 and current_price < 0.99*ma_n1 and context.portfolio.positions[security].closeable_amount > 0:
3、策略回测
在回测之前,设置开始时间为2025年1月1日,结束时间为2026年1月1日。设置账户交易资金为10万元,交易频率为每天。

设置好各项参数后,单击“编译运行”按钮,可以编译运行多均线量化交易策略。在运行完毕后,可以看到策略收益和基准收益对比图表

在这里可以看到基准收益为17.66%,而策略收益为26.85%,这表明多均线量化交易策略对基准,即沪深300来说,是一个不错的策略。对长虹美菱(000521)来说,策略收益较高,是一个很不错的策略。
以上就是今天分享的全部内容!学会 Python 双均线策略,只是你量化交易之路的起点。真正让策略从回测走向稳定盈利,离不开专业、稳定、高效的实盘交易环境。
现在市面上也推出很多量化交易平台,但像我们上面举例的聚宽平台,虽然能做回测和策略研究,但无法直接对接实盘交易,研究和落地之间始终隔着一道墙,策略再好也难以转化为真实收益。
而QMT 量化软件,支持 Python语言,Tick 级行情实时推送、严谨风控与极速下单,无论是新手入门还是进阶策略优化,都能为你提供从代码编写到实盘运行的一站式解决方案。让专业工具为你的交易保驾护航,用代码把握机会,从 QMT 开始,轻松开启科学量化交易之路。
如何开通QMT实盘量化软件?
1、QMT开通流程
(1)开户成功后入金10万后提交QMT申请流程
(2)申请过程全程线上,预计2个工作日申请完成。
(3)等待开通过程中,可以提供测试账号、安装配置流程、量化会员资料。
(4)开通成功后,会通过邮件发送你软件下载地址,登录账号后就可以使用。
2、VIP服务
3、VIP福利
福利1:惊喜佣金
福利2:领取完整教程
福利3:添加量化讨论群
福利4:提供专业量化问题解答
福利5:量化工具安装使用教程、视频
福利6:极速柜台,量化投资者专用,速度微秒级
福利7:提供服务器托管模式:ptrade+ldp极速柜台+vip定向服务器(限50人)