止损的本质是风险预算
交易市场没有确定性。任何一笔开仓动作都建立在概率之上。止损不是承认失败,而是为这笔交易设定最大可承受亏损。期货市场带有杠杆,股票市场同样存在跌停与流动性风险。没有止损,一次极端行情就能摧毁本金。把止损视为交易成本的一部分,和手续费、滑点一样自然。
止损与仓位管理的关系
仓位决定止损的绝对值。100万账户,2%止损是2万。同样2%价格波动,如果满仓,亏损就是2万。如果半仓,亏损减半。期货保证金交易下,仓位管理更为关键。止损点位距离越远,仓位必须越轻。股票交易中,单只个股止损金额不应超过总资金1.5%。期货品种波动率差异大,螺纹钢与原油的合理止损宽度完全不同。用ATR(平均真实波幅)衡量波动,止损设为2倍ATR。

# 计算ATR止损示例
import pandas as pd
def atr_stop(df, period=14, multiplier=2):
high_low = df['high'] - df['low']
high_close = abs(df['high'] - df['close'].shift())
low_close = abs(df['low'] - df['close'].shift())
tr = pd.concat([high_low, high_close, low_close], axis=1).max(axis=1)
atr = tr.rolling(period).mean()
return df['close'] - multiplier * atr
固定金额止损与固定比例止损
固定金额止损适合期货日内交易。每笔亏损不超过500元,触及即离场。固定比例止损适合股票中长线,账户回撤2%强制减仓。两类方法各有适用场景。固定金额在震荡市中容易频繁触发,固定比例在连续跌停时无法成交。结合使用:单笔固定金额,单周累计亏损超过5%则停止交易一周。
技术位止损的陷阱
支撑位、前低、均线常被用作止损参考。市场参与者都知道这些位置,容易引发假突破。价格短暂击穿支撑后迅速拉回,止损单被扫掉,行情反向运行。解决方式:在技术位下方附加缓冲,例如前低下方1倍ATR。股票日线交易,止损放在前低下方2%位置。期货分钟级交易,缓冲可设为3到5个最小变动价位。
移动止损锁定利润
盈利后止损位需要跟随。期货趋势跟踪常用吊灯止损:最高价减去3倍ATR。股票波段交易可用20日均线作为移动止损。移动止损只上移不下移。当价格回撤触及移动止损线,无条件平仓。移动止损幅度过紧会被正常回调打出,过宽则回吐过多利润。经验值:期货日线趋势,移动止损宽度为初始止损的1.5倍。
# 吊灯移动止损
def chandelier_exit(df, atr_period=22, mult=3):
atr = df['close'].rolling(atr_period).apply(lambda x: (x.max()-x.min())/len(x))
highest = df['high'].rolling(atr_period).max()
return highest - mult * atr
止损执行的心理障碍
亏损时不愿止损,本质是损失厌恶。账面亏损变成实际亏损带来痛苦。交易者会幻想价格回归。期货杠杆放大了这种痛苦。解决执行问题:止损单在开仓同时挂出,不手动干预。股票交易可设置条件单。把止损动作程序化,减少情绪介入。每日复盘时统计止损执行率,低于95%则暂停实盘。
止损与交易系统的匹配
高频交易止损极窄,依靠胜率覆盖成本。趋势跟踪止损较宽,容忍回撤换取大利润。股票价值投资不设价格止损,但设基本面止损。期货套利交易止损基于价差历史区间。交易系统不同,止损逻辑必须匹配。用趋势系统的宽止损做高频,频繁被扫。用高频的窄止损做趋势,拿不住单。回测时重点观察:最大连续亏损次数,平均亏损与平均盈利比。
股票与期货止损的差异
股票T+1,当日买入无法卖出。止损必须考虑隔夜跳空。期货T+0,可当日多次进出。股票跌停板无法成交,止损单可能失效。期货涨跌停板同样存在流动性问题。股票交易者应避免在跌停板附近挂止损,改用次日开盘市价单。期货交易者可用市价止损单,但滑点成本高。股票止损可分批,期货止损必须一次性。
止损不是万能药
连续止损意味着市场环境与交易系统不匹配。此时应降低仓位或停止交易。止损保护本金,但不产生利润。利润来自盈利头寸的持有。截断亏损,让利润奔跑。这句老话的前提是止损明确且执行。没有止损,利润奔跑无从谈起。检查每笔交易:开仓前是否知道止损位,止损金额是否在预算内,触及止损是否无条件离场。三个问题都是肯定答案,止损才算真正被看待。
量化交易中的止损实现
程序化交易将止损写为代码条件。回测时需模拟滑点与手续费。止损触发后,下一根K线开盘价成交。避免用当前K线收盘价,防止未来函数。期货夜盘与日盘衔接处流动性差,止损可放宽。股票集合竞价阶段不交易,止损单在连续竞价开始后执行。
# 简单止损回测逻辑
for i in range(1, len(df)):
if position == 1:
if df['low'][i] <= stop_price:
exit_price = min(df['open'][i], stop_price)
pnl = exit_price - entry_price
position = 0
止损是交易者唯一能完全控制的风险变量。行情方向不可控,止损幅度可控。把止损当作呼吸一样自然,交易才能长期存活。