📑 查看全课大纲(第 26 / 38 节)
- 1.课程介绍与学习目标
- 2.量化交易的发展
- 3.主观投资与量化投资的关系
- 4.认识一个量化策略(1)
- 5.认识一个量化策略(2)
- 6.理工生做量化的优势
- 7.量化交易系统的基本架构
- 8.必要的交易基础知识及参考资料
- 9.上节课思考题及本节课内容介绍
- 10.技术指标简介
- 11.基于MACD的交易信号开发(1)
- 12.基于MACD的交易信号开发(2)
- 13.基于RSI的交易信号开发
- 14.基于BOLL的交易信号开发
- 15.基于分形的交易信号开发
- 16.总结及下节课预告
- 17.开发环境安装
- 18.获取指数和个股历史行情数据
- 19.修复行情数据中的问题
- 20.抓取财报数据、数据定时更新
- 21.实现低PE股票池(1)
- 22.实现低PE股票池(2)
- 23.实现低PE策略的回测(1)
- 24.实现低PE策略的回测(2)
- 25.风险控制综述
- 26.风险控制中的止盈止损
- 27.仓位管理的工程实现
- 28.完整策略介绍-基础策略
- 29.策略的分步优化
- 30.策略评价指标(1)
- 31.策略评价指标(2)
- 32.如何评价策略
- 33.如何优化策略
- 34.tick数据的意义
- 35.tick数据的介绍及使用
- 36.Hans123策略
- 37.经典买入三法策略
- 38.量化系统的完整研发和系统搭建
风险控制中的止盈止损
约 12 分钟
📺 正在播放小象官方高清录播(支持倍速与清晰度调节)
风险控制中的止盈止损:目标止盈、硬性止损与跟踪止盈
小象实战讲义 · 初阶量化交易:策略编写及系统搭建 本讲义仅用于编程与量化方法教学,不构成任何投资建议。
在量化策略的具体实现中,风控逻辑必须被翻译为严格的数学判定条件与可执行的代码函数。许多交易者常陷入两难困境:设定固定目标止盈(如 )往往会在大牛市中过早卖飞大幅上涨的主升浪牛股;而不设止盈任由价格波动,又常遭遇坐”过山车”导致巨额浮盈化为乌有。如何设计既能保护既得利润、又能让超级主升浪充分奔跑的止盈止损机制,是量化工程师的必修课。
本讲系统推导目标盈利法(Fixed Take-Profit)、最大亏损法(Fixed Stop-Loss)与技术指标信号止损的数学模型;重点详解实盘中最具威力、将止盈与止损合二为一的高级机制——浮动/跟踪止盈(Trailing Stop) 的算法架构与代码实现。
💡 核心导读
- 目标盈利法与最大亏损法的数学模型:
- 目标盈利止盈线:(如 );
- 硬性底线止损线:(如 );
- 优点与局限:逻辑简单,严格界定单笔盈亏比;但缺乏对后续单边行情发展幅度的动态自适应能力。
- 浮动/跟踪止盈(Trailing Stop)的数学架构(强力推荐):
- 动态最高点追踪:在持仓生命周期内,实时记录历史最高价 ;
- 激活门槛(Activation Threshold):当持仓收益率首次突破激活门槛(如上涨达到 时启动跟踪防护);
- 回撤止盈触发条件: {peak} = \frac{High{peak} - Close_t}{High_{peak}} \ge R_{trail} \quad (\text{如 } R_{trail} = 3% \text{ 或 } 5%)
- 核心优势:在单边主升浪中, 随股价向上无限抬升,止盈线同步上移;一旦见顶回落达到阈值,立即平仓锁定绝大部分巅峰利润,完美实现”让利润奔跑与保住收益”的辩证统一。
- 技术指标信号止损(Signal-based Stop):
- 当持仓期间发生均线死叉(如 )或 MACD 顶背离时,不论当前盈亏直接触发离场,顺应市场宏观结构变化。
┌─────────────────────────────────────────────────────────────┐
│ 浮动跟踪止盈 (Trailing Stop) 运行轨迹 │
└──────────────────────────────┬──────────────────────────────┘
│
价格 (Price) ▲ [最高点 Peak: 12.0 元]
▲ │ ▼
▲ │ ▼ ─── 回撤 4.17% (≥ 3%): 触发跟踪止盈离场 (11.5 元)
▲ │
[突破 +8% 激活门槛: 10.8 元]───┘
▲
▲
[买入成本 Entry: 10.0 元] ─────────────────────────────────── (基准线)一、目标止盈 vs 跟踪止盈的实盘对比
假设以 10.0 元买入某标的,随后该股走出大波段行情冲至 15.0 元()后回落至 13.0 元:
- 固定目标止盈():在 11.5 元处即被动平仓,错失后续 11.5 到 15.0 元的巨大涨幅;
- 跟踪止盈(回撤 ):最高价记录为 15.0 元,在回落至 元处自动平仓离场,成功锁定 的超额利润!
二、风控模块的代码架构设计
在回测或实盘引擎中,风控判定作为独立中间件注入订单路由:
- 持仓状态维护:维护包含
entry_price、peak_price、is_trailing_active的持仓字典; - 日度扫描判定:每日开盘/收盘时逐笔计算当前价相对于成本与峰值的比例;
- 输出标准化指令:若触发硬性止损或跟踪止盈,将标的推入待卖列表并更新持仓状态。
📝 动手练一练
下面我们用 Python 编写一段 浮动跟踪止盈(Trailing Stop)与硬性止损复合风控引擎,模拟价格冲高至 12.0 元()后见顶回落,演示跟踪止盈如何在回撤时精准截获 的巅峰利润:
import pandas as pd
import numpy as np
def trailing_stop_and_fixed_sl(entry_price, price_series, activation_profit=0.08, trailing_drawdown=0.03, fixed_sl=0.05):
"""
浮动/跟踪止盈 (Trailing Stop) 与 硬性止损 (Fixed Stop Loss) 复合风控引擎
1. 若未盈利或盈利未达到 activation_profit (8%): 严格按 fixed_sl (5%) 执行硬性止损
2. 若持仓盈利曾达到 activation_profit (8%): 激活跟踪止盈, 动态记录最高点 peak_price
3. 若价格从 peak_price 回撤超过 trailing_drawdown (3%): 触发跟踪止盈离场
"""
peak_price = entry_price
is_trailing_active = False
records = []
for p in price_series:
# 动态追踪持仓历史最高价
if p > peak_price:
peak_price = p
current_ret = (p - entry_price) / entry_price * 100.0
peak_ret = (peak_price - entry_price) / entry_price * 100.0
drawdown_from_peak = (peak_price - p) / peak_price * 100.0
# 盈利超过 8% 激活跟踪止盈保护
if not is_trailing_active and peak_ret >= (activation_profit * 100.0):
is_trailing_active = True
action = "HOLD (持仓)"
if p <= entry_price * (1.0 - fixed_sl):
action = "FIXED_STOP_LOSS (硬性止损)"
elif is_trailing_active and drawdown_from_peak >= (trailing_drawdown * 100.0):
action = "TRAILING_TAKE_PROFIT (跟踪止盈)"
records.append({
'Price': p,
'Peak_Price': peak_price,
'Current_Ret%': current_ret,
'Drawdown_From_Peak%': drawdown_from_peak,
'Trailing_Active': is_trailing_active,
'Action': action
})
# 触发离场则结束生命周期
if "STOP" in action or "PROFIT" in action:
break
return pd.DataFrame(records)
def test_trailing_run():
entry = 10.0
# 模拟买入后价格持续冲高至 12.0 元 (+20%) 随后见顶回落至 11.5 元的时序
prices = [10.2, 10.5, 10.9, 11.4, 12.0, 11.8, 11.5, 11.0]
res = trailing_stop_and_fixed_sl(entry, prices, activation_profit=0.08, trailing_drawdown=0.03, fixed_sl=0.05)
print("================ 浮动跟踪止盈 (Trailing Stop) 引擎 ================")
print(res[['Price', 'Peak_Price', 'Current_Ret%', 'Drawdown_From_Peak%', 'Trailing_Active', 'Action']])
print("------------------------------------------------------------------")
print(f"触发离场动作: {res['Action'].iloc[-1]} 于价格 {res['Price'].iloc[-1]:.2f} 元 (最终锁定收益: {res['Current_Ret%'].iloc[-1]:.2f}%)")
print("量化成果: 成功突破 8% 门槛并伴随股价冲至 12.0 元,在回撤达 4.17% 时精准离场锁定 +15% 利润!")
print("==================================================================")
if __name__ == "__main__":
test_trailing_run()运行结果输出:
================ 浮动跟踪止盈 (Trailing Stop) 引擎 ================
Price Peak_Price Current_Ret% Drawdown_From_Peak% Trailing_Active Action
0 10.2 10.2 2.0 0.000000 False HOLD (持仓)
1 10.5 10.5 5.0 0.000000 False HOLD (持仓)
2 10.9 10.9 9.0 0.000000 True HOLD (持仓)
3 11.4 11.4 14.0 0.000000 True HOLD (持仓)
4 12.0 12.0 20.0 0.000000 True HOLD (持仓)
5 11.8 12.0 18.0 1.666667 True HOLD (持仓)
6 11.5 12.0 15.0 4.166667 True TRAILING_TAKE_PROFIT (跟踪止盈)
------------------------------------------------------------------
触发离场动作: TRAILING_TAKE_PROFIT (跟踪止盈) 于价格 11.50 元 (最终锁定收益: 15.00%)
量化成果: 成功突破 8% 门槛并伴随股价冲至 12.0 元,在回撤达 4.17% 时精准离场锁定 +15% 利润!
==================================================================本章小结
- 掌握跟踪止盈机制:通过记录 并在回撤达到阈值时触发离场,兼具保护利润与捕捉大趋势的优势。
- 复合风控分层防护:在未盈利阶段依赖硬性止损防范暴跌,在大幅盈利后自动切换为跟踪止盈保住收益。
- 参数个性化配置:根据标的日内波动率(ATR)科学设定激活阈值与回撤比例,避免过窄回撤被正常杂波洗出。
📋 行动清单 (Action Checklist)
- 运行本讲跟踪止盈代码,观察从第 2 天激活到第 6 天触发离场的全过程;
- 尝试将回撤阈值调整为 5% 并修改输入价格,观察离场点位的自适应变化;
- 预习下一讲,深入学习决定策略长期生死的核心支柱——仓位管理与头寸规模模型。
— 小象教研组
配套学习资源与课件
🎁 免费学习资源
领取《小象 11GB VIP 课件资料包与大厂真题手册》
包含全套实战 Jupyter 源码、清洗后数据集、大厂高频面试真题与专属学员答疑交流群。
- ✔完整 Python / 数据分析 Jupyter 实战源码
- ✔大厂真实业务数据集与练习题
- ✔微信扫码添加课程顾问,免费获取网盘下载链接
微信扫码添加顾问