资讯详情 TA-Lib Python 蜡烛图形态识别完全指南:61 个 CDL 形态一次讲透
📅 2026/11/4 11:09:29
TA-Lib Python 蜡烛图形态识别完全指南61 个 CDL 形态一次讲透【免费下载链接】ta-lib-pythonPython wrapper for TA-Lib (http://ta-lib.org/).项目地址: https://gitcode.com/gh_mirrors/ta/ta-lib-python拿到一段open/high/low/close数据后如何一次性识别出吞没、晨星、三只乌鸦等 61 种经典 K 线形态TA-Lib Python 把底层 C 库的全部 Pattern Recognition 算法统一封装为CDL前缀函数形态识别结果可直接转成回测与风控用的买卖信号。本文覆盖全部 61 个函数的调用方式、信号语义、penetration参数与三种 API 的取舍。先跑通一次调用 ⚡️import numpy as np import talib n 120 open_ np.random.random(n) high np.maximum(open_, np.random.random(n)) 0.05 low np.minimum(open_, np.random.random(n)) - 0.05 close np.random.random(n) # 三个函数同一次扫描输出均为与输入等长的 int32 数组 engulf talib.CDLENGULFING(open_, high, low, close) crows talib.CDL3BLACKCROWS(open_, high, low, close) morning talib.CDLMORNINGSTAR(open_, high, low, close, penetration0.2) print(np.where(engulf -100)[0]) # 看跌信号所在 K 线位置 print(np.where(morning 100)[0]) # 看涨信号位置输入约定很简单open/high/low/close四个等长一维浮点数组长度不一致会直接报错。与均线类指标最大的差别是形态函数没有timeperiod参数——一个形态需要看几根 K 线由形态本身决定单根、双根或三根以上不存在可调窗口。读懂输出信号的三态语义 形态函数的输出是np.int32整数数组与输入等长每个位置只有三种取值取值含义100当前 K 线触发看涨形态0未触发或处于 lookback 前段-100当前 K 线触发看跌形态前段为什么是0而不是NaN每个形态函数都有一个lookback——识别出首个有效信号前需要的最少历史 K 线数由底层 C 库计算。talib/_func.pxi 中用make_int_array把 lookback 之前的位置统一填0保证输出数组无NaNnp.where、布尔掩码这类操作可以直接用不需要先处理缺失值。talib/_ta_lib.pyi 中每个CDL*函数的返回类型都声明为NDArray[np.int32]IDE 补全与静态检查以此为准。61 个形态按实战场景分组 按 K 线根数划分只是查字典按信号方向分组才贴近实盘决策。以下四组包含全部 61 个函数签名与 docs/func_groups/pattern_recognition.md 完全一致。底部反转信号怎么捕捉下跌末端出现时提示止跌可能是左侧观察的第一信号建议等右侧 K 线确认后再介入。单根反转、双根确认与三根组合各占一席integer CDLHAMMER(open, high, low, close) # Hammer 锤子线 integer CDLINVERTEDHAMMER(open, high, low, close) # Inverted Hammer 倒锤子线 integer CDLDRAGONFLYDOJI(open, high, low, close) # Dragonfly Doji 蜻蜓十字星 integer CDLTAKURI(open, high, low, close) # Takuri 探水竿 integer CDLCLOSINGMARUBOZU(open, high, low, close) # Closing Marubozu 收盘光头光脚 integer CDLPIERCING(open, high, low, close) # Piercing 刺透形态 integer CDLHARAMI(open, high, low, close) # Harami 孕线 integer CDLHARAMICROSS(open, high, low, close) # Harami Cross 十字孕线 integer CDLBREAKAWAY(open, high, low, close) # Breakaway 脱离形态顶部反转信号怎么捕捉上涨高位出现时提示动能衰竭与放量、长上影叠加时权重更高integer CDLINVERTEDHAMMER(open, high, low, close) # Inverted Hammer 倒锤子线 integer CDLSHOOTINGSTAR(open, high, low, close) # Shooting Star 射击之星 integer CDLGRAVESTONEDOJI(open, high, low, close) # Gravestone Doji 墓碑十字星 integer CDLDARKCLOUDCOVER(open, high, low, close, penetration0) # Dark Cloud Cover 乌云盖顶 integer CDLCOUNTERATTACK(open, high, low, close) # Counterattack 反攻形态 integer CDLHOMINGPIGEON(open, high, low, close) # Homing Pigeon 家鸽 integer CDLONNECK(open, high, low, close) # On-Neck Pattern 颈上线 integer CDLINNECK(open, high, low, close) # In-Neck Pattern 颈内线 integer CDLEVENINGSTAR(open, high, low, close, penetration0) # Evening Star 黄昏星 integer CDLEVENINGDOJISTAR(open, high, low, close, penetration0) # Evening Doji Star 黄昏十字星 integer CDLUPSIDEGAP2CROWS(open, high, low, close) # Upside Gap Two Crows 向上跳空两只乌鸦 integer CDLCONCEALBABYSWALL(open, high, low, close) # Concealing Baby Swallow 藏婴吞没其中CDLDARKCLOUDCOVER与两个黄昏星变体带penetration参数可单独调灵敏度。趋势延续与中继信号怎么用连续多根同向结构确认趋势健康回测里常作加仓与持有条件比单根反转形态可靠integer CDL3WHITESOLDIERS(open, high, low, close) # Three White Soldiers 三白兵 integer CDL3BLACKCROWS(open, high, low, close) # Three Black Crows 三只乌鸦 integer CDLIDENTICAL3CROWS(open, high, low, close) # Identical Three Crows 相同三只乌鸦 integer CDLRISEFALL3METHODS(open, high, low, close) # Rising/Falling Three Methods 上升/下降三法 integer CDLGAPSIDESIDEWHITE(open, high, low, close) # Up/Down-gap side-by-side white lines integer CDLSEPARATINGLINES(open, high, low, close) # Separating Lines 分离线 integer CDL3OUTSIDE(open, high, low, close) # Three Outside Up/Down 三外部 integer CDL3INSIDE(open, high, low, close) # Three Inside Up/Down 三内部 integer CDLPIERCING(open, high, low, close) # Piercing 刺透形态阳线刺穿阴线实体中性与观察类形态放在哪里用十字星、纺锤线、光头光脚这类形态不直接给方向用来识别多空拉锯、盘整与缺口行为适合当过滤器或与其他指标联动integer CDLDOJI(open, high, low, close) # Doji 十字星 integer CDLLONGLEGGEDDOJI(open, high, low, close) # Long Legged Doji 长腿十字星 integer CDLDOJISTAR(open, high, low, close) # Doji Star 十字星线 integer CDLRICKSHAWMAN(open, high, low, close) # Rickshaw Man 黄包车夫 integer CDLSPINNINGTOP(open, high, low, close) # Spinning Top 纺锤线 integer CDLHIGHWAVE(open, high, low, close) # High-Wave Candle 高浪线 integer CDLMARUBOZU(open, high, low, close) # Marubozu 光头光脚 integer CDLLONGLINE(open, high, low, close) # Long Line Candle 长实体线 integer CDLSHORTLINE(open, high, low, close) # Short Line Candle 短实体线 integer CDLBELTHOLD(open, high, low, close) # Belt-hold 腰带线 integer CDL2CROWS(open, high, low, close) # Two Crows 两只乌鸦 integer CDLTHRUSTING(open, high, low, close) # Thrusting 脱手形态 integer CDL3LINESTRIKE(open, high, low, close) # Three-Line Strike 三线打击 integer CDL3STARSINSOUTH(open, high, low, close) # Three Stars In The South 南方三星 integer CDLMATHOLD(open, high, low, close, penetration0) # Mat Hold 垫住形态上升趋势中继 integer CDLADVANCEBLOCK(open, high, low, close) # Advance Block 前进阻挡 integer CDLTASUKIGAP(open, high, low, close) # Tasuki Gap 脱节缺口 integer CDLHIKKAKE(open, high, low, close) # Hikkake Pattern 陷阱形态 integer CDLHIKKAKEMOD(open, high, low, close) # Modified Hikkake 修正陷阱形态 integer CDLKICKING(open, high, low, close) # Kicking 反冲形态 integer CDLKICKINGBYLENGTH(open, high, low, close) # Kicking by Length 按实体长度定多空 integer CDLLADDERBOTTOM(open, high, low, close) # Ladder Bottom 梯底 integer CDLSTALLEDPATTERN(open, high, low, close) # Stalled Pattern 停顿形态 integer CDLSTICKSANDWICH(open, high, low, close) # Stick Sandwich 夹棒 integer CDLTRISTAR(open, high, low, close) # Tristar 三星 integer CDLUNIQUE3RIVER(open, high, low, close) # Unique 3 River 独特三河 integer CDLXSIDEGAP3METHODS(open, high, low, close) # Upside/Downside Gap Three Methods integer CDLMATCHINGLOW(open, high, low, close) # Matching Low 并列低价penetration 阈值怎么调61 个函数中只有 7 个多出一个penetration: float 0参数声明见 talib/_ta_lib.pyi函数形态典型场景CDLMORNINGSTARMorning Star 晨星底部反转CDLMORNINGDOJISTARMorning Doji Star 早晨十字星底部反转CDLEVENINGSTAREvening Star 黄昏星顶部反转CDLEVENINGDOJISTAREvening Doji Star 黄昏十字星顶部反转CDLDARKCLOUDCOVERDark Cloud Cover 乌云盖顶顶部反转CDLABANDONEDBABYAbandoned Baby 弃婴极端反转CDLMATHOLDMat Hold 垫住上升趋势中继它控制实体穿透/重叠比例的判定阈值默认0最严格取值越大判定越宽松、触发越频繁。具体阈值逻辑在底层 C 库中实现Python 层只做透传。# 高波动品种上默认阈值可能从不触发放宽后再看信号分布 strict talib.CDLEVENINGSTAR(o, h, l, c) loose talib.CDLEVENINGSTAR(o, h, l, c, penetration0.2) print((loose ! 0).sum() - (strict ! 0).sum()) # 放宽后多出的信号数三种调用风格怎么权衡维度Function APIAbstract APIStream API输入4 个等长 numpy 数组dict/pandas.DataFrame/polars.DataFrame历史数组建句柄 逐根标量输出等长int32数组等长int32数组int标量适用历史批量扫描、回测数据管道对接实时逐根行情Function API 即前文的talib.CDL*直调适合一次性批量扫描。Abstract API 接受 dict 或 DataFramerun与直接调用等价tests/test_abstract.py 中有逐项一致性断言from talib import abstract # dict 键为 open/high/low/closepandas/polars DataFrame 同样支持 func abstract.Function(CDLMORNINGSTAR) print(func.info) # name / group / input_names / output_names print(func.lookback) # 首个有效信号前需要的最少 K 线数 out func({open: o, high: h, low: l, close: c})Stream API 建一次句柄后增量计算每来一根 K 线只需 O(1) 更新无需重扫历史实现见 talib/_stream.pxifrom talib import stream handle stream.CDLENGULFING(o, h, l, c) # 历史数据建立句柄 print(handle.value) # int 标量-100 / 0 / 100 signal handle.update(o_new, h_new, l_new, c_new) # 新 K 线增量更新三者的信号语义一致差别只在输出形态批量接口返回数组流式接口返回标量。句柄支持pickle传递结果tests/test_stream.py 对全部形态函数做了流式/批量一致性验证。从源码到测试的验证链条Cython 包装模板talib/_func.pxi 中每个CDL*函数走同一条流水线check_array校验输入类型 →check_length4断言四数组等长 →check_begidx4跳过前段NaN→lib.TA_*_Lookback()算出 lookback →make_int_array前段填 0 → 调用 C 库写入int32结果。61 个函数均由同一模板生成。类型桩talib/_ta_lib.pyi 声明全部 61 个函数返回类型统一NDArray[np.int32]补全与静态检查以此为准。docstring 统一生成talib/_abstract.pxi 中的Output is a candlestick标志负责把输出统一渲染为integer (values are -100, 0 or 100)流式测试直接扫描该标志收集全部形态函数做参数化测试。数值断言tests/test_func.py 用 20 根样例 K 线对CDL3BLACKCROWS整段数组精确断言——前 17 位全0第 18 位-100Abstract 与 Function 结果逐元素相等Stream 的value断言为int且与批量结果末位一致。延伸阅读形态识别函数参考docs/func_groups/pattern_recognition.md全部函数清单docs/funcs.md函数 API 使用指南docs/func.md抽象 API 指南docs/abstract.md文档索引docs/doc_index.md【免费下载链接】ta-lib-pythonPython wrapper for TA-Lib (http://ta-lib.org/).项目地址: https://gitcode.com/gh_mirrors/ta/ta-lib-python创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考