基于中文分析,股票大作手利弗莫尔的交易精髓(Trading Secrets of Jesse Livermore)
股票大作手利弗莫尔的交易精髓 是一本中文提炼和分析 Jesse Livermore 交易方法论的书。不是重述利弗莫尔的故事(Reminiscences of a Stock Operator 和 How to Trade in Stocks 已经做到了),这本书采用了实践者的方法:提取利弗莫尔方法的操作精髓(交易精髓),并将它们重新组织成现代交易者可以直接实施的框架。
本书的核心论点是:利弗莫尔的天才不在于任何单一技术,而在于他系统性地整合了五种能力:
利弗莫尔本人的 How to Trade in Stocks 详细呈现了市场关键点系统,但没有将其置于更广泛交易工作流程的背景下。Reminiscences 提供了哲学基础但是叙事性的,非系统性的。这本中文分析通过以下方式弥合差距:
这些原则与市场无关。利弗莫尔交易股票和商品;中文分析明确指出这些方法适用于:
本书将利弗莫尔的方法提炼成十二个核心规则层级,按优先级排序。当规则冲突时,编号较高的规则让位于编号较低的。
最重要的单一规则。任何个股持仓都不应逆 prevailing 市场趋势开仓。涨潮抬升所有船;退潮使它们下沉。这是在任何其他分析之前必须满足的最高过滤器。
如果 大势 == 不明确:
行动 = 不做任何事
如果 大势 == 牛市:
允许方向 = 仅做多
如果 大势 == 熊市:
允许方向 = 仅做空
在牛市中,并非所有股票同等上涨。利弗莫尔集中于龙头股 — 在最强行业板块中最早、最远上涨的股票。逻辑:如果你必须承担风险,在最有可能以最大幅度朝对你有利的方向移动的名称上承担。
按过去 6-12 个月的相对强度对板块排名
选择前 2-3 个板块
在每个板块内,按以下方式对股票排名:
- 价格领先(最先创新高)
- 成交量领先(上涨日相对成交量最高)
- 盈利领先(增长最快)
每个板块选择前 1-2 只股票
永远不要仅仅因为趋势有利就开仓。等待股票达到关键点 — 突破或跌破确认下一步走势的具体价格水平。在关键点入场提供最紧密的可能止损和最清晰的确认。
有效的关键点突破必须伴随高于平均水平的成交量。成交量是推动价格的燃料。低成交量的突破可疑;扩张成交量的突破可靠。
永远不要一次性投入全部仓位。以阶段(试探)入场,仅当市场确认交易正在盈利时才增加规模。
每笔持仓必须在入场前定义最大亏损阈值。当达到该阈值时,立即出场,没有犹豫,不向下摊平,不希望反转。
规则 6 的镜像。不要仅仅因为你有盈利就了结盈利持仓。仅当趋势反转或追踪止损被触发时才出场。砍仓短、让盈利奔跑之间的不对称是产生正期望的原因。
向亏损持仓加仓是投机中最具破坏性的做法。它违反规则 6,增加对市场已告诉你错误的交易敞口,将小亏损变成灾难性的。
当市场不明确时,正确的持仓是现金。没有持仓本身就是一个强大的持仓 — 它保存资本并保存选择性。业余选手觉得必须始终持仓;专业选手知道最有利可图的行为往往是不作为。
多 个条件必须在交易前汇聚:大盘方向、板块强度、个股在关键点、成交量确认。即使缺少一个条件也不要交易。这个耐心过滤器消除了绝大多数潜在交易——这正是重点。
记录每笔交易,包括入场的理由、出场的理由、每个决策点的情绪状态以及结果。这份记录是自我提升的原材料。
关注少量股票(最多 6-10 只)。深入了解少数名称远比肤浅了解多数更有价值。利弗莫尔监控整个市场但在任何给定时间将其资本集中于少数持仓。
利弗莫尔的"盘口解读"(看盘)不是关于观看每一个 tick。它是关于解读价格和成交量行为以确定供需之间的平衡。中文分析识别了利弗莫尔观察的四个特定模式:
价格在成交量下降时保持稳定或轻微下跌,然后多次测试支撑位而不突破。每次测试成交量比前一次低。这表明卖出压力正在耗尽,强势资金正在吸收所有可用供应。
函数 detect_absorption(柱, 支撑位, 回溯=20):
测试 = []
对于 柱 在 柱[-回溯:]:
如果 柱.低点 <= 支撑位 * 1.01:
测试.append(柱)
如果 len(测试) < 2:
返回 False
# 成交量应该在每次连续测试中下降
成交量递减 = all(
测试[i].成交量 < 测试[i-1].成交量
对于 i 在 范围(1, len(测试))
)
# 价格区间应该收窄
区间收窄 = all(
(测试[i].高点 - 测试[i].低点) < (测试[i-1].高点 - 测试[i-1].低点)
对于 i 在 范围(1, len(测试))
)
返回 成交量递减 且 区间收窄
在关键位整合一段时间后,价格以至少高于 20 日平均成交量 50% 的成交量向上突破关键位。突破日应在区间的上半部分收盘。这表明需求已压倒供应,下一步走势已开始。
函数 confirm_breakout(柱, 关键价格, 20日平均成交量):
价格穿透 = 柱.收盘 > 关键价格
成交量激增 = 柱.成交量 >= 20日平均成交量 * 1.5
强势收盘 = (柱.收盘 - 柱.低点) / (柱.高点 - 柱.低点) >= 0.75
返回 价格穿透 且 成交量激增 且 强势收盘
吸筹的镜像。价格达到新高但成交量下降。每次反弹至新高的努力都遭遇越来越强的卖出。宽范围、高成交量柱在区间下半部分收盘(搅动)是标志。这表明强势资金正在向公众派发股票。
函数 detect_distribution(柱, 回溯=20):
高点 = [(i, b) 对于 i, b 在 枚举(柱[-回溯:]) 如果 是新高(b, 柱)]
如果 len(高点) < 2:
返回 False
下跌日成交量增加 = False
对于 i 在 范围(1, len(柱[-回溯:])):
柱 = 柱[-回溯 + i]
如果 柱.收盘 < 柱.开盘: # 下跌日
如果 柱.成交量 > 柱[-回溯 + i - 1].成交量:
下跌日成交量增加 = True
# 新高时成交量下降
高点成交量递减 = all(
高点[i][1].成交量 < 高点[i-1][1].成交量
对于 i 在 范围(1, len(高点))
)
返回 高点成交量递减 或 下跌日成交量增加
高潮是走势的终末阶段 — 上升趋势中买家或下降趋势中卖家的最终耗尽。特征:
函数 detect_climax(柱, 最近柱, 方向):
最大成交量 = MAX(b.成交量 对于 b 在 最近柱中)
最大区间 = MAX(b.高点 - b.低点 对于 b 在 最近柱中)
是极端成交量 = 柱.成交量 >= 最大成交量 * 0.9
是极端区间 = (柱.高点 - 柱.低点) >= 最大区间 * 0.9
如果 方向 == "UP":
反转收盘 = 柱.收盘 < (柱.高点 + 柱.低点) / 2
返回 是极端成交量 且 是极端区间 且 反转收盘
否则:
反转收盘 = 柱.收盘 > (柱.高点 + 柱.低点) / 2
返回 是极端成交量 且 是极端区间 且 反转收盘
关键点(关键点)是一个具体价格水平,在该水平上下一步方向性走势的概率最高。它不是一个计算值(如场内交易者的关键点公式);它是价格走势的结构性特征 — 由于之前交易活动,供需集中的水平。
类型 1 — 趋势延续关键点: 在既定上升趋势中,价格在窄区间内整合数天或数周,然后向上突破至新高。整合区间的顶部是关键点。这是最常见和最可靠的关键点类型。
类型 2 — 趋势反转关键点: 在延伸下跌之后,价格形成底部(吸筹形态),然后向上突破底部顶部。突破位是关键点。这风险更高,因为它赌趋势改变,但回报也更高,因为它抓住新趋势的开始。
类型 3 — 联动关键点: 当龙头股在关键点突破时,其最接近的同类股(联动股)在窄时间窗口(1-5 天)内监测其自身关键点的确认突破。联动确认提升了初始信号的概率。
中文分析强调,利弗莫尔的关键点入场不仅仅是价格水平 — 它们包含时间要素(时间要素):
函数 evaluate_pivot_timing(股票, 关键价格, 整合天数):
"""
关键点突破前整合时间越长,后续走势越有力。
"""
如果 整合天数 < 5:
时机质量 = "弱" # 太短;可能是噪音
否则 如果 整合天数 < 15:
时机质量 = "中等" # 可接受
否则 如果 整合天数 < 40:
时机质量 = "强" # 理想 — 弹簧完全压紧
否则:
时机质量 = "谨慎" # 延伸底部;可能下跌
返回 时机质量
利弗莫尔非常关注股票在突破关键点后立即的行为。中文分析将其编纂为"首次回踩测试"(首次回踩测试):
函数 evaluate_first_pullback(入场价格, 关键价格, 回踩低点, 回踩成交量, 突破成交量):
下跌% = (入场价格 - 回踩低点) / 入场价格
保持在关键位上方 = 回踩低点 > 关键价格
成交量下降 = 回踩成交量 < 突破成交量 * 0.7
如果 下跌% <= 0.05 且 保持在关键位上方 且 成交量下降:
返回 "健康" # 恢复时加仓
否则 如果 下跌% > 0.07 或 非 保持在关键位上方:
返回 "失败" # 立即出场
否则:
返回 "模糊" # 持有,不加仓,收紧止损
金字塔加仓(金字塔加仓法)是向盈利持仓递减增加的做法。中文分析强调,利弗莫尔从不全仓一次性加仓 — 他分阶段试探市场,使用每次后续加仓来确认交易正在盈利。
试探 1(初始): 计划全仓的 20%
试探 2(确认): 计划全仓的 20%
试探 3(全额投入): 计划全仓的 60%
试探 1 在关键点突破且成交量足够时放置。风险被定义:如果股票反转穿过关键点,亏损很小(20% 计划规模乘以到止损的距离)。
试探 2 仅在试探 1 显示盈利后放置(通常比首次入场高 2-3%)。整个持仓的止损提高到试探 1 入场价,使交易在最坏情况下大致处于盈亏平衡。
试探 3 是剩余 60% 的投入。仅在试探 2 显示盈利且大势和板块条件仍然有利后放置。止损提高到试探 2 入场价。
该结构确保最大部分的资本仅在市场确认交易两次后才投入。如果交易早期失败,亏损控制在计划仓位的 20%。期望值为正,因为盈利仓位获得全规模,亏损仓位获得最小规模。
函数 pyramid_entry(股票, 关键价格, 计划股数, 账户):
"""
利弗莫尔的三次试探金字塔序列。
"""
# 试探 1
试探1股数 = int(计划股数 * 0.20)
试探1价格 = 关键价格 # 在关键点突破时入场
初始止损 = 关键价格 * 0.93 # 关键点下方 7%
执行买入(股票, 试探1股数, 试探1价格)
设置止损(股票, 初始止损)
# 等待确认...
# 试探 2 — 仅在试探 1 盈利 2-3% 时
如果 股票.当前价格 >= 试探1价格 * 1.025:
试探2股数 = int(计划股数 * 0.20)
试探2价格 = 股票.当前价格
执行买入(股票, 试探2股数, 试探2价格)
设置止损(股票, 试探1价格) # 提高到盈亏平衡
# 试探 3 — 仅在试探 2 盈利且条件仍然有效时
如果 股票.当前价格 >= 试探2价格 * 1.025:
如果 大势仍然看涨() 且 板块仍然领先():
试探3股数 = int(计划股数 * 0.60)
试探3价格 = 股票.当前价格
执行买入(股票, 试探3股数, 试探3价格)
设置止损(股票, 试探2价格) # 再次提高止损
一旦建立全仓,利弗莫尔不会在更高价格增加更多股数。金字塔加仓完成。从这一点起,唯一的行为是:
利弗莫尔的绝对规则:任何单笔交易不要损失超过交易资本的 10%。中文分析指出这是硬天花板 — 实际目标应该是每笔交易 5-7%,10% 作为灾难止损。
函数 calculate_position_size(账户权益, 入场价格, 止损价格, 最大风险%=0.07):
每份风险 = 入场价格 - 止损价格
最大美元风险 = 账户权益 * 最大风险%
最大股数 = int(最大美元风险 / 每份风险)
返回 最大股数
利弗莫尔从不部署所有资本。中文分析确定了他的标准配置:
活跃交易资本: 总权益的 60%
储备资本: 总权益的 30%(用于加仓/新机会)
绝对储备: 总权益的 10%(永不动用,应急资金)
储备资本有两个目的:
任何时候最大持仓数: 4-6
任何单一持仓的最大资本: 活跃资本的 25%
任何单一板块的最大资本: 活跃资本的 40%
任何时候最小现金储备: 总权益的 10%
在重大回撤后,利弗莫尔大幅减少持仓规模。中文分析将其编纂为:
函数 adjust_size_after_drawdown(当前权益, 峰值权益, 正常规模):
亏损% = (峰值权益 - 当前权益) / 峰值权益
如果 亏损% < 0.10:
返回 正常规模 # 正常规模
否则 如果 亏损% < 0.20:
返回 正常规模 * 0.50 # 一半规模
否则 如果 亏损% < 0.30:
返回 正常规模 * 0.25 # 四分之一规模
否则:
返回 0 # 停止交易,转为现金,重新评估
一旦持仓显示重大未平盈利(20%+),追踪止损被收紧以保护至少一半收益。确切水平取决于股票的波动性和趋势特征。
函数 update_trailing_stop(持仓, 当前价格):
未平盈% = (当前价格 - 持仓.平均入场) / 持仓.平均入场
如果 未平盈% >= 0.20:
# 保护至少 50% 的未平盈利
最小止损 = 持仓.平均入场 + (当前价格 - 持仓.平均入场) * 0.50
持仓.止损 = MAX(持仓.止损, 最小止损)
否则 如果 未平盈% >= 0.10:
# 保护至少 30% 的未平盈利
最小止损 = 持仓.平均入场 + (当前价格 - 持仓.平均入场) * 0.30
持仓.止损 = MAX(持仓.止损, 最小止损)
中文分析识别了利弗莫尔阅读整体市场的方法,作为四个因素的综合评估:
函数 assess_general_market(龙头股, 板块数据, 市场成交量, 新闻反应):
龙头股得分 = score_leaders(龙头股)
广度得分 = score_breadth(板块数据)
成交量得分 = score_volume_pattern(市场成交量)
反应得分 = score_news_reactions(新闻反应)
综合 = (龙头股得分 * 0.30 + 广度得分 * 0.25 +
成交量得分 * 0.25 + 反应得分 * 0.20)
如果 综合 > 0.65:
返回 "看涨"
否则 如果 综合 < 0.35:
返回 "看跌"
否则:
返回 "不明确"
利弗莫尔认识到三个不同阶段,每个阶段有不同的交易含义:
阶段 1 — 积累期(积累期): 聪明钱在买入。公众仍受之前下跌影响。看空。股票筑底,吸筹形态出现,成交量平静。这个阶段奖励反转关键点入场,但风险较高。
阶段 2 — 参与期(参与期): 趋势已确立。盈利在改善。公众开始买入。成交量在上涨时扩张。这是趋势跟随者最安全和最有利可图的阶段。持续关键点丰富。
阶段 3 — 派发期(派发期): 每个人都看涨。股票在下降成交量下创新高。内部人士和聪明钱在向公众卖出。这个阶段产生假突破和高潮行为。正确的姿态是开始减少持仓并积极提高止损。
强制现金条件:
- 大势方向不明确
- 市场处于阶段 3(派发)并显示高潮信号
- 发生重大回撤(从峰值权益下跌 >20%)
- 连续 3 笔交易亏损(方法可能不适合条件)
- 你感到情绪受损(愤怒、报复、兴奋)
中文分析在卖空上投入了大量关注,指出利弗莫尔在空头方面赚了一些最大的财富(最著名的是 1907 年和 1929 年)。规则镜像长仓规则,有特定适应。
以下所有必须为真:
1. 大势趋势 = 熊市
2. 目标股票板块/组是最弱的
3. 目标股票是弱势组中的落后者(不是组中最强的)
4. 价格已跌破关键支撑位(反转关键点)
5. 成交量在跌破时扩张
6. 之前的反弹尝试在下降的阻力位失败
同样的三次试探结构适用,但反过来:
做空试探 1: 在支撑关键点跌破时卖出做空 20%
做空试探 2: 如果价格进一步下跌 2-3%,再卖出做空 20%
做空试探 3: 在持续确认时卖出做空剩余 60%
止损: 在被跌破的支撑位(现在成为阻力)上方 + 保证金
中文分析识别了三个不对称:
卖出高潮(卖出高潮)标志下跌的结束:
函数 detect_selling_climax(柱, 最近柱, 趋势持续时间):
是最高成交量 = 柱.成交量 >= MAX(b.成交量 对于 b 在 最近柱中) * 0.95
是最宽区间 = (柱.高点 - 柱.低点) >= MAX(b.高点 - b.低点 对于 b 在 最近柱中) * 0.9
跳空低开 = 柱.开盘 < 最近柱[-1].收盘
反弹收盘 = 柱.收盘 > (柱.高点 + 柱.低点) / 2
延伸趋势 = 趋势持续时间 >= 30 # 至少 30 天下跌
返回 (是最高成交量 且 是最宽区间 且
跳空低开 且 反弹收盘 且 延伸趋势)
当检测到卖出高潮时,立即回补所有空头持仓。
中文分析识别了利弗莫尔的四个心理对手:
恐惧(恐惧): 导致交易者过早了结盈利、避免进入有效形态,或在应该执行止损时冻结。恐惧在最阻止你遵循系统时最危险。
贪婪(贪婪): 导致交易者过度交易、过度杠杆、持有亏损持仓希望恢复,或向已经满规模的持仓加仓。
希望(希望): 最阴险的敌人。希望阻止交易者砍仓。它低语说股票会回来。利弗莫尔说希望应该留给盈利的一方 — 当你有盈利时,希望它继续。当你亏损时,希望没有位置。
无聊(无聊): 导致交易者在没有有效形态时进入持仓,仅仅因为不活跃感觉没有成效。利弗莫尔坚持认为,坐着什么都不动的能力是最稀有和最有价值的交易技能。
本书编纂了对抗每个敌人的具体行为规则:
协议:反恐惧
- 在入场前预定义每个止损
- 使用限价单执行止损以移除实时决策
- 接受亏损是做生意成本,不是个人失败
- 每月回顾你的胜率和平均盈亏比以建立信心
协议:反贪婪
- 无论信念如何,永不超出持仓规模限制
- 永不向亏损持仓加仓
- 如果你发现自己正在计算潜在盈利,停止并专注于风险
- 大赢后,在下一笔交易减少规模(兴奋损害判断)
协议:反希望
- 使用硬止损,而非心理止损
- 当止损被触发时,立即执行,稍后回顾
- 如果你发现自己合理化为什么应该移动止损,那是止损不应该移动的确认
协议:反无聊
- 即使在不交易时也保持日常程序(市场分析、日志)
- 书面定义你的等待标准并每天回顾
- 将现金视为活跃持仓,而非缺乏活动
- 设置必须满足的最少条件数才能进行任何交易
每笔亏损交易后,利弗莫尔强制执行强制冷静期。中文分析建议:
函数 post_loss_protocol(连续亏损数, 最后亏损规模, 账户):
如果 连续亏损数 == 1:
# 单次亏损:回顾,日志,恢复正常操作
等待天数 = 0
规模倍数 = 1.0
否则 如果 连续亏损数 == 2:
# 两次连续:减少规模,放慢
等待天数 = 1
规模倍数 = 0.75
否则 如果 连续亏损数 == 3:
# 三次连续:显著减少,强制暂停
等待天数 = 3
规模倍数 = 0.50
否则 如果 连续亏损数 >= 4:
# 四次或更多:停止交易,转为现金,完全重新评估
等待天数 = 7
规模倍数 = 0.0 # 在回顾完成前不交易
返回 等待天数, 规模倍数
中文分析编纂了利弗莫尔本人犯下和观察他人犯下的错误,按类别组织:
在达到关键点之前入场。 预期突破而非等待确认。这是不耐烦的产物,产生更宽止损和更低概率的交易。
在成交量不足时入场。 没有成交量扩张的关键点突破不可靠。许多失败的交易源于忽视成交量要求。
逆大势入场。 在熊市中发现"好股票"并说服自己它会逆势。它几乎从不会。
同时入场过多持仓。 在太多名称上分散注意力和资本,使无法正确管理任何持仓。
向下摊平。 主要罪行。每向亏损持仓增加的一美元都增加了对市场已拒绝的论点的敞口。
移动止损以避免被止损。 这是希望伪装成分析。止损是有原因的;移动它使风险框架失效。
向满仓加仓。 一旦金字塔加仓完成,持仓就是满的。增加更多违反集中限制和风险预算。
过早了结盈利。 在第一次回调迹象时卖出盈利者,而非等待追踪止损被触发。这封顶了上涨并破坏了系统的正偏度。
未在止损位出场。 每个系统都产生亏损。拒绝接受它们将小的、可管理的亏损变成威胁账户的回撤。
根据建议或意见出场。 让别人的观点覆盖你的系统。如果系统说持有,就持有。如果系统说出场,就出场。
报复交易。 亏损后立即重新入场以"挽回"。这几乎总是导致第二笔亏损,加重损害。
因无聊而交易。 在没有有效形态时进入持仓,仅仅为了与市场保持联系。
在交易中途改变方法。 在技术突破时入场,然后在止损时持有,因为基本面论点。选择一种方法并一致遵循它。
连续盈利后过度自信。 在几次连续盈利后将规模增加到超出规则。下一次亏损,这是不可避免的,将是过大。
本示例说明利弗莫尔方法应用于牛市期间假设龙头股,遵循中文分析框架。
大势: 确认看涨。领先指数在扩张成交量下创新高。广度强劲(80%+ 板块上涨)。我们处于阶段 2(公众参与)。
板块扫描: 过去 6 个月技术和消费可选是两个最强板块。在技术板块内,股票 A 具有最高相对强度、最快盈利增长(同比 35%),且正在创新 52 周新高。
联动检查: 股票 B(同板块)也接近新高,确认板块强度。
股票 A 在从 75 上涨后,在 95 和 102 之间整合了 18 个交易日。整合期间成交量收缩(健康)。关键点是 102(整合区间顶部)。时机质量:强(18 天盘整)。
第 19 天:股票 A 在成交量为 20 日平均 2.3 倍的情况下收于 103.50。突破确认。
行动:买入试探 1 — 在 103.50 买入 200 股(1000 股目标的 20%)
止损: 95.00(整合低点下方,约入场价下方 8%)
风险: 200 * (103.50 - 95.00) = $1,700
第 20-23 天:股票 A 回踩至 101.20,在下降成交量下保持在 102 关键位之上。第 24 天:恢复上涨,收于 104.80。
评估:健康的回踩。关键位维持。成交量下降。
第 26 天:股票 A 收于 106.50(比试探 1 入场高 2.9%)。
行动:买入试探 2 — 在 106.50 买入 200 股(现在已投入 40%)
将止损提高到 103.50(试探 1 入场 = 首批盈亏平衡)
风险:最坏情况,仅在试探 2 上亏损 — 200 * (106.50 - 103.50) = $600
第 32 天:股票 A 收于 110.00。两批都盈利。大势仍然看涨。技术板块仍然领先。
行动:买入试探 3 — 在 110.00 买入 600 股(现在 100% 投入,1,000 股)
将止损提高到 106.50(试探 2 入场)
总持仓:200 @ 103.50, 200 @ 106.50, 600 @ 110.00
加权平均入场:108.10
第 33-60 天:股票 A 上涨至 135.00,途中正常回撤。每次回撤都创新低。止损追踪至最近摆动低点减去少量保证金。
追踪止损进展:
第 40 天:股票回撤低点 = 118.00 → 止损提高到 117.00
第 50 天:股票回撤低点 = 126.00 → 止损提高到 125.00
第 55 天:股票回撤低点 = 130.00 → 止损提高到 129.00
第 62 天:股票 A 跳空至 138.00,盘中高达 141.00,但在整个上涨期间最高成交量下反转收于 133.50。这是买入高潮。
反应:将止损收紧至 133.00(就在今日收盘下方)
第 63 天:股票 A 开盘于 132.00,跌破 133.00 的止损。
行动:以 133.00 卖出全部 1,000 股
结果:
200 股:133.00 - 103.50 = +29.50/股 = +$5,900
200 股:133.00 - 106.50 = +26.50/股 = +$5,300
600 股:133.00 - 110.00 = +23.00/股 = +$13,800
总利润:$25,000
按加权平均入场回报:+23.0%
记录到交易日志:形态、入场理由、金字塔加仓执行、出场信号、每个决策点的情绪状态、什么做得好、什么可以改进。
类 Livermore系统:
"""
利弗莫尔交易方法的完整实施
由中文分析提炼。
"""
# 配置
最大持仓数 = 5
最大持仓% = 0.25 # 每持仓最多活跃资本的 25%
最大板块% = 0.40 # 每板块最多 40%
活跃资本% = 0.60 # 60% 活跃,30% 储备,10% 不可动用
每笔交易最大风险 = 0.07 # 每笔交易最多权益的 7%
试探1% = 0.20
试探2% = 0.20
试探3% = 0.60
最小成交量比率 = 1.5 # 突破成交量 >= 1.5 倍平均
最小整合天数 = 5
理想整合天数 = 15
def __init__(self, 总权益):
self.总权益 = 总权益
self.活跃资本 = 总权益 * self.活跃资本%
self.持仓 = []
self.交易日志 = []
self.连续亏损 = 0
self.峰值权益 = 总权益
def 每日更新(self, 市场数据, 板块数据, 观察列表):
"""
每日收盘后调用一次。
这是系统的主循环。
"""
# 步骤 1:评估大势
大势 = self.评估市场(市场数据)
# 步骤 2:管理现有持仓
对于 持仓 在 self.持仓中:
self.管理持仓(持仓, 市场数据, 大势)
# 步骤 3:寻找新机会(仅在条件允许时)
如果 大势 == "不明确":
返回 # 什么都不做
如果 len(self.持仓) >= self.最大持仓数:
返回 # 已满
如果 self.连续亏损 >= 4:
返回 # 暂停中
# 步骤 4:扫描观察列表寻找关键点突破
对于 股票 在 观察列表中:
如果 self.符合入场条件(股票, 大势, 板块数据):
self.发起试探1(股票, 大势)
def 评估市场(self, 市场数据):
"""
综合大势方向评估。
"""
龙头股得分 = self.评分龙头股(市场数据.龙头股)
广度得分 = self.评分市场广度(市场数据.板块)
成交量得分 = self.评分成交量模式(市场数据.指数柱)
反应得分 = self.评分新闻反应(市场数据.新闻事件)
综合 = (龙头股得分 * 0.30 + 广度得分 * 0.25 +
成交量得分 * 0.25 + 反应得分 * 0.20)
如果 综合 > 0.65:
返回 "看涨"
否则 如果 综合 < 0.35:
返回 "看跌"
否则:
返回 "不明确"
def 符合入场条件(self, 股票, 大势, 板块数据):
"""
检查所有入场条件。
所有必须为真才能发起交易。
"""
# 条件 1:股票板块在前几名(对于长仓)或后几名(对于短仓)
如果 大势 == "看涨":
如果 股票.板块 不在 板块数据.前几名板块(3)中:
返回 False
否则 如果 大势 == "看跌":
如果 股票.板块 不在 板块数据.后几名板块(3)中:
返回 False
# 条件 2:股票是板块内的龙头
如果 非 股票.is_sector_leader():
返回 False
# 条件 3:股票在关键点
关键点 = self.找到关键点(股票)
如果 关键点 是 None:
返回 False
# 条件 4:今天有关键点突破并有成交量
如果 非 self.is_breakout_today(股票, 关键点):
返回 False
# 条件 5:成交量确认
如果 股票.今日成交量 < 股票.日均成交量20 * self.最小成交量比率:
返回 False
# 条件 6:强势收盘(区间上半部分)
柱 = 股票.今日柱
如果 柱.高点 == 柱.低点:
返回 False
收盘位置 = (柱.收盘 - 柱.低点) / (柱.高点 - 柱.低点)
如果 收盘位置 < 0.75:
返回 False
# 条件 7:板块集中度检查
板块敞口 = 和(
p.市值 对于 p 在 self.持仓中 如果 p.板块 == 股票.板块
)
如果 板块敞口 >= self.活跃资本 * self.最大板块%:
返回 False
返回 True
def 找到关键点(self, 股票):
"""
识别股票最近的的关键点。
返回关键价格或 None。
"""
柱 = 股票.日线柱
# 寻找整合形态
最近高点 = MAX(b.高点 对于 b 在 柱[-40:]中)
整合柱 = []
对于 柱 在 reversed(柱[-40:]):
如果 柱.高点 >= 最近高点 * 0.95:
整合柱.append(柱)
否则:
断开
如果 len(整合柱) < self.最小整合天数:
返回 None
关键价格 = MAX(b.高点 对于 b 在 整合柱中)
返回 关键价格
def 发起试探1(self, 股票, 方向):
"""
进入试探 1 — 初始测试持仓。
"""
入场价格 = 股票.当前价格
如果 方向 == "看涨":
止损价格 = self.找到关键点(股票) * 0.97 # 关键点下方
每份风险 = 入场价格 - 止损价格
否则: # 做空
止损价格 = self.找到关键点(股票) * 1.03 # 关键点上方
每份风险 = 止损价格 - 入场价格
# 基于风险确定仓位规模
最大风险美元 = self.总权益 * self.每笔交易最大风险
最大总股数 = int(最大风险美元 / 每份风险)
试探1股数 = int(最大总股数 * self.试探1%)
# 执行
持仓 = Position(
股票=股票,
方向=方向,
计划股数=最大总股数,
止损=止损价格,
状态="试探1"
)
持仓.add_entry(试探1股数, 入场价格, "试探1")
self.持仓.append(持仓)
def 管理持仓(self, 持仓, 市场数据, 大势):
"""
管理持仓的整个生命周期。
"""
当前价格 = 持仓.股票.当前价格
# 首先检查止损(始终)
如果 持仓.is_stopped(当前价格):
self.平仓(持仓, 当前价格, "止损触发")
返回
# 状态特定管理
如果 持仓.状态 == "试探1":
self.管理试探1(持仓, 当前价格, 大势)
否则 如果 持仓.状态 == "试探2":
self.管理试探2(持仓, 当前价格, 大势)
否则 如果 持仓.状态 == "满仓":
self.管理满仓(持仓, 当前价格)
def 管理试探1(self, 持仓, 当前价格, 大势):
"""
决定是否加仓试探 2 或持有。
"""
首次入场 = 持仓.entries[0]
如果 持仓.方向 == "看涨":
盈% = (当前价格 - 首次入场.价格) / 首次入场.价格
否则:
盈% = (首次入场.价格 - 当前价格) / 首次入场.价格
如果 盈% >= 0.025: # 2.5% 盈利阈值
试探2股数 = int(持仓.计划股数 * self.试探2%)
持仓.add_entry(试探2股数, 当前价格, "试探2")
持仓.止损 = 首次入场.价格 # 提高到盈亏平衡
持仓.状态 = "试探2"
def 管理试探2(self, 持仓, 当前价格, 大势):
"""
决定是否投入全额持仓。
"""
第二次入场 = 持仓.entries[1]
如果 持仓.方向 == "看涨":
盈% = (当前价格 - 第二次入场.价格) / 第二次入场.价格
否则:
盈% = (第二次入场.价格 - 当前价格) / 第二次入场.价格
如果 盈% >= 0.025:
如果 self.条件仍然有效(持仓, 大势):
试探3股数 = int(持仓.计划股数 * self.试探3%)
持仓.add_entry(试探3股数, 当前价格, "试探3")
持仓.止损 = 第二次入场.价格
持仓.状态 = "满仓"
def 管理满仓(self, 持仓, 当前价格):
"""
追踪止损并观察高潮信号。
"""
# 更新追踪止损
柱 = 持仓.股票.日线柱
最近摆动低点 = find_recent_swing_low(柱, 回溯=10)
如果 持仓.方向 == "看涨":
新止损 = 最近摆动低点 * 0.99
如果 新止损 > 持仓.止损:
持仓.止损 = 新止损
# 盈利保护
未平盈% = (当前价格 - 持仓.平均入场) / 持仓.平均入场
如果 未平盈% >= 0.20:
盈利止损 = 持仓.平均入场 + (
当前价格 - 持仓.平均入场) * 0.50
持仓.止损 = MAX(持仓.止损, 盈利止损)
# 检查高潮
如果 detect_climax(柱[-1], 柱[-30:], 持仓.方向):
持仓.止损 = 柱[-1].低点 如果 持仓.方向 == "看涨" \
否则 柱[-1].高点
def 平仓(self, 持仓, 出场价格, 原因):
"""
平仓并更新系统状态。
"""
盈亏 = 持仓.calculate_pnl(出场价格)
self.交易日志.append({
'股票': 持仓.股票.代码,
'方向': 持仓.方向,
'入场': 持仓.entries,
'出场价格': 出场价格,
'出场原因': 原因,
'盈亏': 盈亏,
'盈亏%': 盈亏 / (持仓.平均入场 * 持仓.总股数)
})
self.总权益 += 盈亏
self.活跃资本 = self.总权益 * self.活跃资本%
如果 盈亏 < 0:
self.连续亏损 += 1
否则:
self.连续亏损 = 0
如果 self.总权益 > self.峰值权益:
self.峰值权益 = self.总权益
self.持仓.remove(持仓)
状态:
观望中 → 识别形态,等待关键点突破
试探1 → 20% 持仓试水
试探2 → 40% 已投入,交易确认中
满仓 → 100% 已投入,持有趋势
已平仓 → 持仓出场,回顾中
转换:
观望中 → 试探1:
触发: 关键点突破 + 成交量 + 强势收盘 + 所有条件满足
行动: 买入 20%;在关键点下方设置初始止损
试探1 → 试探2:
触发: 试探1 盈利 2.5%+
行动: 再买入 20%;将止损提高到试探1 入场价
试探1 → 已平仓:
触发: 止损触发
行动: 全部卖出;小额亏损(20% 规模)
试探2 → 满仓:
触发: 试探2 盈利 2.5%+ 且条件仍然有效
行动: 买入剩余 60%;将止损提高到试探2 入场价
试探2 → 已平仓:
触发: 止损触发
行动: 全部卖出;接近盈亏平衡或小额亏损
满仓 → 满仓:
触发: 在当前止损上方建立新摆动低点
行动: 提高追踪止损
满仓 → 已平仓:
触发: 追踪止损触发 或 检测到高潮
行动: 全部卖出;记录盈利
已平仓 → 观望中:
触发: 日志条目后及任何强制冷静期后
行动: 恢复扫描
def livermore_daily_routine(系统):
"""
完整的每日工作流程。
每个交易日下午盘后执行。
"""
# ---- 阶段 1:记录 ----
# 更新所有价格记录(利弗莫尔市场关键点)
对于 股票 在 系统.全集中:
股票.update_market_key(股票.今日收盘)
# ---- 阶段 2:评估 ----
大势 = 系统.评估市场(系统.市场数据)
打印(f"大势方向: {大势}")
# ---- 阶段 3:管理 ----
对于 持仓 在 系统.持仓中:
系统.管理持仓(持仓, 系统.市场数据, 大势)
# ---- 阶段 4:扫描 ----
如果 大势 != "不明确" 且 系统.可以开新持仓():
候选 = []
对于 股票 在 系统.观察列表中:
如果 系统.符合入场条件(股票, 大势, 系统.板块数据):
候选.append(股票)
# 按强度排名并进入最好的
候选.sort(key=lambda s: s.相对强度, reverse=True)
对于 候选 在 候选[:2]: # 每天最多 2 个新入场
系统.发起试探1(候选, 大势)
# ---- 阶段 5:日志 ----
系统.写入每日日志(大势)
# ---- 阶段 6:风险检查 ----
系统.验证所有止损到位()
系统.验证集中度限制()
回撤 = (系统.峰值权益 - 系统.总权益) / 系统.峰值权益
如果 回撤 > 0.20:
打印("警告:回撤超过 20%。考虑减少所有持仓。")
以下语录捕捉了利弗莫尔交易哲学的精髓,如中文分析中所强调的:
关于耐心:
"大钱不在买入或卖出中,而在等待中。"
"一个人需要很长时间才能学会他错误的所有教训。他们说一切都有两面。但股票市场只有一面,不是牛市面或熊市面,而是正确的一面。"
关于大势:
"没有股票是孤岛。每只股票都在大势的海洋中游泳。即使最强的鱼也不能逆潮游泳太久。"
关于砍仓:
"我从不因市场而发脾气。对市场生气是无用的。它不是个人的。市场不知道你的存在。当你错误时,唯一的补救办法是通过出场来纠正。"
"卖出显示你亏损的,持有显示你盈利的。"
关于向下摊平:
"在所有投机失误中,很少有比试图平均化亏损游戏更大的错误。永远卖出显示你亏损的,持有显示你盈利的。"
关于关键点:
"每当我有耐心等待市场到达我所说的关键点才开始交易,我总是赚钱的。"
关于时机:
"市场中万物皆有时。有买入之时,有卖出之时,也有钓鱼之时。"
关于自力更生:
"一个人必须相信自己和他的判断,如果他指望以这个游戏为生的话。这就是为什么我不相信建议。"
关于纪律:
"投机者的主要敌人总是从内部烦扰。伴随人性的是希望和恐惧。在投机中,当市场对你不利时,你希望每一天都是最后一天——你会损失比你应该的更多。当市场对你有利时,你恐惧第二天会夺走你的利润——你出来得太早。"
关于简单性:
"华尔街没有新东西。因为投机像山丘一样古老。无论今天在股票市场发生什么,以前发生过,以后还会发生。"
关于时间要素:
"仅仅知道买什么是不够的。你必须知道什么时候买。仅仅知道什么时候买是不够的。你必须知道什么时候卖。而要卖出,你必须知道什么时候坐着不动。"
从亏损中学习:
"每一次亏损都教导一些东西,但只有你愿意被教导时。拒绝研究亏损的投机者注定重复它们。"
规范完。