Skip to content

一目均衡表 (Ichimoku Kinko Hyo)

一目均衡表是日本记者细田吾一在1930年代开发的一套综合性技术分析系统,通过多条线的组合来提供市场的完整图景。

基本组成

一目均衡表由五条线组成:

1. 转换线 (Tenkan-sen)

  • 计算:(9日最高价 + 9日最低价) / 2
  • 含义:短期趋势指标,类似9日移动平均线
  • 特性:反应快速,敏感度高

2. 基准线 (Kijun-sen)

  • 计算:(26日最高价 + 26日最低价) / 2
  • 含义:中期趋势指标,类似26日移动平均线
  • 特性:稳定性强,是重要的支撑阻力位

3. 先行带A (Senkou Span A)

  • 计算:(转换线 + 基准线) / 2,向前推移26日
  • 含义:云带的边界之一
  • 特性:动态支撑阻力

4. 先行带B (Senkou Span B)

  • 计算:(52日最高价 + 52日最低价) / 2,向前推移26日
  • 含义:云带的另一个边界
  • 特性:长期趋势参考

5. 延迟线 (Chikou Span)

  • 计算:当日收盘价,向后推移26日
  • 含义:反映当前价格的历史位置
  • 特性:确认趋势强度

云带 (Kumo)

云带由先行带A和先行带B之间的区域构成:

  • 云带厚度:反映市场波动性
  • 云带颜色:通常上行时为绿色,下行时为红色
  • 支撑阻力:云带是动态的支撑阻力区域

主要信号

1. 趋势判断

  • 价格在云之上:强势上涨趋势
  • 价格在云之下:强势下跌趋势
  • 价格在云之中:震荡或过渡期

2. 交叉信号

  • 黄金交叉:转换线上穿基准线,买入信号
  • 死亡交叉:转换线下穿基准线,卖出信号

3. 云带突破

  • 向上突破云带:强烈的买入信号
  • 向下跌破云带:强烈的卖出信号

交易策略

1. 基础策略

  • 价格在云之上 + 转换线 > 基准线:做多
  • 价格在云之下 + 转换线 < 基准线:做空

2. 云带策略

  • 价格从云带下方向上突破:买入
  • 价格从云带上方向下突破:卖出

3. 三线共振

  • 价格、转换线、延迟线同向:强趋势确认

参数设置

标准参数

  • 转换线:9日
  • 基准线:26日
  • 先行带B:52日
  • 推移周期:26日

其他参数组合

  • 短期交易:(5, 15, 30, 15)
  • 长期投资:(12, 24, 60, 24)

实战应用

1. 多时间框架分析

  • 长周期确定主要趋势
  • 短周期寻找入场点

2. 配合其他指标

  • 与RSI配合判断超买超卖
  • 与成交量确认突破有效性

3. 风险管理

  • 在云带边界设置止损
  • 利用云带厚度评估风险

优势与局限

优势

  • 提供完整的市场图景
  • 多维度分析趋势
  • 动态支撑阻力系统

局限

  • 参数较多,学习成本高
  • 在震荡市中信号复杂
  • 需要较长时间适应

Python实现示例

python
import pandas as pd
import numpy as np

def ichimoku_cloud(data, tenkan=9, kijun=26, senkou_b=52):
    """
    计算一目均衡表指标
    
    参数:
    data: 包含high, low, close的DataFrame
    tenkan: 转换线周期,默认9
    kijun: 基准线周期,默认26
    senkou_b: 先行带B周期,默认52
    
    返回:
    转换线、基准线、先行带A、先行带B、延迟线
    """
    high = data['high']
    low = data['low']
    close = data['close']
    
    # 转换线
    tenkan_sen = (high.rolling(window=tenkan).max() + 
                  low.rolling(window=tenkan).min()) / 2
    
    # 基准线
    kijun_sen = (high.rolling(window=kijun).max() + 
                 low.rolling(window=kijun).min()) / 2
    
    # 先行带A
    senkou_span_a = ((tenkan_sen + kijun_sen) / 2).shift(kijun)
    
    # 先行带B
    senkou_span_b = ((high.rolling(window=senkou_b).max() + 
                      low.rolling(window=senkou_b).min()) / 2).shift(kijun)
    
    # 延迟线
    chikou_span = close.shift(-kijun)
    
    return tenkan_sen, kijun_sen, senkou_span_a, senkou_span_b, chikou_span