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

引言

在量化交易的世界里,技术指标就像是交易者的指南针,帮助我们在市场波动中找到方向。如果你既熟悉 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 指标:

importpandasaspd frompine_taimportTechnicalIndicators # 创建示例 OHLC 数据 df = pd.DataFrame({ 'open': [100,102,101,103,104], 'high': [102,103,102,104,105], 'low': [99,100,99,101,102], 'close': [101,102,100,103,104], 'volume': [1000,1200,1100,1300,1400] }) # 计算 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(递归移动平均)算法:

defrsi(df, period=14): # 计算价格变化 delta = df["close"].diff() # 分离涨跌幅 gains = delta.where(delta >0,0) # 上涨幅度 losses = -delta.where(delta <0,0) # 下跌幅度 # 计算平均涨跌幅(使用指数加权移动平均) 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) returnrsi

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 交易策略

importpandasaspd frompine_taimportTechnicalIndicators defrsi_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# 卖出信号 returndf # 使用示例 # 假设你已经有了股票数据 trading_df = rsi_strategy(your_stock_df) buy_signals = trading_df[trading_df['signal'] ==1] sell_signals = trading_df[trading_df['signal'] ==-1]

案例 2:多指标组合策略

defmulti_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' returndf

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 学习指南。