基于 Yuan Yuan(远远),非赚不可(Must Make Money: A Practical Stock Trading Guide for Chinese Retail Investors)
非赚不可是一本为在A股市场搏击的中国散户投资者编写的实用交易指南。本书采取务实、入门友好的方式,将基本技术分析与常识性选股和纪律性资金管理相结合。
核心哲学:在股票市场赚钱不是关于变得聪明——而是关于有纪律、耐心,避免那些保证亏损的错误。
本书回应了中国散户交易的现实:
目标读者:经验少于3年、希望获得实用、规则化方法的个人A股交易散户投资者。
本书专注于一小套可靠工具,而不是用数十个指标压倒入门者:
移动平均线(均线系统):
| 移动平均线 | 用途 |
|---|---|
| 5日均线 | 短期趋势;交易信号 |
| 10日均线 | 短期支撑/阻力 |
| 20日均线 | 中期趋势方向 |
| 60日均线 | 中期关键支撑——"生命线" |
| 120日均线 | 长期趋势——"半年线" |
| 250日均线 | 长期趋势——"年线" |
均线排列:
看涨排列(多头排列):
5MA > 10MA > 20MA > 60MA > 120MA > 250MA
所有均线向上倾斜
→ 强劲上升趋势;安全持有做多仓位
看跌排列(空头排列):
5MA < 10MA < 20MA < 60MA < 120MA < 250MA
所有均线向下倾斜
→ 强劲下降趋势;避免或卖出
纠缠/收敛(均线粘合):
均线收敛到狭窄范围
→ 准备大波动;等待方向确认
| 形态 | 解释 |
|---|---|
| 价涨量增 | 健康上涨;趋势确认 |
| 价涨量缩 | 上涨失去动力;谨慎 |
| 价跌量增 | 出货;机构卖出 |
| 价跌量缩 | 卖压衰竭;可能底部形成 |
| 突然放量(3倍+均量) | 重大事件;方向取决于价格走势 |
| 持续低量 | 无兴趣;直到量能恢复前避免 |
量能规则:
值得关注的看涨形态:
| 形态 | 描述 | 可靠性 |
|---|---|---|
| 早晨之星 | 三根K线:大绿、实体小、大绿 | 在支撑位高 |
| 锤子线 | 实体在顶部,长下影线 | 在支撑位高 |
| 看涨吞没 | 绿蜡烛完全包裹前一根红蜡烛 | 带量高 |
| 红三兵 | 三根连续绿蜡烛,收盘价更高 | 中高 |
| 刺透形态 | 绿蜡烛在前日低点下方开盘,收盘在前日实体中点以上 | 在支撑位中等 |
值得关注的看跌形态:
| 形态 | 描述 | 可靠性 |
|---|---|---|
| 黄昏之星 | 三根K线:大绿、实体小、大红 | 在阻力位高 |
| 射击之星 | 实体在底部,长上影线 | 在阻力位高 |
| 看跌吞没 | 红蜡烛完全包裹前一根绿蜡烛 | 带量高 |
| 三只乌鸦 | 三根连续红蜡烛,收盘价更低 | 中高 |
| 乌云盖顶 | 红蜡烛在前日高点上方开盘,收盘在前日实体中点以下 | 在阻力位中等 |
识别关键位:
支撑阻力规则:
本书要求在考虑股票前满足全部三个条件:
条件1:大盘趋势有利(大盘配合)
条件2:板块强势(板块强势)
条件3:个股技术形态好(个股技术形态好)
虽然本书侧重于技术面,但它要求最低基本面筛选:
| 检查项 | 阈值 |
|---|---|
| 非ST或*ST | 强制 |
| 市值 | > 50亿(避免微盘股) |
| 营收增长 | 最近一年为正 |
| 净利润 | 为正(不亏损) |
| 大股东质押比例 | < 50% |
| 无重大诉讼或监管措施 | 记录干净 |
维护20-30只股票的观察列表(自选股):
信号1:均线金叉(均线金叉)
触发:5日均线在上穿10日均线,且两者都在20日均线上方
确认:交叉日量能 > 20日均量
止损:在20日均线下方
可靠性:中等可靠性;在确认上升趋势中最有效
信号2:回踩支撑(回踩支撑)
触发:处于上升趋势的股票回踩20日或60日均线
并出现反转K线(锤子、看涨吞没)
确认:回踩期间量能萎缩,反弹日量能扩张
止损:在支撑均线上方
可靠性:高可靠性;书中最佳入场信号
信号3:突破阻力位(突破阻力位)
触发:价格收盘于重要阻力位(前高、颈线、下降趋势线)上方
确认:突破日量能 > 1.5倍20日均量
止损:在突破位下方(现为支撑)
可靠性:有量能确认时高可靠性;无量能时假信号率高
信号4:缩量整理后放量突破(缩量整理后放量突破)
触发:在10天以上的缩量窄幅整理后,
价格向上突破且量能 > 2倍近期均量
确认:次日保持在突破位上方
止损:在整理区间低点下方
可靠性:非常高可靠性;表明吸筹完成
执行任何买入委托前,确认:
□ 大盘趋势有利(大盘在60日均线上方,均线上升)
□ 板块强势确认(板块跑赢市场)
□ 四个入场信号之一被触发
□ 量能确认信号
□ 未来5天内无重大财报发布
□ 不在涨停日的最后30分钟买入
□ 入场前已确定止损位
□ 已计算仓位大小(见第6节)
□ 组合未达最大仓位(5只)
□ 不在亏损仓位上加仓
| 规则 | 详情 |
|---|---|
| 避免周一开盘 | 周末新闻的缺口风险;等到10:00 |
| 避免周五最后10分钟 | 周末持仓风险;新仓位可等到周一 |
| 最佳入场时间 | 10:00-10:30 或 14:00-14:30(过了开盘波动) |
| 永远不追涨停板 | 如果股票涨+10%,不要排队买——等次日 |
| 财报静默期 | 财报发布前5天内不建新仓 |
| 止损类型 | 方法 |
|---|---|
| 技术止损 | 收盘跌破入场时确定的关键支撑位(均线或价格位) |
| 百分比止损 | 入场价-7%(所有仓位硬止损) |
| 时间止损 | 如果仓位在10个交易日内未朝有利方向移动,卖出 |
| 均线死叉止损 | 如果5MA下穿10MA(在20MA下方)则均线排列转空头 |
关键规则: 止损是不可协商的。止损条件满足的瞬间执行卖出委托。不要等待"反弹"。
| 方法 | 何时使用 |
|---|---|
| 目标法 | +15%时卖出一半;其余追踪止损 |
| 技术信号 | 在阻力位出现看跌K线形态时卖出 |
| 均线死叉 | 5日均线下穿10日均线时(短期出场) |
| 量能背离 | 价格创新高但量能递减时(看跌背离)卖出 |
| 60日均线突破 | 如果收盘跌破60日均线则清仓 |
本书强烈建议分批卖出:
仓位:10,000股股票A
第一次卖出(1/3):当利润达到+15%时
→ 卖出3,000股
→ 将剩余7,000股的止损提高到盈亏平衡点
第二次卖出(1/3):当利润达到+25%或技术走弱时
→ 卖出3,000股
→ 将剩余4,000股的止损追踪至+10%位
最终卖出(1/3):当止损触发或重大趋势逆转信号时
→ 卖出剩余4,000股
无论盈亏立即卖出:
可投资总资本:100%
分配:
30% — 主动交易仓位(3-5只股票)
30% — 为盈利仓位加仓的准备金
30% — 现金储备(用于市场下跌期间的机会)
10% — 应急基金(永远不投资)
| 规则 | 详情 |
|---|---|
| 最大单一仓位 | 交易资本的20%(非总资本) |
| 典型初始仓位 | 交易资本的10% |
| 最大仓位数 | 随时5只股票 |
| 最小仓位 | 交易资本的5%(低于此不值得关注) |
| 给赢家加仓 | 最多2次加仓;每次加仓≤初始规模 |
| 永不补仓 | 不给亏损仓位加仓 |
对于更有经验的交易者,本书介绍了一个简化的仓位管理公式:
仓位大小 = (胜率 × 平均盈利 / 平均亏损 - 亏损率) / (平均盈利 / 平均亏损)
示例:
胜率:55%
平均盈利:15%
平均亏损:7%
盈亏比:15/7 = 2.14
仓位大小 = (0.55 × 2.14 - 0.45) / 2.14
= (1.18 - 0.45) / 2.14
= 0.73 / 2.14
= 34%
实际调整:使用半凯利 → 每仓位17%
这考虑了不确定性并提供安全边际
仅在以下情况下给仓位加仓:
买入1:1,000股 @ ¥20(初始仓位)
→ 股票涨至¥22(+10%),回踩至¥21
买入2:800股 @ ¥21(回踩入场,规模较小)
→ 股票涨至¥24,回踩至¥22.50
买入3:600股 @ ¥22.50(最后一次加仓,规模最小)
总计:2,400股,平均成本¥20.96
止损:在60日均线下方或平均成本-7%
层级1:市场风险控制
→ 仅在宽基市场处于上升趋势时交易
→ 下降趋势中,将总权益敞口减少至30%或更少
→ 崩盘条件时,持100%现金
层级2:板块风险控制
→ 同一板块最多2只股票
→ 如果板块跌破,退出所有板块仓位
层级3:个股风险控制
→ 每个仓位设置止损,无例外
→ 每仓位最大亏损7%
→ 每仓位不超过交易资本的20%
层级4:组合风险控制
→ 每月最大组合亏损:-10%
→ 如果触及,当月停止所有交易
→ 审查所有交易,识别模式,调整系统
本书引入严格的月度亏损限制:
规则:如果任何日历月总组合回撤超过10%,
当月剩余时间停止所有交易。
理由:
1. 亏损会复利——亏损10%需要11.1%才能恢复
2. 糟糕连胜后,情绪状态会恶化
3. 强制暂停防止报复交易
4. 利用停摆期分析出了什么问题
例外:可以卖出既有仓位以减少风险,
但不可以开新仓
| 市场状态 | 识别方法 | 权益敞口 |
|---|---|---|
| 强劲上升趋势 | 沪深300在上升的20日和60日均线上方 | 60-80% |
| 温和上升趋势 | 沪深300在60日均线上方,60日均线平至略升 | 40-60% |
| 盘整/不确定 | 沪深300在60日和120日均线之间,均线纠缠 | 20-40% |
| 温和下降趋势 | 沪深300在60日均线下方,60日均线下降 | 0-20% |
| 强劲下降趋势 | 沪深300在下降的20日、60日、120日均线下方 | 0%(全现金) |
每笔交易必须记录:
日期:___________
股票:___________
操作:买入/卖出/加仓/减仓
价格:___________
股数:___________
仓位占比:___%
入场原因(买入时):
□ 大盘趋势:_________
□ 入场信号:_________
□ 量能确认:___
□ 止损位:______
出场原因(卖出时):
□ 止损触发
□ 盈利目标达到
□ 技术信号
□ 时间止损
□ 其他:_____________
情绪状态:1(平静)到5(激动)
遵守系统规则:是/否
如果没有,违反了哪条规则:_____________
| 情况 | 情绪反应 | 正确行动 |
|---|---|---|
| 股票开盘跳空上涨5% | 兴奋,想追 | 等待回踩;不要在开盘时买 |
| 仓位亏损5% | 焦虑,希望反弹 | 检查止损规则;如果触发则卖出 |
| 错过大牛股 | 后悔,想追 | 接受它;总会有下一个机会 |
| 连亏三次 | 沮丧,自我怀疑 | 审查日志;如果遵守系统则继续;如果没有,则暂停 |
| 一笔交易大盈利 | 过度自信,想重仓 | 坚持仓位规则;一次胜利不改变系统 |
| 市场单日下跌3% | 恐惧,恐慌 | 检查止损是否设置;如果是,相信系统 |
晚间(收盘后):
1. 审查今日交易并更新日志(10分钟)
2. 检查所有持仓止损位(5分钟)
3. 扫描观察列表寻找明日潜在入场信号(15分钟)
4. 审查宽基市场趋势和关键位(5分钟)
5. 为明日写具体计划:买什么、卖什么、什么价格(10分钟)
早间(开盘前):
1. 检查隔夜新闻有无影响仓位的 events(5分钟)
2. 审查昨晚写的计划(2分钟)
3. 根据计划预设任何买卖委托(5分钟)
4. 不要根据开盘价格走势改变计划
| 错误 | 描述 | 后果 |
|---|---|---|
| 无止损 | "它会回来的"心态 | 小亏损变成灾难性亏损 |
| 追涨停板 | 买已经涨10%的股票 | 如果动量反转次日被困 |
| 过度交易 | 因无聊每天交易 | 交易成本积累;被迫做出低质量交易 |
| 逆势 | 因为"便宜"而买下跌的股票 | 接飞刀;亏损扩大 |
| 忽视大盘趋势 | 在熊市中买个股 | 好股票在熊市也会跌 |
| 仓位过多 | 同时持有10-20只股票 | 无法有效监控;稀释赢家 |
| 补仓 | 希望回到盈亏平衡而给亏损仓位加仓 | 拿好钱打水漂 |
| 报复交易 | 亏损后立即买入来"挽回" | 情绪化决策,不是分析;导致更多亏损 |
| 周末研究偏见 | 基于周末阅读做大决策 | 周末分析的情绪不能反映周一现实 |
| 卖赢持亏 | 处置效应 | 系统性地截断利润、延长亏损 |
| 忽视量能 | 无量能确认就买突破 | 假突破率高;在失败波动中被困 |
| 预测成瘾 | 试图预测精确顶部和底部 | 不可能的任务;导致过早入场/出场 |
本书用大量篇幅讨论持仓亏损直到回本的心理陷阱:
情景:
以¥20买入股票A
股票跌至¥16(-20%)
投资者想:"回到¥20时再卖"
问题:
1. 股票需要+25%涨幅才能回到¥20(不是20%)
2. 资金锁定在亏损仓位数月/数年
3. 机会成本:这些资金可以部署在赢家上
4. 心理负担:每天查价格,希望反弹
正确方法:
问:"如果我有¥16,000现金,今天我会买这只股票吗?"
如果否 → 立即卖出,将资金部署到别处
如果是 → 您持有它是出于正确原因(未来前景),而不是错误原因(过去亏损)
日期:周一上午
市场检查:
沪深300:在20日和60日均线上方,两者都上升 → 上升趋势确认 ✓
市场敞口:目前40%已投,有加仓空间
板块扫描:
本周强势板块:新能源、半导体、消费
弱势板块:房地产、银行、矿业
观察列表审查:
股票B(新能源板块):价格在¥45附近盘整15天
均线排列:5MA ≈ 10MA ≈ 20MA(在上升的60日均线上方收敛)
量能:盘整期间萎缩(吸筹迹象)
基本面快速检查:
非ST ✓,市值¥300亿 ✓,营收增长 ✓
无重大质押 ✓,无诉讼 ✓
设置:"缩量整理后放量突破"形态正在形成
触发:价格以量能 > 2倍均量突破¥47(盘整高点)
周三10:15:
股票B开盘¥46.50,10:00涨至¥47.20
10:00量能:已达20日均量全日的50% → 量能激增 ✓
价格:¥47.20(在¥47阻力上方)✓
入场信号:放量突破盘整 ✓
入场执行:
以¥47.30买入2,000股
仓位大小:¥94,600(交易资本的12%)✓
止损设置:¥44.00(在盘整低点下方;入场价-7%)
盈利目标:第一次卖出在¥54(+15%)
第2天:股票收盘¥48.50(+2.5%)。量能强劲。持有。
第3天:股票收盘¥49.80(+5.3%)。将止损提至¥46(在10日均线下方)。持有。
第5天:股票回踩至¥48.20。量能萎缩。正常回踩。持有。
第7天:股票因板块新闻飙升至¥51.00。量能激增。
→ 根据金字塔规则考虑加仓:
→ 股票盈利(+7.8%)✓
→ 上升趋势确认 ✓
→ 回踩入场信号:等待回踩加仓
第9天:股票回踩至¥49.50(接近10日均线)。锤子K线。
→ 加仓:以¥49.50买入1,500股
→ 新平均成本:¥48.24(3,500股)
→ 将所有股份的止损提高至¥47.00
第12天:股票涨至¥54.00。第一个盈利目标达到。
→ 卖出1/3:卖出1,200股 @ ¥54.00
→ 剩余:2,300股
→ 将剩余止损提高到¥50.00(在盈亏平衡点上方)
第15天:股票达到¥57.00。上涨时量能递减。
→ 量能背离警告 → 收紧止损至¥53.00
→ 卖出1/3:卖出1,100股 @ ¥56.50
第18天:股票因市场走弱跳空下跌至¥53.50。
收盘¥52.80(在10日均线下方但高于止损¥53——勉强)
第19天:股票开盘¥52.50,跌至¥52.00。
→ 昨日收盘触发止损¥53.00 → 卖出剩余
→ 最终卖出:1,000股 @ ¥52.00
交易总结:
买入1:2,000股 @ ¥47.30 → 分三批卖出
买入2:1,500股 @ ¥49.50 → 分三批卖出
总投入:¥168,850
总收回:¥189,350
毛利:¥20,500(投入资本的12.1%)
扣除费用后净额:约¥19,800
日志记录:良好交易。遵守了所有规则。
量能背离被正确识别。本可以更大批量在¥54-57区间卖出更多。
改进空间:分批出场规模——考虑首次减仓更大。
def scan_entry_signals(watchlist, market_data):
"""
扫描观察列表寻找入场信号。
每天9:15(盘前)和10:30(开盘后)运行。
"""
signals = []
# 首先市场过滤器
if not is_market_uptrend(market_data):
return [] # 下降趋势不入场
for stock in watchlist:
bars = stock.daily_bars
volume_avg_20 = average(bars[-20:], 'volume')
# 信号1:均线金叉
if (bars[-1].ma5 > bars[-1].ma10 > bars[-1].ma20 and
bars[-2].ma5 <= bars[-2].ma10 and
bars[-1].volume > volume_avg_20):
signals.append({
'stock': stock, 'signal': 'MA_GOLDEN_CROSS',
'entry': bars[-1].close,
'stop_loss': bars[-1].ma20 * 0.98
})
# 信号2:回踩20日均线支撑
if (bars[-1].low <= bars[-1].ma20 * 1.02 and # 接近20日均线
bars[-1].close > bars[-1].ma20 and # 收盘在其上方
bars[-1].ma20 > bars[-1].ma60 and # 上升趋势
is_bullish_candle(bars[-1]) and # 反转K线
bars[-1].volume < volume_avg_20 * 0.8): # 回踩量能萎缩
signals.append({
'stock': stock, 'signal': 'PULLBACK_TO_20MA',
'entry': bars[-1].close * 1.005,
'stop_loss': bars[-1].ma20 * 0.97
})
# 信号3:盘整突破
consolidation = detect_consolidation(bars, min_days=10)
if consolidation:
range_high = consolidation['high']
if (bars[-1].close > range_high and
bars[-1].volume > volume_avg_20 * 1.5):
signals.append({
'stock': stock, 'signal': 'CONSOLIDATION_BREAKOUT',
'entry': bars[-1].close,
'stop_loss': consolidation['low'] * 0.99
})
# 信号4:60日均线支撑反弹
if (bars[-1].low <= bars[-1].ma60 * 1.01 and
bars[-1].close > bars[-1].ma60 and
bars[-1].ma60_slope > 0 and
is_bullish_candle(bars[-1])):
signals.append({
'stock': stock, 'signal': 'MA60_SUPPORT_BOUNCE',
'entry': bars[-1].close * 1.005,
'stop_loss': bars[-1].ma60 * 0.97
})
# 按强度排序信号
return sorted(signals, key=lambda s: rank_signal(s), reverse=True)
class PositionManager:
"""
管理带止损、盈利目标和分批出场的未平仓。
"""
def __init__(self, trading_capital, max_positions=5):
self.trading_capital = trading_capital
self.max_positions = max_positions
self.positions = {}
self.monthly_pnl = 0
def can_open_new_position(self):
if len(self.positions) >= self.max_positions:
return False
if self.monthly_pnl / self.trading_capital < -0.10:
return False # 月度亏损限制触发
return True
def calculate_position_size(self, entry_price, stop_loss_price):
"""规模仓位使最大亏损为交易资本的2%。"""
risk_per_share = entry_price - stop_loss_price
max_loss = self.trading_capital * 0.02
shares = int(max_loss / risk_per_share / 100) * 100 # 取整到百股
# 上限为交易资本的20%
max_shares = int(self.trading_capital * 0.20 / entry_price / 100) * 100
return min(shares, max_shares)
def daily_check(self, market_data):
"""收盘后每日检查。"""
actions = []
for ticker, pos in self.positions.items():
current = market_data[ticker]
# 检查硬止损
if current.close <= pos.stop_loss:
actions.append({'ticker': ticker, 'action': 'SELL_ALL',
'reason': '止损触发'})
continue
# 检查百分比止损
loss_pct = (current.close - pos.avg_cost) / pos.avg_cost
if loss_pct <= -0.07:
actions.append({'ticker': ticker, 'action': 'SELL_ALL',
'reason': '-7%硬止损'})
continue
# 检查时间止损
if pos.days_held >= 10 and loss_pct <= 0:
actions.append({'ticker': ticker, 'action': 'SELL_ALL',
'reason': '时间止损——10天未盈利'})
continue
# 检查盈利目标
gain_pct = (current.close - pos.avg_cost) / pos.avg_cost
if gain_pct >= 0.15 and pos.sells_executed == 0:
actions.append({'ticker': ticker, 'action': 'SELL_THIRD',
'reason': '第一盈利目标+15%'})
pos.stop_loss = pos.avg_cost # 提高到盈亏平衡
# 检查量能背离
if (current.close > pos.highest_close and
current.volume < pos.volume_at_highest * 0.7):
actions.append({'ticker': ticker, 'action': 'TIGHTEN_STOP',
'reason': '检测到量能背离'})
# 更新追踪
if current.close > pos.highest_close:
pos.highest_close = current.close
pos.volume_at_highest = current.volume
return actions
def assess_market_state(index_data):
"""
确定市场状态以提供仓位管理指导。
使用沪深300或上证综指。
"""
bars = index_data.daily_bars
current = bars[-1]
ma20_rising = current.ma20 > bars[-5].ma20
ma60_rising = current.ma60 > bars[-5].ma60
price_above_20 = current.close > current.ma20
price_above_60 = current.close > current.ma60
price_above_120 = current.close > current.ma120
if price_above_20 and price_above_60 and ma20_rising and ma60_rising:
return {
'state': 'STRONG_UPTREND',
'max_exposure': 0.80,
'new_entries_allowed': True
}
elif price_above_60 and ma60_rising:
return {
'state': 'MILD_UPTREND',
'max_exposure': 0.60,
'new_entries_allowed': True
}
elif price_above_120 and not price_above_60:
return {
'state': 'SIDEWAYS',
'max_exposure': 0.40,
'new_entries_allowed': True # 但仓位较小
}
elif not price_above_60 and not ma60_rising:
return {
'state': 'DOWNTREND',
'max_exposure': 0.20,
'new_entries_allowed': False
}
else:
return {
'state': 'STRONG_DOWNTREND',
'max_exposure': 0.0,
'new_entries_allowed': False
}
"非赚不可不是贪心,而是对纪律的坚持。" — "Must make money"不是贪婪——是对纪律的承诺。
"止损是交易者的安全带。你可以永远不需要它,但不系上就是拿命赌博。" — 止损是交易者的安全带。您可能永远不需要它,但不戴就是在拿命赌博。
"大盘不好的时候,什么技术都没用。" — 当大盘趋势不好时,没有任何技术分析能救您。
"会买的是徒弟,会卖的是师傅,会空仓的是祖师爷。" — 会买的是徒弟,会卖的是师傅,会空仓的是祖师爷。
"不要和股票谈恋爱。" — 不要爱上股票。
"每一笔交易都应该有计划,而不是有冲动。" — 每笔交易都应该有计划,而不是有冲动。
"赚了一百次小钱,不如认真做好十次交易。" — 认真做好十次交易胜过马马虎虎做一百次。
"散户亏钱的根本原因不是技术不行,而是管不住手。" — 散户亏损的根本原因不是技术不行,而是管不住手。
"仓位管理是你唯一能控制的事情。你不能控制股价,不能控制市场,但你能控制买多少。" — 仓位管理是您唯一能控制的事情。您不能控制股价或市场,但您能控制买多少。
"亏钱之后最重要的事不是赚回来,而是搞清楚为什么亏的。" — 亏钱后最重要的事不是赚回来,而是搞清楚为什么亏的。
本规范综合自 Yuan Yuan(远远),《非赚不可》。