Pharos
TAKline

TA.CDLDOJI() - 十字星

Doji 十字星形态,收盘价等于或非常接近开盘价,表示多空力量平衡,常出现在反转点。

返回K线形态目录


语法

python
TA.CDLDOJI(opens, highs, lows, closes)

参数

参数类型说明
opensarray开盘价序列
highsarray最高价序列
lowsarray最低价序列
closesarray收盘价序列

返回值

返回整数数组:

  • 100:识别到十字星
  • 0:未识别到

形态特征

  1. 实体极小:开盘价≈收盘价
  2. 上下影线:通常有上下影线
  3. 市场犹豫:买卖双方势均力敌
  4. 反转信号:趋势中出现可能反转

识别标准

plaintext
实体大小 < (高-低) × 0.1
即:|收盘-开盘| < (最高-最低) × 10%

十字星类型

类型特征信号强度
标准十字星上下影线均衡中等
长腿十字星上下影线很长
蜻蜓十字只有下影线看涨
墓碑十字只有上影线看跌

基础示例

python
def doji_detection():
    records = exchange.GetRecords()
    if len(records) < 10:
        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]
    
    doji = TA.CDLDOJI(opens, highs, lows, closes)
    
    if doji[-1] == 100:
        Log("出现十字星,市场犹豫")
        
        # 判断趋势
        sma20 = TA.SMA(closes, 20)
        if closes[-2] > sma20[-2]:
            Log("上升趋势中的十字星 → 可能见顶")
        else:
            Log("下降趋势中的十字星 → 可能见底")

高级应用

十字星反转策略

python
def doji_reversal_strategy():
    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]
    
    doji = TA.CDLDOJI(opens, highs, lows, closes)
    rsi = TA.RSI(closes, 14)
    
    # 超买区十字星 → 看跌
    if doji[-1] == 100 and rsi[-1] > 70:
        Log("超买区十字星,准备做空")
        # 等待确认K线
        if closes[-1] < opens[-1]:  # 下一根阴线确认
            exchange.Sell(-1, 0.5)
            Log("十字星后阴线确认,做空")
    
    # 超卖区十字星 → 看涨
    elif doji[-1] == 100 and rsi[-1] < 30:
        Log("超卖区十字星,准备做多")
        if closes[-1] > opens[-1]:  # 下一根阳线确认
            exchange.Buy(-1, 0.5)
            Log("十字星后阳线确认,做多")

十字星 + 成交量确认

python
def doji_volume_confirm():
    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]
    volumes = [r['Volume'] for r in records]
    
    doji = TA.CDLDOJI(opens, highs, lows, closes)
    
    if doji[-1] == 100:
        # 计算平均成交量
        avg_volume = sum(volumes[-20:-1]) / 19
        current_volume = volumes[-1]
        
        # 成交量放大的十字星更重要
        if current_volume > avg_volume * 1.5:
            Log("放量十字星,信号强烈")
            
            # 判断位置
            atr = TA.ATR(records, 14)
            if closes[-1] > closes[-5] + 3 * atr[-1]:
                Log("高位放量十字星 → 强烈见顶信号")
                exchange.Sell(-1, 1)
            elif closes[-1] < closes[-5] - 3 * atr[-1]:
                Log("低位放量十字星 → 强烈见底信号")
                exchange.Buy(-1, 1)

信号解读

位置很重要

  1. 上升趋势末期

    • 可能反转向下
    • 等待阴线确认
    • 准备减仓或做空
  2. 下降趋势末期

    • 可能反转向上
    • 等待阳线确认
    • 准备加仓或做多
  3. 横盘震荡

    • 持续犹豫
    • 暂不交易
    • 等待突破

确认条件

十字星需要后续K线确认:

python
# 看跌确认
if doji[-2] == 100:  # 前一根是十字星
    if closes[-1] < opens[-1]:  # 当前是阴线
        if closes[-1] < lows[-2]:  # 跌破十字星低点
            Log("十字星看跌确认")
            
# 看涨确认
if doji[-2] == 100:
    if closes[-1] > opens[-1]:  # 当前是阳线
        if closes[-1] > highs[-2]:  # 突破十字星高点
            Log("十字星看涨确认")

参数优化

影线比例

调整对十字星的严格程度:

python
# 更宽松:实体 < 总范围的15%
# 更严格:实体 < 总范围的5%

结合指标

指标用途阈值
RSI超买超卖>70 或 <30
成交量确认重要性>1.5倍均量
ATR判断位置±3倍ATR
MACD趋势确认柱状图变化

注意事项

  1. 需要确认:单独出现不足以交易
  2. 看位置:趋势末端比中途重要
  3. 看成交量:放量更可靠
  4. 假信号:横盘中频繁出现,可靠性低
  5. 时间周期:日线级别更可靠

实战技巧

  1. 等待确认K线:不要在十字星当天交易
  2. 结合趋势指标:ADX>25时更可靠
  3. 设置止损:十字星高/低点外1个ATR
  4. 分批建仓:第一次轻仓试探
  5. 避免震荡:ADX<20时忽略十字星

相关形态


返回K线形态目录 | 返回 TA 指标总目录