一文入门量化技术指标:原理详解与Python实战 TA-Lib & Pandas & Mplfinance

一文入门量化技术指标:原理详解与Python实战 TA-Lib & Pandas & Mplfinance

技术指标是量化投资的核心工具,通过数学公式分析历史数据,辅助判断价格趋势与买卖时机。本文分为两部分:

第一部分 详细解析趋势类、动量类、成交量类、波动类、复合类等五大类技术指标,涵盖各分类代表性指标的理论依据、数学公式、适用性及局限性,并探讨基本面结合与风险管理方法;

第二部分 结合 Python 的TA-LibPandasMplfinanceTushare库,演示数据获取、指标计算及专业K线图可视化实操。

文中内容仅限技术学习与代码实践参考,市场存在不确定性,技术分析需谨慎验证,不构成任何投资建议。适合量化新手建立系统认知,为策略开发打下基础。

第一部分:技术指标知识点

一、技术指标分类

1. 趋势类

代表指标

  • Simple Moving Average (SMA):简单移动平均线,基本的移动平均线,用于识别趋势。
  • Exponential Moving Average (EMA):指数移动平均线,给予近期价格更高权重,更灵敏地反映价格变化。
  • Moving Average Convergence Divergence (MACD):移动平均收敛发散指标,通过两条移动平均线的交叉来判断买卖时机。
  • Average Directional Index (ADX):平均趋向指数,衡量趋势的强度,而不考虑趋势的方向。
  • Ichimoku Cloud (Ichimoku):一目均衡云,一种源自日本的综合指标,提供支撑位和阻力位、趋势方向和动量等信息。

核心功能:识别趋势方向、判断趋势强度、确定支撑阻力。

2. 动量类

代表指标

  • Relative Strength Index (RSI):相对强弱指数,衡量股票价格的涨跌速度和幅度,判断是否超买或超卖。
  • Stochastic Oscillator (Stochastic):随机振荡指标,比较股票的收盘价与一段时间内的价格范围,识别超买或超卖状态。
  • Commodity Channel Index (CCI):商品通道指数,用于识别超买或超卖状态。
  • Money Flow Index (MFI):资金流量指标,结合价格和成交量,衡量资金流入和流出。
  • Rate of Change (ROC):变化率指标,衡量价格变化的速度。

核心功能:衡量价格变化速度、识别超买超卖区域。

3. 成交量类

代表指标

  • On Balance Volume (OBV):能量潮,结合成交量和价格变化,判断资金流向。
  • Chaikin Money Flow (CMF):蔡金资金流,用于衡量资金流入和流出。
  • Volume Weighted Average Price (VWAP):成交量加权平均价,用于衡量成交量加权的平均价格。

核心功能:验证价格趋势可靠性、识别主力资金动向。

4. 波动类

代表指标

  • Average True Range (ATR):平均真实波幅,衡量市场波动率。
  • Bollinger Bands (Bollinger):布林带,由一条移动平均线和两条标准差线组成,用于判断价格的波动范围。
  • Keltner Channel (Keltner):凯尔特纳通道,用于衡量价格的波动范围和趋势。
  • Standard Deviation (StdDev):标准差,衡量价格的波动程度。

核心功能:衡量市场波动率、识别突破信号。

5. 复合类

代表指标

  • Supertrend (Supertrend):超级趋势,用于生成趋势跟随信号。
  • Alligator (Alligator):鳄鱼线,结合多个移动平均线,用于识别趋势和动能。
  • Triple Exponential Moving Average (TRIX):三重指数平均线,用于识别趋势和生成交易信号。
  • Donchian Channel (Donchian):唐奇安通道,用于识别趋势和突破信号。
  • Ichimoku Cloud (Ichimoku Cloud):一目均衡云,一种复合指标,提供支撑位和阻力位、趋势方向和动量等信息。

核心功能:多维度信号融合、自动生成交易信号。

二、核心指标详解

2.1 趋势类指标

2.1.1 Simple Moving Average (SMA):简单移动平均线
  • 理论依据
    基于价格均值回归理论,通过算术平均消除短期波动,提取趋势方向
  • 数学公式
    • S M A ( n ) = 1 n ∑ i = 1 n C l o s e t − i + 1 SMA(n) = \frac{1}{n} \sum_{i=1}^{n} Close_{t-i+1} SMA(n)=n1i=1nCloseti+1
    • n n n为计算周期, C l o s e Close Close为收盘价序列
  • 核心参数
    • 常用周期:5日(短期)、20日(中期)、200日(长期)
    • 金叉/死叉:短期SMA上穿/下穿长期SMA
  • 适用性
    • 判断多空分水岭(如股价与200日SMA的关系)
    • 消除价格噪音,识别长期趋势
  • 局限性
    • 滞后性显著,尤其在趋势反转初期
    • 震荡行情中频繁产生虚假信号
  • 风险管理
    • 金叉出现后需成交量放大确认
    • 价格偏离SMA超过2倍ATR时警惕反转
2.1.2 Exponential Moving Average (EMA):指数移动平均线
  • 理论依据
    基于时间加权平均理论,赋予近期价格更高权重,提升对趋势的敏感度
  • 数学公式
    • E M A t = α ⋅ C l o s e t + ( 1 − α ) ⋅ E M A t − 1 EMA_t = \alpha \cdot Close_t + (1-\alpha) \cdot EMA_{t-1} EMAt=αCloset+(1α)EMAt1
    • α = 2 n + 1 \alpha = \frac{2}{n+1} α=n+12 n n n为平滑周期
  • 核心参数
    • 短期周期:12日(对应MACD快线)
    • 长期周期:26日(对应MACD慢线)
  • 适用性
    • 高频交易中的趋势捕捉
    • 结合MACD形成动量-趋势复合策略
  • 局限性
    • 单边行情中易引发过度交易
    • 对价格跳空缺口的反应可能失真
  • 风险管理
    • EMA斜率转平时启动动态止盈
    • 价格与EMA乖离率超过15%时强制回调预警
2.1.3 Moving Average Convergence Divergence (MACD):移动平均收敛发散指标
  • 理论依据
    • 基于双EMA的收敛与发散原理,MACD线(12日EMA-26日EMA)与信号线(9日EMA)的交互反映趋势动能变化
  • 数学公式
    • M A C D 线 = E M A ( 12 ) − E M A ( 26 ) MACD线 = EMA(12) - EMA(26) MACD线=EMA(12)EMA(26)
    • 信号线 = E M A ( M A C D , 9 ) 信号线 = EMA(MACD, 9) 信号线=EMA(MACD,9)
    • 柱状图 = M A C D 线 − 信号线 柱状图 = MACD线 - 信号线 柱状图=MACD线信号线
  • 核心参数:快线(12)、慢线(26)、信号线(9)
  • 适用性
    • 中长线趋势跟踪
    • 捕捉趋势反转早期信号
  • 局限性
    • 单边行情中柱状图易出现持续性扩张导致信号滞后
  • 基本面的结合
    • 行业ETF的MACD信号需结合行业景气度分析
  • 风险管理
    • 柱状图连续3根缩量时部分平仓
    • 零轴下方禁止做多
2.1.4 Average Directional Index (ADX):平均趋向指数
  • 理论依据
    基于趋势强度量化理论,通过+DI(正向趋向指标)和-DI(负向趋向指标)的差值衡量趋势动能
  • 数学公式
    • 真实波幅 T R = m a x ( H − L , ∣ H − P C ∣ , ∣ L − P C ∣ ) TR = max(H-L, |H-PC|, |L-PC|) TR=max(HL,HPC,LPC) (PC为前日收盘价)
    • + D M = H − H p r e v +DM = H - H_prev +DM=HHprev(若当日高点>前日高点且差值最大)
    • − D M = L p r e v − L -DM = L_prev - L DM=LprevL(若当日低点<前日低点且差值最大)
    • + D I = 100 × E M A ( + D M , n ) / E M A ( T R , n ) +DI = 100 × EMA(+DM, n)/EMA(TR, n) +DI=100×EMA(+DM,n)/EMA(TR,n)
    • − D I = 100 × E M A ( − D M , n ) / E M A ( T R , n ) -DI = 100 × EMA(-DM, n)/EMA(TR, n) DI=100×EMA(DM,n)/EMA(TR,n)
    • A D X = E M A ( ∣ ( + D I − − D I ) ∣ / ( + D I + − D I ) , m ) × 100 ADX = EMA( |(+DI - -DI)| / (+DI + -DI) , m ) × 100 ADX=EMA((+DIDI)∣/(+DI+DI),m)×100
  • 核心参数
    • 标准周期:14日(DI计算)
    • 平滑周期:14日(ADX计算)
  • 适用性
    • 识别趋势市场与震荡市场的转换
    • 量化牛市/熊市强度等级
  • 局限性
    • 滞后性明显,需配合价格形态使用
  • 基本面的结合
    • ADX>25时关注财报季龙头股趋势延续性
  • 风险管理
    • ADX连续3日下降时启动趋势保护策略

2.2 动量类指标

2.2.1 Relative Strength Index (RSI):相对强弱指数
  • 理论依据
    • 均值回归理论,衡量价格变化的相对强度
    • 牛顿第一定律在金融市场中的应用(物极必反)
  • 数学公式
    • A v g G a i n = 1 n ∑ ( C l o s e t − C l o s e t − 1 ) + AvgGain = \frac{1}{n}\sum (Close_t - Close_{t-1})^+ AvgGain=n1(ClosetCloset1)+
    • A v g L o s s = 1 n ∑ ( C l o s e t − C l o s e t − 1 ) − AvgLoss = \frac{1}{n}\sum (Close_t - Close_{t-1})^- AvgLoss=n1(ClosetCloset1)
    • R S I = 100 − 100 1 + A v g G a i n A v g L o s s RSI = 100 - \frac{100}{1 + \frac{AvgGain}{AvgLoss}} RSI=1001+AvgLossAvgGain100
  • 核心参数:标准周期14日,超买线70,超卖线30
  • 适用性
    • 震荡行情中的波段操作
    • 趋势中的回调入场机会
  • 局限性
    • 单边行情中易出现持续超买/超卖
  • 基本面的结合
    • 财报公布前RSI超买需警惕"利好兑现"风险
  • 风险管理
    • 超买区做空需等待价格形态确认(如黄昏之星)
    • 超卖区做多需结合成交量放大验证
2.2.2 Stochastic Oscillator (Stochastic):随机振荡指标
  • 理论依据
    基于价格在周期内相对位置理论,当收盘价接近波动区间顶部时显示超买,接近底部时显示超卖
  • 数学公式
    • % K = C l o s e − L n H n − L n × 100 \%K = \frac{Close - L_n}{H_n - L_n} \times 100 %K=HnLnCloseLn×100 H n H_n Hn n n n日最高价, L n L_n Ln n n n日最低价)
    • $%D = SMA(%K, m) $
  • 核心参数
    • 标准周期:14日(%K计算周期)
    • 平滑周期:3日(%D计算周期)
  • 适用性
    • 震荡行情中的波段操作
    • 捕捉短期反转机会
  • 局限性
    • 单边趋势中指标长期处于极值区
    • 需配合趋势指标过滤虚假信号
  • 基本面的结合
    • 重要经济数据公布前避免使用(易引发极端波动)
  • 风险管理
    • %K与%D在超买区死叉时止损
    • 配合ATR设置1.5倍波动止损位
2.2.3 Commodity Channel Index (CCI):商品通道指数
  • 理论依据
    • 价格偏离统计常态后向均值回归的特性
  • 数学公式
    • 典型价 T P = H + L + C 3 TP = \frac{H+L+C}{3} TP=3H+L+C
    • M D = 1 n ∑ ∥ T P i − S M A ( T P , n ) ∥ MD = \frac{1}{n}\sum\|TP_i - SMA(TP,n)\| MD=n1TPiSMA(TP,n)
    • C C I = T P − S M A ( T P , n ) 0.015 × M D CCI = \frac{TP - SMA(TP,n)}{0.015 \times MD} CCI=0.015×MDTPSMA(TP,n)
  • 核心参数:20日周期,阈值±100
  • 适用性
    • 大宗商品期货的极端波动捕捉
    • 股票短线超调反弹交易
  • 局限性
    • 需配合波动率指标过滤虚假突破
  • 风险管理
    • 突破300或跌破-300时警惕反转风险
    • 结合ATR设置1.5倍波动区间止损
2.2.4 Money Flow Index (MFI):资金流量指标
  • 理论依据
    结合价格与成交量的加权动量理论,量化资金流入/流出强度
  • 数学公式
    • 典型价TP = (H+L+C)/3
    • 资金流MF = TP × Volume
    • 资金比率MR = 14日正MF总和 / 14日负MF总和
    • MFI = 100 - (100 / (1 + MR))
  • 核心参数
    • 标准周期:14日
    • 阈值:超买80,超卖20
  • 适用性
    • 识别主力资金异动
    • 验证量价背离信号
  • 局限性
    • 对低价股易产生误判(成交量绝对值干扰)
  • 风险管理
    • MFI顶背离+成交量萎缩时强制止损
    • 突破85时反向开仓需延迟2日确认
2.2.5 Rate of Change (ROC):变化率指标
  • 理论依据
    价格动能守恒原理,反映价格变化的加速度
  • 数学公式
    • R O C = [ ( C l o s e t / C l o s e t − n ) − 1 ] × 100 ROC = [(Close_t / Close_{t-n}) - 1] × 100 ROC=[(Closet/Closetn)1]×100
  • 核心参数
    • 标准周期:12日
    • 动能阈值:±5%为显著变动
  • 适用性
    • 捕捉暴涨暴跌行情
    • 量化市场情绪极端值
  • 局限性
    • 需配合移动平均过滤噪音
  • 风险管理
    • 当ROC超过3倍年化波动率时触发熔断机制

2.3 成交量类指标

2.3.1 On Balance Volume (OBV):能量潮
  • 理论依据
    • 量在价先原理,资金流动方向预示价格趋势
  • 数学公式
    • O B V t = O B V t − 1 + { + V t C l o s e t > C l o s e t − 1 − V t C l o s e t < C l o s e t − 1 0 平盘 OBV_t = OBV_{t-1} + \begin{cases} +V_t & Close_t > Close_{t-1} \\ -V_t & Close_t < Close_{t-1} \\ 0 & \text{平盘} \end{cases} OBVt=OBVt1+ +VtVt0Closet>Closet1Closet<Closet1平盘
  • 核心参数:无固定周期,侧重形态分析
  • 适用性
    • 识别主力资金建仓/派发
    • 验证价格突破的有效性
  • 局限性
    • 受异常成交量干扰较大(如大宗交易)
  • 基本面的结合
    • 大股东减持期间OBV背离需特别关注
  • 风险管理
    • OBV连续3日背离后强制止损
    • 量价背离时仓位不超过1%
2.3.2 Chaikin Money Flow (CMF):蔡金资金流
  • 理论依据
    量价分布理论,通过累计资金流验证价格可信度
  • 数学公式
    • 资金流乘数 = [ ( C l o s e − L o w ) − ( H i g h − C l o s e ) ] / ( H i g h − L o w ) [(Close - Low) - (High - Close)] / (High - Low) [(CloseLow)(HighClose)]/(HighLow)
    • 资金流量 = 资金流乘数 × V o l u m e Volume Volume
    • CMF = 21日资金流量总和 / 21日 V o l u m e Volume Volume总和
  • 核心参数
    • 标准周期:21日
  • 适用性
    • 识别机构资金持续流入标的
    • 验证底部/顶部形态可靠性
  • 局限性
    • 对日内振幅过小的股票失效
  • 风险管理
    • CMF跌破-0.4触发清仓信号
    • 结合OBV背离执行反向操作
2.3.3 Volume Weighted Average Price (VWAP)
  • 理论依据
    市场成本理论,反映特定时段内真实平均交易成本

  • 数学公式

    • VWAP的数学公式可以表示为: V W A P = ∑ ( P r i c e i × V o l u m e i ) ∑ V o l u m e i VWAP = \frac{\sum (Price_i \times Volume_i)}{\sum Volume_i} VWAP=Volumei(Pricei×Volumei)
    • 其中, P r i c e i Price_i Pricei 表示第 i i i 笔交易的价格, V o l u m e i Volume_i Volumei 表示第 i i i 笔交易的成交量。
  • 核心参数

    • 标准周期:日内交易常用1分钟/5分钟
  • 适用性

    • 算法交易执行基准价
    • 识别机构大宗交易时点
  • 局限性

    • 仅适用于日内交易决策
  • 风险管理

    • 价格偏离VWAP±2%触发套利对冲
    • 尾盘30分钟跌破VWAP需强制平仓

2.4 波动类指标

2.4.1 Average True Range (ATR):平均真实波幅
  • 理论依据
    基于价格波动区间理论,反映市场波动能量变化
  • 数学公式
    • T R = max ⁡ ( H − L , ∣ H − C l o s e p r e v ∣ , ∣ L − C l o s e p r e v ∣ ) TR = \max(H-L, |H-Close_{prev}|, |L-Close_{prev}|) TR=max(HL,HCloseprev,LCloseprev)
    • A T R = 1 n ∑ T R ATR = \frac{1}{n}\sum TR ATR=n1TR
  • 核心参数
    • 标准周期:14日
    • 波动阈值:2倍ATR为显著波动信号
  • 适用性
    • 动态调整止损止盈位置
    • 衡量市场恐慌/贪婪程度
  • 局限性
    • 不指示价格方向仅反映波动幅度
  • 基本面的结合
    • 财报季自动调高ATR系数至1.8倍
  • 风险管理
    • 止损距离=入场价±3倍ATR
    • 当日内ATR突破月均值时减仓50%
2.4.2 Bollinger Bands (Bollinger):布林带
  • 理论依据
    • 价格波动服从正态分布,标准差度量波动率
  • 数学公式
    • 中轨 = S M A ( 20 ) SMA(20) SMA(20)
    • 上轨 = S M A ( 20 ) + 2 σ SMA(20) + 2\sigma SMA(20)+2σ
    • 下轨 = S M A ( 20 ) − 2 σ SMA(20) - 2\sigma SMA(20)2σ
  • 核心参数:20日均线,2倍标准差
  • 适用性
    • 震荡行情中的区间交易
    • 趋势中的波动率突破策略
  • 局限性
    • 单边行情中价格沿通道外侧持续运行
  • 风险管理
    • 通道收窄时降低仓位至50%
    • 突破上轨后回踩中轨止损
2.4.3 Keltner Channel (Keltner):凯尔特纳通道
  • 理论依据
    基于波动率通道的突破理论,结合EMA与ATR构建动态区间
  • 数学公式
    • 中轨 = E M A ( 20 ) EMA(20) EMA(20)
    • 上轨 = E M A ( 20 ) + 2 × A T R ( 10 ) EMA(20) + 2×ATR(10) EMA(20)+2×ATR(10)
    • 下轨 = E M A ( 20 ) − 2 × A T R ( 10 ) EMA(20) - 2×ATR(10) EMA(20)2×ATR(10)
  • 核心参数
    • EMA周期:20日
    • ATR周期:10日
  • 适用性
    • 趋势跟踪突破策略
    • 波动率收缩扩张预警
  • 风险管理
    • 通道突破后回撤50%幅度止损
    • 通道斜率<30度时停止开仓
2.4.4 Standard Deviation (StdDev):标准差
  • 理论依据
    正态分布原理,量化价格离散程度
  • 数学公式
    • σ = ∑ ( C l o s e − S M A ) 2 n \sigma = \sqrt{\frac{\sum (Close - SMA)^2}{n}} σ=n(CloseSMA)2
  • 核心参数
    • 标准周期:20日
  • 适用性
    • 期权定价波动率计算
    • 量化策略风险值评估
  • 局限性
    • 需假设正态分布,与实际市场存在偏差
  • 风险管理
    • 波动率突破历史平均值2倍时启动熔断

2.5 复合类指标

2.5.1 Supertrend (Supertrend):超级趋势
  • 理论依据
    • 多因子合成趋势方向,结合波动率动态调整
  • 数学公式
    • 基础线 = ( H i g h + L o w ) / 2 (High + Low)/2 (High+Low)/2
    • 上轨 = 基础线 + 3 × A T R 基础线 + 3×ATR 基础线+3×ATR
    • 下轨 = 基础线 − 3 × A T R 基础线 - 3×ATR 基础线3×ATR
    • 信号:收盘价突破轨道则反转趋势方向
  • 核心参数:ATR周期10,乘数3
  • 适用性
    • 程序化交易系统
    • 中长线趋势跟踪
  • 风险管理
    • 每次信号转换时重置止损
    • 最大连续亏损次数3次后暂停策略
2.5.2 Alligator (Alligator):鳄鱼线
  • 理论依据
    分形几何理论,通过三线排列识别市场平衡状态
  • 数学公式
    • 颚部线(蓝)= S M M A ( 13 , 8 ) SMMA(13, 8) SMMA(13,8)
    • 牙齿线(红)= S M M A ( 8 , 5 ) SMMA(8, 5) SMMA(8,5)
    • 嘴唇线(绿)= S M M A ( 5 , 3 ) SMMA(5, 3) SMMA(5,3)
      (SMMA为平滑移动平均,参数为周期与偏移量)
  • 核心参数
    • 睡眠期:三线纠缠(鳄鱼休眠)
    • 进食期:三线发散(趋势启动)
  • 适用性
    • 捕捉重大趋势转折点
    • 过滤震荡行情无效信号
  • 风险管理
    • 三线空头排列时禁止逆向操作
    • 价格突破最远平衡线后回撤50%平仓
2.5.3 Triple Exponential Moving Average (TRIX):三重指数平均线
  • 理论依据
    三重EMA平滑过滤短期波动,突出中长期趋势变化
  • 数学公式
    • 单次EMA = E M A ( C l o s e , n ) EMA(Close, n) EMA(Close,n)
    • 三次EMA = E M A ( E M A ( E M A ( C l o s e , n ) ) ) EMA(EMA(EMA(Close, n))) EMA(EMA(EMA(Close,n)))
    • TRIX = 三次 E M A t − 三次 E M A t − 1 三次 E M A t − 1 × 100 \frac{三次EMA_t - 三次EMA_{t-1}}{三次EMA_{t-1}} \times 100 三次EMAt1三次EMAt三次EMAt1×100
  • 核心参数
    • 标准周期:12日
    • 信号线周期:9日(TRIX的EMA)
  • 适用性
    • 捕捉中长期趋势转折点
    • 规避短期市场噪音干扰
  • 局限性
    • 延迟较传统MA更大
    • 需配合成交量确认突破
  • 风险管理
    • TRIX与信号线金叉时,需MACD同步翻红才开仓
    • 连续5日背离强制止损
2.5.4 Donchian Channel (Donchian):唐奇安通道
  • 理论依据
    价格通道突破理论,通过N日最高/低价构建交易区间
  • 数学公式
    • 上轨 = max ⁡ ( H i g h , n ) \max(High, n) max(High,n)
    • 下轨 = min ⁡ ( L o w , n ) \min(Low, n) min(Low,n)
    • 中轨 = ( 上轨 + 下轨 ) / 2 (上轨 + 下轨)/2 (上轨+下轨)/2
  • 核心参数
    • 标准周期:20日
  • 适用性
    • 趋势突破策略(海龟交易法则)
    • 波动率扩张监控
  • 风险管理
    • 突破20日新高后回撤2%止损
    • 连续3日收于中轨下方强制离场

三、全局风险管理原则

3.1 多指标验证机制

  • 指标配置
    • 核心组合:沪深300趋势强度(20日加权移动平均斜率) + 融资融券余额动量(5日指数平滑) + 北向资金净流入占比(3日滚动计算)
    • 极端行情替代指标:涨停板个股采用封单量/流通市值比(阈值>5%)作为流动性验证
  • 执行规则
    • 时间窗口:信号需在2个交易日内连续触发(适配T+1机制)
    • 指标冲突容忍度:6项指标中允许2项背离(适应高波动市场环境)
    • 熔断联动:当沪深300条件风险价值(CVaR)触及7%时,同步验证港股通标的与富时A50期指趋势一致性

3.2 波动率适配策略

  • 动态仓位模型
    P o s i t i o n = A c c o u n t × R i s k % A T R a d j × P r i c e _ M u l t i p l i e r Position = \frac{Account \times Risk\%}{ATR_{adj} \times Price\_Multiplier} Position=ATRadj×Price_MultiplierAccount×Risk%
    其中 A T R a d j ATR_{adj} ATRadj采用修正算法:
    A T R a d j = M A X ( 涨停限制价格 , 前日收盘价 × 1.1 ) − M I N ( 跌停限制价格 , 前日收盘价 × 0.9 ) 当前价格 ATR_{adj} = \frac{MAX(涨停限制价格, 前日收盘价 \times 1.1) - MIN(跌停限制价格, 前日收盘价 \times 0.9)}{当前价格} ATRadj=当前价格MAX(涨停限制价格,前日收盘价×1.1)MIN(跌停限制价格,前日收盘价×0.9)

  • 分级风控

    波动率区间融资仓位上限对冲要求
    ATR<1.5%担保比例≤130%套利策略杠杆≤2倍
    1.5%-3.5%标准两融仓位股指期货对冲≥30%头寸
    ATR>3.5%净头寸≤60%期权组合Delta对冲≥0.6

3.3 黑天鹅事件防护

  • 三级预警体系
    1. 一级预警(中证1000波动指数>40)
      • 股指期货对冲(IC/IM合约Delta中性≥50%)
      • 固定收益资产占比提升至20%(以国债逆回购为主)
    2. 二级预警(北向资金单日净流出>180亿元)
      • 增持50ETF认沽期权(Delta≤-0.7)
      • 商品期货空头对冲(沪铜/螺纹钢合约)
    3. 三级预警(融资盘触及平仓线≥5%市值)
      • 启动流动性应急协议,优先减持质押率>30%的个股
  • 政策响应
    实时监测监管动态(基于NLP的“市场稳定”政策文本分析),当相关表述频率陡增时,自动触发防御性调仓

3.4 跨市场联动监控

  • 关联性监测
    • 股债溢价阈值:当(沪深300盈利率 - 10年期国债收益率)>3.5%时,强制仓位降至70%
    • 汇率联动规则:在岸人民币汇率(USDCNH)20日波动率>1.2%时,限制外资持股超限标的的交易权限
  • 流动性熔断机制
    • 个股量比连续2日<0.3委比>2.0时,启动程序化减仓(挂单量≤市场深度5%)
    • 重大事件前1小时启动弹性点差模型(点差基数×恐慌指数/10)

第二部分:Python 实现方法

1. Tushare数据获取与清洗

关键要点总结

  1. 权限管理:根据策略需求申请对应数据权限(如高频交易需L2行情)
  2. 复权验证:必须通过复权因子反向校验数据准确性
  3. 质量检查:重点监控成交量、价格跳空、数据连续性三大维度
  4. 存储规范Parquet格式优先,避免使用CSV长期存储

1.1 环境配置与API连接

安装与授权

# 安装Tushare库
pip install tushare

# 导入并初始化
import tushare as ts
pro = ts.pro_api('your_token')  # 前往tushare.pro注册获取token

权限说明

  • 基础权限:可获取日线、基本面数据(2000积分)
  • 高级权限:需5000+积分获取分钟级数据、融资融券明细

1.2 核心数据接口调用

示例1:股票日线数据获取

# 获取贵州茅台日线数据(后复权)
df = pro.daily(ts_code="600519.SH", start_date="20230101")

print(df[["trade_date", "open", "high", "low", "close", "vol"]].head())

输出

  trade_date    open     high      low    close       vol
0   20250306  1474.0  1510.20  1472.08  1505.98  42167.64
1   20250305  1472.0  1474.00  1460.10  1466.37  24605.22
2   20250304  1485.0  1486.00  1465.21  1470.11  25211.21
3   20250303  1502.6  1520.99  1481.50  1487.02  31595.66
4   20250228  1485.5  1528.38  1482.00  1500.79  56128.95 

示例2:财务数据获取

# 获取茅台资产负债表
balance = pro.balancesheet(
    ts_code="600519.SH",
    start_date="20200101",
    fields="ann_date,end_date,total_assets, total_liab",  # 资产总计、负债合计
)

print(balance.head())
   ann_date  end_date  total_assets    total_liab
0  20241026  20240930  2.867707e+11  3.908256e+10
1  20240809  20240630  2.792073e+11  5.116245e+10
2  20240427  20240331  2.855245e+11  3.698777e+10
3  20240403  20231231  2.726997e+11  4.904319e+10
4  20231021  20230930  2.620764e+11  3.705763e+10

1.3 专业级数据清洗

步骤1:基础清洗

# 处理缺失值与异常值
df.dropna(subset=["close"], inplace=True)  # 删除无收盘价数据
df = df[df["vol"] > 0]  # 过滤零成交量数据(停牌日)

# 时间格式转换
df["trade_date"] = pd.to_datetime(df["trade_date"], format="%Y%m%d")
df.set_index("trade_date", inplace=True)
# 按时间正序排列
df.sort_index(ascending=True, inplace=True)

步骤2:复权计算验证

# 验证复权正确性:比较复权因子计算的理论价格
from datetime import datetime

# 获取未复权数据
# 使用通用行情接口
df_raw = ts.pro_bar(ts_code="600519.SH", start_date="20230101", adj=None)
df_raw["trade_date"] = pd.to_datetime(df_raw["trade_date"])

# 计算复权因子
df_factor = pro.adj_factor(ts_code="600519.SH", start_date="20230101")
df_factor["trade_date"] = pd.to_datetime(df_raw["trade_date"])

# 合并数据
df_merge = pd.merge(df_raw, df_factor, on="trade_date")

# 验证后复权价格 = 未复权价格 * adj_factor
df_merge["calc_close"] = df_merge["close"] * df_merge["adj_factor"]
print("验证后复权价格")
print(df_merge[["trade_date", "close", "adj_factor", "calc_close"]].tail())

# 获取后复权数据
# 使用通用行情接口
df_fuquoted = ts.pro_bar(ts_code="600519.SH", start_date="20230101", adj="hfq")
df_fuquoted["trade_date"] = pd.to_datetime(df_raw["trade_date"])
print("获取后复权数据")
print(df_fuquoted[["trade_date", "close"]].tail())

输出

验证后复权价格
    trade_date    close  adj_factor    calc_close
519 2023-01-09  1841.20      7.6508  14086.652960
520 2023-01-06  1803.77      7.6508  13800.283516
521 2023-01-05  1801.00      7.6508  13779.090800
522 2023-01-04  1725.01      7.6508  13197.706508
523 2023-01-03  1730.01      7.6508  13235.960508
获取后复权数据
    trade_date     close
519 2023-01-09  14086.65
520 2023-01-06  13800.28
521 2023-01-05  13779.09
522 2023-01-04  13197.71
523 2023-01-03  13235.96

计算结果是 13235.960508,四舍五入后一致,则验证通过。

通过 多维度交叉验证(数据源对比、价格连续性、除权事件反推)确保复权正确。若外部数据匹配且价格走势连续,则复权计算可信。

通用行情接口关键参数

  • adj:复权类型 (None不复权,hfq后复权,qfq前复权)

步骤3:数据质量检查

# 检查数据连续性(剔除节假日停牌)
calendar = pro.trade_cal(exchange="SSE", start_date="20230101")
full_date_range = pd.date_range(start=df.index.min(), end=df.index.max(), freq="D")
missing_dates = full_date_range.difference(df.index)
print(missing_dates.values)

# 异常值检测(3σ原则)
mean, std = df["close"].mean(), df["close"].std()
df["z_score"] = (df["close"] - mean) / std
outliers = df[df["z_score"].abs() > 3]
print(outliers.values)

1.4 数据存储优化

# 使用PyArrow引擎存储为Parquet格式
df.to_parquet(
    path=f"stock-data/600519.SH.parquet",
    engine="pyarrow",
    compression="zstd",
    compression_level=3,
)

# 读取数据
df = pd.read_parquet(
    path=f"stock-data/600519.SH.parquet",
    filters=[("trade_date", ">", pd.to_datetime("20240101", format="%Y%m%d"))],
    columns=["trade_date", "open", "high", "low", "close", "vol"],
)

print(df.head())

输出

               open     high      low    close       vol
trade_date                                              
2024-01-02  1715.00  1718.19  1678.10  1685.01  32156.44
2024-01-03  1681.11  1695.22  1676.33  1694.00  20229.29
2024-01-04  1693.00  1693.00  1662.93  1669.00  21551.07
2024-01-05  1661.33  1678.66  1652.11  1663.36  20242.86
2024-01-08  1661.00  1662.00  1640.01  1643.99  25586.20

说明

需安装pip install pyarrow库支持Parquet存储功能。

进阶请移步:Pandas+PyArrow:股票数据存储 Parquet 入门指引

1.5 特殊场景处理

案例:科创板涨跌停数据修正

# 科创板涨跌幅>20%时强制修正
def correct_price(df):
    df['pct_chg'] = df['close'].pct_change()
    mask = (df['pct_chg'].abs() > 0.2) & (df['name'].str.contains('688'))
    df.loc[mask, 'close'] = df['pre_close'] * (1 + df['pct_chg'].clip(lower=-0.2, upper=0.2))
    return df

常见问题排查

  • 接口返回空数据:检查token权限、股票代码后缀(如.SH / .SZ
  • 数据错位:确保交易日期排序为升序(TA-Lib指标计算依赖正确时序)
  • 复权误差:对比Tushare复权数据与券商客户端数据差异

2. TA-Lib指标计算最佳实践

TA-Lib(Technical Analysis Library)是一个广泛应用于金融数据分析的Python库,支持超150种技术指标(如MACD、KDJ、布林带),适合量化交易和策略回测。

2.1 环境准备

安装库

brew install ta-lib
pip install ta-lib

2.2 常用技术指标实现示例

示例数据准备

import pandas as pd
import numpy as np
import talib
from datetime import datetime


# 读取已存储的 600519.SH 数据
df = pd.read_parquet(
    path=f"stock-data/600519.SH.parquet",
    engine="pyarrow",
    filters=[("trade_date", ">", datetime(2024, 11, 1))],
)

# 数据预处理
df.index.rename("Date", inplace=True)
df.rename(
    columns={
        # 'trade_date': 'Date',
        "open": "Open",
        "high": "High",
        "low": "Low",
        "close": "Close",
        "vol": "Volume",
    },
    inplace=True,
)

df.sort_index(ascending=True, inplace=True)

移动平均线(MA)

# 计算5日简单移动平均
df["MA5"] = talib.SMA(df["Close"], timeperiod=5)
# 计算20日指数移动平均
df["EMA20"] = talib.EMA(df["Close"], timeperiod=20)

相对强弱指数(RSI)

# 计算14日RSI
df["RSI14"] = talib.RSI(df["Close"], timeperiod=14)
# 过滤超买超卖信号
df["Overbought"] = (df["RSI14"] > 70).astype(int)
df["Oversold"] = (df["RSI14"] < 30).astype(int)

移动平均收敛发散指标(MACD)

# 计算MACD线、信号线、柱状图
df["MACD"], df["MACD_Signal"], df["MACD_Hist"] = talib.MACD(
    df["Close"], fastperiod=12, slowperiod=26, signalperiod=9
)

2.3 量价因子实现示例

能量潮指标(OBV)

# 向量化计算OBV(无需循环)
df["Price_Change"] = df["Close"].diff()
df["OBV"] = (np.sign(df["Price_Change"]) * df["Volume"]).cumsum()

波动率因子

# 计算20日年化波动率
df["Returns"] = df["Close"].pct_change()
df["Volatility"] = df["Returns"].rolling(20).std() * np.sqrt(252)

2.4 最佳实践建议

  1. 数据预处理

    • 确保时间序列按升序排列(df.sort_index(inplace=True)
    • 处理缺失值(df.ffill(inplace=True)
  2. 向量化操作

    • 优先使用TA-Lib内置函数而非Pandas apply,速度可提升10-100倍
  3. 参数调优

    • 根据策略周期调整参数(如timeperiod=20对应月度趋势)
    • 使用talib.get_function_groups()查看全部支持的指标

2.5 注意事项

  • 数据长度要求:部分指标(如RSI(14))需要至少14个数据点,否则返回NaN
  • 数值精度:TA-Lib要求输入为float64,可用df.astype(np.float64)转换
  • 多因子合并:将同周期指标批量计算,减少I/O消耗
# 批量计算示例
indicators = {
    'SMA20': lambda x: talib.SMA(x, 20),
    'RSI14': lambda x: talib.RSI(x, 14)
}
for name, func in indicators.items():
    df[name] = func(df['close'])

3. mplfinance专业级K线图绘制指南

mplfinance 是一个基于 Matplotlib 的 Python 库,专门用于绘制金融数据图表(如 K 线图、成交量图等)。

最佳实践总结

  • 使用make_addplot()分层叠加指标,避免重复绘图
  • 通过style参数统一视觉风格
  • 对高频数据启用compress_maxamp提升渲染速度
  • 使用mplfinance.original_flavor兼容旧版API代码

3.1 环境准备与数据准备

安装库

pip install mplfinance

数据要求

  • DataFrame必须包含Open, High, Low, Close, Volume列(可自定义名称,需通过参数映射)
  • 索引必须为datetime类型(建议用df.index = pd.to_datetime(df.index)转换)

数据准备

import pandas as pd
import numpy as np
import talib
from datetime import datetime


# 读取已存储的 600519.SH 数据
df = pd.read_parquet(
    path=f"stock-data/600519.SH.parquet",
    engine="pyarrow",
    filters=[("trade_date", ">", datetime(2024, 11, 1))],
)

# 数据预处理
df.index.rename("Date", inplace=True)
df.rename(
    columns={
        # 'trade_date': 'Date',
        "open": "Open",
        "high": "High",
        "low": "Low",
        "close": "Close",
        "vol": "Volume",
    },
    inplace=True,
)

df.sort_index(ascending=True, inplace=True)

3.2 基础K线图绘制

import mplfinance as mpf

my_rc = {
    "font.family": "Arial Unicode MS",  # 设置中文支持字体
    "axes.unicode_minus": False,  # 解决负号显示问题
}

my_style = mpf.make_mpf_style(base_mpf_style="default", rc=my_rc)

# 绘制K线图
mpf.plot(
    df,
    type="candle",
    style=my_style,
    volume=True,
    title="贵州茅台(600519.SH)日K线图",
    ylabel="价格(元)",
    ylabel_lower="成交量(手)",
    datetime_format="%Y-%m-%d",
    figratio=(15, 5),
    savefig=dict(
        fname="./export/kline_600519_SH.png",
        dpi=300,
        bbox_inches="tight",
    ),
)

基础K线图示例

3.3 高级定制技巧

(1)样式自定义

内置样式'default', 'yahoo', 'binance', 'classic'

示例:自定义颜色

my_style = mpf.make_mpf_style(
    marketcolors=mpf.make_marketcolors(
        up="#EB74C3",  # 上涨K线颜色(柔和的玫红色)
        down="#2ECC71",  # 下跌K线颜色(清新的浅绿色)
        edge="inherit",  # K线边框颜色(继承)
        wick="inherit",  # 上下影线颜色(继承)
        volume="inherit",  # 成交量柱状图颜色(继承)
        ohlc="inherit",  # 分时线颜色(继承)
    ),
    mavcolors=["#3498DB", "#9B59B6", "#E67E22"],  # 均线颜色(蓝/紫/橙)
    facecolor="#FFFFFF",  # 图表背景色
    gridcolor="#ECF0F3",  # 网格线颜色(极浅灰)
    gridstyle="--",  # 网格线样式
    y_on_right=False,  # Y轴显示在左侧
    rc={
        "font.family": "Arial Unicode MS",  # 字体设置,支持中文
        "axes.labelcolor": "#2C3E3A",  # 坐标轴标签颜色
        "axes.edgecolor": "#BDC3C7",  # 坐标轴颜色
    },
)


# 绘制K线图
mpf.plot(
    df,
    type="hollow",  # candle
    style=my_style,
    volume=True,
    title="贵州茅台(600519.SH)日K线图",
    ylabel="价格(元)",
    ylabel_lower="成交量(手)",
    figratio=(15, 5),
    mav=(5, 20, 60),  # 自动添加移动平均线
    datetime_format="%Y-%m-%d",
    savefig=dict(
        fname="./export/kline_style_600519_SH.png",
        dpi=300,
        bbox_inches="tight",
    ),
)

自定义样式K线图示例

示例:自定义绘制

# 绘制图表并获取figure和axes对象
fig, axes = mpf.plot(
    df,
    type="candle",  # hollow
    style=my_style,
    volume=True,
    title="贵州茅台(600519.SH)日K线图",
    ylabel="价格(元)",
    ylabel_lower="成交量(手)",
    figratio=(15, 5),
    datetime_format="%Y-%m-%d",
    returnfig=True,
)
# 为所有子图添加网格
for ax in axes:
    ax.grid(True, color="gray", linestyle=":", linewidth=0.5)
# 确定成交量所在的坐标轴(通常为第二个axes)
vol_ax = axes[2] if len(axes) > 1 else axes > [0]
# 获取成交量柱子的容器(BarContainer)
vol_bars = vol_ax.containers[0]
# 遍历每个柱子并设置边框颜色
for i, bar in enumerate(vol_bars.get_children()):
    row = df.iloc[i]
    if row["Close"] >= row["Open"]:
        bar.set_edgecolor(my_style["marketcolors"]["candle"]["up"])
    else:
        bar.set_edgecolor(my_style["marketcolors"]["candle"]["down"])
# 可选:设置成交量柱子填充色为透明,仅显示边框
# for bar in vol_bars.get_children():
#     bar.set_facecolor(None)
# 刷新图像
fig.canvas.draw()
plt.savefig(
    fname="./export/kline_draw_600519_SH.png",
    dpi=300,
    bbox_inches="tight",
)
plt.show()

自定义绘制K线图示例

(2)添加技术指标

示例:叠加移动平均线与MACD

# 计算指标(使用前文TA-Lib计算结果)
df["MA20"] = talib.SMA(df["Close"], 20)
df["MA60"] = talib.SMA(df["Close"], 60)

apd = mpf.make_addplot(
    df[["MA20", "MA60"]],
    secondary_y=False,  # 是否使用副坐标轴
)

# 绘制K线图
mpf.plot(
    df,
    type="hollow",
    style=my_style,
    addplot=apd,
    volume=True,
    title="贵州茅台(600519.SH)日K线图",
    ylabel="价格(元)",
    ylabel_lower="成交量(手)",
    figratio=(15, 5),
    datetime_format="%Y-%m-%d",
    savefig=dict(
        fname="./export/kline_MACD_600519_SH.png",
        dpi=300,
        bbox_inches="tight",
    ),
)

叠加均线示例

(3)标注交易信号

示例:标记买卖点

# 示例:计算布林带
upper_band, middle_band, lower_band = talib.BBANDS(
    df["Close"],
    timeperiod=20,  # 布林带计算周期,默认为20
    nbdevup=2,  # 上轨标准差倍数,默认为2
    nbdevdn=2,  # 下轨标准差倍数,默认为2
    matype=0,  # 移动平均类型,0表示简单移动平均
)

# 将结果添加到 DataFrame 中
df["Upper"] = upper_band
df["Lower"] = lower_band

# 生成信号
df["Buy_Signal"] = df["Close"] < df["Lower"]  # 价格跌破下轨买入
df["Sell_Signal"] = df["Close"] > df["Upper"]  # 价格突破上轨卖出

# 创建买卖信号的散点图数据列
df["Buy_Marker"] = df["Close"][
    df["Buy_Signal"]
]  # 仅在买入信号位置显示收盘价,其他为 NaN
df["Sell_Marker"] = df["Close"][
    df["Sell_Signal"]
]  # 仅在卖出信号位置显示收盘价,其他为 NaN
# 创建 addplot 对象
apd = [
    mpf.make_addplot(df["MA20"]),  # 添加 MA20 线
    mpf.make_addplot(df["MA60"]),  # 添加 MA60 线
    mpf.make_addplot(
        df["Buy_Marker"], type="scatter", marker="^", color="g", markersize=200
    ),  # 买入信号散点
    mpf.make_addplot(
        df["Sell_Marker"], type="scatter", marker="v", color="r", markersize=200
    ),  # 卖出信号散点
]

# 绘制K线图
mpf.plot(
    df,
    type="hollow",
    style=my_style,
    addplot=apd,
    volume=True,
    title="贵州茅台(600519.SH)日K线图",
    ylabel="价格(元)",
    ylabel_lower="成交量(手)",
    figratio=(15, 5),
    datetime_format="%Y-%m-%d",
    savefig=dict(
        fname="./export/kline_Signal_600519_SH.png",
        dpi=300,
        bbox_inches="tight",
    ),
)

标记买卖点示例

3.4 专业级配置

(1)多图组合

价格+成交量+RSI三图布局

# 创建addplot对象,将RSI放在第三个面板(索引2)
apd = mpf.make_addplot(df["RSI14"], panel=2, color="purple", ylabel="RSI")

# 使用mplfinance绘制,启用成交量并指定三个面板
fig, axes = mpf.plot(
    df,
    type="hollow",
    style=my_style,
    addplot=[apd],
    volume=True,
    title="贵州茅台(600519.SH)日K线图",
    ylabel="价格(元)",
    ylabel_lower="成交量(手)",
    figratio=(15, 5),
    panel_ratios=(3, 2, 2),
    datetime_format="%Y-%m-%d",
    returnfig=True,
)

# 在第三个面板(axes[2])中添加RSI的水平参考线
axes[2].axhline(70, ls="--", color="red")
axes[2].axhline(30, ls="--", color="green")
# axes[2].set_ylabel("RSI")

# 刷新图像
fig.canvas.draw()
plt.savefig(
    fname="./export/kline_RSI_600519_SH.png",
    dpi=300,
    bbox_inches="tight",
)
plt.show()

多图组合示例

(2)保存高清图片
mpf.plot(
    df,
    type="candle",
    volume=True,
    savefig=dict(fname="kline_chart.png", dpi=300, bbox_inches="tight"),
)

3.5 常见问题解决

  1. 中文乱码
from matplotlib import rcParams

rcParams["font.family"] = "sans-serif"
rcParams["font.sans-serif"] = ["Arial Unicode MS"]  # 设置中文支持字体
rcParams["axes.unicode_minus"] = False  # 解决负号显示问题

rc = {
    "font.family": "Arial Unicode MS",  # 设置中文支持字体
    "axes.unicode_minus": False,  # 解决负号显示问题
}

my_style = mpf.make_mpf_style(base_mpf_style="default", rc=rc)
  1. 性能优化(10万+数据点):
  • 使用参数compress_maxamp=5压缩数据
  • 设置update_width_config=dict(candle_linewidth=0.5)减少线宽
  1. 时间范围筛选
# 绘制最近100根K线
mpf.plot(df[-100:], type='candle')

3.6 参数说明

  1. 基础参数
参数类型/默认值描述
dataDataFrame必需。包含金融数据的 DataFrame,需包含 Open, High, Low, Close 列,索引必须是时间序列。
typestr (默认: 'candle')图表类型。可选值:'candle'(K 线图)、'ohlc'(OHLC 图)、'line'(折线图)、'renko'(砖形图)、'pnf'(点数图)。
stylestr/dict (默认: 'default')图表样式。内置样式如 'binance''yahoo''charles';也可通过字典自定义颜色。
titlestr (默认: None)图表标题。
ylabelstr (默认: 'Price')价格轴(主图)的标签。
ylabel_lowerstr (默认: 'Volume''Volume (USD)'成交量或其他副图标签。
show_nontradingbool (默认: False)是否显示非交易日(如周末)。
figratiotuple (默认: (10,6))图表宽高比,如 (12,6) 表示宽高比为 12:6。
figscalefloat (默认: 1.0)图表缩放比例,数值越大图表尺寸越大。
returnfigbool (默认: False)是否返回 (fig, axlist) 对象以便后续自定义。
  1. 成交量参数
参数类型/默认值描述
volumebool/dict (默认: False)是否显示成交量。若为字典,可自定义成交量样式(如颜色、位置)。例如:volume={'position': 'lower', 'upcolor': 'g', 'downcolor': 'r'}
volume_panelint (默认: 2)成交量面板的位置(与主图的相对位置)。
  1. 技术指标参数
参数类型/默认值描述
mavint/list (默认: None)移动平均线周期。例如 mav=20mav=(5,20,60) 显示多条均线。
addplotDataFrame/list (默认: None)添加自定义技术指标或图形。需传递一个或多个 pd.DataFramemplfinance.make_addplot() 生成的对象。
panelint (默认: 0)指定 addplot 的指标显示在哪个面板(0 为主图,1 为副图)。
  1. 样式与颜色参数
参数类型/默认值描述
marketcolorsdict自定义颜色,覆盖 style 的默认设置。例如:{'up': '#00FF00', 'down': '#FF0000'}
linecolorstr折线图颜色(仅当 type='line' 时生效)。
mavcolorslist移动平均线颜色列表。例如:mavcolors=['blue', 'orange']
  1. 其他参数
参数类型/默认值描述
savefigstr/dict (默认: None)保存图表到文件。例如:savefig='chart.png'savefig={'fname':'chart.png', 'dpi':300}
datetime_formatstr时间轴格式,如 '%Y-%m-%d'
  • savefig参数列表

    参数名类型默认值描述
    fnamestr必填保存路径或文件名(如 "plot.png""/path/to/plot.pdf")。
    dpiintfigure.dpi图像分辨率(每英寸点数),默认继承自 Figure 对象的 dpi
    formatstrNone文件格式(如 'png', 'pdf', 'svg')。若 fname 含扩展名,则自动推断格式。
    bbox_inchesstr/NoneNone裁剪边框。设为 'tight' 自动去除多余空白。
    pad_inchesfloat0.1bbox_inches='tight' 时,填充边距(英寸)。
    transparentboolFalse是否设置背景透明(适用于 PNG、SVG 等格式)。
    facecolorstr'white'图像背景颜色(如 'none' 表示透明,或 '#FFFFFF')。
    edgecolorstr'white'图像边框颜色。
    orientationstr'portrait'方向:'portrait'(纵向)或 'landscape'(横向)。
    metadatadictNone嵌入文件的元数据(如 PDF 的 {'Creator': 'My App', 'Title': 'Plot'})。
  • datetime_format参数列表

    代码说明示例
    %Y四位年份2023
    %y两位年份23
    %m两位月份04 (四月)
    %d两位日期07
    %H24小时制小时15
    %I12小时制小时03
    %M分钟05
    %S09
    %a缩写星期名Mon
    %b缩写月份名Apr
    %p上午/下午(AM/PM)PM

风险提示与免责声明
本文内容基于公开信息研究整理,不构成任何形式的投资建议。历史表现不应作为未来收益保证,市场存在不可预见的波动风险。投资者需结合自身财务状况及风险承受能力独立决策,并自行承担交易结果。作者及发布方不对任何依据本文操作导致的损失承担法律责任。市场有风险,投资须谨慎。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

船长Q

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值