资源加载中... loading...

混沌操作法策略源码解析

Author: 扫地僧, Created: 2020-01-11 16:57:47, Updated: 2023-12-07 20:13:12

img

一. 前言

混沌一词原指宇宙混乱状态的描述,其思想是:结果是必然的,但是由于现有知识无法计算出结果,因为计算本身也在改变结果,最后可能出现最大或最小的结果,而没有必然的结果。

这与交易市场非常类似,参与者在分析市场,并付诸行动的时候也改变了市场。市场具有永恒变异性,当参与者了解到市场新形态后,市场同样也了解到它被参与者所认识,于是变异就发生了。

并且它一定会趋向于参与者未知的方向去变异,它具有足够的智慧防止参与者捕捉到它的变化规律,也就是说,市场不具有稳定性,对市场过去的认识不能代表未来。

二. 什么是混沌操作法

混沌操作法,是一整套完整的投资思想、交易策略和进出场信号,由比尔·威廉姆斯发明。从上个世纪末以来就开始风靡美国,得到了众多投资专家和专业交易员的肯定。

目前国际上有很多投资者用混沌操作法参与市场交易,由于我国金融市场发展滞后,而混沌理论也是相对新潮的一种思想,所以国内研究混沌操作法的人也很少。

鉴于混沌操作法是一个普适性非常高的交易策略,能够应用于几乎所有的金融投资领域,包括股票、债券、期货、外汇、数字货币,所以希望能够通过本篇的抛砖引玉,提高大家的投资兴趣和收益。

三. 混沌操作法架构

顾名思义,混沌操作法的理论基础就是混沌理论,混沌理论由气象学家 Edward Lorenz 提出,是20世纪末最伟大的科学发现之一。著名的“蝴蝶效应”就是他提出来的。

比尔威廉姆斯创造性地将混沌理论应用于金融投资领域,并结合分形几何学、非线性动力学等学科,创造出了一系列非常有效的技术分析指标。

整个混沌操作法是由五大维度(技术指标)构成的:

  • 鳄鱼线(Alligator)
  • 碎形(The Fractal)
  • 动量(The Momentum)
  • 加速(Acceleration)
  • 均衡线(The Balance Line)

鳄鱼线

img

鳄鱼线(如上图)就是运用分形几何学与非线性动力学的一组平衡线,其本质就是扩展指数加权移动平均线,属于均线的一种,只不过计算方法比普通均线稍微复杂一些。先来看看鳄鱼线的定义:

// 参数
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);

首先定义价格中线,即最高价与最低价的平均值,对于唇吻来说就是中线的小周期再次平均,牙齿就是中线的中周期再次平均,颚部就是中线的大周期再次平均。在实战中,我们使用的是颚部。

四. 分形

img

分形(如上图)就是在面前张开手掌,手指朝上,中指就是上分形,左边的小指和无名指,右边的食指和拇指分别代表未创新高的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);

同理,下分形就是手指朝下。如果最近的上分形被突破,并且回调时未跌穿最近的下分形,基本可以判断市场可能要转空为多,反之亦然。

五. 策略逻辑

img

本策略是基于混沌理论的鳄鱼线和分形指标,组合形成的交易策略。以一组指数加权移动平均线作为鳄鱼线和分形指标计算的基准价格。

// 如果当前无多单,并且收盘价升破上分形,并且上分形在鳄鱼线上方时,多头开仓
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

七. 回测

img img

为了将回测更接近于实盘环境,这里把手续费设置为交易所的2倍,开仓和平仓各加2跳的滑点。回测的数据品种为螺纹钢指数,交易品种为螺纹钢主力连续,固定1手开仓。以下是在1小时级别的初步回测绩效报告。 img

八. 总结

从资金曲线和回测绩效数据来看,该策略表现良好,整体资金曲线是稳步向上的。但是螺纹钢品种从2016年底之后,市场特性已经发生了改变,由之前高波动率单边走势转变为宽幅震荡走势。从资金曲线上看,2017年至今盈利明显乏力。

综上,混沌操作法的精髓就是找到转折点,而不需要关心市场怎么走,也不需要关心真假突破,如果突破分形就直接入场。这也是本篇前言的初衷,永远不要试图去预测市场,而是做一个观察者和跟随者。


相关内容

更多内容

淘西西 谢谢分享,感谢