基于 Alexander Elder,Trading for a Living: Psychology, Trading Tactics, Money Management(1993)
以交易为生 是 Alexander Elder 的奠基之作,发表于 1993 年。Elder 是一名精神科医生,1974 年从前苏联移民,在纽约金融市场发现了交易——他带来了罕见的双重专业知识:对人类行为的临床理解加上多年的实战交易经验。这种组合给了本书在纯技术著作中所没有的维度。它不仅仅是一本关于交易什么的书;它是一本关于为什么交易者失败以及如何重构自己以停止失败的书。
本书的核心论点是:交易成功取决于同时掌握三个领域——Elder 后来正式确定为三 M:心智(Mind,个人心理与纪律)、方法(Method,技术分析与交易系统)和资金(Money,风险管理与资本保全)。大多数交易者完全专注于方法——寻找完美的指标或系统——而忽视了决定任何系统能否盈利的心理素质和资金管理。
| 领域 | 核心问题 | 忽视的后果 |
|---|---|---|
| 心智 | 我能在没有情绪干扰的情况下执行计划吗? | 自我破坏、过度交易、报复交易、瘫痪 |
| 方法 | 我在解读市场行为方面有经过测试的优势吗? | 随机入场、无可重复过程、缓慢资金流失 |
| 资金 | 我能在连续亏损后仍能继续交易吗? | 灾难性回撤、账户毁灭、强制退出 |
Elder 的论点:三者中最弱的那个决定交易者的结果。 才华横溢的分析师如果纪律不佳会过度交易并返还利润。有纪律的交易者如果没有分析方法会缓慢地被佣金和滑点消耗。有方法、有纪律的交易者如果没有风险控制会被单一灾难性事件摧毁。
与 Elder 后来精化和扩展这些思想的结构化课程 Come Into My Trading Room(2002)不同,以交易为生 是原始阐述。其独特贡献包括:
Elder 在书的第一大部分 devoted to psychology——在任何关于图表或指标的讨论之前。这种排序是有意的。他的精神科经验使他相信,交易者失败的主要原因不是缺乏知识,而是缺乏自我控制。市场是一个独特的高效环境,暴露心理弱点:每一个思维缺陷、每一个情绪脆弱、每一个自我毁灭倾向都会立即受到金融亏损的惩罚。
许多人被交易吸引的原因实际上保证了失败:
Elder 的警告:诚实审视你自己的动机。 如果主要吸引力是刺激而非盈利,你是一个伪装成赌徒的人。赌博与交易感觉相同,除了一个细节——赌徒没有优势。
借鉴他的精神科训练,Elder 识别出交易者中反复出现的几种自我毁灭模式:
Elder 的处方:
Elder 在交易和成瘾行为之间做出了明确的类比:
Elder 提出的测试: 你能一个月不交易而不产生显著的心理痛苦吗?如果不能,行为已从专业活动转变为强迫。
治疗方法: 以与临床实践中治疗成瘾相同的方式对待它。承认问题。建立严格的外部控制(资金管理规则、最大交易频率)。寻求问责(交易伙伴、导师、审查结果交易小组)。
Elder 编目了在交易每个阶段扭曲决策的特定情绪状态:
| 阶段 | 危险情绪 | 行为结果 |
|---|---|---|
| 入场前 | 错过恐惧(FOMO) | 追逐价格、在没有形态时入场 |
| 入场时 | 贪婪、过度自信 | 仓位过大、止损过紧或缺失 |
| 持有盈利时 | 贪婪、兴奋 | 将目标越抬越高,未能获取部分利润 |
| 持有亏损时 | 希望、否认 | 将止损下移、向下摊平、忽视证据 |
| 出场时 | 无论结果如何都后悔 | 盈利后:"我应该持有更久。"亏损后:"我应该更早砍仓。"两者都导致下一笔交易更糟糕的决策。 |
解药: 预先承诺计划。在入场前写下入场、止损和目标*。交易期间唯一的决策是条件是否发生了足够变化以使原分析失效——不是你感觉是否想持有。
Elder 认为理解群体心理至关重要,因为价格由群体行为决定,而非个人分析。 技术分析有效不是因为图表形态有神秘预测能力,而是因为它们反映了在恐惧和贪婪影响下行动的群体的情感足迹。
任何给定时刻的市场价格代表了所有参与者的共识。当共识转变时——当群体的情绪变化时——价格移动。交易者的工作是在群体情绪变化完全反映在价格之前检测到它。
当个体放弃独立性并采纳群体的情绪状态时,群体就形成了。在市场中,这通过以下方式发生:
Elder 识别出解释市场行为的群体的几个特性:
Elder 的核心心理要求:交易者必须与群体保持距离。 这不意味着总是逆向——对抗每一个趋势就像跟随每一个趋势一样愚蠢。它的意思是即使被情绪共识包围,也要保持独立判断的能力。
实用技术:
当价格持续朝一个方向移动时,趋势存在。Elder 操作性地定义趋势:
关键原则: 趋势同时存在于每个时间框架上,它们经常冲突。一只股票可以在日线上升趋势中处于周线下降趋势内。三重滤网系统通过为不同时间框架分配不同角色来解决这些冲突。
趋势线连接两个或多个重要点:
Elder 的趋势线规则:
缺口是条形图上没有交易发生的空白空间。Elder 对它们进行分类:
交易规则: 顺着突破缺口和持续缺口的方向交易。在竭尽缺口后要谨慎。不要交易普通缺口。
Elder 涵盖经典图表形态,强调它们有效是因为反映群体心理:
反转形态(预示趋势改变):
持续形态(预示趋势暂停后恢复):
Elder 关于形态的首要规则: 永远不要单独交易形态。形态在最能得到指标确认、最出现在更高时间框架趋势方向(根据三重滤网)时最可靠。
移动平均线平滑价格数据以揭示潜在趋势。Elder 涵盖三种类型:
关键 EMA 应用:
| 周期 | 时间框架 | 角色 |
|---|---|---|
| 13 日 EMA | 日线 | 主要趋势过滤器;斜率是关键信号 |
| 26 日 EMA | 日线 | 次要趋势过滤器;13 和 26 EMA 之间的"价值区" |
| 13 周 EMA | 周线 | 三重滤网的长期趋势背景 |
交易规则:
移动平均收敛发散是一种趋势跟随动量指标。Elder 认为 MACD 直方图——而非 MACD 线本身——是更重要的组成部分。
计算:
MACD 线 = EMA(12) - EMA(26) ["快"线]
信号线 = MACD 线的 EMA(9) ["慢"线]
MACD 直方图 = MACD 线 - 信号线 [两者之间的差异]
MACD 线的解读:
MACD 直方图 — Elder 的主要关注点:
关键细微差别: 周线图上 MACD 直方图的斜率是三重滤网系统第一滤网的主要过滤器。这是 Elder 框架中任何指标最重要的单一用途。
趋向系统由 J. Welles Wilder 开发,测量趋势的方向和强度。
组成部分:
解读:
Elder 对 ADX 的使用: 主要作为过滤器。在应用趋势跟随指标(MACD、移动平均线)之前,检查 ADX。如果 ADX 低且平坦,切换到摆动指标。如果 ADX 高且上升,使用趋势跟随方法。这不是一个独立的交易系统,而是一个元指标,告诉您使用哪种类型的工具。
动量 = 今日收盘价 - N 周期前的收盘价 变动率 = (今日收盘价 / N 周期前的收盘价) × 100
两者都测量价格变化的 velocity。Elder 更喜欢 ROC,因为它在不同价格水平间进行了标准化。
解读:
Elder 的评估: 动量/ROC 作为确认有用,但作为主要信号生成器不如 MACD 直方图或随机指标可靠。
由 Larry Williams 开发,%R 测量当前收盘价在近期范围内的位置。
计算:
%R = (N 周期最高价 - 收盘价) / (N 周期最高价 - N 周期最低价) × (-100)
典型周期:7 或 14 天。结果范围从 0 到 -100。
解读:
失败 swing: 当 %R 进入超买区域但在下次反弹中未能达到它(在上升趋势中),这个"失败 swing"警告趋势正在减弱。
由 George Lane 开发,随机指标测量收盘价相对于近期范围的位置,类似于 %R 但有平滑。
计算:
%K(快速)= (收盘价 - N 周期最低价) / (N 周期最高价 - N 周期最低价) × 100
%D(慢速)= %K 的 SMA(3)
慢速 %K = %D
慢速 %D = 慢速 %K 的 SMA(3)
Elder 推荐慢速随机指标(慢速 %K 和慢速 %D)以减少噪音。
解读:
Elder 的应用: 随机指标是三重滤网系统第二滤网推荐的摆动指标之一。当周趋势上升且日随机指标跌入超卖区域时,这识别了较大上升趋势中的回调买入机会。
由 J. Welles Wilder 开发,RSI 测量平均向上价格变化与平均向下价格变化的比率。
计算:
RS = N 周期平均收益 / N 周期平均亏损
RSI = 100 - (100 / (1 + RS))
典型周期:14(Wilder 原始)或 7(更敏感,Elder 有时更喜欢)。
解读:
Elder 的评估: RSI 是一个可靠、成熟的摆动指标,但 Elder 不将其作为第二滤网的主要工具。他认为它与随机指标用于该目的大致相当,Force Index(在 Come Into My Trading Room 中引入)最终成为他首选的第二滤网工具。
成交量测量价格移动背后的承诺强度。Elder 将成交量视为仅次于价格本身的最重要数据。
核心规则:
极度高成交量的日子(达到近期平均水平的 2 倍或以上)信号 climax 事件:
在这两种情况下,climax 成交量通常标志着趋势的终点。
未平仓合约测量期货市场中未平仓合约的总数。Elder 的规则:
组合解读: 最强的看涨形态是价格上涨 + 成交量增加 + 未平仓合约增加。最强的看跌形态是价格下跌 + 成交量增加 + 未平仓合约增加。
三重滤网系统由 Elder 于 1985 年首次发表在 Futures 杂志上,并在本书中完整阐述。系统的核心见解是:每个指标只在部分时间提供有用信息,在单一时间框架上使用单一指标产生不可接受的假信号率。 通过要求三个滤网的一致——每个分析不同维度——系统显著过滤噪音。
三个滤网按顺序应用,作为关卡:如果市场未能通过任何滤网,交易被拒绝。
Elder 坚持交易者首先选择最喜欢的时间框架——匹配交易者个性和日程的时间框架。这成为中期时间框架。其他两个使用五倍因子乘数推导:
| 交易者类型 | 第一滤网(趋势) | 第二滤网(信号) | 第三滤网(入场) |
|---|---|---|---|
| 仓位交易者 | 月线 | 周线 | 日线 |
| 波段交易者 | 周线 | 日线 | 日内(4小时/1小时) |
| 日内交易者 | 日线 | 小时线(60 分钟) | 10-15 分钟 |
1993 年书中讨论最充分的组合是周线 / 日线 / 日内用于波段交易者。
目的: 在交易者操作时间框架的上一级时间框架上确定主导趋势。第一滤网是一个方向过滤器——它告诉您寻找多头、空头还是观望。
主要指标: 周线 MACD 直方图的斜率。
规则:
为什么用 MACD 直方图斜率,而非 MACD 线交叉? MACD 线交叉是一个滞后信号——当快线穿越慢线时,相当大一部分行情已经发生。直方图的斜率在线交叉之前改变方向,提供更早的动量转移指示。
最强大的第一滤网信号: 当周线 MACD 直方图出现背离(价格创出新的极端但直方图没有)然后以预期方向 tick 时,这代表趋势改变的最强可能识别。
目的: 在日线图上找到逆趋势移动——逆周线潮汐的波浪——在更大趋势的方向上提供有利的入场价格。
核心原则: 第二滤网使用摆动指标,但它逆着它们的通常解读。当周趋势上升时,第二滤网寻找日线超卖读数(而非超买)。当周趋势下降时,寻找日线超买读数。
第二滤网推荐的摆动指标(1993 年原始 formulation):
关键规则: 第二滤网识别入场区域,而非精确价格。精确入场来自第三滤网。
目的: 使用不需要指标机械技术 pinpoint 精确入场价格。第三滤网使用追踪买入止损(做多)和追踪卖出止损(做空),仅当价格确认预期方向时入场。
做多交易规则(周趋势上升,日线摆动指标超卖):
做空交易规则(周趋势下降,日线摆动指标超买):
为什么有效: 追踪止损确保您仅当价格开始朝预期方向移动时入场。如果逆趋势移动加深而非反转,止损会越来越紧,直到趋势恢复(以更好的价格触发入场)或周线信号改变(完全取消形态)。这消除了接飞刀的问题。
Elder 原始出场框架不如他后来的工作正式,但建立了基本原则:
虽然冲动系统在 Come Into My Trading Room(2002)中更充分地发展,但其概念种子出现在 以交易为生 中。Elder 观察到趋势在冲动阶段(价格和动量一起移动)和修正阶段(它们分歧)之间交替。这个想法——交易者应该区分这些阶段——在冲动期间积极交易,在修正期间谨慎交易——在 1993 年书中就已存在,即使正式的颜色编码系统后来才出现。
冲动系统结合两种测量:
当两者一致时,冲动正在形成。当它们分歧时,市场处于修正或过渡阶段。
| EMA 斜率 | MACD-H 斜率 | 冲动状态 | 行动 |
|---|---|---|---|
| 上升 | 上升 | 看涨冲动 | 买入或持有多头;不要做空 |
| 下降 | 下降 | 看跌冲动 | 卖出做空或持有空头;不要买入 |
| 混合 | 混合 | 无冲动(中性) | 允许任一方向;谨慎行事 |
在 1993 年的 formulation 中,Elder 非正式地使用这个逻辑:
Elder 直言不讳地说:资金管理的目标是生存。 任何单笔交易风险过大或允许亏损累积不受控制的交易者迟早会被摧毁,无论交易方法多好。资金管理不是为了最大化回报;而是为了确保无论多么不可能,一连串亏损都不能结束交易者的职业生涯。
规则: 任何单笔交易不要承担超过交易账户权益 2% 的风险。
计算:
最大美元风险 = 账户权益 × 0.02
仓位规模 = 最大美元风险 /(入场价格 - 止损价格)
示例:
关键原则:
规则: 如果当月总开放风险加上已平仓亏损达到账户权益的 6%,当月剩余时间停止交易。
计算:
月度风险预算 = 当月月初账户权益 × 0.06
当前使用 = 本月已平仓亏损之和 + 现有仓位的开放风险之和
如果当前使用 >= 月度风险预算 → 停止交易,直到下月
示例:
关键原则:
2% 和 6% 规则作为分层防御一起工作:
如果每笔交易最大 2%,月度限制 6%,交易者在达到月度上限之前最多可进行 3 笔全风险交易——假设三笔都是亏损。这创造了防止过度交易的自然约束。
Elder 认为大多数交易者重复同样的错误,因为他们不系统地研究自己的行为。交易日志是将经验转化为学习的工具。
每笔交易:
| 字段 | 内容 |
|---|---|
| 日期和品种 | 交易了什么,何时 |
| 形态 | 哪个滤网/信号触发了交易(例如,"周线 MACD-H 上升,日线随机指标超卖") |
| 入场价格和方式 | 价格,是否市价/限价/止损,以及原因 |
| 止损 | 位置和原因 |
| 目标 | 位置和原因 |
| 仓位规模 | 股数/合约数及 2% 计算 |
| 出场价格和原因 | 止损触发了?目标达到了?信号改变了? |
| 盈亏 | 毛利润和净利润(扣除佣金后) |
| 情绪状态 | 交易前、期间、结束后感觉如何? |
| 错误 | 你偏离计划了吗?如何偏离? |
| 评级 | 评估交易质量(而非结果)。亏损的 A 级交易比靠运气盈利的 C 级交易更好。 |
Elder 推荐周度和月度回顾:
| 错误 | 描述 | 补救 |
|---|---|---|
| 没有止损 | 在没有预定义亏损出场点的情况下入场 | 永远不要在没有止损的情况下入场。在交易前计算它。 |
| 移动止损对自己不利 | 加宽止损以避免被触发 | 这将可控亏损变成不可控的。如果止损是对的,让它工作。 |
| 向下摊平 | 向亏损仓位加仓希望它会恢复 | 向亏损者加仓是灾难的处方。只向盈利者加仓。 |
| 过度交易 | 交易过于频繁,通常出于无聊或 FOMO | 限制自己仅交易满足所有三个滤网的形态。 |
| 资本不足 | 用太少的资金交易,迫使每笔交易风险过大 | 在能够承担 2% 仍有意义仓位之前不要交易。 |
| 没有计划就交易 | 凭冲动、新闻或建议入场 | 在市场时间之前写计划。在市场时间内遵循它。 |
| 忽视周线趋势 | 接受与周线潮汐相反的日线信号 | 这是最常见的技术错误。第一滤网存在以防止它。 |
| 系统 hopping | 在几次亏损后放弃系统,寻找新的 | 每个系统都有亏损期。给你的系统足够的交易来证明其优势。 |
品种: XYZ 股票,周五收盘价 $45.00。
周线 MACD 直方图: 直方图一直为负但现在正在上升 tick——当前柱比前一根负值少(-0.15 vs -0.28)。斜率已转向上。
结论: 周线潮汐正在转向上。第一滤网仅允许做多。
日线随机指标(14, 3, 3): 慢速 %K = 18,慢速 %D = 22。随机指标处于超卖区域(低于 20-30)。
日线图背景: XYZ 在五天内从 $47.50 回调至 $44.80。13 日 EMA 在 $45.20,仍略微上升。回调将随机指标推至超卖区域,而周线趋势正在转向上。
结论: 第二滤网触发。周线 nascent 上升趋势中的回调已将日线摆动指标推至超卖。这是一个买入机会。
周一: 日高点 = $45.10,低点 = $44.60。放置买入止损在 $45.15(高于高点一个 tick)。
周二: XYZ 在 $44.40 和 $44.90 之间交易。买入止损在 $45.15 未触发。将买入止损降低至 $44.95(高于周二高点一个 tick)。
周三: XYZ 开盘于 $44.70,向上交易至 $45.30。买入止损在 $44.95 被触发。我们现在在 $44.95 做多。
止损放置: 周二低点 $44.40 减去缓冲 = $44.30。
每份风险: $44.95 - $44.30 = $0.65。
账户权益: $50,000。
2% 最大风险: $50,000 × 0.02 = $1,000。
仓位规模: $1,000 / $0.65 = 1,538 股。向下取整至 1,500 股。
实际美元风险: 1,500 × $0.65 = $975(权益的 1.95%)。
第 1 周: XYZ 上涨至 $46.50。日线随机指标升至 55 — 不再超卖但尚未超买。持有。
第 2 周: XYZ 达到 $47.80。日线随机指标达到 82 — 超买。将止损移至盈亏平衡($44.95)。开放风险降至零,释放 6% 预算。
第 3 周: XYZ 回调至 $47.00,然后反弹至 $48.50。周线 MACD 直方图现在 solidly positive,斜率上升。日线随机指标再次超买在 78,但周线趋势强劲。将止损收紧至 $47.00(低于第 2-3 周回调低点)。
第 4 周: XYZ 向上交易至 $49.20,但周线 MACD 直方图,虽然仍为正, tick 向下(当前柱小于前一根)。第一滤网转为谨慎。在市场价格出场:$49.00。
结果: 入场 $44.95,出场 $49.00。每份盈利 = $4.05。总盈利 = 1,500 × $4.05 = $6,075(权益回报 12.2%)。实现的盈亏比:4.05 / 0.65 = 6.2:1。
日期: 交易周 [交易日期]
品种: XYZ 股票
方向: 做多
形态: 三重滤网 — 周线 MACD-H 斜率向上,日线随机指标超卖
入场: $44.95 通过追踪买入止损(第三滤网)
止损: $44.30(周二低点减去缓冲)
目标: 开放(由周线 MACD-H 斜率管理)
规模: 1,500 股(1.95% 风险)
出场: $49.00 — 周线 MACD-H tick 向下
盈亏: +$6,075 毛利润
评级: A — 所有三个滤网确认。入场有耐心(等待追踪止损触发)。止损基于图表。出场基于规则(周线信号改变)。无情绪偏离。
情绪: 周一止损未触发时感到 FOMO。抗拒了在市场价格入场的冲动。在 $49.20 感到贪婪想持有至 $50。无论如何按规则出场。
============================================================
三重滤网系统 — Elder 原始(1993)formulation
============================================================
参数:
-- MACD 设置(标准)
macd_fast_period = 12
macd_slow_period = 26
macd_signal_period = 9
-- 第二滤网摆动指标设置
stochastic_k_period = 14
stochastic_d_period = 3
stochastic_slowing = 3
williams_r_period = 14
rsi_period = 14
-- 超买/超卖阈值
stoch_oversold = 30
stoch_overbought = 70
williams_oversold = -80
williams_overbought = -20
rsi_oversold = 30
rsi_overbought = 70
-- 入场
entry_buffer_ticks = 1
------------------------------------------------------------
第一滤网:周线趋势过滤器(MACD 直方图斜率)
------------------------------------------------------------
函数 weekly_trend(周线柱):
macd_line = EMA(周线收盘, macd_fast_period) -
EMA(周线收盘, macd_slow_period)
signal_line = EMA(macd_line, macd_signal_period)
histogram = macd_line - signal_line
当前柱 = histogram[last]
前一柱 = histogram[last - 1]
如果 当前柱 > 前一柱:
-- 周线 MACD 直方图斜率向上
-- 检查看涨背离(最强信号)
如果 price_made_lower_low(周线柱) 且
histogram_made_higher_low(histogram):
返回 "STRONG_BULLISH"
返回 "BULLISH"
否则 如果 当前柱 < 前一柱:
-- 周线 MACD 直方图斜率向下
如果 price_made_higher_high(周线柱) 且
histogram_made_lower_high(histogram):
返回 "STRONG_BEARISH"
返回 "BEARISH"
否则:
返回 "NEUTRAL"
------------------------------------------------------------
第二滤网:日线摆动指标(逆趋势信号)
------------------------------------------------------------
函数 daily_signal(日线柱, 周线方向, oscillator_choice):
如果 oscillator_choice == "STOCHASTIC":
slow_k, slow_d = stochastic(日线柱,
stoch_k_period,
stoch_d_period,
stochastic_slowing)
超卖 = slow_k < stoch_oversold
超买 = slow_k > stoch_overbought
否则 如果 oscillator_choice == "WILLIAMS_R":
wr = williams_r(日线柱, williams_r_period)
超卖 = wr < williams_oversold -- 低于 -80
超买 = wr > williams_overbought -- 高于 -20
否则 如果 oscillator_choice == "RSI":
rsi_val = rsi(日线柱, rsi_period)
超卖 = rsi_val < rsi_oversold
超买 = rsi_val > rsi_overbought
否则 如果 oscillator_choice == "MACD_HISTOGRAM":
hist = macd_histogram(日线柱)
超卖 = hist[last] < 0 且 hist[last] > hist[last - 1]
超买 = hist[last] > 0 且 hist[last] < hist[last - 1]
-- 应用逆趋势逻辑
如果 周线方向 在 ("BULLISH", "STRONG_BULLISH") 中:
如果 超卖:
返回 "BUY_SIGNAL"
返回 "NO_SIGNAL"
否则 如果 周线方向 在 ("BEARISH", "STRONG_BEARISH") 中:
如果 超买:
返回 "SELL_SIGNAL"
返回 "NO_SIGNAL"
返回 "NO_SIGNAL"
------------------------------------------------------------
第三滤网:追踪入场止损
------------------------------------------------------------
函数 manage_entry_stop(方向, 日线柱, existing_order):
如果 方向 == "BUY_SIGNAL":
new_stop_price = 日线柱[last].high + entry_buffer_ticks
如果 existing_order IS NULL:
-- 放置初始买入止损
返回 create_buy_stop(new_stop_price)
否则 如果 new_stop_price < existing_order.price:
-- 向下追踪买入止损(更好的价格)
返回 modify_order(existing_order, new_stop_price)
否则:
-- 保持现有订单(不要将止损走高)
返回 existing_order
否则 如果 方向 == "SELL_SIGNAL":
new_stop_price = 日线柱[last].low - entry_buffer_ticks
如果 existing_order IS NULL:
返回 create_sell_stop(new_stop_price)
否则 如果 new_stop_price > existing_order.price:
-- 向上追踪卖出止损(更好的价格)
返回 modify_order(existing_order, new_stop_price)
否则:
返回 existing_order
------------------------------------------------------------
主循环:夜间处理
------------------------------------------------------------
函数 run_triple_screen(周线柱, 日线柱,
oscillator_choice, account):
-- 第 1 步:第一滤网
trend = weekly_trend(周线柱)
如果 trend == "NEUTRAL":
cancel_pending_orders()
返回 "NO_TRADE — 周线趋势中性"
-- 第 2 步:第二滤网
signal = daily_signal(日线柱, trend, oscillator_choice)
如果 signal == "NO_SIGNAL":
-- 如果我们有待定入场订单,检查周线是否仍有效
如果 pending_order 存在 且 trend 已反转:
cancel_pending_orders()
返回 "SETUP CANCELLED — 周线趋势已反转"
返回 "WAITING — 日线逆趋势信号尚未出现"
-- 第 3 步:第三滤网
entry_order = manage_entry_stop(signal, 日线柱, pending_order)
-- 第 4 步:如果订单存在,计算仓位规模
如果 entry_order IS NOT NULL:
risk_per_share = calculate_stop_distance(signal, 日线柱)
position_size = position_sizer(account, risk_per_share)
entry_order.quantity = position_size
返回 entry_order
============================================================
风险管理器 — Elder 2%/6% 系统
============================================================
参数:
max_risk_per_trade_pct = 0.02 -- 2% 规则
max_monthly_risk_pct = 0.06 -- 6% 规则
------------------------------------------------------------
2% 规则:仓位规模
------------------------------------------------------------
函数 position_sizer(account, risk_per_share):
current_equity = account.equity
max_dollar_risk = current_equity * max_risk_per_trade_pct
如果 risk_per_share <= 0:
返回 0 -- 无效:止损在入场价或之上
max_shares = FLOOR(max_dollar_risk / risk_per_share)
-- 合理性检查
如果 max_shares <= 0:
LOG "交易拒绝:止损对 2% 规则太远"
返回 0
actual_risk = max_shares * risk_per_share
actual_pct = actual_risk / current_equity
LOG "仓位:{max_shares} 股," +
"风险:${actual_risk}(权益的 {actual_pct:.2%})"
返回 max_shares
------------------------------------------------------------
6% 规则:月度回撤限制
------------------------------------------------------------
函数 check_monthly_limit(account):
month_start_equity = account.equity_at_month_start
max_monthly_loss = month_start_equity * max_monthly_risk_pct
-- 汇总当月所有已平仓亏损
closed_losses = 0
对于 account.trades_this_month 中的每笔交易:
如果 trade.is_closed 且 trade.pnl < 0:
closed_losses += ABS(trade.pnl)
-- 汇总所有当前仓位的开放风险
open_risk = 0
对于 account.open_positions 中的每个仓位:
per_share_risk = ABS(position.entry_price - position.stop_price)
open_risk += per_share_risk * position.quantity
total_risk_used = closed_losses + open_risk
remaining_budget = max_monthly_loss - total_risk_used
LOG "月度风险:${total_risk_used} / " +
"${max_monthly_loss} 已使用({total_risk_used/max_monthly_loss:.0%})"
LOG "剩余预算:${remaining_budget}"
如果 total_risk_used >= max_monthly_loss:
LOG "*** 6% 规则触发 — 本月不进行新交易 ***"
返回 {
can_trade: FALSE,
remaining_budget: 0,
reason: "月度亏损限制已达到"
}
返回 {
can_trade: TRUE,
remaining_budget: remaining_budget,
max_new_trade_risk: MIN(remaining_budget,
account.equity * max_risk_per_trade_pct)
}
------------------------------------------------------------
组合风险检查:每笔新交易之前
------------------------------------------------------------
函数 approve_trade(account, entry_price, stop_price, direction):
-- 第 1 步:6% 月度检查
monthly = check_monthly_limit(account)
如果 非 monthly.can_trade:
返回 REJECT("6% 月度限制已达到。观望至下月。")
-- 第 2 步:每笔交易 2% 规模
如果 direction == "LONG":
risk_per_share = entry_price - stop_price
否则:
risk_per_share = stop_price - entry_price
如果 risk_per_share <= 0:
返回 REJECT("无效的止损放置。")
max_shares = position_sizer(account, risk_per_share)
如果 max_shares == 0:
返回 REJECT("止损对当前权益的 2% 规则太宽。")
-- 第 3 步:确保交易不突破 6% 限制
trade_risk = max_shares * risk_per_share
如果 trade_risk > monthly.max_new_trade_risk:
adjusted_shares = FLOOR(monthly.max_new_trade_risk / risk_per_share)
如果 adjusted_shares == 0:
返回 REJECT("这笔交易的月度预算不足。")
max_shares = adjusted_shares
trade_risk = max_shares * risk_per_share
返回 APPROVE({
shares: max_shares,
dollar_risk: trade_risk,
risk_pct: trade_risk / account.equity,
entry: entry_price,
stop: stop_price,
monthly_budget_after: monthly.remaining_budget - trade_risk
})
============================================================
指标套件 — Elder 1993 工具包
============================================================
------------------------------------------------------------
指数移动平均线
------------------------------------------------------------
函数 ema(data, period):
multiplier = 2.0 / (period + 1)
result = [SMA(data[0:period])] -- 用 SMA 种子
对于 i = period 至 LENGTH(data) - 1:
val = (data[i] - result[last]) * multiplier + result[last]
result.APPEND(val)
返回 result
------------------------------------------------------------
MACD、信号、直方图
------------------------------------------------------------
函数 macd_system(close_data):
fast_ema = ema(close_data, 12)
slow_ema = ema(close_data, 26)
macd_line = fast_ema - slow_ema -- 元素方式
signal = ema(macd_line, 9)
histogram = macd_line - signal -- 元素方式
返回 { macd: macd_line, signal: signal, histogram: histogram }
------------------------------------------------------------
随机摆动指标(慢速)
------------------------------------------------------------
函数 stochastic_slow(high, low, close, k_period, d_period, slowing):
-- 原始 %K
raw_k = []
对于 i = k_period - 1 至 LENGTH(close) - 1:
hh = MAX(high[i - k_period + 1 : i + 1])
ll = MIN(low[i - k_period + 1 : i + 1])
如果 hh == ll:
raw_k.APPEND(50)
否则:
raw_k.APPEND((close[i] - ll) / (hh - ll) * 100)
-- 慢速 %K = 原始 %K 的 SMA
slow_k = SMA(raw_k, slowing)
-- 慢速 %D = 慢速 %K 的 SMA
slow_d = SMA(slow_k, d_period)
返回 { slow_k: slow_k, slow_d: slow_d }
------------------------------------------------------------
Williams %R
------------------------------------------------------------
函数 williams_r(high, low, close, period):
result = []
对于 i = period - 1 至 LENGTH(close) - 1:
hh = MAX(high[i - period + 1 : i + 1])
ll = MIN(low[i - period + 1 : i + 1])
如果 hh == ll:
result.APPEND(-50)
否则:
result.APPEND((hh - close[i]) / (hh - ll) * (-100))
返回 result
------------------------------------------------------------
相对强弱指数
------------------------------------------------------------
函数 rsi(close_data, period):
gains = []
losses = []
对于 i = 1 至 LENGTH(close_data) - 1:
change = close_data[i] - close_data[i - 1]
如果 change > 0:
gains.APPEND(change)
losses.APPEND(0)
否则:
gains.APPEND(0)
losses.APPEND(ABS(change))
-- 第一个平均:简单均值
avg_gain = MEAN(gains[0:period])
avg_loss = MEAN(losses[0:period])
result = []
如果 avg_loss == 0:
result.APPEND(100)
否则:
rs = avg_gain / avg_loss
result.APPEND(100 - (100 / (1 + rs)))
-- 后续:平滑(Wilder 方法)
对于 i = period 至 LENGTH(gains) - 1:
avg_gain = (avg_gain * (period - 1) + gains[i]) / period
avg_loss = (avg_loss * (period - 1) + losses[i]) / period
如果 avg_loss == 0:
result.APPEND(100)
否则:
rs = avg_gain / avg_loss
result.APPEND(100 - (100 / (1 + rs)))
返回 result
------------------------------------------------------------
变动率(ROC)
------------------------------------------------------------
函数 roc(close_data, period):
result = []
对于 i = period 至 LENGTH(close_data) - 1:
result.APPEND((close_data[i] / close_data[i - period] - 1) * 100)
返回 result
------------------------------------------------------------
趋向系统(ADX、+DI、-DI)— 简化版
------------------------------------------------------------
函数 directional_system(high, low, close, period):
-- 真实范围
tr = []
plus_dm = []
minus_dm = []
对于 i = 1 至 LENGTH(close) - 1:
h_l = high[i] - low[i]
h_pc = ABS(high[i] - close[i-1])
l_pc = ABS(low[i] - close[i-1])
tr.APPEND(MAX(h_l, h_pc, l_pc))
up_move = high[i] - high[i-1]
down_move = low[i-1] - low[i]
如果 up_move > down_move 且 up_move > 0:
plus_dm.APPEND(up_move)
否则:
plus_dm.APPEND(0)
如果 down_move > up_move 且 down_move > 0:
minus_dm.APPEND(down_move)
否则:
minus_dm.APPEND(0)
-- 使用 Wilder 方法平滑(周期日平滑)
smoothed_tr = wilder_smooth(tr, period)
smoothed_plus_dm = wilder_smooth(plus_dm, period)
smoothed_minus_dm = wilder_smooth(minus_dm, period)
-- +DI 和 -DI
plus_di = (smoothed_plus_dm / smoothed_tr) * 100
minus_di = (smoothed_minus_dm / smoothed_tr) * 100
-- DX 和 ADX
dx = ABS(plus_di - minus_di) / (plus_di + minus_di) * 100
adx = wilder_smooth(dx, period)
返回 { plus_di: plus_di, minus_di: minus_di, adx: adx }
------------------------------------------------------------
冲动系统(1993 年概念的原型版本)
------------------------------------------------------------
函数 impulse_check(close_data):
ema_13 = ema(close_data, 13)
macd_data = macd_system(close_data)
hist = macd_data.histogram
ema_rising = ema_13[last] > ema_13[last - 1]
ema_falling = ema_13[last] < ema_13[last - 1]
hist_rising = hist[last] > hist[last - 1]
hist_falling = hist[last] < hist[last - 1]
如果 ema_rising 且 hist_rising:
返回 "BULLISH_IMPULSE" -- 不要做空
否则 如果 ema_falling 且 hist_falling:
返回 "BEARISH_IMPULSE" -- 不要买入
否则:
返回 "NEUTRAL" -- 任一方向均可,谨慎
"成功交易者的目标是做最好的交易。金钱是第二位的。"
这概括了 Elder 的过程优先于结果哲学。专注于决策的质量,金钱随之而来。
"市场设置使得大多数交易者必须亏损。市场是一个减法游戏,因为佣金和滑点。"
一个令人警醒的提醒:交易不是零和游戏——它是负和游戏。赢家必须不仅克服输家的贡献,还要克服赌场的抽成。
"当你交易时,你是在与世界上最敏锐的头脑竞争。竞争环境因佣金和滑点而对你不利。如果你足够好、足够努力,你可以克服这个障碍。"
标准不是"击败平均水平"而是击败最优秀的参与者,扣除成本后。
"业余选手看着屏幕看到数百万美元闪烁。专业选手看到的是概率领域。"
从情绪感知(金钱)到分析感知(概率)的转变是区分赢家和输家的心理转变。
"成功交易基于 3 M——心智、方法和资金。初学者专注于分析,但专业选手在三维空间中运作。"
三维框架:大多数教育材料只涉及方法,使交易者配备工具但缺乏使用它们所需的心理和财务架构。
"亏损资金的业余选手不断寻找建议。他问他的经纪人,阅读通讯稿,付费获取热线。他把权力一个接一个地交给大师来控制他的金钱。"
Elder 对大师追随心态的批评:外包交易决策意味着外包责任。
"亏损的交易者几乎无法将自己转变为盈利的交易者。亏损的交易者不会想要改变。这就是他的类型。"
书中最严厉的陈述。Elder 认为导致交易失败的心理模式是根深蒂固的性格特征,大多数人不会改变。真正改变的人是那些愿意进行真正自我审视的人。
"你可以自由。你可以在世界任何地方生活和工作。你可以独立于常规,不向任何人汇报。这是成功交易者的生活。"
吸引人们交易的 aspirational 愿景——但 Elder 在本书其余部分解释到达这个目的地的巨大困难。
"市场不知道你的存在。你无法做任何事来影响它。你只能控制自己的行为。"
Elder 心理纪律的基础:交易者唯一能控制的变量是交易者自己的行为。
"风险管理是生存的基石。你可能有世界上最好的系统,但如果你的风险管理很差,你会亏损。"
明确的排名:资金管理不是次要于方法——它是主要的。具有优秀风险管理的平庸系统将击败具有糟糕风险管理的优秀系统。
本摘要涵盖 Elder 交易框架的原始 1993 年 formulation。对于更精化和扩展的处理——包括正式的冲动系统、Force Index、Elder-ray、交易者电子表格评级系统以及更新的三重滤网指标建议——请参阅 Come Into My Trading Room (2002)的配套摘要。