基于 Victor Sperandeo,Trader Vic: Methods of a Wall Street Master(1991)
Trader Vic 是一本关于市场时机把握、趋势识别和风险管理的实战手册,由专业交易员 Victor Sperandeo 撰写,他拥有长达二十年的卓越交易记录。斯佩兰德奥最为人熟知的是精准预判 1987 年股市崩盘——他在黑色星期一前几天做空市场,从历史上最剧烈的暴跌中获得了巨大利润。
与许多专注于单一技术的交易书籍不同,斯佩兰德奥呈现了一个综合框架,将精化的道氏理论、特定价格形态(1-2-3 反转和 2B)、货币政策分析、摆动测量和严格的风险管理整合为一个连贯的交易方法论。本书架起了经典技术分析与规则化执行之间的桥梁。
斯佩兰德奥的方法建立在几个基本原则之上:
斯佩兰德奥于 1960 年代末开始交易,职业生涯横跨股票、期权、期货和外汇。他因稳定性和精确性在华尔街获得了"Trader Vic"的昵称。他的交易记录显示,在 18 年中仅有一年亏损,年均回报率超过 70%。他对 1987 年崩盘的预判奠定了他的声誉——他用 1-2-3 方法在道琼斯工业平均指数上识别出顶部形态,在 10 月暴跌前几周就布局做空,捕捉了他职业生涯中最大单事件利润之一。
本书从理论到实践按逻辑顺序推进:哲学基础、趋势识别(道氏理论和形态识别)、时机工具(货币政策和摆动测量)、风险管理、仓位管理、市场环境分类、心理素质和期权策略。每一章都建立在前一章的基础上,形成了一个完整的交易系统,而非孤立技术的集合。
Charles Dow 的原始理论,由 William Hamilton 和 Robert Rhea 正式化,建立了几个原则:
斯佩兰德奥指出了经典道氏理论的几个弱点:
斯佩兰德奥保留了道氏理论的核心见解——趋势会持续,反转遵循可识别的序列——同时现代化了应用:
| 经典道氏理论 | 斯佩兰德奥的精化 |
|---|---|
| 等待双重平均指数确认 | 在主交易品种上使用 1-2-3 方法 |
| 主观评估峰谷 | 客观的三步反转标准 |
| 没有进场的时机机制 | 趋势线突破提供具体入场触发 |
| 没有明确的风险管理 | 在形态失效点预设止损 |
| 没有货币政策背景 | 利率和美联储政策叠加 |
斯佩兰德奥精确地定义趋势:
趋势持续有效,直到满足 1-2-3 反转标准。这消除了困扰许多趋势跟随方法的模糊性。
斯佩兰德奥提供了绘制有效趋势线的具体规则:
1-2-3 趋势改变方法是斯佩兰德奥的标志性贡献。它提供了一个客观的三步序列来确认趋势反转。每一步必须按顺序发生。如果任何一步失败,反转未获确认,现有趋势继续有效。
第一步:趋势线被突破。
第二步:价格未能创新高。
第三步:价格穿透之前的反应低点。
镜像应用:
第一步: 连接重要高点的下降趋势线以收盘价向上突破。
第二步: 价格下跌但未能创新低(创造更高的低点)。
第三步: 价格反弹至最近的显著摆动高点之上,建立更高的低点。
| 入场策略 | 描述 | 止损位置 |
|---|---|---|
| 激进(第一步) | 在趋势线突破时入场 | 止损于最近的摆动高点之上(上升趋势反转)或最近的摆动低点之下(下降趋势反转) |
| 温和(第二步) | 在未能创新极端时入场 | 止损于之前摆动高低点的极端之外 |
| 保守(第三步) | 在穿透之前反应点时入场 | 止损于更低的低点之上(上升趋势反转)或更高的低点之下(下降趋势反转) |
斯佩兰德奥本人倾向于在第二步以初始仓位入场,然后在第三步确认时加仓。这在早期入场和形态确认之间取得了平衡。
1-2-3 方法适用于所有时间框架:
并非所有 1-2-3 形态都相同。斯佩兰德奥按可靠性排序:
2B 形态,也称为**"弹簧"(威科夫术语)或"失败突破",是一种反转形态,套住在创新高或新低时入场的交易者。它被称为"2B"是因为市场似乎完成了趋势延续的第二步(创新极端),然后立即反转**,将看起来像趋势确认转化为强有力的反转信号。
2B 利用了特定的市场动态:
当两种形态汇聚时产生最强大的形态:
斯佩兰德奥认为,利率和美联储政策是驱动股票市场主要趋势的最重要单一因素。虽然价格形态告诉你何时行动,但货币政策告诉你哪个方向具有更高概率。
利率的方向是决定股票市场主要趋势的最主导因素。
| 美联储政策 | 利率 | 股票市场偏向 | 交易含义 |
|---|---|---|---|
| 宽松(降息) | 下降 | 看涨 | 偏好多头;逢低买入;从下降趋势到上升趋势的 1-2-3 反转是高置信度 |
| 中性/过渡 | 稳定 | 不确定 | 降低仓位规模;专注于较短时间框架;灵活应对 |
| 紧缩(加息) | 上升 | 看跌 | 偏好空头或现金;逢高卖出;从上升趋势到下降趋势的 1-2-3 反转是高置信度 |
斯佩兰德奥追踪几个具体指标:
斯佩兰德奥最具体的时间规则之一:
该方法结合宏观和微观:
斯佩兰德奥对 1987 年崩盘的著名预判说明了这种整合:
一旦趋势改变被识别,下一个问题就是:行情可能走多远? 斯佩兰德奥使用摆动测量技术来建立现实的盈利目标。这些目标有两个目的:设置盈利目标和计算建仓前的盈亏比。
基本的摆动测量技术:
对于下降趋势反转后的上涨:
对于上升趋势反转后的下跌:
斯佩兰德奥使用目标层级:
| 目标水平 | 计算 | 用途 |
|---|---|---|
| T1(最小) | 先前摆动的 50% | 部分盈利目标;开始收紧止损 |
| T2(标准) | 先前摆动的 62%(斐波那契) | 中等交易的主要盈利目标 |
| T3(完整测量移动) | 先前摆动的 100% | 强烈趋势条件下的目标 |
| T4(扩展) | 先前摆动的 127% 或 162% | 当货币政策强烈支持行情时作为目标 |
在建仓前,斯佩兰德奥计算:
如果摆动目标相对于所需止损未提供至少 3:1 的比例,交易放弃——无论形态看起来多好。
斯佩兰德奥最不可妥协的规则:
除非潜在盈利至少是潜在风险的三倍,否则不要建仓。
这意味着如果止损代表每股 1 美元的风险,盈利目标必须至少为每股 3 美元。3:1 的比例确保交易者即使错误多于正确仍然可以盈利。
| 胜率 | 平均盈利 : 平均亏损 | 每 100 笔交易的净结果(每笔承担 $1 风险) |
|---|---|---|
| 33% | 3:1 | 33 × $3 - 67 × $1 = +$32(盈利) |
| 40% | 3:1 | 40 × $3 - 60 × $1 = +$60(高度盈利) |
| 50% | 3:1 | 50 × $3 - 50 × $1 = +$100(非常盈利) |
| 33% | 2:1 | 33 × $2 - 67 × $1 = -$1(盈亏平衡) |
| 33% | 1:1 | 33 × $1 - 67 × $1 = -$34(亏损) |
3:1 规则提供了很大的安全边际。即使胜率低于 35%,交易者仍然可以盈利。
斯佩兰德奥的止损基于形态失效,而非任意百分比:
除了每笔交易的止损,斯佩兰德奥还执行投资组合层面的风险控制:
斯佩兰德奥强调回撤的数学:
| 亏损 | 需要恢复的盈利 |
|---|---|
| 10% | 11.1% |
| 20% | 25.0% |
| 30% | 42.9% |
| 50% | 100.0% |
| 75% | 300.0% |
这种不对称性是资本保全优先于盈利最大化的原因。50% 的回撤需要 100% 的回报才能回到原点——这是一个极其困难的任务。
斯佩兰德奥使用基于风险的方法确定仓位规模:
仓位规模 = (资本 × 最大风险 %)/(入场价格 - 止损价格)
示例:
斯佩兰德奥倡导与 1-2-3 方法一致的金字塔式加仓方法:
递减的仓位规模确保平均入场价格适度改善,而最大配置发生在最早(也是最有利)的价格。
| 置信度水平 | 标准 | 规模 |
|---|---|---|
| 高 | 货币政策一致 + 清晰的 1-2-3 + 强劲成交量 + 多时间框架一致 | 计算仓位的 100% |
| 中 | 满足大多数标准但一个因素不确定 | 计算仓位的 50-75% |
| 低 | 逆势交易或模糊形态 | 计算仓位的 25-50% |
| 不交易 | 盈亏比低于 3:1 或货币政策强烈反对 | 0% |
市场分为三类,每类需要不同的方法:
趋势市场(30-35% 的时间)
震荡/区间市场(50-55% 的时间)
波动/危机市场(10-15% 的时间)
斯佩兰德奥注意到最有利可图的时刻发生在转换期间——特别是从震荡市场到趋势市场的转换。1-2-3 和 2B 形态通常标志着这些转换。交易者的工作是:
斯佩兰德奥还注意到历史倾向:
斯佩兰德奥非常关注交易的心理要求。他认为大多数交易者失败不是因为方法不好,而是因为心理不好。 同样在纸上有效的形态和规则在实践中会失败,因为情绪凌驾于逻辑之上。
1. 对结果的情感超脱。
2. 应用的一致性。
3. 接受亏损。
4. 耐心。
5. 自我认知。
斯佩兰德奥坚持每个交易者必须有书面计划,明确规定:
计划应在交易者冷静和分析时撰写——绝不能在交易时间内。在交易期间,计划只是执行,不是辩论。
斯佩兰德奥将期权视为更广泛框架内的战术工具,而非独立策略。期权用于:
根据 1-2-3 和 2B 信号买入看涨/看跌期权:
当市场被分类为震荡/区间时:
最具破坏性的错误。没有预定义规则,每个决策都成为情绪反应。交易者将不可避免地持有亏损、过早获利、交易过大、交易过频。
在紧缩货币环境中交易看涨形态(或在宽松环境中交易看跌形态)会显著降低胜率。宏观趋势作为一个强大的过滤器——忽视它意味着与市场中最重要的力量对抗。
因为形态"看起来好"而接受盈亏比不足的交易会侵蚀统计优势。美丽的形态与 1.5:1 的比例是一笔坏交易。丑陋的形态与 4:1 的比例可能是一笔好交易。
向亏损仓位加仓与专业交易者所做的相反。斯佩兰德奥明确表示:永远不要向亏损者加仓。 如果市场对你不利,你的分析是错误的。加仓只会增加损害。
交易过于频繁——通常由无聊、贪婪或"回本"欲望驱动——是一个常见陷阱。每笔交易都有交易成本和情绪成本。最高概率的交易很少见;交易者必须接受长期的非活跃状态。
将止损移离入场点(给交易"更多空间")几乎总是一个情绪决定。止损放在形态失效点是有原因的。移动它意味着交易者放弃了分析,基于希望交易。
斯佩兰德奥警告说,在牛市中开始的新交易者经常将幸运的时机误认为技巧。他们以过度自信和过大仓位交易,然后在市场环境变化时遭受重创。真正的技巧在多个市场环境中展示——趋势、震荡和波动。
即使是一个好的方法,如果仓位过大也会导致毁灭。一连串的亏损——统计上不可避免的——将在方法的边缘有时间显现之前摧毁账户。斯佩兰德奥认为仓位管理比入场信号更重要。
背景: 这是某年第三季度。美联储在过去九个月里已三次加息。收益率曲线已显著平坦。货币环境被分类为看跌。
标准普尔 500 指数在强劲上升趋势中保持了 14 个月,从 1,200 上涨至 1,550。连接 14 个月前 1,200 和 8 个月前 1,320 主要低点的趋势线已被触及五次而未被突破。
第一步——趋势线突破: 标准普尔 500 收于 1,490,果断跌破趋势线(目前约在 1,510 附近)。突破当日的成交量比平均水平高 30%。这是第一步:趋势线已被突破。
行动: 警报触发。开始监控第二步。暂无仓位。
在接下来的两周内,标准普尔 500 从 1,490 反弹至 1,535。之前的摆动高点是 1,550。
反弹在 1,535 停滞——相对于 1,550 峰值明显是更低的低点。反弹当日成交量低于平均水平,确认缺乏信心。
行动: 第二步确认。建立初始空头仓位。
入场计算:
摆动测量目标:
仓位管理:
接下来一周,标准普尔 500 从 1,535 下跌至 1,480。之前的反应低点(先于反弹至 1,535 的摆动低点)是 1,490。
价格收于 1,480,果断跌破 1,490。第三步确认。1-2-3 反转完成。新的下降趋势现已生效。
行动: 加仓空头仓位。
第三步后第一周: 标准普尔 500 下跌至 1,460。盈利:(1,514.4 - 1,460) × 8 × $50 = $21,760。
行动: 将止损移至盈亏平衡(1,514)。风险现在为零。
第三周: 标准普尔 500 达到 T1(50% 回撤位于 1,435)。
行动: 在 1,435 了结 3 份合约的利润。剩余仓位:5 份合约。将止损追踪至 1,490(之前的第三步水平)。
第五周: 标准普尔 500 达到 T2(62% 回撤位于 1,407)。
行动: 在 1,407 了结剩余 5 份合约的利润。
| 组成部分 | 合约数 | 入场 | 出场 | 点数 | 盈利 |
|---|---|---|---|---|---|
| 初始仓位 | 5 | 1,535 | 1,407 | 128 | $32,000 |
| 加仓(部分了结) | 3 | 1,480 | 1,435 | 45 | $6,750 |
| 合计 | $38,750 |
函数 detect_trendline(价格, 方向, 回溯周期):
// 找重要的摆动点
摆动点 = find_swing_points(价格, 最小摆动=ATR*2)
如果 方向 == "UP":
// 连接重要的低点
低点 = filter_swing_lows(摆动点)
如果 length(低点) < 2:
返回 null
// 尝试所有低点对,从最近开始
对于 i 从 length(低点)-1 倒序至 1:
对于 j 从 i-1 倒序至 0:
点A = 低点[j] // 较早的低点
点B = 低点[i] // 较晚的低点
// 计算趋势线斜率
斜率 = (点B.price - 点A.price) /
(点B.index - 点A.index)
// 验证两点之间的价格没有穿过线条
有效 = TRUE
对于 每根柱 在 点A.index 和 点B.index 之间:
线条值 = 点A.price + 斜率 * (柱.index - 点A.index)
如果 柱.low < 线条值:
有效 = FALSE
跳出
如果 有效:
// 计算触及次数(在线条 ATR*0.5 范围内)
触及 = count_touches(价格, 点A, 斜率, 容差=ATR*0.5)
角度 = arctan(斜率 / ATR) * (180 / PI) // 按 ATR 归一化
返回 {
开始: 点A,
结束: 点B,
斜率: 斜率,
触及: 触及,
角度: 角度,
强度: 触及 * (1.0 - 角度/90) // 更平坦 + 更多触及 = 更强
}
返回 null
如果 方向 == "DOWN":
// 镜像逻辑,使用摆动高点
// 连接重要高点;验证没有价格在线条之上
// [对称实现]
函数 find_swing_points(价格, 最小摆动大小):
摆动点 = []
对于 i 从 1 至 length(价格)-1:
// 摆动低点:左右 N 根柱都低
如果 价格[i].low < MIN(价格[i-N:i].lows) 且
价格[i].low < MIN(价格[i+1:i+N+1].lows):
如果 abs(价格[i].low - last_swing_high) >= 最小摆动大小:
摆动点.append({类型: "LOW", 价格: 价格[i].low, 索引: i})
// 摆动高点:左右 N 根柱都高
如果 价格[i].high > MAX(价格[i-N:i].highs) 且
价格[i].high > MAX(价格[i+1:i+N+1].highs):
如果 abs(价格[i].high - last_swing_low) >= 最小摆动大小:
摆动点.append({类型: "HIGH", 价格: 价格[i].high, 索引: i})
返回 摆动点
函数 scan_123_reversal(价格, 摆动点, 趋势线, 方向):
// 方向 = "BEARISH_REVERSAL"(上升趋势结束)或
// "BULLISH_REVERSAL"(下降趋势结束)
当前价格 = 价格[LAST].收盘
结果 = {第一步: FALSE, 第二步: FALSE, 第三步: FALSE, 信号: NONE}
如果 方向 == "BEARISH_REVERSAL":
如果 趋势线 IS NULL 或 趋势线.方向 != "UP":
返回 结果
// 第一步:趋势线突破
当前线条值 = 趋势线.在(LAST)的值
如果 当前价格 < 当前线条值:
结果.第一步 = TRUE
结果.第一步柱 = LAST
结果.第一步价格 = 当前价格
// 找到突破前最近的摆动高点
之前高点 = most_recent_swing_high(摆动点, 在=结果.第一步柱之前)
// 第二步:未能创新高
// 寻找趋势线突破后的反弹高点
突破后高点 = highest_high(价格, 从 结果.第一步柱 至 LAST)
如果 突破后高点 < 之前高点.价格:
结果.第二步 = TRUE
结果.第二步价格 = 突破后高点
结果.更低的低点 = 突破后高点
结果.之前的高点 = 之前高点.价格
// 找到第一步和第二步之间的反应低点
反应低点 = lowest_low(价格,
从 结果.第一步柱 至 突破后高点的柱)
// 第三步:穿透之前的反应低点
如果 当前价格 < 反应低点:
结果.第三步 = TRUE
结果.第三步价格 = 当前价格
结果.反应低点 = 反应低点
结果.信号 = "SHORT"
// 计算目标
先前上涨 = 之前高点.价格 - find_prior_swing_low(摆动点).价格
结果.目标_T1 = 之前高点.价格 - (先前上涨 * 0.50)
结果.目标_T2 = 之前高点.价格 - (先前上涨 * 0.62)
结果.目标_T3 = 之前高点.价格 - 先前上涨
// 计算止损和盈亏比
结果.止损 = 结果.更低的低点 + ATR * 0.5
结果.风险 = 结果.止损 - 当前价格
结果.盈利 = 当前价格 - 结果.目标_T2
结果.盈亏比 = 结果.盈利 / 结果.风险
返回 结果
如果 方向 == "BULLISH_REVERSAL":
// 镜像逻辑:
// 第一步:价格向上突破下降趋势线
// 第二步:下跌未能创新低(更高的低点)
// 第三步:价格向上突破之前的反应高点
// 信号 = "LONG"
// [对称实现]
返回 结果
函数 monitor_123_setup(价格, 摆动点, 趋势线):
// 每根新柱时运行
空头 = scan_123_reversal(价格, 摆动点, 趋势线, "BEARISH_REVERSAL")
多头 = scan_123_reversal(价格, 摆动点, 趋势线, "BULLISH_REVERSAL")
警报 = []
如果 空头.第一步 且 非 空头.第二步:
警报.append("1-2-3 空头:第一步完成(趋势线已突破)。等待第二步。")
如果 空头.第二步 且 非 空头.第三步:
警报.append("1-2-3 空头:第二步完成(较低高点在 " +
空头.第二步价格 + ")。激进交易者入场区域。")
如果 空头.第三步:
如果 空头.盈亏比 >= 3.0:
警报.append("1-2-3 空头:已确认。做空信号。盈亏比 = " +
空头.盈亏比 + "。目标 T2 = " + 空头.目标_T2)
否则:
警报.append("1-2-3 空头:已确认但盈亏比 = " +
空头.盈亏比 + "(低于 3:1 最低要求)。放弃。")
// [多头设置的对称警报]
返回 警报
函数 detect_2B_pattern(价格, 摆动点, 回溯=5):
信号 = []
当前柱 = LAST
// 看跌 2B(假突破至之前高点之上)
最近高点 = get_swing_highs(摆动点, 最近50根柱内)
对于 每个高点 在 最近高点中:
// 检查价格是否在此时高点之上创新高
对于 柱 从 高点.index+1 至 当前柱:
如果 价格[柱].high > 高点.价格:
// 新高已创。现在检查反转。
创新高之后的柱数 = 当前柱 - 柱
如果 创新高之后的柱数 <= 回溯:
// 检查价格现在是否跌回至之前高点之下
如果 价格[当前柱].收盘 < 高点.价格:
假高点 = highest_high(价格, 从 柱 至 当前柱)
信号 = {
类型: "BEARISH_2B",
之前高点: 高点.价格,
假高点: 假高点,
入场: 高点.价格, // 在之前高点之下做空
止损: 假高点 + ATR * 0.3,
反转柱数: 创新高之后的柱数,
// 反转越快 = 信号越强
强度: 1.0 - (创新高之后的柱数 / 回溯)
}
// 使用摆动测量计算盈利
之前低点 = find_swing_low_before(摆动点, 高点.index)
摆动大小 = 高点.价格 - 之前低点.价格
信号.目标 = 高点.价格 - (摆动大小 * 0.62)
信号.风险 = 信号.止损 - 信号.入场
信号.盈利 = 信号.入场 - 信号.目标
信号.盈亏比 = 信号.盈利 / 信号.风险
如果 信号.盈亏比 >= 3.0:
信号.append(信号)
跳出 // 只需要最近的情况
// 看涨 2B(假突破至之前低点之下)
最近低点 = get_swing_lows(摆动点, 最近50根柱内)
对于 每个低点 在 最近低点中:
// 检查价格是否在此时低点之下创新低
对于 柱 从 低点.index+1 至 当前柱:
如果 价格[柱].low < 低点.价格:
创新低之后的柱数 = 当前柱 - 柱
如果 创新低之后的柱数 <= 回溯:
如果 价格[当前柱].收盘 > 低点.价格:
假低点 = lowest_low(价格, 从 柱 至 当前柱)
信号 = {
类型: "BULLISH_2B",
之前低点: 低点.价格,
假低点: 假低点,
入场: 低点.价格, // 在之前低点之上做多
止损: 假低点 - ATR * 0.3,
反转柱数: 创新低之后的柱数,
强度: 1.0 - (创新低之后的柱数 / 回溯)
}
之前高点 = find_swing_high_before(摆动点, 低点.index)
摆动大小 = 之前高点.价格 - 低点.价格
信号.目标 = 低点.价格 + (摆动大小 * 0.62)
信号.风险 = 信号.入场 - 信号.止损
信号.盈利 = 信号.目标 - 信号.入场
信号.盈亏比 = 信号.盈利 / 信号.风险
如果 信号.盈亏比 >= 3.0:
信号.append(信号)
跳出
返回 信号
函数 calculate_reward_risk(入场, 止损, 目标, 资本, 最大风险%=0.02):
// 基本计算
每单位风险 = abs(入场 - 止损)
方向 = "LONG" 如果 止损 < 入场 否则 "SHORT"
// 计算每个目标水平
分析 = []
对于 每个目标 在 目标中:
如果 方向 == "LONG":
每单位盈利 = 目标 - 入场
否则:
每单位盈利 = 入场 - 目标
比例 = 每单位盈利 / 每单位风险
分析.append({
目标: 目标,
每单位盈利: 每单位盈利,
每单位风险: 每单位风险,
比例: 比例,
可接受: 比例 >= 3.0
})
// 仓位规模
最大风险金额 = 资本 × 最大风险%
仓位规模 = FLOOR(最大风险金额 / (每单位风险 × 点值))
// 分批计划 (50/30/20)
分批计划 = {
入场_1: {规模: FLOOR(仓位规模 × 0.50), 价格: 入场, 触发: "第二步"},
入场_2: {规模: FLOOR(仓位规模 × 0.30), 价格: NULL, 触发: "第三步"},
入场_3: {规模: 仓位规模 - 入场_1.规模 - 入场_2.规模,
价格: NULL, 触发: "第三步后的第一次回调"}
}
// 投资组合热度检查
现有风险 = get_total_open_risk()
新总风险 = 现有风险 + 最大风险金额
热度% = 新总风险 / 资本
返回 {
方向: 方向,
入场: 入场,
止损: 止损,
每单位风险: 每单位风险,
目标: 分析,
最佳比例: MAX(分析.比例),
仓位规模: 仓位规模,
最大风险金额: 最大风险金额,
分批计划: 分批计划,
投资组合热度: 热度%,
热度正常: 热度% <= 0.10,
交易批准: 最佳比例 >= 3.0 且 热度% <= 0.10
}
函数 evaluate_trade_complete(信号, 货币环境, 市场类型):
// 最终 go/no-go 决策,整合所有因素
分数 = 0
标志 = []
// 盈亏比检查
如果 信号.最佳比例 >= 3.0:
分数 += 30
否则:
标志.append("拒绝:盈亏比低于 3:1(" + 信号.最佳比例 + ")")
返回 {批准: FALSE, 分数: 分数, 标志: 标志}
// 货币政策一致性
如果 信号.方向 == "LONG" 且 货币环境 == "EASING":
分数 += 25
否则 如果 信号.方向 == "SHORT" 且 货币环境 == "TIGHTENING":
分数 += 25
否则 如果 货币环境 == "NEUTRAL":
分数 += 10
标志.append("注意:货币环境中性——降低规模")
否则:
分数 -= 20
标志.append("警告:逆货币政策交易——显著降低规模")
// 市场类型过滤器
如果 市场类型 == "TRENDING":
分数 += 20
否则 如果 市场类型 == "CHOPPY":
分数 -= 15
标志.append("注意:震荡市场——高假信号风险")
否则 如果 市场类型 == "VOLATILE":
分数 -= 25
标志.append("警告:波动市场——考虑观望")
// 形态强度
如果 信号.类型 包含 "123" 且 信号.第三步 == TRUE:
分数 += 15 // 完全确认
否则 如果 信号.类型 包含 "2B" 且 信号.强度 > 0.7:
分数 += 15 // 快速反转 = 强 2B
否则:
分数 += 5 // 部分或弱形态
// 投资组合热度
如果 信号.热度正常:
分数 += 10
否则:
标志.append("拒绝:投资组合热度超过 10%")
返回 {批准: FALSE, 分数: 分数, 标志: 标志}
// 规模建议
如果 分数 >= 80:
规模倍数 = 1.0
置信度 = "高"
否则 如果 分数 >= 60:
规模倍数 = 0.65
置信度 = "中"
否则 如果 分数 >= 40:
规模倍数 = 0.35
置信度 = "低"
否则:
规模倍数 = 0.0
置信度 = "不交易"
返回 {
批准: 规模倍数 > 0,
分数: 分数,
置信度: 置信度,
规模倍数: 规模倍数,
调整后规模: FLOOR(信号.仓位规模 × 规模倍数),
标志: 标志
}
函数 manage_open_trade(交易, 当前价格, 当前柱):
// 对每个新柱调用,用于开放仓位
// 检查止损
如果 交易.方向 == "LONG" 且 当前价格 <= 交易.止损:
返回 close_trade(交易, 交易.止损, "止损")
如果 交易.方向 == "SHORT" 且 当前价格 >= 交易.止损:
返回 close_trade(交易, 交易.止损, "止损")
// 计算当前盈亏
如果 交易.方向 == "LONG":
未实现盈亏 = (当前价格 - 交易.平均入场) × 交易.总规模
否则:
未实现盈亏 = (交易.平均入场 - 当前价格) × 交易.总规模
// 分批管理
如果 交易.分批阶段 == 1 且 交易.第三步已确认:
// 在第三步确认时加入第二 tranche
execute_scale_in(交易, 交易.分批计划.入场_2, 当前价格)
交易.分批阶段 = 2
如果 交易.分批阶段 == 2 且 is_pullback_entry(交易, 当前价格):
// 在第三步后的第一次回调时加入最后 tranche
execute_scale_in(交易, 交易.分批计划.入场_3, 当前价格)
交易.分批阶段 = 3
// 获利了结和止损追踪
如果 reached_target(交易, 当前价格, "T1"):
// 在 T1 了结部分利润
partial_exit(交易, 规模=交易.总规模 × 0.35, 价格=当前价格)
// 将止损移至盈亏平衡
交易.止损 = 交易.平均入场
交易.止损类型 = "盈亏平衡"
如果 reached_target(交易, 当前价格, "T2"):
// 在 T2 了结剩余利润
close_trade(交易, 当前价格, "目标_T2")
// 基于时间的出场:如果交易在 20 根柱内未达到 T1,收紧止损
如果 (当前柱 - 交易.入场柱) > 20 且 非 reached_target(交易, 当前价格, "T1"):
交易.止损 = trail_stop(交易, 方法="摆动点")
交易.止损类型 = "时间追踪"
返回 交易
"交易成功的关键是情绪纪律。如果聪明是关键,就会有更多的人在交易中赚钱。"
"趋势是趋势,直到它结束。1-2-3 方法给你一个客观的方式来确定趋势何时结束——不是猜测,不是感觉,而是一个定义好的市场事件序列。"
"首先,趋势线被突破。其次,价格未能创新极端。第三,价格穿透之前的反应点。当这三个按顺序发生时,趋势已经改变。就是这样——但在执行中就是这样困难。"
"大多数交易者在趋势改变时失败,因为他们试图提前预测拐点。1-2-3 方法不预测——它确认。你放弃了行情的第一部分,换取了高得多的正确概率。"
"交易中最重要的规则是打好的防守,而不是好的进攻。每天我都假设我持有的每个仓位都是错的。我知道我的止损风险点在哪里。我这样做是为了定义我的最大可能回撤。"
"如果你不赌,你就赢不了。如果你输光了所有的筹码,你就不能赌了。关于风险管理没有什么需要学习的了。"
"利率的方向是影响股票市场的最主导单一因素。忽视这一点交易者会自食其果。"
"当美联储在宽松时,顺风支持多头。当美联储在紧缩时,顺风支持空头。这并不复杂——但大多数交易者忽略它,因为他们太专注于短期噪音。"
"1987 年 10 月初,市场突破了趋势线。它反弹了,但无法创新高。然后它跌破了之前的低点。1-2-3 完成了。我做空了。在黑色星期一,我不觉得自己像个天才——我感觉自己像个遵守规则的交易者。"
"交易中最困难的不是弄清楚该做什么——而是做你已经知道自己应该做的事。知识和行动之间的差距是大多数交易者亏损的地方。"
"亏损不是敌人。亏损是做生意的成本。敌人是比应该的更大的亏损——而这只有当交易者放弃他的计划时才会发生。"
"我的大部分时间都花在等待上。大多数时候我没有在交易。我在观察、分析、计算——和等待。最好的交易会来找你;你不必追逐它们。"
"一个觉得自己必须一直持仓的交易者将永远亏损。能够按兵不动是交易中最被低估的技能之一。"
"如果我的盈利至少不是我风险的三倍,我就不进行交易。句号。没有例外。这一条规则比我用过的任何技术形态都拯救了更多的钱。"
"向下摊平是一个只有一个确定结果的策略——它保证你最大的仓位将是你最大的亏损者。专业交易者向盈利者加仓,从不向亏损者加仓。"
"大多数人们交易过大、过频、且优势过小。把所有这三项都减半,你会显著改善你的结果。"
实施规范完。 Trader Vic: Methods of a Wall Street Master,作者 Victor Sperandeo(1991)