专享策略No.1 | 震荡+趋势+动态调节

量化策略开发,高质量社群,交易思路分享等相关内容

4月项目安排:

1.orderflow策略最终版

2.松鼠门户网站

3.2022松鼠课程录制

『正文』

ˇ

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

今年计划推出3个专享策略,目前是第一个策略。策略迭代了7个版本,筛选出了三个版本发给大家,专享策略的好处就是可以集思广益,一起迭代策略。全部是源码,有好的思路随时在群里@我。

扫描二维码关注公众号,回复: 14190852 查看本文章

策略简介

策略采用模块分离的方式编写:

过滤器模块

动量弹球模块

离场调节模块

移动出场模块

浮盈回撤模块

模块分离的好处多多,1是可以减少主程序的代码量,方便阅读改写。2.小伙伴可以随意抽取使用,方便调用到自己的模型里。

策略分为震荡交易模式和趋势交易模式,其实还可以细分出顶底背离模式,但是会增加比较多的参数,于是作罢。

策略采用双图层跨周期交易模式,5分钟主连执行交易,60分钟指数用于部分条件判断。大周期指数可以平滑走势,小周期主连判断交易减少下单误差。

个别品种因为主力次主力合约活跃度相差较小,造成了指数失真的情况。你也可以把指数换成主连,比如苹果,鸡蛋等品种,这个社群里具体再讨论吧。

OK,我们回到策略模块。

过滤器

(主图红色连线是盈利交易,绿色连线是亏损交易,黄色标志是做多,紫色是做空)

这是一段震荡加短波的行情走势,注意过滤器的变化特征。

过滤器副图的红色线是多头判断线,绿色线是空头判断线。

红线大于0,定义为多头趋势

绿线小于0,定义为空头趋势

绿线等于0,定义为震荡。

模糊的定义出趋势与震荡。从上图的信号表现看,策略不是一个全时空持仓策略,是有空仓期的。

上图是一个连续的多头趋势+震荡

蓝框内的下跌没有做,是因为不好判断是中继还是转向。过滤器提示进入震荡后进行了空头交易。

前面我们了解到策略是择时交易策略,这不可避免的会错过一些交易机会。过滤模块过滤震荡的过程有时也会过滤掉部分波段行情。

动量弹球模块

  If(CurrentBar <= Length - 1)  {
   
       NetChgAvg = ( Close - Close[Length] ) / Length ;    TotChgAvg = Average( Abs( Close - Close[1] ), Length ) ;  }Else  {
   
       SF = 1/Length;    Change = Close - Close[1] ;    NetChgAvg = NetChgAvg[1] + SF * ( Change - NetChgAvg[1] ) ;    TotChgAvg = TotChgAvg[1] + SF * ( Abs( Change ) - TotChgAvg[1] ) ;   
  }

  If( TotChgAvg <> 0 )  {
   
     ChgRatio = NetChgAvg / TotChgAvg;  }else  {
   
     ChgRatio = 0 ;  }   RSIValue = 50 * ( ChgRatio + 1 );   Return RSIValue;

动量弹球的交易原理:大周期RSI值出现超卖超买信号,在小周期交易。

RSI的变化值呈现正弦态,像弹球一样上下运动。动量弹球模块嵌入在震荡模式里,是摸顶底的交易条件之一。

离场调节模块

1.关闭离场调节模块:

2.开启离场调节模块:

离场调节模块的作用如图所示,在趋势中尽量拿住单子,震荡里尽量落袋为安。交易就是这么朴素,不需要华丽花哨。

策略的灵魂是交易逻辑,而不是参数的Bao力穷举。参数优化就像磨刀石,是所有兵器最后的工序,不能本末倒置。

移动出场模块

将万金油出场模块化,这样我们在多次调用时减少代码量。

浮盈回撤模块

  If(BarsSinceentry == 0)  {
   
       HighAfterEntrys = High;    LowAfterEntrys = Low;  }else  {
   
       HighAfterEntrys = Max(HighAfterEntrys,High); // 记录下当前Bar的最高点,用于浮盈回撤    LowAfterEntrys = Min(LowAfterEntrys,Low);    // 记录下当前Bar的最低点,用于浮盈回撤  }  kk=LastEntryPrice*(1-0.01*StartPro1);  dd=LastEntryPrice*(1+0.01*StartPro1);  kkout=LowAfterEntrys[1]+(LastEntryPrice-LowAfterEntrys[1])*0.01*StopPro1;  dkout=HighAfterEntrys[1]-(HighAfterEntrys[1]-LastEntryPrice)*0.01*StopPro1;  If(MarketPosition==-1 && BarsSinceLastEntry>0 && LowAfterEntrys[1]<=kk && High>=kkout)   {
   
       pbout=kkout;    Return 1;    Commentary("最大盈利达到"+Text(StartPro1)+"%之后盈利回撤"+Text(StopPro1)+"%平空");  }  If(MarketPosition==1 && BarsSinceLastEntry>0 && HighAfterEntrys[1]>=dd && Low<=dkout)   {
   
       pbout=dkout;    Return -1;    Commentary("最大盈利达到"+Text(StartPro1)+"%之后盈利回撤"+Text(StopPro1)+"%平多");  }    pbout=0;  Return 0;

这个模块默认是架空的,用在股指上面可以提高胜率,但是会降低盈亏比,减少净利润,因此谨慎使用。

部分品种绩效

IF(P3)

棕榈

豆粕

PTA

LPG

玻璃(P2)

纯碱

铁矿(P2)

螺纹(P2)

苹果(P2)

结语

专享策略No.1 分为3个版本,仅仅是原理不同各有特点。具体你们拿到工作区以后自己查看比对,都是默认一手,主连映射。有问题再群里交流吧,另外:找到一个BUG奖励啊儿百包包。

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

猜你喜欢

转载自blog.csdn.net/m0_56236921/article/details/124979826
今日推荐