1990年,史蒂夫 · 尼森将古老的蜡烛图技术系统地介绍给了西方投资界,这一举动震惊了传统的技术分析方法,史蒂夫 · 尼森因此被誉为现代蜡烛图技术之父。
图片来源:网络
蜡烛图不仅全球广泛普及,而且经久不衰,沿用至今。几乎在任何一个交易软件上都能看到它的身影,之所以如此流行,得益于其简单性和清晰性。
作为投资的入门读物,很多人一开始都会选择史蒂夫 · 尼森的《日本蜡烛图技术》。这本书详细描述了蜡烛图的各种形态:反转形态、持续形态等多达几十种,如果要加上形态的变种以及各种组合恐怕要有上百种之多。
图片来源:网络
如上图所示,这些各有特征且种类繁多的名称,是由价格走势中若干经典型形态作出归纳命名,用来推断出市场现存的趋势将会延续或反转。
蜡烛图技术真的可以预测市场吗?我们还是写一个策略来验证一下。这里先以史蒂夫 · 尼森最为推崇的神奇十字星为例。
图片来源:https://www.quantinfo.com/
源码如下:
注:源码运行环境在发明者量化平台
测试配置:
图片来源:发明者量化平台
测试螺纹钢(黑色系)结果:
图片来源:发明者量化平台
如你所见,如果只利用蜡烛图技术中的十字星形态,作为买卖依据,其结果跟抛硬币差不多。
一个例子可能不足以说明,接着我们试试在蜡烛图技术中使用率最高的反转形态:锤子线和倒锤子线。
图片来源:网络
源码如下:
注:源码运行环境在发明者量化平台
测试配置:
图片来源:发明者量化平台
测试螺纹钢(黑色系)结果:
图片来源:发明者量化平台
只利用锤子线和倒锤子线形态作为买卖依据,测试效果会比十字星形态要好一些。按照教科书上的说法,锤子线通常带着长长的下影线,意味着杀跌动能被消化,后市看涨;倒锤子线通常带着长长的上影线,意味着上涨动能被消耗,后市看跌。
但也许是拟合了品种,让我们在测试一下橡胶,源码原封不动,只修改了交易品种,测试橡胶(化工系)结果:
图片来源:发明者量化平台
以及动力煤(能源系)的测试结果:
图片来源:发明者量化平台
在蜡烛图形态中,反转形态:锤子线和倒锤子线,使用比较多,作用也比较大。除此之外,还有一些反转形态和持续形态,信号相对弱很多。但是只是以纯粹的蜡烛图技术就足够了吗?
接着,我们来看一下,蜡烛图技术与一些传统技术分析相结合后的表现,我们以技术分析中最常用的移动平均线为例:
源码如下:
// 参数
maLen = 200
contractType = "rb000/rb888/10,ru000/ru888/1,ZC000/ZC888/5"
function main() { // 主程序
var contractTypeDic = {}; // 新建一个合约品种对象
var contractTypeArr1 = contractType.split(","); // 处理合约类型
var contractTypeArr2 = []; // 新建一个空数组
for (var i = 0; i < contractTypeArr1.length; i++) {
contractTypeArr2.push(contractTypeArr1[i].split('/'));
} // 批量处理合约类型
for (var key = 0; key < contractTypeArr2.length; key++) {
for (var kay = 0; kay < contractTypeArr2[key].length; kay++) {
contractTypeDic[contractTypeArr2[key][1]] = {
unit: Number(contractTypeArr2[key][2]),
falsePosition: 0
}
}
} // 批量处理,给合约品种对象添加属性
var re = /\/\d{1,3}/gm // 正则表达式
var name = contractType.replace(re, ""); // 处理下单合约名称字符串
// 调用商品期货交易类库中的CTA框架。参数1:用每个品种的指数数据产生信号,用每个品种的当前主力合约下单。参数2:策略逻辑的回调函数。
$.CTA(name, function(st) {
var bars = st.records; // 获取K线数组
if (!bars || bars.length < maLen + 1) {
return;
} // 检测K线数据的长度。如果K线数据过短,则继续等待数据
var ma = TA.MA(bars, maLen); // 获取移动平均线,返回数组
var ma1 = ma[ma.length - 2]; // 获取上根K线的移动平均线数据
var close1 = bars[bars.length - 2].Close; // 获取上根K线的收盘价
var longArr = talib.CDLHAMMER(bars) // 调用talib库中的锤子线形态,返回数组
var shortArr = talib.CDLINVERTEDHAMMER(bars) // 调用talib库中的倒锤子线形态,返回数组
var long = longArr[longArr.length - 2] // 获取上根K线锤子线形态数据
var short = shortArr[shortArr.length - 2] // 获取上根K线倒锤子线形态数据
if (contractTypeDic[st.symbol].falsePosition > 0 && (close1 < ma1 || short > 0)) {
contractTypeDic[st.symbol].falsePosition = 0;
return -contractTypeDic[st.symbol].unit;
} // 平多单
if (contractTypeDic[st.symbol].falsePosition < 0 && (close1 > ma1 || long > 0)) {
contractTypeDic[st.symbol].falsePosition = 0;
return contractTypeDic[st.symbol].unit;
} // 平空单
if (contractTypeDic[st.symbol].falsePosition == 0 && close1 > ma1 && long > 0) {
contractTypeDic[st.symbol].falsePosition = 1;
return contractTypeDic[st.symbol].unit;
} // 开多单
if (contractTypeDic[st.symbol].falsePosition == 0 && close1 < ma1 && short > 0) {
contractTypeDic[st.symbol].falsePosition = -1;
return -contractTypeDic[st.symbol].unit;
} // 开空单
});
}
注:源码运行环境在发明者量化平台
组合测试结果:
图片来源:发明者量化平台
在多品种组合测试环境下,蜡烛图技术配合传统技术分析(移动平均线)展示了它十足的威力,更改的策略源码也非常简单,仅仅增加了一个线上不发空单,线下不发多单,这样至少控制了 25% 左右的无效信号。
不得不说,蜡烛图技术在 K 线形态理论的发展之初,具备很大的影响力,对于交易初学者也具备一定的学习价值。但是我还是要说蜡烛图技术存在一个巨大的 BUG,甚至说它是一种伪科学。
这要从交易数据的源头说起。我们都知道,我们现在所看到的 K 线并不是交易所直接传过来的,而是软件商根据交易所推出的 Tick 数据合成的。
图片来源:网络
而 Tick 数据则是交易所根据时间切片推出的一张张订单买卖撮合后数据快照,你可以把这些 Tick 数据想象成一个个小点。
当你在交易软件上切换 K 线周期的时候,软件就会按照这个时间周期范围的起始值和结束值,把这些小点切成一段一段的,并组合成你要的 K 线。在这时间范围内,起始值的价格就是开盘价,结束值就是收盘价,这个时间范围内的最高价格就是最高价,这个时间范围内的最低价格就是最低价。一根根 K 线就是这么组成的。
图片来源:https://www.quantinfo.com/
这就是不管切换哪个时间周期,总会碰到蜡烛图技术中所说的那些形态。而蜡烛图技术就是根据随机出现这些特定形态,来预测未来价格是反转还是持续。你可能会越来越觉得,蜡烛图技术怎么越看越像占星术?
这就是为什么蜡烛图技术是一种伪科学的原因。蜡烛图作为一种技术分析的一种,但又和传统的技术分析不一样,就像十二星座如果连接恰当的星星,总能拼出一幅图案。而同样的形态,由于认知不同又可能得到完全不相同的结果。
图片来源:网络
总而言之,蜡烛图终究绘制的是历史数据,从历史中寻找规律来预测未来本就是一件不能够 100% 确定的事情。即使交易者掌握了丰富的技术要领,也不可能保证现实世界的情况总是和理想的价格形态相吻合,正所谓一切信号只是概率,而非必然。
相关推荐:
[ 资源 ] 日本蜡烛图技术