紧接着上篇的文章,我们需要知道,波动对于价格的反馈能力是最好的,甚至预备一定的预测性,所以巧妙设计一个指标来捕捉波动,应用波动,有很大的门道。
策略1(AMA策略):
取10天作为计算ER的参数,计算AMA时的过程见上篇。自适应均线拐头向上时按照收盘价买入;自适应均线拐头向下时按照收盘价卖出。用本次ama减去上次的ama的正负来判断均线的走势,针对可能出现的错误信号加入一个安全垫,安全垫的公式如下:
Filter =percentage * stdev( ama[i] –ama[i-1], n)
即取均线增长值在n天内标准差的一个比例值,正常n取20天,percentage原文中没有提及,循环取0.1,0.2---1.0来测试。买卖规则如下:
策略2(普通的均线策略):
取ma10作为买卖的分水岭,当收盘价大于ma10时买入;小于ma10时卖出买卖规则如下:
策略3(以股价和AMA来判断)
取ama作为买卖的分水岭,当收盘价大于ama时买入;小于ama时卖出买卖规则如下:
策略4(买入持有)
不做任何买卖操作,实验结果如下:
结果分析:
从上述结果可以看到, 基于原文自适应均线的交易策略,以上证综指为对象,获得了比较不错的效果, 比正常的指数收益超出126%左右,比以10日均线的买卖策略超出107%。究其原因,主要是自适应均线在保留均线策略在指数大幅下跌时能够避开主要跌幅的优势外,在牛市时不会因为暂时跌破短期均线频繁操作而减少利润。
已破解的交易策略源码:
DIRECTION:=CLOSE-REF(CLOSE,10);
VOLATILITY:=SUM(ABS((CLOSE-REF(CLOSE,1))),10);
ER:=ABS(DIRECTION/VOLATILITY);
FASTSC:=2/(2 + 1);
SLOWSC:=2/(30 + 1);
SSC:=ER*(FASTSC-SLOWSC)+SLOWSC;
cxh99.com:c,nodraw;
CONSTANT:=SSC*SSC;
AMAHIGH:=REF(EMA(HIGH,100),1)+CONSTANT*(HIGH- EMA(HIGH,100));
AMACLOSE:=REF(EMA(CLOSE,100),1)+CONSTANT*(CLOSE- REF(EMA(CLOSE,100),1));
AMALOW:=REF(EMA(LOW,100),1)+CONSTANT*(LOW- EMA(LOW,100));
REF(LOW>AMAHIGH,1),BK;
REF(CLOSE<AMACLOSE OR CLOSE<=0.995*BKPRICE,1),SP;
REF(HIGH<AMALOW,1),SK;
REF(CLOSE>AMACLOSE OR CLOSE>=1.005*SKPRICE,1),BP;
AUTOFILTER;
源码解析:
DIRECTION赋值:收盘价-10日前的收盘价
VOLATILITY赋值:(收盘价-昨收)的绝对值的10日累和
ER赋值:DIRECTION/VOLATILITY的绝对值
FASTSC赋值:2/(2 + 1)
SLOWSC赋值:2/(30 + 1)
SSC赋值:ER*(FASTSC-SLOWSC)+SLOWSC
输出CXH99.COM:收盘价,NODRAW
CONSTANT赋值:SSC*SSC
AMAHIGH赋值:昨日最高价的100日指数移动平均+CONSTANT*(最高价- 最高价的100日指数移动平均)
AMACLOSE赋值:昨日收盘价的100日指数移动平均+CONSTANT*(收盘价- 昨日收盘价的100日指数移动平均)
AMALOW赋值:昨日最低价的100日指数移动平均+CONSTANT*(最低价- 最低价的100日指数移动平均)
昨日最低价>AMAHIGH,BK
昨日收盘价<AMACLOSEORCLOSE<=0.995*BKPRICE,SP
昨日最高价<AMALOW,SK
昨日收盘价>AMACLOSEORCLOSE>=1.005*SKPRICE,BP
AUTOFILTER
以上源代码直接复制到发明者量化交易平台的麦语言中就可以直接运行。