十年匠心定制 · 商业建站与技术教学双线并行 咨询热线:400-886-1026 service@lmnt.cn
ARTICLE DETAIL

资讯详情

深耕网站建设与运营推广的一线实战洞察。

Vibe-Trading 艾略特波浪信号引擎实战:从三大铁律到纯 pandas 波浪计数实现

Vibe-Trading 艾略特波浪信号引擎实战:从三大铁律到纯 pandas 波浪计数实现 Vibe-Trading 艾略特波浪信号引擎实战从三大铁律到纯 pandas 波浪计数实现【免费下载链接】Vibe-TradingVibe-Trading: Your Personal Trading Agent项目地址: https://gitcode.com/GitHub_Trending/vi/Vibe-Trading导读本文围绕 Vibe-Trading 仓库中elliott-wave技能agent/src/skills/elliott-wave/SKILL.md展开讲解如何以纯 pandas/numpy 实现艾略特波浪理论Elliott Wave Theory信号引擎通过 Zigzag 检测 Swing 点、匹配 5 浪推动与 3 浪调整结构、用 Fibonacci 浪间关系验证最终生成趋势见顶 / 调整结束的交易信号。读完本文你将掌握该引擎的完整算法流程、每个参数的实际含义、如何用 OKX 数据直接跑通以及它在多 Agent 技术分析面板中的接入方式。背景为什么用波浪理论做信号艾略特波浪理论的核心假设是市场以分形fractal波浪结构运动任何级别的趋势都由两种基本结构嵌套构成结构浪数方向含义推动浪Impulse Wave5 浪1-2-3-4-5顺趋势主趋势方向调整浪Corrective Wave3 浪A-B-C逆趋势回调修正在本仓库中elliott-wave技能被归类为category: strategy其定位是一个信号引擎signal engine它不做行情预测而是检测当前价格处于波浪周期的哪个阶段从而给出顺势持有或反转信号。详细的结构图解与浪型特征见 agent/src/skills/elliott-wave/references/波浪结构.md。三大铁律推动浪的硬性约束推动浪1-2-3-4-5必须满足三条不可违反的铁律违反任意一条即视为计数错误浪 2 不能回撤超过浪 1 的起点Wave 2 cannot retrace beyond the start of wave 1浪 3 不能是最短的推动浪Wave 3 cannot be the shortest impulse wave浪 4 不能进入浪 1 的价格区域Wave 4 cannot enter the price territory of wave 1。各浪的常见特征在参考文档 波浪结构.md 中有进一步描述浪 1 趋势启动通常较弱浪 2 深度回调但不破浪 1 起点浪 3 最强最长且常有放量浪 4 浅度回调且与浪 2 交替浪 5 为最后一浪常出现动量背离。调整浪方面A 浪是初始回调、B 浪反弹无法突破前高、C 浪最终下跌通常等于 A 浪长度并存在锯齿形5-3-5、平台形3-3-5、三角形3-3-3-3-3等变体。Fibonacci 浪间关系波浪的黄金比例验证在三大铁律之外各浪之间存在典型的 Fibonacci 比例关系浪 2 回撤浪 1 的0.5–0.618参考文档给出最大回撤 0.786超过则可能不是浪 2浪 3 浪 1 ×1.618最常见也是最活跃的一浪其他常见取值为 1.0、2.618浪 4 回撤浪 3 的0.382其他取值 0.236、0.5浪 4 通常是最浅的回调浪 5 ≈ 浪 1 的长度其他取值 0.618、1.618 倍浪 1浪 5 可能失败即不创新高。完整的理论比率表见 agent/src/skills/elliott-wave/references/Fibonacci浪间关系.md。值得注意的是该参考文档明确列出了本引擎实际使用的比率浪 2/浪 1 目标 0.5–0.618、浪 3/浪 1 目标 1.618、浪 4/浪 3 目标 0.382、浪 5/浪 1 目标 1.0容差均为 ±15%——这与 SKILL.md 中的描述一致是算法实现层面的落地版本。信号逻辑三种市场状态引擎将波浪形态映射为三种信号动作5 浪推动完成5-wave advance completed→ 卖出趋势见顶ABC 调整完成ABC pullback completed→ 买入调整结束浪 3 进行中Wave 3 in progress→ 顺势持有不生成反转信号。这一逻辑与波浪理论顺势而为、逆势抄底逃顶的操作哲学完全吻合只在波浪周期关键节点出手浪 3 这种主升段则坚定持有不加戏。参数表三个可调旋钮参数默认值说明swing_window10Swing 点检测的滚动窗口窗口半径实际滑动窗口为2 * window 1fib_tolerance0.15Fibonacci 比率的容差min_wave_bars5每浪最少 K 线数这三个参数直接对应源码类构造签名见下文调整它们即可在信号数量与信号质量之间权衡swing_window越大检测出的 Swing 点越少、浪型越粗糙但越稳定fib_tolerance越大越宽容、信号越多但误判率越高min_wave_bars防止把过于短暂的小波动当成完整浪。源码深入纯 pandas 波浪计数引擎SKILL.md 的 description 声明该引擎为 Pure in-house pandas implementation。完整的可运行实现位于 agent/src/skills/elliott-wave/example_signal_engine.py核心类是SignalEngine其检测流程为Zigzag Swing 点检测滚动窗口局部极值5 浪推动结构匹配 三大铁律验证ABC 调整结构匹配Fibonacci 浪间关系过滤。第一步Zigzag Swing 点检测_find_swingsw self.swing_window full_w w * 2 1 roll_max high.rolling(full_w, centerTrue).max() roll_min low.rolling(full_w, centerTrue).min() swing_high_mask high roll_max swing_low_mask low roll_min该方法用pandas.rolling(..., centerTrue)在2*window1根 K 线上找局部最高/最低点然后遍历原始候选点过滤为严格交替的 H高点/L低点序列遇到连续同类型点时只保留更极端的一个高点更高、低点更低最终产出交替排列的 Swing 点列表每个元素为{index: datetime, price: float, type: H|L}。第二步5 浪推动结构匹配_find_impulse在交替 Swing 序列中滑动取 6 个连续点5 段浪看涨推动浪类型序列为L-H-L-H-L-H5 浪上升完成 → 返回卖出信号-1看跌推动浪类型序列为H-L-H-L-H-L5 浪下跌完成 → 返回买入信号1。随后逐一验证硬约束看涨案例的验证顺序为# 铁律1浪2不破浪1起点 if p2[price] x[price]: continue # 铁律2浪3不是最短推动浪 if wave3 wave1 and wave3 wave5: continue # 铁律3浪4不进入浪1区域 if p4[price] p1[price]: continue之后再叠加_check_min_bars最少 K 线数检查与_check_fib_ratiosFibonacci 验证全部通过才生成信号。看跌案例是完全对称的逻辑比较方向取反。第三步ABC 调整结构匹配_find_abc类似地在 Swing 序列中取 4 个连续点看跌 ABCH-L-H-LA 下、B 反弹、C 下→ 调整结束后买入信号1看涨 ABCL-H-L-HA 上、B 回落、C 上→ 调整结束后卖出信号-1。约束包括B 浪不超越起点、B 回撤 A 的 0.382–0.618、C ≈ A0.618–1.618 倍 A 浪、满足最少 K 线数。注意这里的 B 浪回撤区间0.382–0.618与推动浪中浪 2 的回撤区间0.5–0.618略有不同后者更贴近锯齿形调整的典型比例。第四步Fibonacci 验证_check_fib_ratiosr2 w2 / w1 if not (0.5 - tol r2 0.618 tol): return False r3 w3 / w1 if not (1.0 - tol r3 2.618 tol): return False r4 w4 / w3 if not (0.236 - tol r4 0.5 tol): return False实现细节值得注意虽然目标比例是浪 3/浪 1 1.618、浪 4/浪 3 0.382但源码将可接受区间放宽到 1.0–2.618 与 0.236–0.5容差tol默认 0.15在此基础上再做加减。这与参考文档中浪 3 其他取 1.0、2.618 倍浪 4 其他取 0.236、0.5的理论描述一致说明引擎对经典比例的验证是宽容的区间验证而非精确到小数点的匹配。设计哲学宁可漏信号也不误判SKILL.md 的 Notes 明确指出波浪理论高度主观自动计数可能产生多种解释本实现采用最简单有效单一解释simplest effective single interpretation策略宁可漏掉信号也不错误分类。这一哲学在代码中有多处体现所有条件不满足时一律continue跳过而非降级任何一浪幅度非正则直接否决if wave1 0 or wave3 0 or wave5 0: continue。参考文档 波浪结构.md 中列出的锯齿形/平台形/三角形等调整浪变体本引擎只实现其中最简单直接的 ABC 结构同样是简化解释哲学的体现。实战运行直接跑通 BTC/ETH/SOLexample_signal_engine.py自带了可直接运行的入口它从 OKX 公共行情接口拉取日线数据并生成信号cd agent/src/skills/elliott-wave pip install pandas numpy requests python example_signal_engine.py依赖安装命令与 SKILL.md 的 Dependencies 小节一致。脚本主流程为symbols [BTC-USDT, ETH-USDT, SOL-USDT] data_map {} for sym in symbols: data_map[sym] _fetch_okx(sym, bar1D, limit300) engine SignalEngine() signals engine.generate(data_map) for sym in symbols: sig signals[sym] print(f{sym}: 做多信号 {len(sig[sig 1])} 个, 做空信号 {len(sig[sig -1])} 个)其中_fetch_okx请求https://www.okx.com/api/v5/market/candles接口参数instId如BTC-USDT、bar默认1D、limit默认 300返回按时间正序排列的 OHLCV DataFrameindex 为 datetime包含high/low/close列。运行后将打印每个标的的做多/做空信号数量及最近一次信号日期。generate()公共 APISignalEngine.generate(data_map)接受标的代码 → OHLCV DataFrame的映射要求 DataFrame 包含high/low/close列且 index 为 datetime返回标的代码 → 信号 Series的映射Swing 点不足 4 个时返回全 0 信号观望5 浪结构在 Swing 点数 ≥ 6 时尝试匹配信号落在对应时间戳的 K 线上方向见下文约定。信号约定与 Agent 集成SKILL.md 末尾定义了信号约定1 做多long-1 做空short0 观望stand aside。该约定与generate()返回的pd.Series完全对应。在 Vibe-Trading 中技能通过 agent/src/agent/skills.py 的SkillsLoader加载每个技能目录下的SKILL.md必须存在frontmatter 中的name、description、category会被解析为Skill对象系统提示词中只注入一行摘要progressive disclosure完整文档由load_skill工具按需加载。elliott-wave技能还被直接编排进多 Agent 技术分析面板 agent/src/swarm/presets/technical_analysis_panel.yaml其中wave_analyst艾略特波浪分析师Agent 的 system_prompt 要求调用load_skill(elliott-wave)与load_skill(chanlun)严格执行三条铁律浪 2 不回撤 100% 浪 1、浪 3 非最短推动浪、浪 4 不与浪 1 重叠并用缠论笔/中枢/区间套做交叉验证输出浪型计数、铁律校验、Fibonacci 目标位、备选计数与波浪评分-5 ~ 5。最终由signal_aggregator裁判 Agent 汇总五大学派经典 TA、一目均衡、谐波形态、波浪、SMC的分数做共振加权——趋势行情提高均线/波浪权重区间行情提高谐波/一目权重从而把波浪引擎的独立信号融入整体决策。使用注意事项与局限数据长度要求_find_swings要求数据长度 ≥2 * swing_window 15 浪结构要求至少 6 个交替 Swing 点日线数据建议提供数百根 K 线示例用 300 根。时间戳差异处理_check_min_bars对 datetime 索引用天数差、对整数索引用数值差估算 K 线间隔小时级或分钟级数据会因换算方式不同而得到保守或偏松的最少 K 线校验跨周期使用时需注意。主观性天然存在如 SKILL.md 所述同一段行情可能同时匹配多种计数本引擎刻意只取最简单解释因此信号稀疏是特性而非缺陷——它的价值在于该出手时才出手。只读参考本文所述技能文件位于只读仓库中你可以在本地按上述方式查看、安装依赖并运行example_signal_engine.py验证算法不建议直接修改仓库文件如需定制可参照skills.py中用户技能目录~/.vibe-trading/skills/user的覆盖机制进行扩展。【免费下载链接】Vibe-TradingVibe-Trading: Your Personal Trading Agent项目地址: https://gitcode.com/GitHub_Trending/vi/Vibe-Trading创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
返回列表