以交易为生 — 完整实施规范

基于 Alexander Elder,Trading for a Living: Psychology, Trading Tactics, Money Management(1993)


目录

  1. 概述
  2. 个人心理
  3. 群体心理与市场动态
  4. 经典图表分析
  5. 计算机化技术分析 — 指标套件
  6. 成交量与未平仓合约
  7. 三重滤网交易系统 — 原始 formulation
  8. 冲动系统 — 基础概念
  9. 资金管理 — 2% 和 6% 规则
  10. 记录保存与交易日志
  11. 实用交易规则与常见错误
  12. 完整交易生命周期示例 — 三重滤网实战
  13. 实施伪代码
  14. 关键语录

1. 概述

1.1 背景与意义

以交易为生 是 Alexander Elder 的奠基之作,发表于 1993 年。Elder 是一名精神科医生,1974 年从前苏联移民,在纽约金融市场发现了交易——他带来了罕见的双重专业知识:对人类行为的临床理解加上多年的实战交易经验。这种组合给了本书在纯技术著作中所没有的维度。它不仅仅是一本关于交易什么的书;它是一本关于为什么交易者失败以及如何重构自己以停止失败的书。

本书的核心论点是:交易成功取决于同时掌握三个领域——Elder 后来正式确定为三 M:心智(Mind,个人心理与纪律)、方法(Method,技术分析与交易系统)和资金(Money,风险管理与资本保全)。大多数交易者完全专注于方法——寻找完美的指标或系统——而忽视了决定任何系统能否盈利的心理素质和资金管理。

1.2 三 M — 结构框架

领域 核心问题 忽视的后果
心智 我能在没有情绪干扰的情况下执行计划吗? 自我破坏、过度交易、报复交易、瘫痪
方法 我在解读市场行为方面有经过测试的优势吗? 随机入场、无可重复过程、缓慢资金流失
资金 我能在连续亏损后仍能继续交易吗? 灾难性回撤、账户毁灭、强制退出

Elder 的论点:三者中最弱的那个决定交易者的结果。 才华横溢的分析师如果纪律不佳会过度交易并返还利润。有纪律的交易者如果没有分析方法会缓慢地被佣金和滑点消耗。有方法、有纪律的交易者如果没有风险控制会被单一灾难性事件摧毁。

1.3 本书的独特之处

与 Elder 后来精化和扩展这些思想的结构化课程 Come Into My Trading Room(2002)不同,以交易为生 是原始阐述。其独特贡献包括:


2. 个人心理

2.1 为什么心理是第一位的

Elder 在书的第一大部分 devoted to psychology——在任何关于图表或指标的讨论之前。这种排序是有意的。他的精神科经验使他相信,交易者失败的主要原因不是缺乏知识,而是缺乏自我控制。市场是一个独特的高效环境,暴露心理弱点:每一个思维缺陷、每一个情绪脆弱、每一个自我毁灭倾向都会立即受到金融亏损的惩罚。

2.2 交易的冲动

许多人被交易吸引的原因实际上保证了失败:

Elder 的警告:诚实审视你自己的动机。 如果主要吸引力是刺激而非盈利,你是一个伪装成赌徒的人。赌博与交易感觉相同,除了一个细节——赌徒没有优势。

2.3 交易中的自我毁灭行为

借鉴他的精神科训练,Elder 识别出交易者中反复出现的几种自我毁灭模式:

Elder 的处方:

  1. 意识。 保持交易日志,在交易旁边记录情绪状态。寻找模式:"我总是在星期一做最糟糕的交易吗?在大赢之后?在我无聊的时候?"
  2. 规则作为对自己的保护。 书面规则——入场标准、止损设置、仓位管理——不仅是分析工具;它们是心理盔甲。当情绪涌动时,规则提供了一个外部结构,交易者可以机械地遵循。
  3. 把交易当作生意。 生意人在顾客退货时不会愤怒地摔门。亏损是做生意成本,不是人身侮辱。

2.4 交易成瘾

Elder 在交易和成瘾行为之间做出了明确的类比:

Elder 提出的测试: 你能一个月不交易而不产生显著的心理痛苦吗?如果不能,行为已从专业活动转变为强迫。

治疗方法: 以与临床实践中治疗成瘾相同的方式对待它。承认问题。建立严格的外部控制(资金管理规则、最大交易频率)。寻求问责(交易伙伴、导师、审查结果交易小组)。

2.5 交易过程中的情绪陷阱

Elder 编目了在交易每个阶段扭曲决策的特定情绪状态:

阶段 危险情绪 行为结果
入场前 错过恐惧(FOMO) 追逐价格、在没有形态时入场
入场时 贪婪、过度自信 仓位过大、止损过紧或缺失
持有盈利时 贪婪、兴奋 将目标越抬越高,未能获取部分利润
持有亏损时 希望、否认 将止损下移、向下摊平、忽视证据
出场时 无论结果如何都后悔 盈利后:"我应该持有更久。"亏损后:"我应该更早砍仓。"两者都导致下一笔交易更糟糕的决策。

解药: 预先承诺计划。在入场前写下入场、止损和目标*。交易期间唯一的决策是条件是否发生了足够变化以使原分析失效——不是你感觉是否想持有。


3. 群体心理与市场动态

3.1 为什么群体在交易中重要

Elder 认为理解群体心理至关重要,因为价格由群体行为决定,而非个人分析。 技术分析有效不是因为图表形态有神秘预测能力,而是因为它们反映了在恐惧和贪婪影响下行动的群体的情感足迹。

任何给定时刻的市场价格代表了所有参与者的共识。当共识转变时——当群体的情绪变化时——价格移动。交易者的工作是在群体情绪变化完全反映在价格之前检测到它。

3.2 群体如何在市场中形成

当个体放弃独立性并采纳群体的情绪状态时,群体就形成了。在市场中,这通过以下方式发生:

3.3 市场群体的特征

Elder 识别出解释市场行为的群体的几个特性:

3.4 交易者与群体

Elder 的核心心理要求:交易者必须与群体保持距离。 这不意味着总是逆向——对抗每一个趋势就像跟随每一个趋势一样愚蠢。它的意思是即使被情绪共识包围,也要保持独立判断的能力。

实用技术:


4. 经典图表分析

4.1 趋势 — 基础

当价格持续朝一个方向移动时,趋势存在。Elder 操作性地定义趋势:

关键原则: 趋势同时存在于每个时间框架上,它们经常冲突。一只股票可以在日线上升趋势中处于周线下降趋势内。三重滤网系统通过为不同时间框架分配不同角色来解决这些冲突。

4.2 趋势线

趋势线连接两个或多个重要点:

Elder 的趋势线规则:

  1. 趋势线需要至少两个点绘制,三个点确认。
  2. 更陡的趋势线不如更平缓的可靠。陡峭的趋势线容易被突破。
  3. 趋势线的重要性随其长度(触及次数)和斜率(更平缓更重要)增加。
  4. 当价格接近趋势线并反弹时,成交量应增加——这确认了线条的有效性。
  5. 突破一条成熟趋势线是重要事件。它不一定意味着反转(可能意味着减速进入区间),但意味着现有趋势的特征已改变。

4.3 缺口

缺口是条形图上没有交易发生的空白空间。Elder 对它们进行分类:

交易规则: 顺着突破缺口和持续缺口的方向交易。在竭尽缺口后要谨慎。不要交易普通缺口。

4.4 图表形态

Elder 涵盖经典图表形态,强调它们有效是因为反映群体心理:

反转形态(预示趋势改变):

持续形态(预示趋势暂停后恢复):

Elder 关于形态的首要规则: 永远不要单独交易形态。形态在最能得到指标确认、最出现在更高时间框架趋势方向(根据三重滤网)时最可靠。


5. 计算机化技术分析 — 指标套件

5.1 移动平均线

移动平均线平滑价格数据以揭示潜在趋势。Elder 涵盖三种类型:

关键 EMA 应用:

周期 时间框架 角色
13 日 EMA 日线 主要趋势过滤器;斜率是关键信号
26 日 EMA 日线 次要趋势过滤器;13 和 26 EMA 之间的"价值区"
13 周 EMA 周线 三重滤网的长期趋势背景

交易规则:

5.2 MACD 和 MACD 直方图

移动平均收敛发散是一种趋势跟随动量指标。Elder 认为 MACD 直方图——而非 MACD 线本身——是更重要的组成部分。

计算:

MACD 线      = EMA(12) - EMA(26)       ["快"线]
信号线      = MACD 线的 EMA(9)        ["慢"线]
MACD 直方图 = MACD 线 - 信号线         [两者之间的差异]

MACD 线的解读:

MACD 直方图 — Elder 的主要关注点:

关键细微差别: 周线图上 MACD 直方图的斜率是三重滤网系统第一滤网的主要过滤器。这是 Elder 框架中任何指标最重要的单一用途。

5.3 趋向系统(ADX、+DI、-DI)

趋向系统由 J. Welles Wilder 开发,测量趋势的方向和强度。

组成部分:

解读:

Elder 对 ADX 的使用: 主要作为过滤器。在应用趋势跟随指标(MACD、移动平均线)之前,检查 ADX。如果 ADX 低且平坦,切换到摆动指标。如果 ADX 高且上升,使用趋势跟随方法。这不是一个独立的交易系统,而是一个元指标,告诉您使用哪种类型的工具。

5.4 动量与变动率(ROC)

动量 = 今日收盘价 - N 周期前的收盘价 变动率 = (今日收盘价 / N 周期前的收盘价) × 100

两者都测量价格变化的 velocity。Elder 更喜欢 ROC,因为它在不同价格水平间进行了标准化。

解读:

Elder 的评估: 动量/ROC 作为确认有用,但作为主要信号生成器不如 MACD 直方图或随机指标可靠。

5.5 Williams %R

由 Larry Williams 开发,%R 测量当前收盘价在近期范围内的位置。

计算:

%R = (N 周期最高价 - 收盘价) / (N 周期最高价 - N 周期最低价) × (-100)

典型周期:7 或 14 天。结果范围从 0 到 -100。

解读:

失败 swing: 当 %R 进入超买区域但在下次反弹中未能达到它(在上升趋势中),这个"失败 swing"警告趋势正在减弱。

5.6 随机摆动指标

由 George Lane 开发,随机指标测量收盘价相对于近期范围的位置,类似于 %R 但有平滑。

计算:

%K(快速)= (收盘价 - N 周期最低价) / (N 周期最高价 - N 周期最低价) × 100
%D(慢速)= %K 的 SMA(3)
慢速 %K   = %D
慢速 %D   = 慢速 %K 的 SMA(3)

Elder 推荐慢速随机指标(慢速 %K 和慢速 %D)以减少噪音。

解读:

Elder 的应用: 随机指标是三重滤网系统第二滤网推荐的摆动指标之一。当周趋势上升且日随机指标跌入超卖区域时,这识别了较大上升趋势中的回调买入机会。

5.7 相对强弱指数(RSI)

由 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 中引入)最终成为他首选的第二滤网工具。


6. 成交量与未平仓合约

6.1 成交量作为确认

成交量测量价格移动背后的承诺强度。Elder 将成交量视为仅次于价格本身的最重要数据。

核心规则:

6.2 成交量峰值

极度高成交量的日子(达到近期平均水平的 2 倍或以上)信号 climax 事件:

在这两种情况下,climax 成交量通常标志着趋势的终点。

6.3 未平仓合约(期货市场)

未平仓合约测量期货市场中未平仓合约的总数。Elder 的规则:

组合解读: 最强的看涨形态是价格上涨 + 成交量增加 + 未平仓合约增加。最强的看跌形态是价格下跌 + 成交量增加 + 未平仓合约增加。


7. 三重滤网交易系统 — 原始 formulation

7.1 核心见解

三重滤网系统由 Elder 于 1985 年首次发表在 Futures 杂志上,并在本书中完整阐述。系统的核心见解是:每个指标只在部分时间提供有用信息,在单一时间框架上使用单一指标产生不可接受的假信号率。 通过要求三个滤网的一致——每个分析不同维度——系统显著过滤噪音。

三个滤网按顺序应用,作为关卡:如果市场未能通过任何滤网,交易被拒绝。

7.2 时间框架选择

Elder 坚持交易者首先选择最喜欢的时间框架——匹配交易者个性和日程的时间框架。这成为中期时间框架。其他两个使用五倍因子乘数推导:

交易者类型 第一滤网(趋势) 第二滤网(信号) 第三滤网(入场)
仓位交易者 月线 周线 日线
波段交易者 周线 日线 日内(4小时/1小时)
日内交易者 日线 小时线(60 分钟) 10-15 分钟

1993 年书中讨论最充分的组合是周线 / 日线 / 日内用于波段交易者。

7.3 第一滤网 — 识别潮汐(周线 MACD 直方图斜率)

目的: 在交易者操作时间框架的上一级时间框架上确定主导趋势。第一滤网是一个方向过滤器——它告诉您寻找多头、空头还是观望。

主要指标: 周线 MACD 直方图的斜率。

规则:

为什么用 MACD 直方图斜率,而非 MACD 线交叉? MACD 线交叉是一个滞后信号——当快线穿越慢线时,相当大一部分行情已经发生。直方图的斜率在线交叉之前改变方向,提供更早的动量转移指示。

最强大的第一滤网信号: 当周线 MACD 直方图出现背离(价格创出新的极端但直方图没有)然后以预期方向 tick 时,这代表趋势改变的最强可能识别。

7.4 第二滤网 — 识别波浪(日线摆动指标逆趋势)

目的: 在日线图上找到逆趋势移动——逆周线潮汐的波浪——在更大趋势的方向上提供有利的入场价格。

核心原则: 第二滤网使用摆动指标,但它逆着它们的通常解读。当周趋势上升时,第二滤网寻找日线超卖读数(而非超买)。当周趋势下降时,寻找日线超买读数。

第二滤网推荐的摆动指标(1993 年原始 formulation):

  1. 随机摆动指标 — 当日线随机指标跌破 30 时买入(周趋势上升时)。当升至 70 以上时做空(周趋势下降时)。
  2. Williams %R — 当日线 %R 在周线上升趋势中跌破 -80 时买入。当在周线下降趋势中升至 -20 以上时卖出。
  3. RSI — 当 RSI 在周线上升趋势中跌破 30 时买入。当在周线下降趋势中升至 70 以上时卖出。
  4. 日线 MACD 直方图 — 当日线直方图在周线上升趋势中从负值区域向上 tick 时买入。当在周线下降趋势中从正值区域向下 tick 时卖出。

关键规则: 第二滤网识别入场区域,而非精确价格。精确入场来自第三滤网。

7.5 第三滤网 — 精确入场(追踪买入/卖出止损)

目的: 使用不需要指标机械技术 pinpoint 精确入场价格。第三滤网使用追踪买入止损(做多)和追踪卖出止损(做空),仅当价格确认预期方向时入场。

做多交易规则(周趋势上升,日线摆动指标超卖):

  1. 在当前日柱高点上方一个 tick 处放置买入止损单。
  2. 如果订单在第二天被触发,你已做多。将保护止损放置在当前日或前一日的低点以下,两者中较低者。
  3. 如果订单被触发(价格反而下跌),将买入止损降低至新日高点上方一个 tick。继续每天向下追踪买入止损。
  4. 如果在买入止损被触发之前周趋势反转(第一滤网转为看跌),取消订单。形态失效。

做空交易规则(周趋势下降,日线摆动指标超买):

  1. 在当前日柱低点下方一个 tick 处放置卖出止损单。
  2. 如果被触发,你已做空。将保护止损放置在当前日或前一日的高点上方,两者中较高者。
  3. 如果未触发,将卖出止损提高至新日低点下方一个 tick。继续向上追踪。
  4. 如果第一滤网反转,取消订单。

为什么有效: 追踪止损确保您仅当价格开始朝预期方向移动时入场。如果逆趋势移动加深而非反转,止损会越来越紧,直到趋势恢复(以更好的价格触发入场)或周线信号改变(完全取消形态)。这消除了接飞刀的问题。

7.6 出场规则

Elder 原始出场框架不如他后来的工作正式,但建立了基本原则:


8. 冲动系统 — 基础概念

8.1 起源

虽然冲动系统在 Come Into My Trading Room(2002)中更充分地发展,但其概念种子出现在 以交易为生 中。Elder 观察到趋势在冲动阶段(价格和动量一起移动)和修正阶段(它们分歧)之间交替。这个想法——交易者应该区分这些阶段——在冲动期间积极交易,在修正期间谨慎交易——在 1993 年书中就已存在,即使正式的颜色编码系统后来才出现。

8.2 核心逻辑

冲动系统结合两种测量:

当两者一致时,冲动正在形成。当它们分歧时,市场处于修正或过渡阶段。

EMA 斜率 MACD-H 斜率 冲动状态 行动
上升 上升 看涨冲动 买入或持有多头;不要做空
下降 下降 看跌冲动 卖出做空或持有空头;不要买入
混合 混合 无冲动(中性) 允许任一方向;谨慎行事

8.3 实际应用

在 1993 年的 formulation 中,Elder 非正式地使用这个逻辑:


9. 资金管理 — 2% 和 6% 规则

9.1 资金管理的目的

Elder 直言不讳地说:资金管理的目标是生存。 任何单笔交易风险过大或允许亏损累积不受控制的交易者迟早会被摧毁,无论交易方法多好。资金管理不是为了最大化回报;而是为了确保无论多么不可能,一连串亏损都不能结束交易者的职业生涯。

9.2 2% 规则 — 每笔交易最大风险

规则: 任何单笔交易不要承担超过交易账户权益 2% 的风险。

计算:

最大美元风险 = 账户权益 × 0.02
仓位规模       = 最大美元风险 /(入场价格 - 止损价格)

示例:

关键原则:

9.3 6% 规则 — 最大月度回撤

规则: 如果当月总开放风险加上已平仓亏损达到账户权益的 6%,当月剩余时间停止交易。

计算:

月度风险预算 = 当月月初账户权益 × 0.06
当前使用       = 本月已平仓亏损之和 + 现有仓位的开放风险之和
如果当前使用 >= 月度风险预算 → 停止交易,直到下月

示例:

关键原则:

9.4 两个规则的相互作用

2% 和 6% 规则作为分层防御一起工作:

如果每笔交易最大 2%,月度限制 6%,交易者在达到月度上限之前最多可进行 3 笔全风险交易——假设三笔都是亏损。这创造了防止过度交易的自然约束。


10. 记录保存与交易日志

10.1 为什么记录重要

Elder 认为大多数交易者重复同样的错误,因为他们不系统地研究自己的行为。交易日志是将经验转化为学习的工具。

10.2 记录什么

每笔交易:

字段 内容
日期和品种 交易了什么,何时
形态 哪个滤网/信号触发了交易(例如,"周线 MACD-H 上升,日线随机指标超卖")
入场价格和方式 价格,是否市价/限价/止损,以及原因
止损 位置和原因
目标 位置和原因
仓位规模 股数/合约数及 2% 计算
出场价格和原因 止损触发了?目标达到了?信号改变了?
盈亏 毛利润和净利润(扣除佣金后)
情绪状态 交易前、期间、结束后感觉如何?
错误 你偏离计划了吗?如何偏离?
评级 评估交易质量(而非结果)。亏损的 A 级交易比靠运气盈利的 C 级交易更好。

10.3 定期回顾

Elder 推荐周度和月度回顾:


11. 实用交易规则与常见错误

11.1 Elder 给交易者的规则

  1. 决定你是在长期参与市场。 交易是一门需要数年掌握的技艺。目标是二十年后仍在良好交易,而不是本月暴富。
  2. 尽可能多学习, 但保持怀疑。质疑每个大师、每个系统供应商、每个"保证"方法。
  3. 不要贪婪。 贪婪导致仓位过大和过度持有交易。市场不会去任何地方;总会有另一个机会。
  4. 制定交易计划 并测试它。在学习时小仓位交易。
  5. 不要根据建议交易。 如果别人的分析被证明正确,你不会知道何时出场。如果被证明错误,你不会知道何时砍仓。
  6. 不要过度交易。 交易质量比数量重要得多。业余选手寻找行动;专业选手等待形态。
  7. 保持日志。 如果你不愿意研究自己的交易,你不是认真的。
  8. 永远不要为你的亏损责怪别人。 不是市场,不是你的经纪人,不是新闻。你做了决定;你拥有结果。

11.2 常见错误

错误 描述 补救
没有止损 在没有预定义亏损出场点的情况下入场 永远不要在没有止损的情况下入场。在交易前计算它。
移动止损对自己不利 加宽止损以避免被触发 这将可控亏损变成不可控的。如果止损是对的,让它工作。
向下摊平 向亏损仓位加仓希望它会恢复 向亏损者加仓是灾难的处方。只向盈利者加仓。
过度交易 交易过于频繁,通常出于无聊或 FOMO 限制自己仅交易满足所有三个滤网的形态。
资本不足 用太少的资金交易,迫使每笔交易风险过大 在能够承担 2% 仍有意义仓位之前不要交易。
没有计划就交易 凭冲动、新闻或建议入场 在市场时间之前写计划。在市场时间内遵循它。
忽视周线趋势 接受与周线潮汐相反的日线信号 这是最常见的技术错误。第一滤网存在以防止它。
系统 hopping 在几次亏损后放弃系统,寻找新的 每个系统都有亏损期。给你的系统足够的交易来证明其优势。

12. 完整交易生命周期示例 — 三重滤网实战

12.1 准备 — 周线分析(第一滤网)

品种: XYZ 股票,周五收盘价 $45.00。

周线 MACD 直方图: 直方图一直为负但现在正在上升 tick——当前柱比前一根负值少(-0.15 vs -0.28)。斜率已转向上。

结论: 周线潮汐正在转向上。第一滤网仅允许做多。

12.2 信号 — 日线分析(第二滤网)

日线随机指标(14, 3, 3): 慢速 %K = 18,慢速 %D = 22。随机指标处于超卖区域(低于 20-30)。

日线图背景: XYZ 在五天内从 $47.50 回调至 $44.80。13 日 EMA 在 $45.20,仍略微上升。回调将随机指标推至超卖区域,而周线趋势正在转向上。

结论: 第二滤网触发。周线 nascent 上升趋势中的回调已将日线摆动指标推至超卖。这是一个买入机会。

12.3 入场 — 追踪买入止损(第三滤网)

周一: 日高点 = $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 做多。

12.4 止损和仓位规模

止损放置: 周二低点 $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%)。

12.5 管理和出场

第 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。

12.6 日志条目

日期:        交易周 [交易日期]
品种:        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。无论如何按规则出场。

13. 实施伪代码

13.1 三重滤网交易系统

============================================================
三重滤网系统 — 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

13.2 风险管理器 — 2% 和 6% 规则

============================================================
风险管理器 — 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
  })

13.3 指标套件 — 核心计算

============================================================
指标套件 — 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"            -- 任一方向均可,谨慎

14. 关键语录

"成功交易者的目标是做最好的交易。金钱是第二位的。"

这概括了 Elder 的过程优先于结果哲学。专注于决策的质量,金钱随之而来。

"市场设置使得大多数交易者必须亏损。市场是一个减法游戏,因为佣金和滑点。"

一个令人警醒的提醒:交易不是零和游戏——它是负和游戏。赢家必须不仅克服输家的贡献,还要克服赌场的抽成。

"当你交易时,你是在与世界上最敏锐的头脑竞争。竞争环境因佣金和滑点而对你不利。如果你足够好、足够努力,你可以克服这个障碍。"

标准不是"击败平均水平"而是击败最优秀的参与者,扣除成本后。

"业余选手看着屏幕看到数百万美元闪烁。专业选手看到的是概率领域。"

从情绪感知(金钱)到分析感知(概率)的转变是区分赢家和输家的心理转变。

"成功交易基于 3 M——心智、方法和资金。初学者专注于分析,但专业选手在三维空间中运作。"

三维框架:大多数教育材料只涉及方法,使交易者配备工具但缺乏使用它们所需的心理和财务架构。

"亏损资金的业余选手不断寻找建议。他问他的经纪人,阅读通讯稿,付费获取热线。他把权力一个接一个地交给大师来控制他的金钱。"

Elder 对大师追随心态的批评:外包交易决策意味着外包责任。

"亏损的交易者几乎无法将自己转变为盈利的交易者。亏损的交易者不会想要改变。这就是他的类型。"

书中最严厉的陈述。Elder 认为导致交易失败的心理模式是根深蒂固的性格特征,大多数人不会改变。真正改变的人是那些愿意进行真正自我审视的人。

"你可以自由。你可以在世界任何地方生活和工作。你可以独立于常规,不向任何人汇报。这是成功交易者的生活。"

吸引人们交易的 aspirational 愿景——但 Elder 在本书其余部分解释到达这个目的地的巨大困难。

"市场不知道你的存在。你无法做任何事来影响它。你只能控制自己的行为。"

Elder 心理纪律的基础:交易者唯一能控制的变量是交易者自己的行为。

"风险管理是生存的基石。你可能有世界上最好的系统,但如果你的风险管理很差,你会亏损。"

明确的排名:资金管理不是次要于方法——它是主要的。具有优秀风险管理的平庸系统将击败具有糟糕风险管理的优秀系统。


本摘要涵盖 Elder 交易框架的原始 1993 年 formulation。对于更精化和扩展的处理——包括正式的冲动系统、Force Index、Elder-ray、交易者电子表格评级系统以及更新的三重滤网指标建议——请参阅 Come Into My Trading Room (2002)的配套摘要。