Pharos
TAKline

K线形态识别 (Candlestick Pattern Recognition)

K线形态识别用于识别经典的蜡烛图形态,帮助预测价格反转或持续。

📚 形态分类

看涨反转形态 (14个)

强烈的底部反转信号,适合在下跌趋势末期使用。

看跌反转形态 (12个)

强烈的顶部反转信号,适合在上涨趋势末期使用。

双向反转形态 (15个)

根据出现位置判断方向的形态,+100看涨,-100看跌。

趋势持续形态 (6个)

确认当前趋势将继续的形态。

中性识别形态 (14个)

提供市场状态信息的形态。

📖 快速开始

基本用法

所有K线形态函数都需要四个价格数组:开盘价、最高价、最低价、收盘价。

python
# 获取K线数据
records = exchange.GetRecords()
opens = [r['Open'] for r in records]
highs = [r['High'] for r in records]
lows = [r['Low'] for r in records]
closes = [r['Close'] for r in records]

# 检测锤子线
hammer = TA.CDLHAMMER(opens, highs, lows, closes)
if hammer[-1] == 100:
    Log("检测到看涨锤子线")

# 检测早晨之星
morning_star = TA.CDLMORNINGSTAR(opens, highs, lows, closes, penetration=0.3)
if morning_star[-1] == 100:
    Log("早晨之星,强烈看涨信号")

返回值说明

所有形态函数返回一个数组,每个值表示:

  • +100: 看涨形态
  • 0: 无形态
  • -100: 看跌形态

前置要求

⚠️ 所有K线形态识别函数都需要安装 TA-Lib 库

bash
pip install TA-Lib

💡 使用建议

1. 结合趋势使用

python
# 趋势判断
sma50 = TA.SMA(closes, 50)
sma200 = TA.SMA(closes, 200)

# 只在上升趋势中使用看涨形态
if sma50[-1] > sma200[-1]:
    hammer = TA.CDLHAMMER(opens, highs, lows, closes)
    if hammer[-1] == 100:
        Log("上升趋势 + 锤子线 = 买入")

2. 多形态确认

python
# 检测多个看涨形态
hammer = TA.CDLHAMMER(opens, highs, lows, closes)
morning_star = TA.CDLMORNINGSTAR(opens, highs, lows, closes)
engulfing = TA.CDLENGULFING(opens, highs, lows, closes)

bullish_count = 0
if hammer[-1] == 100: bullish_count += 1
if morning_star[-1] == 100: bullish_count += 2  # 权重更高
if engulfing[-1] == 100: bullish_count += 1

if bullish_count >= 2:
    Log("多个看涨形态,强烈买入信号")

3. 成交量验证

python
volumes = [r['Volume'] for r in records]
vol_sma = TA.SMA(volumes, 20)

# 形态 + 成交量放大
hammer = TA.CDLHAMMER(opens, highs, lows, closes)
if hammer[-1] == 100 and volumes[-1] > vol_sma[-1] * 1.5:
    Log("锤子线 + 成交量放大 = 强烈买入")

🎯 最佳实践

形态可靠性排名

最可靠 (胜率 >65%)

  • 早晨之星 / 黄昏之星
  • 三白兵 / 三只乌鸦
  • 吞没形态
  • 弃婴形态

中等可靠 (胜率 50-65%)

  • 锤子线 / 射击之星
  • 刺透形态 / 乌云盖顶
  • 孕线形态

参考形态 (胜率 <50%)

  • 单根小K线形态
  • 需要强确认信号

常见组合策略

python
def pattern_trading_system():
    """完整的形态交易系统"""
    records = exchange.GetRecords()
    if len(records) < 100:
        return
    
    opens = [r['Open'] for r in records]
    highs = [r['High'] for r in records]
    lows = [r['Low'] for r in records]
    closes = [r['Close'] for r in records]
    
    # 1. 趋势判断
    sma50 = TA.SMA(closes, 50)
    sma200 = TA.SMA(closes, 200)
    trend = 'UP' if sma50[-1] > sma200[-1] else 'DOWN'
    
    # 2. 形态识别
    hammer = TA.CDLHAMMER(opens, highs, lows, closes)
    morning = TA.CDLMORNINGSTAR(opens, highs, lows, closes)
    
    # 3. 综合判断
    if trend == 'UP' and (hammer[-1] == 100 or morning[-1] == 100):
        Log("符合买入条件")
        stop_loss = min(lows[-3:]) * 0.98
        return 'BUY', stop_loss
    
    return 'HOLD', None

⚠️ 注意事项

  1. 必须安装 TA-Lib: 所有形态识别函数都需要 TA-Lib 库
  2. 数据质量: 需要准确的OHLC数据
  3. 最小数据量: 建议至少100根K线
  4. 回测验证: 不同市场形态有效性不同
  5. 风险管理: 形态信号不是100%准确,必须设置止损

📊 形态统计

  • 总计: 61个K线形态
  • 看涨反转: 14个
  • 看跌反转: 12个
  • 双向反转: 15个
  • 趋势持续: 6个
  • 中性识别: 14个

🔗 相关文档

📖 深入学习

建议学习路径:

  1. 从最可靠的形态开始(早晨之星、三白兵、吞没)
  2. 理解形态背后的市场心理
  3. 结合其他技术指标使用
  4. 回测验证形态有效性
  5. 建立自己的形态交易系统