前言
解决mini-qmt自启动的问题后,就要开始自动执行策略了。我记录了一下写程序和执行代码的过程,以及发现的问题,供大家讨论。
策略选择:
为什么是债券类ETF
我选择债券类ETF轮动作为踏上量化交易的第一步。
第一,策略简单,用30年国债ETF、可转债ETF和银华日利做轮动,每22个交易日计算三者的收益率,买入最强者,如果全都为负则卖出所有ETF空仓。这个策略唯一的因子就是价格,引入太多因子会导致复杂度上升,刚开始做量化实盘,要尽量简化模型。
第二,券商对债券ETF不收佣金,很方便日频交易。在没有免五资格的情况下,频繁频繁轮动其他品种纯纯给券商送钱。
第三,这三个ETF都是t 0,调试代码时,如果出问题,可以立即纠错。
代码逻辑:从算法到执行
我的代码逻辑分为四个标准模块。如果你也在写 QMT 脚本,可以参考这个流程,注意,以下都是伪代码:
策略说明以及实际执行时遇到的问题
卖出价格则是
ETF和债券的Tick Size是0.001,股票是0.01,因为这个策略是ETF轮动,所以使用0.001,倍数是2。
对于成交量比较大的可转债ETF和银华日利,实时价格 /-2倍Tick Size差不多就是卖二/买二的档位。
对于流动性稍弱的30年国债ETF,这样也能确保在买一/卖一档位成交。
量化不只是算法
量化策略是算法,而量化交易是工程。 一个能稳定赚钱的系统,30% 取决于你选了什么标的,70% 取决于你如何处理滑点、处理撤单、处理资金利用率。
免责声明
本文仅作为编程技术及量化接口调用的交流分享,不构成任何投资建议。市场有风险,实盘需谨慎。
解决mini-qmt自启动的问题后,就要开始自动执行策略了。我记录了一下写程序和执行代码的过程,以及发现的问题,供大家讨论。
策略选择:
为什么是债券类ETF
我选择债券类ETF轮动作为踏上量化交易的第一步。
第一,策略简单,用30年国债ETF、可转债ETF和银华日利做轮动,每22个交易日计算三者的收益率,买入最强者,如果全都为负则卖出所有ETF空仓。这个策略唯一的因子就是价格,引入太多因子会导致复杂度上升,刚开始做量化实盘,要尽量简化模型。
第二,券商对债券ETF不收佣金,很方便日频交易。在没有免五资格的情况下,频繁频繁轮动其他品种纯纯给券商送钱。
第三,这三个ETF都是t 0,调试代码时,如果出问题,可以立即纠错。
代码逻辑:从算法到执行
我的代码逻辑分为四个标准模块。如果你也在写 QMT 脚本,可以参考这个流程,注意,以下都是伪代码:
- 策略初始化与环境准备
- 触发条件,寻找胜者
核心逻辑是:收益率为正且涨幅第一。
如果没有标的满足条件,系统会自动返回NONE,触发清仓防御逻辑。
- 轮动交易执行
这里的工程逻辑是:先卖后买。
为了确保快速成交,我选择了强吃对手盘的策略。
- 闲置资金逆回购
策略说明以及实际执行时遇到的问题
- 设置单次轮动最大投入,原因无他,无论回测多漂亮,都不能第一次实盘就全仓干,毕竟不清楚策略和代码哪里会出问题。
- 挂单偏移(Offset)与 Tick Size
为了尽快成交(强吃对手盘),买入和卖出时,挂单价需要在当前价格的基础上让价。算法是当前价格 /-最小价格变动单位(Tick Size)的倍数:
买入价格是
卖出价格则是
ETF和债券的Tick Size是0.001,股票是0.01,因为这个策略是ETF轮动,所以使用0.001,倍数是2。
对于成交量比较大的可转债ETF和银华日利,实时价格 /-2倍Tick Size差不多就是卖二/买二的档位。
对于流动性稍弱的30年国债ETF,这样也能确保在买一/卖一档位成交。
- 在卖出或买入时,多次轮询成交状态,如果在一定时间内(例如3分钟)仍然无法成交,就执行撤单,剩余资金全部参与逆回购。
量化不只是算法
量化策略是算法,而量化交易是工程。 一个能稳定赚钱的系统,30% 取决于你选了什么标的,70% 取决于你如何处理滑点、处理撤单、处理资金利用率。
免责声明
本文仅作为编程技术及量化接口调用的交流分享,不构成任何投资建议。市场有风险,实盘需谨慎。
Edge
Chrome
Firefox




京公网安备 11010802031449号