龙听期货论坛's Archiver

C
+
+


 微信: QQ:

龙听 发表于 2017-12-21 16:29

[策略探讨] 突破策略之参数自动化

[table=98%]
[tr][td]原文参考合作:[url=http://www.bituzi.com/2013/01/blog-post_18.html]http://www.bituzi.com/2013/01/blog-post_18.html[/url]

刚开始进入程式交易世界时,很多人会用最佳化参数的方式来挑选参数使用,但是随着环境的不同,就会开始自己一直去调整参数。当然,也不是所有参数都需要一直去做调整,但是,如果可以让自己的程式中的参数,随着环境改变而自动去调整变化,这样也许可以让程式变得更有弹性。

先介绍一个简单的交易策略当作范例,那就是N天的区间突破策略,其实也可以看成N根K棒的突破策略。

一般这种顺势突破策略在什么市场最容易赚大钱呢?
那当然是在趋势明显走一段的大多头或大空头市场,
但是如果遇到盘整格局的走势时,可能会有多空讯号反覆的问题。
不过盘整盘是所有顺势策略的死穴,不单单是这策略的问题。

N天的区间突破策略的问题在于N

那这个N会有什么问题呢?你想想,当你设定N为5时,
如果现在趋势明显,很好,进场会进的很快,
可是当趋势混沌不明,忽上忽下时,这时候不就惨了,
一下作多一下作空,每天都被杀好玩的。

所以,如果在趋势明显的时候,可以让N小一点,
在盘整的时候,可以让N变得大一点,这样多有弹性阿!
重点来了,你要怎么让N去自动变化呢?

首先,想要决定N的大小,关键在于趋势是否明显。
如果趋势明显,也表示指数的波动会比较大。
如果趋势是盘整,就表示指数会一直在某个区间整理,
这样的波动会比较小,所以大家想到了吗?
换句话来说,关键在于波动的大小。


假设我们一开始所设定的N是20,
因此也可以算出20根K棒的标准差,叫V20好了。
但是我们想用短一点的时间来衡量标准差,10根K棒好了,
所以也可以得到10根K棒的标准差,就叫做V10吧! 。

那如何藉由波动率的变化来改变N?
请看以下策略源码体会体会


[align=left][size=4][color=#000000]N[font=宋体]天的区间突破策略原理:[/font][/color][/size][/align][align=left][size=3][color=#000000][font=宋体]当今天的价格的高点突破过去[/font]N[font=宋体]天的最高点时买入,当今天的低点跌破过去的[/font]N[font=宋体]天的最低点时卖出。[/font][/color][/size][/align][align=left][color=#000000][font=宋体][size=3]此策略适合趋势比较明显的商品,尤其是单边商品。[/size][/font][/color][/align]
[align=left][size=3][color=#000000][font=宋体]测试商品股指[/font]IF[font=宋体],使用两图表,子图[/font]1[font=宋体]周期为[/font]1 hour[font=宋体],子图[/font]2[font=宋体]周期为[/font]1 day[font=宋体]。源码如下:[/font][/color][/size][/align]
[align=left][color=blue][size=10pt][/size][/color][/align][align=left][color=blue][font="][size=11pt]inputs[/size][/font][/color][color=black][font="][size=11pt]:[/size][/font][/color][color=#646464][font="][size=11pt] [/size][/font][/color][color=#CC0066][font="][size=11pt]x[/size][/font][/color][color=black][font="][size=11pt]([/size][/font][/color][color=darkblue][font="][size=11pt]20[/size][/font][/color][color=black][font="][size=11pt]),[/size][/font][/color][color=#CC0066][font="][size=11pt]y[/size][/font][/color][color=black][font="][size=11pt]([/size][/font][/color][color=darkblue][font="][size=11pt]10[/size][/font][/color][color=black][font="][size=11pt])[/size][/font][/color][color=#646464][font="][size=11pt] [/size][/font][/color][color=black][font="][size=11pt];[/size][/font][/color][/align][align=left][color=#808080][size=11pt]//[/size][font=宋体][size=11pt]定义波动率参数[/size][/font][/color][/align][align=left][color=blue][font="][size=11pt]Vars[/size][/font][/color][color=black][font="][size=11pt]:[/size][/font][/color][color=#646464][font="][size=11pt] [/size][/font][/color][color=#A447C7][font="][size=11pt]V20[/size][/font][/color][color=black][font="][size=11pt]([/size][/font][/color][color=darkblue][font="][size=11pt]10[/size][/font][/color][color=black][font="][size=11pt]),[/size][/font][/color][color=#A447C7][font="][size=11pt]V10[/size][/font][/color][color=black][font="][size=11pt]([/size][/font][/color][color=darkblue][font="][size=11pt]10[/size][/font][/color][color=black][font="][size=11pt]),[/size][/font][/color][color=#A447C7][font="][size=11pt]N2[/size][/font][/color][color=black][font="][size=11pt]([/size][/font][/color][color=darkblue][font="][size=11pt]10[/size][/font][/color][color=black][font="][size=11pt]),[/size][/font][/color][color=#A447C7][font="][size=11pt]N1[/size][/font][/color][color=black][font="][size=11pt]([/size][/font][/color][color=darkblue][font="][size=11pt]10[/size][/font][/color][color=black][font="][size=11pt]),[/size][/font][/color][color=#A447C7][font="][size=11pt]N[/size][/font][/color][color=black][font="][size=11pt]([/size][/font][/color][color=darkblue][font="][size=11pt]10[/size][/font][/color][color=black][font="][size=11pt]);[/size][/font][/color][/align][align=left][color=#808080][size=11pt]//[/size][font=宋体][size=11pt]定义变量[/size][/font][/color][/align]
[align=left][color=#A447C7][font=&quot;][size=11pt]V20[/size][/font][/color][color=black][font=&quot;][size=11pt]=[/size][/font][/color][color=purple][font=&quot;][size=11pt]Volatility[/size][/font][/color][color=black][font=&quot;][size=11pt]([/size][/font][/color][color=#CC0066][font=&quot;][size=11pt]x[/size][/font][/color][color=black][font=&quot;][size=11pt])[/size][/font][/color][color=red][font=&quot;][size=11pt]of[/size][/font][/color][color=#646464][font=&quot;][size=11pt] [/size][/font][/color][color=blue][font=&quot;][size=11pt]data2[/size][/font][/color][color=black][font=&quot;][size=11pt];[/size][/font][/color][/align][align=left][color=#A447C7][font=&quot;][size=11pt]V10[/size][/font][/color][color=black][font=&quot;][size=11pt]=[/size][/font][/color][color=purple][font=&quot;][size=11pt]Volatility[/size][/font][/color][color=black][font=&quot;][size=11pt]([/size][/font][/color][color=#CC0066][font=&quot;][size=11pt]y[/size][/font][/color][color=black][font=&quot;][size=11pt])[/size][/font][/color][color=red][font=&quot;][size=11pt]of[/size][/font][/color][color=#646464][font=&quot;][size=11pt] [/size][/font][/color][color=blue][font=&quot;][size=11pt]data2[/size][/font][/color][color=black][font=&quot;][size=11pt];[/size][/font][/color][/align][align=left][color=#808080][size=11pt]//[/size][font=宋体][size=11pt]定义波动率取日线数据,取子图[/size][/font][size=11pt]2[/size][font=宋体][size=11pt]的日线线数。这个[/size][/font][size=11pt]Volatility[/size][font=宋体][size=11pt]函数是分别取[/size][/font][size=11pt]20[/size][font=宋体][size=11pt]日跟[/size][/font][size=11pt]10[/size][font=宋体][size=11pt]日[/size][/font][size=11pt]ATR[/size][font=宋体][size=11pt]的移动平均数值[/size][/font][/color][color=teal][font=&quot;][size=11pt][/size][/font][/color][/align][align=left][color=teal][size=11pt][/size][/color][/align][align=left][color=blue][font=&quot;][size=11pt]if[/size][/font][/color][color=#646464][font=&quot;][size=11pt] [/size][/font][/color][color=#A447C7][font=&quot;][size=11pt]V10[/size][/font][/color][color=black][font=&quot;][size=11pt]<>[/size][/font][/color][color=darkblue][font=&quot;][size=11pt]0[/size][/font][/color][color=#646464][font=&quot;][size=11pt] [/size][/font][/color][color=blue][font=&quot;][size=11pt]and[/size][/font][/color][color=#646464][font=&quot;][size=11pt] [/size][/font][/color][color=#A447C7][font=&quot;][size=11pt]N2[/size][/font][/color][color=black][font=&quot;][size=11pt]<>[/size][/font][/color][color=darkblue][font=&quot;][size=11pt]0[/size][/font][/color][color=#646464][font=&quot;][size=11pt] [/size][/font][/color][color=blue][font=&quot;][size=11pt]then[/size][/font][/color][color=#646464][font=&quot;][size=11pt] [/size][/font][/color][color=blue][font=&quot;][size=11pt]begin[/size][/font][/color][/align][align=left][color=#A447C7][font=&quot;][size=11pt]N1[/size][/font][/color][color=black][font=&quot;][size=11pt]=([/size][/font][/color][color=#A447C7][font=&quot;][size=11pt]N[/size][/font][/color][color=black][font=&quot;][size=11pt]*[/size][/font][/color][color=#A447C7][font=&quot;][size=11pt]V20[/size][/font][/color][color=black][font=&quot;][size=11pt])/[/size][/font][/color][color=#A447C7][font=&quot;][size=11pt]V10[/size][/font][/color][color=black][font=&quot;][size=11pt];[/size][/font][/color][/align][align=left][color=#808080][size=11pt]//[/size][font=宋体][size=11pt]定义[/size][/font][size=11pt]N1[/size][font=宋体][size=11pt]的值,前提让分母不为[/size][/font][size=11pt]0[/size][font=宋体][size=11pt]时执行,[/size][/font][/color][/align][align=left][color=#808080]//这N1=(N*V20)/V10是此参数自动化的核心, 代表你将原本固定N天的参考值改成会/根据V20和V10而变动的N1值, V20是较长期的,而V10是近期,大家看到这个公式应该可以发现,当你近期的波动率变大时,表示趋势出现,你的N1就会变小,而近期的波动率变得越小时,表示在盘整,N1就会变大,这样新的N变化似乎比较合理一点。[/color][/align]
[align=left][color=#A447C7][font=&quot;][size=11pt]N2[/size][/font][/color][color=black][font=&quot;][size=11pt]=[/size][/font][/color][color=blue][font=&quot;][size=11pt]IntPortion[/size][/font][/color][color=black][font=&quot;][size=11pt]([/size][/font][/color][color=#A447C7][font=&quot;][size=11pt]N1[/size][/font][/color][color=black][font=&quot;][size=11pt]);[/size][/font][/color][/align][align=left][color=#808080][size=11pt]//[/size][font=宋体][size=11pt]给[/size][/font][size=11pt]N1[/size][font=宋体][size=11pt]取整赋值给[/size][/font][/color][size=11pt][color=#808080]N2[/color][/size][/align][align=left][color=blue][font=&quot;][size=11pt]end[/size][/font][/color][color=black][font=&quot;][size=11pt];[/size][/font][/color][/align]
[align=left][color=#646464][size=11pt][/size][/color][/align][align=left][color=darkred][font=&quot;][size=11pt]value1[/size][/font][/color][color=black][font=&quot;][size=11pt]=[/size][/font][/color][color=purple][font=&quot;][size=11pt]Average[/size][/font][/color][color=black][font=&quot;][size=11pt]([/size][/font][/color][color=blue][font=&quot;][size=11pt]high[/size][/font][/color][color=#646464][font=&quot;][size=11pt] [/size][/font][/color][color=red][font=&quot;][size=11pt]of[/size][/font][/color][color=#646464][font=&quot;][size=11pt] [/size][/font][/color][color=blue][font=&quot;][size=11pt]data2[/size][/font][/color][color=black][font=&quot;][size=11pt],[/size][/font][/color][color=#A447C7][font=&quot;][size=11pt]N2[/size][/font][/color][color=black][font=&quot;][size=11pt])[/size][/font][/color][color=red][font=&quot;][size=11pt]of[/size][/font][/color][color=#646464][font=&quot;][size=11pt] [/size][/font][/color][color=blue][font=&quot;][size=11pt]data2[/size][/font][/color][color=black][font=&quot;][size=11pt];[/size][/font][/color][/align][align=left][color=darkred][font=&quot;][size=11pt]value2[/size][/font][/color][color=black][font=&quot;][size=11pt]=[/size][/font][/color][color=purple][font=&quot;][size=11pt]Average[/size][/font][/color][color=black][font=&quot;][size=11pt]([/size][/font][/color][color=blue][font=&quot;][size=11pt]low[/size][/font][/color][color=#646464][font=&quot;][size=11pt] [/size][/font][/color][color=red][font=&quot;][size=11pt]of[/size][/font][/color][color=#646464][font=&quot;][size=11pt] [/size][/font][/color][color=blue][font=&quot;][size=11pt]data2[/size][/font][/color][color=black][font=&quot;][size=11pt],[/size][/font][/color][color=#A447C7][font=&quot;][size=11pt]N2[/size][/font][/color][color=black][font=&quot;][size=11pt])[/size][/font][/color][color=red][font=&quot;][size=11pt]of[/size][/font][/color][color=#646464][font=&quot;][size=11pt] [/size][/font][/color][color=blue][font=&quot;][size=11pt]data2[/size][/font][/color][color=black][font=&quot;][size=11pt];[/size][/font][/color][/align][align=left][color=#808080][size=11pt]//[/size][font=宋体][size=11pt]定义前[/size][/font][size=11pt]N2[/size][font=宋体][size=11pt]天的高点跟低点的值给[/size][/font][size=11pt]value1[/size][font=宋体][size=11pt]和[/size][/font][/color][size=11pt][color=#808080]value2[/color][/size][/align]
[align=left][color=blue][font=&quot;][size=11pt]if[/size][/font][/color][color=#646464][font=&quot;][size=11pt] [/size][/font][/color][color=blue][font=&quot;][size=11pt]close[/size][/font][/color][color=#646464][font=&quot;][size=11pt] [/size][/font][/color][color=blue][font=&quot;][size=11pt]crosses[/size][/font][/color][color=#646464][font=&quot;][size=11pt] [/size][/font][/color][color=blue][font=&quot;][size=11pt]above[/size][/font][/color][color=#646464][font=&quot;][size=11pt] [/size][/font][/color][color=darkred][font=&quot;][size=11pt]value1[/size][/font][/color][color=#646464][font=&quot;][size=11pt]  [/size][/font][/color][color=blue][font=&quot;][size=11pt]then[/size][/font][/color][color=#646464][font=&quot;][size=11pt] [/size][/font][/color][color=blue][font=&quot;][size=11pt]begin[/size][/font][/color][/align][align=left][color=blue][font=&quot;][size=11pt]buy[/size][/font][/color][color=#646464][font=&quot;][size=11pt] [/size][/font][/color][color=blue][font=&quot;][size=11pt]next[/size][/font][/color][color=#646464][font=&quot;][size=11pt] [/size][/font][/color][color=blue][font=&quot;][size=11pt]bar[/size][/font][/color][color=#646464][font=&quot;][size=11pt] [/size][/font][/color][color=red][font=&quot;][size=11pt]at[/size][/font][/color][color=#646464][font=&quot;][size=11pt] [/size][/font][/color][color=blue][font=&quot;][size=11pt]market[/size][/font][/color][color=black][font=&quot;][size=11pt];[/size][/font][/color][/align][align=left][color=blue][font=&quot;][size=11pt]end[/size][/font][/color][color=black][font=&quot;][size=11pt];[/size][/font][/color][/align][align=left][color=#808080][size=11pt]//[/size][font=宋体][size=11pt]当价格上穿高点时买入或者反向[/size][/font][/color][/align]
[align=left][color=blue][font=&quot;][size=11pt]if[/size][/font][/color][color=#646464][font=&quot;][size=11pt] [/size][/font][/color][color=blue][font=&quot;][size=11pt]close[/size][/font][/color][color=#646464][font=&quot;][size=11pt] [/size][/font][/color][color=blue][font=&quot;][size=11pt]crosses[/size][/font][/color][color=#646464][font=&quot;][size=11pt] [/size][/font][/color][color=blue][font=&quot;][size=11pt]below[/size][/font][/color][color=#646464][font=&quot;][size=11pt] [/size][/font][/color][color=darkred][font=&quot;][size=11pt]value2[/size][/font][/color][color=#646464][font=&quot;][size=11pt]  [/size][/font][/color][color=blue][font=&quot;][size=11pt]then[/size][/font][/color][color=#646464][font=&quot;][size=11pt] [/size][/font][/color][color=blue][font=&quot;][size=11pt]begin[/size][/font][/color][/align][align=left][color=blue][font=&quot;][size=11pt]sellshort[/size][/font][/color][color=#646464][font=&quot;][size=11pt] [/size][/font][/color][color=blue][font=&quot;][size=11pt]next[/size][/font][/color][color=#646464][font=&quot;][size=11pt] [/size][/font][/color][color=blue][font=&quot;][size=11pt]bar[/size][/font][/color][color=#646464][font=&quot;][size=11pt] [/size][/font][/color][color=red][font=&quot;][size=11pt]at[/size][/font][/color][color=#646464][font=&quot;][size=11pt] [/size][/font][/color][color=blue][font=&quot;][size=11pt]market[/size][/font][/color][color=black][font=&quot;][size=11pt];[/size][/font][/color][/align][align=left][color=blue][font=&quot;][size=11pt]end[/size][/font][/color][color=black][font=&quot;][size=11pt];[/size][/font][/color][/align][align=left][color=#808080][size=11pt]//[/size][font=宋体][size=11pt]当价格下穿低点时开空或者反向[/size][/font][/color][/align][/td][/tr]
[/table]

龙听 发表于 2017-12-21 16:49

MC源码:
[code]
inputs: x(20),y(10) ;
Vars: V10(10),V20(10),N(10),N1(10),N2(10);
V20=Volatility(x)of data2;
V10=Volatility(y)of data2;

if V10<>0 and N2<>0 then begin
N1=(N*V20)/V10;
N2=IntPortion(N1);
end;

value1=Average(high of data2,N2)of data2;
value2=Average(low of data2,N2)of data2;

if close crosses above value1  then begin
buy next bar at market;
end;

if close crosses below value2  then begin
sellshort next bar at market;
end;
[/code]

龙听 发表于 2017-12-21 16:55

爱心页面打包,亲们就不用自己再设置页面了,装上MC后,直接解压这个,就能在MC中打开了。下载地址:[url=http://p.qhlt.cn/file-230.html]突破策略之参数自动化.rar[/url]


[size=12px]效果图如下:(其它这也算是一个不错的趋势性策略,做螺纹、天胶类的趋势性好的品种也问题不大的)[/size]


[size=12px][img]http://p.qhlt.cn/filestores/2017/12/21/82a7e8d32f84daf70656658648cc8247.jpg[/img][/size]

页: [1]