基于理查德·W·沙巴克,《技术分析与股票市场利润》(1932年)
理查德·W·沙巴克是《福布斯》杂志的金融编辑,于1930年代初写了第一本全面、系统的技术分析论文。他的工作比爱德华兹和麦基的《股票趋势的技术分析》(1948年)早十六年。爱德华兹实际上是沙巴克的姻亲,直接继承了沙巴克的图表、笔记和方法论。爱德华兹和麦基 canon 中的一切都追溯到沙巴克的原始观察。
爱德华兹和麦基精炼、系统化和扩展了形态目录,而沙巴克是原始的实地自然学家。他是第一个命名、分类并赋予每个技术分析师现在视为理所当然的图表形态以预测意义的人。他不是从学术理论而是从直接观察市场行为做到这一点的——这是在美国金融历史上最动荡的时期——1920年代的狂热繁荣和毁灭性的1929年崩盘及其后果。
| 方面 | 沙巴克(1932年) | 爱德华兹和麦基(1948年) |
|---|---|---|
| 强调 | 形态的心理起源 | 形态的机械分类 |
| 缺口理论 | 详细的、原创的、四类系统 | 从沙巴克继承和精简 |
| 形态目录 | 首次公式,较少的严格规则 | 扩展目录与精确规则 |
| 市场背景 | 写于1929年崩盘余波中 | 写于战后牛市 |
| 哲学 | 图表作为洞察群体心理的窗口 | 图表作为自包含的分析工具 |
| 交易规则 | 实用的、灵活的、基于判断的 | 更系统和基于规则的 |
| 移动均线 | 早期、实验性应用 | 更发达的处理 |
| 基调 | 探索性的、先驱的 | 百科全书式的、权威的 |
沙巴克的 essential 洞察 —— 也是将他的工作与之前一切区分开来的 —— 是图表形态不是随机的。它们是人类心理过程在时间上的可见痕迹。每次头肩顶都记录着希望上升、信心达到顶峰、怀疑渗入、最后投降蔓延。图表不导致未来;它记录了使某些未来更可能的心理条件。
沙巴克认为图表根本上是心理文件。每个价格柱记录着由恐惧、贪婪、希望和绝望驱动的数千个个决策的净结果。这些情绪不会代代改变。因此,它们产生的形态也不会改变。
这是一个比简单说"历史重演"更深刻的声明。沙巴克的论点本质上是因果的:形态重复是因为它们的原因(人类心理)是恒定的。三角形形成是因为不确定性导致买家和卖家缩小分歧范围,直到一方投降。头肩形是因为信心达到顶峰、试图重新确立、失败然后崩溃。这些不是任意形状 —— 它们是以价格呈现的情感叙事。
任何时刻的市场价格都是所有参与者的共识。那个共识融合了基本面、内幕知识、机构定位和情感偏见。基本分析师试图独立收集所有这些信息并得出"公允价值"。技术分析师观察市场的裁决,并基于这样的假设采取行动:市场是一个比任何个人更高效的信息处理器。
沙巴克没有贬低基本分析。他认为技术分析更快。到基本分析师可以收集和处理所有相关数据时,图表已经移动。图表领先新闻,因为知情参与者在信息公开之前就行动。
图表记录一切。 所有知识、所有预期、所有情感都嵌入价格中。没有重要的信息不在图表中 —— 或者在它出现在任何其他地方之前就会出现在图表中。
价格趋势。 市场不是随机移动的。它们以各种持续时间的趋势移动。主要任务是识别趋势并与之对齐。与趋势对抗是交易者能犯的最常见和最昂贵的错误。
形态重演是因为人不会改变。 相同的情感序列产生相同的图表形态。这不是神秘主义 —— 是应用的心理学。1932年的群体对恐惧和贪婪的反应方式与1907年的群体相同,与一个世纪后的人群反应方式也相同。
沙巴克承认他对查尔斯·道的 foundational 工作的债,但他以关键方式超越了道氏理论只 deal with 广义市场( averages)。沙巴克将相同的原则应用于个股,论证每只股票都有自己的"个性" —— 其自身的形态行为模式,重复是因为其股东基础和机构 following 创造一致的心理动态。
沙巴克采用道氏的三层趋势框架,但以更大的细微差别应用于个股证券:
主要趋势(潮汐)
次要趋势(波浪)
次要趋势(涟漪)
当以下情况时,上涨趋势生效:
- 最近的显著高点 > 先前的显著高点
- 最近的显著低点 > 先前的显著低点
- 成交量在上涨时扩张,下跌时收缩
当以下情况时,下降趋势生效:
- 最近的显著高点 < 先前的显著高点
- 最近的显著低点 < 先前的显著低点
- 成交量在下跌时扩张,反弹时收缩
当以下情况时,怀疑趋势反转:
- 价格未能创出新高(上涨趋势)或新低(下降趋势)
- 价格跌破先前的显著低点(上涨趋势)或突破先前的显著高点(下降趋势)
- 成交量模式与趋势方向背离
与只 deal with 市场 averages 的道不同,沙巴克观察到个股发展出特征性趋势行为。一些股票 trend 平滑,修正浅。另一些以剧烈波动移动。一些在上涨前形成 congestion area;另一些干净地突破。他敦促交易者在交易前研究他们打算交易的每只股票的历史行为,在 committing 资本之前学习其"个性"。
这是现代交易者称为"阅读股票性格"或理解其波动性签名的早期公式。
沙巴克识别头肩形态为最可靠的反转形态。他的原始公式强调心理叙事:
心理故事:
沙巴克的原始规则:
倒转头肩形态: 底部的镜像,有一个关键区别沙巴克强调:上行突破的成交量确认绝对必要。股票可以因自身重量下跌,但它们需要 active 买入力才能上涨。轻成交量突破颈线的倒转头肩形态是可疑的、不可靠的。
沙巴克的警告: 沙巴克警告双顶是最过度识别和最错误识别的形态之一。交易者看到两个相似水平的高点立即宣布双顶,而实际上许多这样的形态只是在持续趋势内的正常波动。
有效双顶要求(沙巴克公式):
有效双底要求: 双底的镜像,上行突破的成交量确认必要。
沙巴克注意到这些比双形态更 rare 但更 powerful。三个对阻力(或支撑)水平的明确测试没有突破创造巨大的心理意义。每次测试都削弱防守方,当形态最终解决时,走势往往剧烈且持久。
与沙巴克的关键区别: 三顶或三底经常与矩形(交易区间)混淆。区别在于意图。三顶/三底是反转形态 —— 它发生在趋势末尾。矩形是整理 —— 它发生在趋势内,通常以先前趋势的方向解决。
沙巴克识别了三种三角形,并首次阐述其心理意义:
对称三角形(线圈):
上升三角形(牛市):
下降三角形(熊市):
沙巴克的三角形交易规则:
沙巴克的公式: 矩形在明确定义的水平支撑和阻力之间振荡时形成。它代表买方和卖方之间的 even battle。
规则:
沙巴克识别这些为短期持续形态:
旗形: 在先前趋势方向上的小平行四边形。在上涨趋势中旗形向下倾斜。在下降趋势中向上倾斜。成交量在旗形期间收缩,突破时扩张。
三角旗: 在急剧上涨或下跌后形成的小对称三角形。旗形相同的成交量特征。
两种形态都是"休息期" —— 市场暂停消化快速移动,然后继续。沙巴克观察到先行移动("旗杆"往往在形态完成后大致 replicated。
缺口分析是沙巴克原始贡献最 visible 和最 distinct from 爱德华兹和麦基的领域之一。沙巴克开发了第一个全面的缺口分类系统,他的四种类型分类法仍然是今天所有缺口分析的基础。
缺口是 No 交易发生的 price range —— 图表上的空白。在柱状图上,它出现在一天的范围和第二天之间。沙巴克认为缺口是最重要的图表现象之一,因为它们代表了供需之间的极端不平衡。
类型1:普通缺口(区域缺口)
类型2:突破缺口
类型3:持续缺口( runaway 缺口、测量缺口)
类型4:衰竭缺口
缺口分类程序:
1. 识别市场背景:缺口在形态内部还是外部?
2. 如果在 congestion 区域内 -> 普通缺口(忽略)
3. 如果在形态边界且有成交量 surge -> 突破缺口(沿缺口方向交易)
4. 如果在中期趋势且成交量 strong -> 持续缺口(用作测量工具,持有趋势)
5. 如果在 extended 移动末尾 -> 观察衰竭缺口:
- 如果缺口在3-5天内填充 -> 衰竭确认,准备反转
- 如果缺口保持 -> 重新分类为持续
岛形反转:
- 衰竭缺口 + 反转 + 反方向上的突破缺口
- 两个缺口之间的价格区域像岛屿一样被"孤立"
- 极度强大的反转信号
- 沿突破缺口方向 aggressive 交易
沙巴克将成交量视为价格的重要伴随 —— 价格显示发生了什么,成交量显示背后有多少信心。他的成交量分析不如后来治疗那么 formal 但更有心理基础。
规则1:成交量应在趋势方向扩张。 在健康的上涨趋势中,成交量应在上涨日增加,下跌日减少。在健康的下降趋势中,成交量应在下跌日增加,反弹日减少。当这种关系成立时,趋势被确认,很可能继续。
规则2:成交量背离是早期警告。 当价格创出新高但成交量低于前高时,买入热情正在减弱。当价格创出新低但成交量低于前低时,卖出压力正在耗尽自己。沙巴克认为成交量背离是趋势变化最可靠的早期警告。
规则3: climactic 成交量 marks 转折点。 在延伸趋势之后,成交量巨大 spike 通常信号该趋势的结束。在牛市中,这是"blow-off" —— 买入的最后 surge 耗尽需求。在熊市中,这是"selling climax" —— 恐慌抛售的最后 wave 耗尽供应。
规则4:成交量确认形态突破。 任何在低成交量下发生的形态突破都可疑。沙巴克特别坚持这一点对于上行突破。股票可以在轻成交量下下跌(重力在市场中起作用),但没有 active 买入它们无法维持上涨。轻成交量上行突破应被视为潜在假突破,直到成交量确认。
规则5:在形态内收缩成交量 signals 即将突破。 当三角形、矩形或其他整理形态发展时,成交量应收缩。这种收缩反映了兴趣下降和分歧缩小。突破时 should be accompanied by 成交量的急剧扩张。如果成交量在形态期间不收缩,最终突破较不可靠。
沙巴克提出了一个经常被忽视的重要观察:顶部和底部具有根本上不同的成交量特征。
顶部: often quickly and dramatically 形成。成交量 tend to spike at the peak(blow-off),然后 rapid decline。贪婪到恐惧的情感转变是 abrupt。
底部: tend to form slowly and quietly。成交量干涸,因为卖出耗尽。底部建设过程涉及 gradual accumulation phase,知情买家吸收泄气卖家的供应。从底部突破需要 visible surge in volume 确认需求终于克服供应。
这种不对称反映了一个深层心理 truth:恐惧是一种更强大、更 sudden 的情感。市场下跌比上涨快。
沙巴克是第一个以心理术语阐述支撑和阻力水平为何有效的:
支撑存在是因为记忆和后悔。 当股票下跌到之前发现买入兴趣的水平时,三组参与者受到影响:
阻力的原因相反。 之前在该水平买入的人现在处于水下,想要"保本"。之前获利的卖家想要再次卖出。之前错过卖出的买家想要另一次机会。
角色互换。 当支撑被突破时,它变成阻力。当阻力被突破时,它变成支撑。沙巴克是最早记录这一现象的人之一。心理解释:在支撑买入的人现在处于水下,在价格返回购买水平时成为卖家 —— 他们想要"保本"。
显著性随成交量增加。 在特定价格水平交易的股票越多,参与者在该水平有心理锚点就越多。高成交量支撑比低成交量支撑更 significant。
显著性随近因增加。 最近的支撑/阻力比旧的更 significant,因为情感影响更新鲜。
显著性随测试次数增加。 每个持有的测试都强化其心理重要性。然而 —— 这是关键细微差别 —— 每次测试也削弱该水平,因为它吸收了一些买入/卖出压力。测试5次的水平比只测试2次的水平在第6次测试时更可能突破 —— 但如果它持有,它 even more significant。
整数是自然支撑和阻力。 沙巴克观察到价格 tend to 在整数(10、20、50、100)处停顿。这是纯粹心理性的 —— 人们以整数思考并相应地放置订单。
沙巴克的趋势线方法不如后来的系统化但更注重实践应用:
上涨趋势线:
下降趋势线:
沙巴克认识到趋势线的轻微穿透是常见的,没有意义。他的有效突破标准:
沙巴克是最早 formalize 通道概念的:
沙巴克引入了扇形线概念:当趋势线被突破时,从相同原点绘制一条新的、不那么陡峭的趋势线到最近的显著低点。如果第二条线也被突破,则绘制第三条线。沙巴克观察到第三条扇形线的突破通常确认趋势反转。
扇形原则捕捉了趋势的 gradual degradation:第一条突破减缓它,第二条突破进一步削弱它,第三条突破杀死它。
沙巴克对移动均线的处理是 early and experimental,远不如后来的发展。但他掌握了 essential concept:移动均线平滑短期波动并揭示 underlying trend。
基本信号:
沙巴克的警告: 他认识到移动均线是滞后指标 —— 它们在事实之后确认趋势,信号反转较晚。他从未倡导单独使用移动均线。它们是一个工具箱中的一个工具,主要用于确认形态分析和趋势线分析已经建议的内容。
沙巴克没有以任何正式方式开发 crossover 系统(短期均线穿越长期均线)。他将移动均线用作趋势过滤器和参考线,而非信号生成器。这实际上更接近许多 sophisticated 现代交易者使用移动均线的方式 —— 作为背景,而非触发器。
原则1:与主要趋势交易。 除非你是经验丰富的短期交易者,否则不要与主要趋势对着干。主要趋势是市场中最强大的力量。与之对抗就像逆流游泳 —— 你可能会暂时取得进展,但你最终会筋疲力尽。
原则2:在牛市中的次要反应上买入。 理想入场是当股票在主要上涨趋势内修正并显示出恢复向上移动的迹象时。这结合了趋势对齐与有利定价。
原则3:在熊市中的次要反弹上卖出。 原则2的镜像。在熊市中,反弹是卖出机会,而非买入机会。
原则4:等待形态完成。 不要 anticipate 突破。三角形不是买入信号;从三角形突破才是。头肩形态不是卖出信号;颈线突破才是。耐心是交易者最宝贵的资产。
原则5:用成交量确认。 永远不要信任没有扩张成交量伴随的突破。成交量是信心指标。没有信心,突破失败。
原则6:用缺口作为确认。 突破缺口为突破增加 powerful 确认。如果股票以缺口和 heavy volume 从形态中突破,信号 exceptionally strong。
入场时机:
1. 主要趋势已识别(牛市或熊市)
2. 次要反应已发生(上涨趋势中的回调,下降趋势中的反弹)
3. 图表形态已形成并接近完成
4. 突破发生并伴有:
- 价格果断收于形态边界之外
- 成交量扩张
- 可选:缺口确认
5. 沿突破方向入场
替代入场(保守):
1. 等待上述突破
2. 等待回调/回撤至破裂边界
3. 当价格从破裂边界反弹时入场(支撑变阻力,或反之)
4. 这牺牲了一些利润以换取更高概率
出场时机:
1. 形态测量目标达到
2. 反形态形成(反对你仓位的方向形成反转形态)
3. 趋势线向你仓位方向突破
4. 成交量背离警告
5. 止损触发
沙巴克反复强调大多数交易损失不是来自错误的分析,而是来自错误的时机。识别正确股票和正确方向但入场太早或太晚的交易者将好的分析变成亏损交易。他的建议:让市场在你的行动之前确认你的分析。"做对并持有"不只是 Livermore 的 mantra —— 它是沙巴克的操作哲学。
在1929年崩盘的余波中写作,沙巴克目睹了财富的 complete destruction。他的风险管理原则带有那种经历的分量。
规则1:永远不要冒险超过你能承受的损失。 这不是一个 platitude —— 沙巴克是字面意思。用于投机交易的资本应该是如果全部损失也不会影响你的生活水平或赚钱能力的资金。用"scared money"交易产生的情感扭曲 virtually 保证糟糕的决策。
规则2:使用止损单。 沙巴克是止损纪律的早期和 persistent 倡导者。每个仓位都必须有预定点,如果分析被证明错误,将在该点平仓。这个点应在仓位入场之前基于图表结构确定 —— 从不基于美元金额或百分比。
规则3:将止损放置在技术 significant 水平。 止损应放置在如果达到将 invalid 分析的水平之外。对于在形态突破入场的多头,止损属于形态边界下方。对于在趋势线反弹入场的多头,止损属于趋势线下方。
规则4:永远不要将止损向更大风险的方向移动。 止损一旦设定,可以向利润方向移动(追踪止损)但绝不能向后移动以"给交易更多空间"。向后移动止损是最常见的自我毁灭形式。
规则5:分散化 —— 但不要过度。 沙巴克建议持有多个股票的仓位以减少任何单一失败的影响。但他警告过度分散化,这稀释了注意力并使适当监控仓位变得不可能。他建议大多数交易者最多5-10个活跃仓位。
规则6:分批建仓。 不要一次 commit 全部资本,分阶段买入。在第一个信号时采取初始仓位。在市场确认分析时增加仓位。这限制了初始入场的风险,同时允许如果交易有效则充分参与。
规则7:截断亏损,让利润奔跑。 损益的不对称性意味着一个大赢家可以抵消几个小输家。关键是快速退出亏损者(止损)同时给赢家 room to develop。大多数交易者做相反的事情 —— 他们获取小额利润(满足)并持有大亏损(希望恢复)。这种模式保证了长期失败。
错误1:与主要趋势对着干。 最昂贵的错误。在牛市中做空股票或在熊市中买入股票的交易者偶尔可能成功,但 odds 是无情地对他们不利。次要反应引诱交易者进行逆趋势仓位,但大多数这些反应比它们看起来更短、更浅、更难时机。
错误2:看到不存在的形态。 沙巴克广泛警告人类 pattern recognition 的倾向 —— 我们在云中看到脸,在随机噪音中看到头肩形态。纪律要求每个形态在 acting on it 之前满足所有标准。形态的模糊相似不是形态。
错误3:在形态不完整时行动。 在形态被确认之前入场是 anticipation,而非分析。头肩形态在颈线突破之前不是头肩形态。三角形在突破发生之前不是完整的。在形态不完整时行动是赌博伪装成分析。
错误4:忽略成交量。 没有成交量的突破不是突破 —— 是陷阱。沙巴克认为这是 inviolable 规则。许多挫折交易者的"假突破"如果他们 simply checked volume 就能避免。
错误5:拒绝接受损失。 希望亏损仓位"回来"已经比任何其他单一因素摧毁了更多交易者。沙巴克直言不讳:市场不关心你的成本基础,希望不是策略。当分析错误时,退出。立即。无商量余地。
错误6:过度交易。 不是每天都有交易机会。不是每个图表都有清晰形态。总是处于市场中、总是做点什么的强迫导致在模糊情况下的强迫交易。沙巴克建议:当有疑问时,观望。
错误7:同时交易太多股票。 人脑无法有效监控超过少数几个仓位。过度扩张导致错过信号、反应迟钝和普遍混乱。交易五只股票做得好比交易二十只股票做得差要好。
错误8:依赖提示、谣言和意见。 图表是唯一诚实的 advisor。来自经纪人、朋友、通讯和"内幕"的消息最多是噪音,最坏是操纵。沙巴克强调:根据图表上看到的交易,而非别人告诉你的。
阶段1 — 市场背景评估 主要趋势被评估。主要 averages 已处于下降趋势但显示出稳定迹象。 Selling climax 发生在创纪录成交量 followed by a rally,然后在较轻成交量上成功测试低点。主要趋势可能从熊市转变为牛市。
阶段2 — 股票选择 扫描显示相对强度的股票 —— 在下跌期间比市场持有得更好的股票。一个候选在过去三个月形成了清晰的倒转头肩形态。右肩高于左肩,suggesting aggressive accumulation。成交量在形态发展过程中一直在收缩。
阶段3 — 形态分析
股票:ABC Industrial
形态:倒转头肩
左肩低点:$35(8月)
头部低点:$30(10月)
右肩低点:$37(12月)— 高于左肩,牛市
颈线:连接$42和$44的反弹高点 — 向上倾斜的颈线(牛市)
成交量:在形态中收缩,右肩下跌时成交量轻
阶段4 — 入场计划
阶段5 — 执行 第1天:股票在缺口处突破$44,开盘于$45.50,成交量为平均的3倍。这是倒转头肩的突破缺口,成交量 heavy —— exceptionally strong 信号。在$45.50入场初始仓位。止损设定于$36。
第5天:股票回落至$44.50,在轻成交量下从上方测试破裂颈线。颈线作为支撑守住。在反弹时加仓。将止损提高至$43(就在颈线下方 —— 如果它再次跌至其下方,形态已失败)。
阶段6 — 管理 第3周:股价在$50。趋势线现在可以从右肩低点 through 颈线测试低点绘制。将止损追踪至该趋势线下方$46。
第6周:股价在$54。持续缺口发生在 heavy volume —— 这表明移动约 halfway done,确认$58+目标。收紧止损至$51下方(缺口下方 —— 缺口应作为支撑)。
阶段7 — 出场 第9周:股价达到$59,略微超过测量目标。成交量开始背离 —— 上涨至$59的成交量轻于上涨至$54的成交量。小双顶在$58-59处形成。在第二次峰值回落时以$57退出全部仓位。
结果:
class SchabackerAnalyzer:
def identify_trend(stock, timeframe):
highs = find_significant_highs(stock, timeframe)
lows = find_significant_lows(stock, timeframe)
if latest(highs) > previous(highs) AND latest(lows) > previous(lows):
trend = UPTREND
elif latest(highs) < previous(highs) AND latest(lows) < previous(lows):
trend = DOWNTREND
else:
trend = UNCERTAIN
# 检查不确定性中的形态形成
# 用成交量验证
if trend == UPTREND:
if avg_volume_on_up_days > avg_volume_on_down_days:
trend_quality = CONFIRMED
else:
trend_quality = DIVERGENT # 警告信号
return trend, trend_quality
def detect_head_and_shoulders(stock, lookback_period):
peaks = find_significant_peaks(stock, lookback_period)
troughs = find_significant_troughs(stock, lookback_period)
if len(peaks) < 3 or len(troughs) < 2:
return None
left_shoulder = peaks[-3]
head = peaks[-2]
right_shoulder = peaks[-1]
trough_1 = troughs[-2]
trough_2 = troughs[-1]
# 沙巴克的原始标准
if head.price <= left_shoulder.price:
return None # 头必须最高
if right_shoulder.price >= head.price:
return None # 右肩必须低于头
if head.volume >= left_shoulder.volume * 0.8:
pass # 可接受但注意成交量背离
if right_shoulder.volume >= head.volume:
return None # 成交量必须在右肩下降
neckline = line_through(trough_1, trough_2)
measuring_target = neckline.at(head.date) - (head.price - neckline.at(head.date))
return HeadAndShoulders(
left_shoulder, head, right_shoulder,
neckline, measuring_target,
trigger = "收于颈线下方且成交量扩张时"
)
def classify_gap(stock, date):
gap = detect_gap(stock, date)
if gap is None:
return None
context = get_pattern_context(stock, date)
volume = get_volume(stock, date)
avg_vol = get_average_volume(stock, 20)
# 沙巴克的四种类型分类
if context.inside_congestion_zone:
return Gap(type=COMMON, significance=LOW,
expected="几天内填充")
if context.at_pattern_boundary AND volume > avg_vol * 1.5:
return Gap(type=BREAKAWAY, significance=HIGH,
expected="短期内不会填充",
action="沿缺口方向交易")
if context.mid_trend AND volume > avg_vol * 1.2:
halfway_target = gap.price + (gap.price - context.trend_start)
return Gap(type=CONTINUATION, significance=HIGH,
expected="测量缺口 — 总移动约缺口距离的2倍",
target=halfway_target)
if context.extended_trend:
return Gap(type=POSSIBLE_EXHAUSTION, significance=HIGH,
expected="观察3-5天内是否填充",
action="如果填充,准备反转")
def evaluate_breakout_quality(stock, breakout_date, pattern):
price_move = abs(stock.close[breakout_date] - pattern.boundary)
percent_move = price_move / pattern.boundary
volume_ratio = stock.volume[breakout_date] / avg_volume(stock, 20)
has_gap = detect_gap(stock, breakout_date) is not None
score = 0
if percent_move >= 0.03: # 最小3%
score += 25
if volume_ratio >= 1.5:
score += 30
if volume_ratio >= 2.0:
score += 10 # 非常重成交量的奖金
if has_gap:
score += 20 # 突破缺口确认
if pattern.trend_alignment: # 突破与主要趋势对齐
score += 15
quality = HIGH if score >= 70 else MODERATE if score >= 45 else LOW
return BreakoutSignal(quality=quality, score=score)
def calculate_stop(entry_price, pattern, position_type):
if position_type == LONG:
if pattern.type == "inverse_head_and_shoulders":
stop = pattern.right_shoulder_low * 0.99 # 略低于右肩
elif pattern.type == "triangle_breakout":
stop = pattern.opposite_boundary * 0.99
elif pattern.type == "trendline_bounce":
stop = pattern.trendline_at_entry * 0.97 # 趋势线下方3%
else:
stop = pattern.support_level * 0.99
risk = entry_price - stop
reward = pattern.measuring_target - entry_price
risk_reward = reward / risk if risk > 0 else 0
if risk_reward < 2.0:
return Stop(level=stop, warning="风险/回报低于2:1 — 考虑放弃")
return Stop(level=stop, risk_reward=risk_reward)
def full_trade_decision(stock):
# 步骤1:市场背景
market_trend = identify_trend(MARKET_INDEX, PRIMARY)
# 步骤2:股票趋势
stock_trend = identify_trend(stock, PRIMARY)
# 步骤3:形态检测
patterns = []
patterns += detect_head_and_shoulders(stock, 120)
patterns += detect_inverse_head_and_shoulders(stock, 120)
patterns += detect_triangles(stock, 60)
patterns += detect_rectangles(stock, 60)
patterns += detect_double_tops_bottoms(stock, 90)
# 步骤4:过滤可行动作形态
for pattern in patterns:
if pattern.near_completion():
breakout = evaluate_breakout_quality(stock, today, pattern)
if breakout.quality >= MODERATE:
stop = calculate_stop(current_price, pattern, pattern.direction)
gap = classify_gap(stock, today)
return TradeSignal(
stock=stock,
direction=pattern.direction,
entry=current_price,
stop=stop.level,
target=pattern.measuring_target,
risk_reward=stop.risk_reward,
confidence=breakout.quality,
gap_confirmation=gap.type if gap else None,
market_alignment=(market_trend == stock_trend)
)
return None # 无可行动作设置 — 耐心
class SchabackerPortfolioManager:
MAX_POSITIONS = 8 # 沙巴克的实际限制
MAX_RISK_PER_TRADE = 0.02 # 总资本的2%
MAX_TOTAL_RISK = 0.10 # 总资本的10%处于风险
def size_position(signal, portfolio):
risk_per_share = signal.entry - signal.stop
max_dollar_risk = portfolio.capital * MAX_RISK_PER_TRADE
shares = floor(max_dollar_risk / risk_per_share)
# 根据信念调整
if signal.confidence == HIGH and signal.market_alignment:
shares = shares # 满额
elif signal.confidence == MODERATE:
shares = floor(shares * 0.5) # 半额 — 稍后分批入场
# 检查总投资组合风险
current_risk = sum(position.current_risk for position in portfolio.positions)
if current_risk + (shares * risk_per_share) > portfolio.capital * MAX_TOTAL_RISK:
shares = floor((portfolio.capital * MAX_TOTAL_RISK - current_risk) / risk_per_share)
return max(shares, 0)
def manage_open_position(position, stock):
# 使用沙巴克的趋势线方法追踪止损
trendline = fit_trendline(stock, position.entry_date, today)
if trendline.valid:
new_stop = trendline.value_at(today) * 0.97 # 趋势线下方3%
if new_stop > position.stop:
position.stop = new_stop # 只向利润方向移动止损
# 检查衰竭信号
gap = classify_gap(stock, today)
if gap and gap.type == POSSIBLE_EXHAUSTION:
position.alert("可能的衰竭缺口 — 收紧止损或获取部分利润")
"图表形态不是随机的。它们是人类心理在时间上的可见痕迹。每次头肩顶都记录着希望达到顶峰、信心尝试、失败和崩溃。"
"在1929年的崩盘中,我看到Fortunes在一夜之间被摧毁。资本保存不是 platitude — 它是生存的绝对必要条件。"
"等待形态完成再交易。不要 anticipate 突破。耐心是交易者最宝贵的资产。"
"成交量是信心的唯一真实衡量。价格告诉你发生了什么;成交量告诉你有多少信心在后面。"
"止损是交易者的保险单。如果你不使用一个,你就是在赌市场会对你仁慈。"
"不要爱上你的论点。形态会失败,趋势会改变,止损会触发。当它们触发时,服从。"
"与主要趋势交易。对抗它就像逆流游泳。你可能会暂时取得进展,但你最终会筋疲力尽。"
"市场不欠你任何东西。它不知道你存在,它不在乎你的财务目标或自尊。把它当作一种强大的、漠然的自然力来尊重。"
"成功的交易不是关于找到令人兴奋的故事或跟随热门趋势。它是关于等待、管理风险和在其他人恐慌时保持纪律的乏味工作。"
"如果你不能描述你为什么买入一只股票,你就不应该买入它。图表不会对你撒谎——但你的情绪会。"
实施方案规范编译自理查德·W·沙巴克,《技术分析与股票市场利润》(1932年)。 本文件是实践应用的系统提炼,不替代阅读原作。
(文件结束 — 共1052行)