混沌一词原指宇宙混乱状态的描述,其思想是:结果是必然的,但是由于现有知识无法计算出结果,因为计算本身也在改变结果,最后可能出现最大或最小的结果,而没有必然的结果。
这与交易市场非常类似,参与者在分析市场,并付诸行动的时候也改变了市场。市场具有永恒变异性,当参与者了解到市场新形态后,市场同样也了解到它被参与者所认识,于是变异就发生了。
并且它一定会趋向于参与者未知的方向去变异,它具有足够的智慧防止参与者捕捉到它的变化规律,也就是说,市场不具有稳定性,对市场过去的认识不能代表未来。
混沌操作法,是一整套完整的投资思想、交易策略和进出场信号,由比尔·威廉姆斯发明。从上个世纪末以来就开始风靡美国,得到了众多投资专家和专业交易员的肯定。
目前国际上有很多投资者用混沌操作法参与市场交易,由于我国金融市场发展滞后,而混沌理论也是相对新潮的一种思想,所以国内研究混沌操作法的人也很少。
鉴于混沌操作法是一个普适性非常高的交易策略,能够应用于几乎所有的金融投资领域,包括股票、债券、期货、外汇、数字货币,所以希望能够通过本篇的抛砖引玉,提高大家的投资兴趣和收益。
顾名思义,混沌操作法的理论基础就是混沌理论,混沌理论由气象学家 Edward Lorenz 提出,是20世纪末最伟大的科学发现之一。著名的“蝴蝶效应”就是他提出来的。
比尔威廉姆斯创造性地将混沌理论应用于金融投资领域,并结合分形几何学、非线性动力学等学科,创造出了一系列非常有效的技术分析指标。
整个混沌操作法是由五大维度(技术指标)构成的:
鳄鱼线(如上图)就是运用分形几何学与非线性动力学的一组平衡线,其本质就是扩展指数加权移动平均线,属于均线的一种,只不过计算方法比普通均线稍微复杂一些。先来看看鳄鱼线的定义:
// 参数
N1:=11;
N2:=21;
// 定义价格中线
N3:=N1+N2;
N4:=N2+N3;
HL:=(H+L)/2;
// 鳄鱼线
Y^^SMA(REF(HL,N3),N4,1);
R:=SMA(REF(HL,N2),N3,1);
G:=SMA(REF(HL,N1),N2,1);
首先定义价格中线,即最高价与最低价的平均值,对于唇吻来说就是中线的小周期再次平均,牙齿就是中线的中周期再次平均,颚部就是中线的大周期再次平均。在实战中,我们使用的是颚部。
分形(如上图)就是在面前张开手掌,手指朝上,中指就是上分形,左边的小指和无名指,右边的食指和拇指分别代表未创新高的K线。一个基本的分形就由这5根K线组成。
// 分形
TOP_N:=BARSLAST(REF(H,2)=HHV(H,5))+2;
BOTTOM_N:=BARSLAST(REF(L,2)=LLV(L,5))+2;
TOP:=REF(H,TOP_N);
BOTTOM:=REF(L,BOTTOM_N);
MAX_YRG^^MAX(MAX(Y,R),G);
MIN_YRG^^MIN(MIN(Y,R),G);
TOP_FRACTAL^^VALUEWHEN(H>=MAX_YRG,TOP);
BOTTOM_FRACTAL^^VALUEWHEN(L<=MIN_YRG,BOTTOM);
同理,下分形就是手指朝下。如果最近的上分形被突破,并且回调时未跌穿最近的下分形,基本可以判断市场可能要转空为多,反之亦然。
本策略是基于混沌理论的鳄鱼线和分形指标,组合形成的交易策略。以一组指数加权移动平均线作为鳄鱼线和分形指标计算的基准价格。
// 如果当前无多单,并且收盘价升破上分形,并且上分形在鳄鱼线上方时,多头开仓
BKVOL=0 AND C>=TOP_FRACTAL AND TOP_FRACTAL>MAX_YRG,BPK(1);
// 如果当前无空单,并且收盘价跌破下分形,并且下分形在鳄鱼线下方时,空头开仓
SKVOL=0 AND C<=BOTTOM_FRACTAL AND BOTTOM_FRACTAL<MIN_YRG,SPK(1);
// 如果收盘价跌破鳄鱼的下巴时,多头平仓
C<Y,SP(BKVOL);
// 如果收盘价升破鳄鱼的下巴时,空头平仓
C>Y,BP(SKVOL);
(*backtest
start: 2010-01-01 09:00:00
end: 2019-01-01 15:00:00
period: 1d
exchanges: [{"eid":"Futures_CTP","currency":"FUTURES","minfee":10}]
args: [["N1",11],["N2",21],["ContractType","rb000",126961]]
*)
N3:=N1+N2;
N4:=N2+N3;
HL:=(H+L)/2;
// 鳄鱼线
Y^^SMA(REF(HL,N3),N4,1);
R:=SMA(REF(HL,N2),N3,1);
G:=SMA(REF(HL,N1),N2,1);
// 分形
TOP_N:=BARSLAST(REF(H,2)=HHV(H,5))+2;
BOTTOM_N:=BARSLAST(REF(L,2)=LLV(L,5))+2;
TOP:=REF(H,TOP_N);
BOTTOM:=REF(L,BOTTOM_N);
MAX_YRG^^MAX(MAX(Y,R),G);
MIN_YRG^^MIN(MIN(Y,R),G);
TOP_FRACTAL^^VALUEWHEN(H>=MAX_YRG,TOP);
BOTTOM_FRACTAL^^VALUEWHEN(L<=MIN_YRG,BOTTOM);
// 如果当前无多单,并且收盘价升破上分形,并且上分形在鳄鱼线上方时,多头开仓
BKVOL=0 AND C>=TOP_FRACTAL AND TOP_FRACTAL>MAX_YRG,BPK(1);
// 如果当前无空单,并且收盘价跌破下分形,并且下分形在鳄鱼线下方时,空头开仓
SKVOL=0 AND C<=BOTTOM_FRACTAL AND BOTTOM_FRACTAL<MIN_YRG,SPK(1);
// 如果收盘价跌破鳄鱼的下巴时,多头平仓
C<Y,SP(BKVOL);
// 如果收盘价升破鳄鱼的下巴时,空头平仓
C>Y,BP(SKVOL);
完整策略源代码: https://www.youquant.com/strategy/129077
为了将回测更接近于实盘环境,这里把手续费设置为交易所的2倍,开仓和平仓各加2跳的滑点。回测的数据品种为螺纹钢指数,交易品种为螺纹钢主力连续,固定1手开仓。以下是在1小时级别的初步回测绩效报告。
从资金曲线和回测绩效数据来看,该策略表现良好,整体资金曲线是稳步向上的。但是螺纹钢品种从2016年底之后,市场特性已经发生了改变,由之前高波动率单边走势转变为宽幅震荡走势。从资金曲线上看,2017年至今盈利明显乏力。
综上,混沌操作法的精髓就是找到转折点,而不需要关心市场怎么走,也不需要关心真假突破,如果突破分形就直接入场。这也是本篇前言的初衷,永远不要试图去预测市场,而是做一个观察者和跟随者。
淘西西 谢谢分享,感谢