TAKline
TA.CDLDOJI() - 十字星
Doji 十字星形态,收盘价等于或非常接近开盘价,表示多空力量平衡,常出现在反转点。
语法
python
TA.CDLDOJI(opens, highs, lows, closes)参数
| 参数 | 类型 | 说明 |
|---|---|---|
| opens | array | 开盘价序列 |
| highs | array | 最高价序列 |
| lows | array | 最低价序列 |
| closes | array | 收盘价序列 |
返回值
返回整数数组:
- 100:识别到十字星
- 0:未识别到
形态特征
- 实体极小:开盘价≈收盘价
- 上下影线:通常有上下影线
- 市场犹豫:买卖双方势均力敌
- 反转信号:趋势中出现可能反转
识别标准
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)信号解读
位置很重要
-
上升趋势末期
- 可能反转向下
- 等待阴线确认
- 准备减仓或做空
-
下降趋势末期
- 可能反转向上
- 等待阳线确认
- 准备加仓或做多
-
横盘震荡
- 持续犹豫
- 暂不交易
- 等待突破
确认条件
十字星需要后续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 | 趋势确认 | 柱状图变化 |
注意事项
- 需要确认:单独出现不足以交易
- 看位置:趋势末端比中途重要
- 看成交量:放量更可靠
- 假信号:横盘中频繁出现,可靠性低
- 时间周期:日线级别更可靠
实战技巧
- 等待确认K线:不要在十字星当天交易
- 结合趋势指标:ADX>25时更可靠
- 设置止损:十字星高/低点外1个ATR
- 分批建仓:第一次轻仓试探
- 避免震荡:ADX<20时忽略十字星
相关形态
- 长腿十字 - CDLLONGLEGGEDDOJI(影线更长)
- 蜻蜓十字 - CDLDRAGONFLYDOJI(只有下影)
- 墓碑十字 - CDLGRAVESTONEDOJI(只有上影)
- 十字孕线 - CDLHARAMICROSS(十字星在前K线内)