SF34 | 股指日内交易策略(开发贴)

松鼠宽客
2021-08-26

工欲善其事,必先利其器



『正文』

ˇ


大家好,我是乌克兰剑圣。

这一期我们开发一个股指的日内策略,为了多平台源码适应,我们基于收盘价机制编写。收盘价模型有利也有弊,如果你的周期比较大,比如在15分钟以上,日线级这种的出入场信号会有比较大的滞后。但是,对于5分钟级别以下,短线的交易模型滞后性不明显,且可以过滤一些毛刺大针。


特征一:

股指一天交易4个小时且没有夜盘,交易时间短,手续费昂贵,频繁的进出场不一定有好的收益结果。最重要的是抓住日内的一个波段,也就是最肥最美的鱼身行情。


特征二:

连续性差,股指跳空是经常发生的事情。过大的跳空缺口基本消化了市场预期,全天的走势大概率横盘或反抽。大跳空之后立即进场不是明智的选择,相反会承担较大的风险。


简介:


适用周期:3分钟

适用品种:IF888,IH888,IC888

手续费滑跳:默认实盘手续费,双向各1滑

说明:策略原生品种是IF,其他俩个股指建议自己重新调整参数


原理:

针对上述特征制定交易条件:

  1. 收盘清仓

  2. VWAP日内成交量均线

  3. 跨周期判断大级别趋势

  4. 强弱过滤

5.出场条件

6.跳空行情过滤



VWAP日内成交量均线


我们知道VWAP的使用分别是微观与宏观俩个层面,本期我们以微观层面的算法来帮助我们实现策略,也就是以下这个公式来计算:

   成交量加权均价,上述公式即 N周期内每笔成交量*每笔成交价格的乘积之和/N周期内成交量之和。

       简单算术平均线(MA),指数移动平均值(EMA),加权算术移动平均线(SMA),这些均线的计算方式各有不同,也有不同的平滑效果,但都只是价格和时间的二维构成,本质上并无区别。成交量加权均价(VWAP)就不一样了,它把计算成本价最重要的因子成交量考虑进来,得到的成本价格相对于其他均线更具有说服力。



如图所示,日内成交量均线就OK了,这个主要是帮助判断日内趋势。



跨周期判断大级别趋势


TB论坛以前有一个代码实现跨周期的案例,我们可以直接使用:


Mtsummation






















ParamsSeries<Numeric> Price(1);Series<Numeric> BarCnt(0);Numeric Length(10);VarsSeries<Numeric> SumValue(0);Numeric i; Numeric j(0);BeginSumValue = 0;For i = 1 to Length{If (Price[j] <> InvalidNumeric){SumValue = SumValue + Price[j];j = j + BarCnt[j];}else Break;}Return SumValue;End

Mtbar(跨周期Bar线)























































































































ParamsNumeric TimeFrame(1440);    // 目标时间周期:月线=40320,周线=10080,日线=1440,4小时线=240// 其他1小时内的周期等于相应的分钟数,如:1小时=60, 30分钟=30。。。// 支持不规则分钟数,如3分钟,8分钟,之类都行
Numeric BarsBack(1); // 目标时间周期BAR偏移:// 1--表示将目标时间周期下的前1根K线数据作为与当前Bar对应的目标时间周期下的K线数据// 0--表示将目标时间周期下的截止到目前为止的数据转换为与当前BAR对应的目标时间周期下K线数据
NumericRef oCurBar;                 // 目标时间周期下的Bar索引NumericRef oOPenHT;         // 目标时间周期下的开盘价NumericRef oHighHT;         // 目标时间周期下的最高价NumericRef oLowHT;          // 目标时间周期下的最低价NumericRef oCloseHT;        // 目标时间周期下的收盘价NumericRef oVolHT;          // 目标时间周期下的成交量NumericRef oOpenIntHT;      // 目标时间周期下的持仓量
VarsSeries<Numeric> barCnt;Series<Numeric> CurBar;Series<Numeric> barCntSum;Series<Numeric> OpenHT;Series<Numeric> HighHT;Series<Numeric> LowHT;Series<Numeric> CloseHT;Series<Numeric> VolHT;Series<Numeric> OpenIntHT;Numeric CurTime;Numeric PreTime;bool condition(false);Numeric i;BeginIf (TimeFrame == 40320)                 // 月线{CurTime = Month;PreTime = Month[1];}Else If (TimeFrame == 10080)                        // 周线{CurTime = IntPart(DateDiff(19700105,Date)/7);PreTime = IntPart(DateDiff(19700105,Date[1])/7);}Else                                                                        // 其他时间周期{CurTime = IntPart((DateDiff(19700105,date)*1440 + Hour*60 + Minute)/TimeFrame);PreTime = IntPart((DateDiff(19700105,date[1])*1440 + Hour[1]*60 + Minute[1])/TimeFrame);} condition = CurTime != PreTime;
If (CurrentBar==0)                // 如果是第一根Bar, CurBar=0{barCnt = 0;CurBar = 0;OpenHT = Open;HighHT = High;LowHT = Low;CloseHT = Close;VolHT = Vol;OpenIntHT = OpenInt;}Else{If(Condition)                // 如果在目标周期下,属于另一根K线,则CurBar加1{barCnt = 1;CurBar = CurBar[1] + 1;OpenHT = Open;HighHT = High;LowHT = Low;VolHT = Vol;}Else// 如果在目标周期下,属于同一根K线,则CurBar不变,但最高价和最低价要记录价格的变化,成交量要累加{barCnt = barCnt[1] + 1;CurBar = CurBar[1];OpenHT = OpenHT[1];HighHT = Max(HighHT[1],High);LowHT = Min(LowHT[1],Low);VolHT = VolHT[1] + Vol;}// 收盘价和持仓量总是取最新值CloseHT = Close;OpenIntHT = OpenInt;}
// 上面的程序,在每根小周期的K线上,记录了它所属的大时间周期下的开高低收等值的变化。// 接下来,要把在大的时间周期级别上,属于同一根K线的开高低收这些数据,记录在这一组小周期K线的最后一根上。barCntSum = barCnt ;If(BarsBack == 0)// 如果Bar偏移参数为0,则取每根小周期K线上保留的大时间周期截止到这根小周期K线为止的BAR数据{barCntSum = 0 ;}Else If(BarsBack == 1)// 如果Bar偏移参数为1,则取大时间周期的上一根K线的BAr数据{barCntSum = barCnt ;}Else// 如果BAR偏移参数为其他,则取大时间周期的指定偏移后的那根K线的BAR数据{For i = 2 To BarsBack{barCntSum = barCntSum + barCnt[barCntSum];}}
// 最后将相应的K线数据作为引用参数返回oCurBar = CurBar;oOpenHT = OpenHT[barCntSum];oHighHT = HighHT[barCntSum];oLowHT = LowHT[barCntSum];oCloseHT = CloseHT[barCntSum];oVolHT = VolHT[barCntSum];oOpenIntHT = OpenIntHT[barCntSum];Return barCnt;End


Mtma(跨周期均线)




























ParamsNumeric TimeFrame(1440);        // 目标时间周期参数,参数说明参见MtBarNumeric BarsBack(1);                // 目标时间周期BAR偏移参数,说明见MtBar函数Numeric Length(10);                        // 均线周期NumericRef oMA;             // 以目标时间周期下的K线数据计算出的移动平均线VarsSeries<Numeric> mtBarCnt; Series<Numeric> mtClose;Numeric refCurBar;Numeric refOpen;Numeric refHigh;Numeric refLow;Numeric refClose;Numeric refVol;Numeric refOpenInt;
Numeric SumValue(0);Numeric i;Numeric j(0);BeginmtBarCnt = MtBar(TimeFrame,BarsBack,refCurBar,refOpen,refHigh,refLow,refClose,refVol,refOpenInt);mtClose = refClose;
SumValue = MtSummation(mtClose,mtBarCnt,Length);oMA = SumValue/Length;Return mtBarCnt;End



黄色线就是跨周期均线,判断大级别趋势很有必要,日内也要顺势而为。


强弱判断,跨周期获得强弱指标变化值


跳空过滤


虽然整体重心是下移的,但是日内交易并不好做,跳空以后横盘,再跳空反抽。这种情况常见,但是不好统计特征,暂且设置为不做。


移动出场:


震荡过滤:



绩效测试


TBquant平台(2019年至今,平台限制5Wbar,10年测试请看WH8):






文华8平台(2010年至2021年):




总结


模型下单是K线走完下单,收盘价模型的通用性很好,SF34的TB和文华平台的源码绩效测试很接近。股指日内模型还可以继续优化,为了减少震荡行情的交易次数,条件设置的过于严苛,有可能会错过一些行情。建议作为辅助策略配合趋势策略组合使用,有问题或者改进思路,我们在社群里交流吧。


下期预告:Orderflow社群 | 订单流因子分钟交易模型



本策略仅作学习交流使用,实盘交易盈亏投资者个人负责。



End


咨询详情



长按下方二维码

加客服“小松鼠-松鼠宽客”
微信号: viquant01


对话框回复 SF34 咨询源码领取

(例如:俱乐部加入→回复VIP)

加入松鼠俱乐部

加入Orderflow社群

加入《另类策略》社群



---------------往期精彩内容---------------


OF社群系列(近期更新)

数字货币市场两个微观特征的解析与利用

股指日内交易的量化因子

主动买卖力量与价格相关性分析

Orderflow社群介绍

量化研究专栏(近期更新)

量化研究丨CTA如何选择品种

量化研究 | 多空不对称

量化研究 | 来聊一下量化交易的人工干预、参数失效、筛选品种

量化研究 | 残差动量策略刻画与构建(二)

量化研究 | 残差动量策略刻画与构建(一)

量化研究 | 主连复权算法大揭秘[含公式算法]

量化研究 | 策略在指数与主连复权的差异化分析(三)

量化研究 | 策略在指数与主连复权的差异化分析(二)

量化研究 | 策略在指数与主连复权的差异化分析(一)

策略跟踪:

我是如何一步一步创新高的

CTA策略跟踪报告及策略点评(二)

CTA策略跟踪报告及策略点评(一)

算法策略专辑(近期更新)

10.【算法策略】把期货当现货做,专业投机大局观

9.【算法策略】波动率调节器提高CTA策略盈利能力

8.【算法策略】追涨杀跌+震荡反手,趋势震荡相结合的交易策略

7.【算法策略】 MACD跨周期短线交易策略开发(股指+商品双版)

6.【算法策略】基于残差动量的横截面期货交易策略

5.【算法策略】商品统计套利之趋势套利策略

4.【算法策略】傅里叶滤波结合跨周期波段模型

3.【日内模型】TBquant信号回测版本+python历史回测版源码

2.【日内模型】第二版本基于orderflow的盘口策略(完整源码)

1.【日内模型】基于orderflow的盘口策略开发帖

精品自动交易策略库(近期更新):
【SF33】| 超级趋势线之系列3

【SF32】丨超短进出场策略必备利器

【SF31】丨构建抄底摸顶策略的一小步

【SF30】| 双均线交易模型的震荡过滤

【SF29】丨魔改自适应均线+多空不对称组合

【SF28】| 股指“三缺一”策略,2多1空组合方式

【SF27】 | 如何开发一个日内交易模型

【SF26】| 适用于商品+股指的枢轴点趋势策略
【SF25】|日内交易策略开发(一)黄金日内交易模型

【SF24】| 海龟交易策略的“宽窄”改进版

【SF23】| 朴实无华的Dual Thrust策略长期保持正期望收益
【SF22】| 来给你的交易策略加一个"变速箱",五挡起步那种

【SF21】| 利用PSY指标,我们来开发一个短线模型?

【SF20】| 来聊聊平仓离场的方法,如何构建高效,灵活,可靠的出场策略?

【SF19】| 基于VWAP(成交量加权平均价格)开发Alpha均线增强策略

【SF18】| MACD顶底背离+动态区间交易模型源码(技术贴)

【SF17】| 均线波动差构建交易策略

【SF16】| "凹凸"均线形态交易策略源码(技术帖)

【SF15】| 波峰波谷交易策略结合ER降噪过滤

【SF14】| Supertrend“超级趋势线”指标魔改升级(源码)
【SF13】| 实盘策略解密“小品种,小资金”在跑策略源码!

【SF12】| 全新波动率算法,自适应区间+波动率择时!

【SF11】| 成交量来确定阻力支撑点,基于Volume Profile构建交易策略

【SF10】| 如何构建一个胜率超过60%的短线螺纹策略(开发教程)

【SF09】| 资金流向交易策略源码,绩效突出,适应性兼容性强,5分钟交易模型;
【SF08】| 经典KD指标另类使用有奇效,股指商品双版本策略

祝点击在看的小伙伴,2021账户长虹

分享