Py学习  »  Python

纯 Python 实现!pine-ta 库让你轻松驾驭 Pine Script 技术指标

数据科学实战 • 1 年前 • 717 次点击  

欢迎加入专注于财经数据与量化投研的【数据科学实战】知识星球!在这里,您将获取持续更新的《财经数据宝典》和《量化投研宝典》,这两部宝典相辅相成,为您在量化投研道路上提供明确指引。 《量化投研宝典》精选了业内持续维护且实用性强的开源工具(Backtrader、Qlib、VeighNa等),配合详细教程与代码示例,帮助您快速构建量化策略;《财经数据宝典》则汇集了多年财经数据维护经验,全面介绍从 AKShare、Tushare 到 Wind、iFind 等国内外数据源,并附有丰富的使用技巧。 无论您是量化投资新手还是经验丰富的研究者,星球社区都能帮您少走弯路,事半功倍,共同探索数据驱动的投资世界!

引言

在量化交易的世界里,技术指标就像是交易者的指南针,帮助我们在市场波动中找到方向。如果你既熟悉 TradingView 的 Pine Script,又热爱 Python 编程,那么今天要介绍的 pine-ta 库绝对会让你眼前一亮!

2025 年 6 月 17 日,一个名为 pine-ta 的纯 Python 技术指标库横空出世。它不需要安装复杂的 C 扩展,也不依赖 TA-Lib,仅凭 pandas 和 NumPy 就能实现 Pine Script 风格的技术指标计算。无论你是想构建自动化交易策略,还是进行市场趋势分析,pine-ta 都能让你事半功倍。

什么是 pine-ta?

pine-ta 是由 Huzaifa Zahoor 开发的一个开源 Python 库,它的设计理念是将 Pine Script 中常用的技术指标完美移植到 Python 环境中。这个库的特点包括:

  • 纯 Python 实现:只依赖 pandas 和 NumPy,无需安装 C 扩展
  • Pine Script 兼容:指标计算逻辑与 TradingView 中的 Pine Script 保持一致
  • 简洁的 API:通过单一的 TechnicalIndicators 类提供所有功能
  • 丰富的指标支持:包括 RSI、MACD、ADX、ATR、布林带、随机指标等

快速上手

安装

安装 pine-ta 非常简单,只需一行命令:

pip install pine-ta

基础使用示例

让我们通过一个简单的例子来看看如何使用 pine-ta 计算 RSI 和 MACD 指标:

import pandas as pd
from pine_ta import TechnicalIndicators

# 创建示例 OHLC 数据
df = pd.DataFrame({
    'open': [100102101103104],
    'high': [102103102104105],
    'low': [9910099101102],
    'close': [101102100103104],
    'volume': [10001200110013001400]
})

# 计算 RSI(相对强弱指标)
df['rsi'] = TechnicalIndicators.rsi(df, period=14)

# 计算 MACD(移动平均收敛散度)
df['macd'], df['signal'], df['hist'] = TechnicalIndicators.macd(df)

print(df)

核心技术指标详解

1. RSI(相对强弱指标)

RSI 是衡量价格动量的经典指标,pine-ta 的实现使用了 Pine Script 的 RMA(递归移动平均)算法:

def rsi(df, period=14):
    # 计算价格变化
    delta = df["close"].diff()
    
    # 分离涨跌幅
    gains = delta.where(delta > 00)  # 上涨幅度
    losses = -delta.where(delta 00)  # 下跌幅度
    
    # 计算平均涨跌幅(使用指数加权移动平均)
    avg_gains = gains.ewm(alpha=1 / period, adjust=False).mean()
    avg_losses = losses.ewm(alpha=1 / period, adjust=False).mean()
    
    # 计算 RSI
    rs = avg_gains / avg_losses
    rsi = 100 - (100 / (1 + rs))
    
    # 处理特殊情况
    rsi = rsi.fillna(0).replace([float("inf"), -float("inf")], 100)
    
    return rsi

2. 布林带(Bollinger Bands)

布林带是识别超买超卖的重要工具,pine-ta 支持多种移动平均类型:

# 计算布林带
basis, upper, lower = TechnicalIndicators.bollinger_bands(
    df, 
    length=20,  # 周期
    mult=2      # 标准差倍数
)

# 添加到数据框
df['bb_basis'] = basis  # 中轨
df['bb_upper'] = upper  # 上轨
df['bb_lower'] = lower  # 下轨

3. ADX(平均趋向指数)

ADX 用于判断趋势强度,是趋势跟踪策略的核心指标:

# 计算 ADX
df['adx' ] = TechnicalIndicators.adx(df, period=14)

# ADX 解读
# ADX < 25:趋势较弱
# 25 <= ADX < 50:趋势中等
# ADX >= 50:趋势很强

实战应用案例

案例 1:构建简单的 RSI 交易策略

import pandas as pd
from pine_ta import TechnicalIndicators

def rsi_strategy(df, rsi_period=14, oversold=30, overbought=70):
    """
    基于 RSI 的简单交易策略
    - RSI < 30:超卖,买入信号
    - RSI > 70:超买,卖出信号
    """

    # 计算 RSI
    df['rsi'] = TechnicalIndicators.rsi(df, period=rsi_period)
    
    # 生成交易信号
    df['signal'] = 0  # 初始化信号列
    df.loc[df['rsi'] < oversold, 'signal'] = 1    # 买入信号
    df.loc[df['rsi'] > overbought, 'signal'] = -1  # 卖出信号
    
    return df

# 使用示例
# 假设你已经有了股票数据
trading_df = rsi_strategy(your_stock_df)
buy_signals = trading_df[trading_df['signal'] == 1]
sell_signals = trading_df[trading_df['signal'] == -1]

案例 2:多指标组合策略

def multi_indicator_strategy(df):
    """
    组合多个技术指标的交易策略
    """

    # 计算各种指标
    df['rsi'] = TechnicalIndicators.rsi(df, period=14)
    df['macd'], df['signal'], _ = TechnicalIndicators.macd(df)
    df['adx'] = TechnicalIndicators.adx(df, period=14)
    
    # 定义买入条件
    buy_conditions = (
        (df['rsi'] 40) &          # RSI 显示超卖
        (df['macd'] > df['signal']) &   # MACD 金叉
        (df['adx'] > 25)            # 存在明显趋势
    )
    
    # 定义卖出条件
    sell_conditions = (
        (df['rsi'] > 60) &          # RSI 显示超买
        (df['macd'] < df['signal'])    # MACD 死叉
    )
    
    # 生成信号
    df['action'] = 'hold'
    df.loc[buy_conditions, 'action'] = 'buy'
    df.loc[sell_conditions, 'action'] = 'sell'
    
    return df

pine-ta 的优势

  1. 无依赖困扰:不像 TA-Lib 需要编译 C 扩展,pine-ta 是纯 Python 实现,安装即用

  2. Pine Script 兼容:如果你熟悉 TradingView,可以无缝迁移你的策略到 Python

  3. 性能优异:基于 pandas 和 NumPy 的向量化计算,处理大量数据也游刃有余

  4. 开源透明:MIT 协议,代码完全开放,你可以查看每个指标的具体实现

总结

pine-ta 为 Python 量化交易生态系统带来了一股清新之风。它巧妙地将 Pine Script 的简洁性与 Python 的强大功能结合在一起,让技术指标的计算变得前所未有的简单。

无论你是量化交易新手还是经验丰富的开发者,pine-ta 都能帮助你更高效地实现交易策略。它的纯 Python 实现、Pine Script 兼容性以及简洁的 API 设计,使其成为 2025 年最值得关注的 Python 交易库之一。

如果你正在寻找一个轻量级、易用且功能强大的技术指标库,pine-ta 绝对值得一试。现在就开始使用它,让你的 Python 交易策略更上一层楼!

参考文章

加入专注于财经数据与量化投研的知识星球【数据科学实战】,获取完整研究解析、详细回测框架代码实现和完整策略逻辑实操指南。

    财经数据与量化投研知识社区

    核心权益如下:

    1. 赠送《财经数据宝典》完整文档,汇集多年财经数据维护经验
    2. 赠送《量化投研宝典》完整文档,汇集多年量化投研领域经验
    3. 赠送《PyBroker-入门及实战》视频课程,手把手学习量化策略开发
    4. 每日分享高质量量化投研文章、代码和相关资料
    5. 定期更新高频财经数据
    6. 参与年度不少于 10 次专属直播与录播课程
    7. 与核心开发者直接交流,解决实际问题
    8. 获取专业微信群交流机会和课程折扣

    星球已有丰富内容积累,包括量化投研论文、财经高频数据、 PyBroker 视频教程、定期直播、数据分享和答疑解难。适合对量化投研和财经数据分析有兴趣的学习者及从业者。欢迎加入我们!

    好文推荐

    1. 用 Python 打造股票预测系统:Transformer 模型教程(一)

    2. 用 Python 打造股票预测系统:Transformer 模型教程(二)

    3. 用 Python 打造股票预测系统:Transformer 模型教程(三)

    4. 用 Python 打造股票预测系统:Transformer 模型教程(完结)

    5. 揭秘隐马尔可夫模型:因子投资的制胜武器

    6. YOLO 也能预测股市涨跌?计算机视觉在股票市场预测中的应用

    7. 金融 AI 助手:FinGPT 让你轻松掌握市场分析

    8. 量化交易秘籍:为什么专业交易员都在用对数收益率?

    9. Python 量化投资利器:Ridge、Lasso 和 Elastic Net 回归详解

    10. 掌握金融波动率模型:完整 Python 实现指南

    好书推荐

    《Python编程:从入门到实践(第3版)》是一本广受欢迎的 Python 入门经典教材,由经验丰富的程序员 Eric Matthes 编写。该书采用循序渐进的教学方式,从基础语法讲解到实战项目开发,内容编排合理,实例丰富,语言通俗易懂。全书配有大量练习题和完整项目实战,包括数据可视化、网络爬虫、Web 应用开发等,让读者在实践中掌握编程技巧。第3版还增加了 f-string、海龟绘图等最新的 Python 特性内容。这本书不仅适合零基础读者入门学习,也非常适合想系统掌握 Python 的编程爱好者以及数据分析、人工智能等领域的学习者。它不仅教授编程知识,更注重培养读者的编程思维,是一本非常值得投资的 Python 学习指南。


    Python社区是高质量的Python/Django开发社区
    本文地址:http://www.python88.com/topic/183903