问题描述
请问是否有一个可以直接计算各种技术指标的库啊,或者可以根据price,volume的变化获取对应技术指标的函数库啊?
解决方案
在 JoinQuant(聚宽)平台上,有多种方式可以直接获取或计算各种技术指标。平台不仅内置了丰富的技术分析函数库和因子库,还支持量化界最常用的第三方技术指标库。以下是三种最常用的方法:
方法一:使用聚宽内置的 jqlib.technical_analysis 库
聚宽官方为了方便用户,基于通达信、东方财富、同花顺等的公式,封装了一个技术分析指标库。你可以直接导入并调用这些函数。
使用示例:
# 导入技术分析库
from jqlib.technical_analysis import *
# 定义股票池列表
security_list = ['000001.XSHE', '000002.XSHE']
# 计算并输出 GDX (济安线) 值
gdx_jax, gdx_ylx, gdx_zcx = GDX(security_list, check_date='2017-01-04', N=30, M=9)
for stock in security_list:
print(f"{stock} 济安线: {gdx_jax[stock]}")
注:你可以通过在研究环境中输入 函数名?(例如 GDX?)来查看具体指标的计算公式和参数说明。
方法二:使用聚宽因子库 jqfactor 获取技术因子
聚宽的因子库中已经预先计算好了大量的技术指标因子(如 MACD、BOLL、EMA 等),你可以直接通过 get_factor_values 函数获取历史的指标数值,无需自己手动计算。
支持的常见技术因子包括:
MACDC:平滑异同移动平均线boll_down/boll_up:布林线下轨/上轨EMA5/EMAC10等:指数移动均线MFI14:资金流量指标
使用示例:
from jqfactor import get_factor_values
# 获取平安银行 2023-01-01 到 2023-01-10 的 MACD 和 BOLL 上轨数据
factor_data = get_factor_values(
securities=['000001.XSHE'],
factors=['MACDC', 'boll_up'],
start_date='2023-01-01',
end_date='2023-01-10'
)
# 查看 MACD 数据
print(factor_data['MACDC'])
方法三:使用第三方库 TA-Lib (推荐)
TA-Lib 是量化交易领域最著名、最广泛使用的技术分析库,包含了 150 多种技术指标(如 MACD, RSI, KDJ, ATR 等)。JoinQuant 环境中已经预装了该库。
使用思路:
先通过 get_price 或 attribute_history 获取股票的 close, high, low, volume 等基础数据,然后将其转换为 numpy.ndarray 传入 talib 函数中计算。
使用示例:
import jqdata
import talib
import numpy as np
def initialize(context):
g.security = '000001.XSHE'
run_daily(market_open, time='every_bar')
def market_open(context):
# 获取过去 35 天的收盘价数据
close_data = attribute_history(g.security, 35, '1d', ['close'])
close_prices = close_data['close'].values
# 确保数据足够计算指标(例如 MACD 默认需要 33 天以上数据)
if len(close_prices) > 33:
# 计算 MACD
macd, macdsignal, macdhist = talib.MACD(close_prices, fastperiod=12, slowperiod=26, signalperiod=9)
# 获取最新一天的 MACD 柱状值
current_macdhist = macdhist[-1]
print(f"当前 MACD 柱状值为: {current_macdhist}")
# 计算 RSI (14日)
rsi = talib.RSI(close_prices, timeperiod=14)
print(f"当前 RSI 值为: {rsi[-1]}")
总结
- 如果需要现成的因子数值用于选股或多因子模型,推荐使用
jqfactor。 - 如果需要国内炒股软件特有的指标(如济安线等),推荐使用
jqlib.technical_analysis。 - 如果需要在策略中灵活计算标准技术指标(如 MACD, KDJ, RSI),强烈推荐使用
TA-Lib。