← 返回《进阶量化交易实战:迭代式的量化策略研发》
📑 查看全课大纲(第 49 / 59 节)
  1. 1.量化投资必备基础知识
  2. 2.趋势型策略及模型原理
  3. 3.均值回复型策略及模型原理
  4. 4.配对交易策略及模型原理
  5. 5.量化策略研发流程与基本技能
  6. 6.常用的量化平台概述及如何选择
  7. 7.如何量化一个主观策略思路
  8. 8.常用技术指标及指标计算过程
  9. 9.如何编写指标代码
  10. 10.指标的物理意义
  11. 11.技术指标的应用技巧
  12. 12.更多的交易决策
  13. 13.编写程序去量化一个趋势型技术指标
  14. 14.编写趋势型技术指标的性能评价
  15. 15.策略对交易成本和持仓周期的影响
  16. 16.股票池策略的原理及基本框架
  17. 17.基于多因子分析的股票池设计与实现
  18. 18.股票池的性能评估
  19. 19.使用定制化财务因子构建股票池
  20. 20.趋势型策略原理及股票池机制的设计
  21. 21.趋势型择时信号的设计方法与编程实现
  22. 22.趋势型策略的回测与性能评估
  23. 23.优化趋势型策略的思路及方法
  24. 24.量化体系中的风险控制思想
  25. 25.风险的度量-波动率
  26. 26.常用的风险控制方法
  27. 27.实现止盈止损模块以提高策略性能
  28. 28.策略性能的评估与优化
  29. 29.探讨波动率与风险的关系
  30. 30.量化策略中的经典资金管理模型
  31. 31.用python编程实现资金管理模块
  32. 32.构建一个完善的量化交易策略
  33. 33.趋势型量化策略必备的期货知识
  34. 34.期货量化工具介绍
  35. 35.商品期货趋势型策略原理
  36. 36.用TB编写商品期货趋势型策略(上)
  37. 37.用TB编写商品期货趋势型策略(下)
  38. 38.分析优化商品期货趋势型策略的方法思路
  39. 39.期货交易策略的注意事项
  40. 40.均值回复型策略的原理
  41. 41.A股市场有没有稳定的均值回复效应?
  42. 42.编写一个均值回复型股票量化策略
  43. 43.编写多空组合策略进行策略改进
  44. 44.在策略中实现头寸管理进行策略优化
  45. 45.套利策略原理及常见套利类型
  46. 46.用MC开发一个跨品种套利交易策略(上)
  47. 47.用MC开发一个跨品种套利交易策略(下)
  48. 48.统计套利之股票配对交易策略
  49. 49.实盘中的细节问题:加减仓
  50. 50.关于高频交易
  51. 51.如何评价实盘量化策略的性能
  52. 52.量化系统的工作过程及研发流程
  53. 53.运气or实力
  54. 54.量化实盘交易需要满足什么条件
  55. 55.未来函数的坑
  56. 56.实盘数据接口异常的自动报警
  57. 57.交易系统的压力测试
  58. 58.自动运行的交易策略,什么时候需要人工干预
  59. 59.预案准备和实盘心理建设

实盘中的细节问题:加减仓

约 7 分钟

📺 正在播放小象官方高清录播(支持倍速与清晰度调节)

实盘中的细节问题:加减仓

小象实战讲义 · 进阶量化交易实战:迭代式的量化策略研发 本讲义仅用于编程与量化方法教学,不构成任何投资建议。

在量化交易的物理实盘中,加减仓绝不是简单修改下单股数,而是涉及流动性冲击、滑点摩擦、持仓均价变动以及风险敞口再平衡的复杂工程。本节深入剖析金字塔加减仓、ATR 动态波幅仓位调节以及分批冰山报单算法的实战细节。

💡 核心导读

  • 实盘加减仓三大核心工程原则
    • 顺势浮盈加仓(Pyramid Adding):仅在已有仓位产生足够安全垫(如浮盈 > 1.5 ATR)时才允许追加头寸;
    • 逆势减仓与动态止损线抬升:每次减仓必须同步上移剩余仓位的止损线,确保锁定已实现利润;
    • 算法拆单防冲击(Iceberg / TWAP):对于大额加减仓指令,通过时间或成交量加权拆解,避免瞬间击穿盘口深度。
┌─────────────────────────────────────────────────────────────┐
│                    实盘加减仓决策与执行拓扑图                   │
└──────────────────────────────┬──────────────────────────────┘

 ┌─────────────────────────────┼─────────────────────────────┐
 ▼                             ▼                             ▼
┌─────────────────────────┐   ┌─────────────────────────┐   ┌─────────────────────────┐
│ 浮盈加仓条件触发        │   │ 算法拆单执行 (Iceberg)  │   │ 止损线动态同步抬升      │
├─────────────────────────┤   ├─────────────────────────┤   ├─────────────────────────┤
│ • 浮盈 > 1.5 * ATR      │──►│ • 单笔不超过盘口深度 10%│──►│ • StopLine = NewEntry-2ATR│
│ • 总持仓未达上限 (4Unit)│   │ • 随机间隔 1~3 秒分批报单│   │ • 保护全部已累积利润    │
└─────────────────────────┘   └─────────────────────────┘   └─────────────────────────┘

一、动态加减仓与持仓均价重构数学模型

设初始持仓量为 Q1Q_1,成本为 P1P_1;第 kk 次加仓量为 QkQ_k,加仓价格为 PkP_k。加仓后的综合持仓均价 Pk\overline{P}_k 与动态止损线为:

Pk=i=1kQiPii=1kQi,StopLinek=Pk2.0×ATRk\overline{P}k = \frac{\sum{i=1}^k Q_i P_i}{\sum_{i=1}^k Q_i}, \quad \text{StopLine}_k = P_k - 2.0 \times ATR_k

import pandas as pd
import numpy as np

class RealPositionManager:
    """
    实盘多批次动态加减仓与均价管理器
    """
    def __init__(self, max_units: int = 4):
        self.max_units = max_units
        self.units = []
        
    def add_position(self, price: float, volume: int, atr: float) -> dict:
        if len(self.units) >= self.max_units:
            return {'status': 'REJECTED_MAX_CAPACITY', 'avg_price': self.get_avg_price()}
            
        self.units.append({'price': price, 'volume': volume, 'atr': atr})
        stop_line = price - 2.0 * atr
        return {'status': 'ADDED', 'avg_price': self.get_avg_price(), 'total_volume': self.get_total_volume(), 'stop_line': stop_line}
        
    def get_total_volume(self) -> int:
        return sum(u['volume'] for u in self.units)
        
    def get_avg_price(self) -> float:
        tot_vol = self.get_total_volume()
        if tot_vol == 0:
            return 0.0
        return sum(u['price'] * u['volume'] for u in self.units) / tot_vol

二、大单冰山算法拆解与微观报单

大额加减仓指令必须拆分为小额子订单,避免对订单簿造成瞬时冲击。

def slice_iceberg_order(total_shares: int, max_slice: int = 200) -> list:
    """
    冰山算法子单切片
    """
    slices = []
    rem = total_shares
    while rem > 0:
        sz = min(rem, max_slice)
        slices.append(sz)
        rem -= sz
    return slices

📝 动手练一练

编写 Python 测试脚本,模拟实盘连续 3 次浮盈加仓并计算均价与止损线演变:

import pandas as pd
import numpy as np

def run_scaling_position_test():
    pm = RealPositionManager(max_units=4)
    atr = 5.0
    
    r1 = pm.add_position(price=100.0, volume=100, atr=atr)
    r2 = pm.add_position(price=110.0, volume=100, atr=atr)
    r3 = pm.add_position(price=120.0, volume=100, atr=atr)
    slices = slice_iceberg_order(pm.get_total_volume(), max_slice=100)
    
    print("================ 实盘加减仓细节与头寸管理测试 ================")
    print(f"累计加仓批数: {len(pm.units)} 批 | 总持仓股数: {pm.get_total_volume()} 股")
    print(f"综合持仓均价: {pm.get_avg_price():.2f} 元 (初始成本 100.00 元)")
    print(f"最新统一止损: {r3['stop_line']:.2f} 元 (已锁定高于初始成本浮盈)")
    print(f"冰山平仓拆单: {len(slices)} 笔子订单")
    assert pm.get_total_volume() == 300, "持仓股数计算错误!"
    assert r3['stop_line'] > 100.0, "动态止损未抬升至成本线之上!"
    print("✅ 实盘加减仓机制与均价动态管理验证 PASS")
    print("============================================================")

if __name__ == '__main__':
    run_scaling_position_test()

运行结果输出:

================ 实盘加减仓细节与头寸管理测试 ================
累计加仓批数: 3 批 | 总持仓股数: 300 股
综合持仓均价: 110.00 元 (初始成本 100.00 元)
最新统一止损: 110.00 元 (已锁定高于初始成本浮盈)
冰山平仓拆单: 3 笔子订单
✅ 实盘加减仓机制与均价动态管理验证 PASS
============================================================

本章小结

  1. 坚持顺势浮盈加仓:只在已有仓位产生足够浮盈安全垫时加仓,严禁逆势摊平亏损。
  2. 止损线同步抬升锁定收益:随着加仓批次增加,整体止损线必须同步上移至成本线甚至浮盈区域。
  3. 运用算法拆单减少冲击:大额调仓指令通过冰山或 TWAP 拆单,保护盘口深度与成交均价。

📋 行动清单 (Action Checklist)

  • 运行加减仓测试脚本,核查不同批次加仓对持仓均价的敏感度;
  • 编写阶梯式分批止盈减仓与挂单撤单逻辑;
  • 预习下一节,深入探究高频交易的物理机制与生态位格局。

— 小象教研组

配套学习资源与课件
  • 第10章课件:实盘中的细节问题讨论(PDF · 1.7MB)
    下载
  • 第10章配套代码包(Python 重构版 · 已实测)(ZIP · 14KB)
    下载
🎁 免费学习资源

领取《小象 11GB VIP 课件资料包与大厂真题手册》

包含全套实战 Jupyter 源码、清洗后数据集、大厂高频面试真题与专属学员答疑交流群。

  • 完整 Python / 数据分析 Jupyter 实战源码
  • 大厂真实业务数据集与练习题
  • 微信扫码添加课程顾问,免费获取网盘下载链接
微信二维码:扫码添加课程顾问微信扫码添加顾问