问题描述
如:talib.MACD( )函数语法的使用方法,在哪里可以看到使用说明
或者 talib.这个库的使用说明
解决方案
在 QMT(迅投)量化交易平台中,TA_Lib(简称 talib)是平台默认内置的第三方技术分析库(当前内置版本一般为 0.4.17)。它包含了大量常用的技术指标(如 MACD, RSI, KDJ 等)和 K 线形态识别函数。
关于 talib.MACD() 函数以及整个 talib 库的使用说明,您可以通过以下几种途径查看和学习:
1. 官方文档与网络资源
TA-Lib 是一个非常标准的开源 Python 库,它的语法在所有 Python 环境中都是通用的。您可以直接访问其官方文档或中文翻译网站:
- TA-Lib 英文官方文档: https://mrjbq7.github.io/ta-lib/
- 国内量化社区: 在各大技术博客(如 CSDN、知乎)或量化社区搜索“Python talib 使用大全”,可以找到非常详尽的中文参数说明。
2. 在 QMT 编辑器中使用 Python 内置函数查看
您可以在 QMT 的策略编辑器中,利用 Python 的 help() 函数或打印 __doc__ 属性来直接在日志输出窗口查看函数说明。
#coding:gbk
import talib
def init(ContextInfo):
# 打印 MACD 函数的官方英文使用说明
print(talib.MACD.__doc__)
def handlebar(ContextInfo):
pass
3. talib.MACD() 的标准语法与 QMT 结合示例
talib.MACD() 的标准语法如下:
macd, macdsignal, macdhist = talib.MACD(close_array, fastperiod=12, slowperiod=26, signalperiod=9)
- close_array: 收盘价序列(必须是 numpy.ndarray 格式,且数据类型通常要求为 float64)。
- fastperiod: 快线周期,默认 12。
- slowperiod: 慢线周期,默认 26。
- signalperiod: 信号线周期,默认 9。
- 返回值: 返回三个数组,分别是 DIF(快线)、DEA(慢线/信号线)和 MACD柱(红绿柱)。
在 QMT 中的完整使用示例:
#coding:gbk
import talib
import numpy as np
def init(ContextInfo):
# 设置股票池,例如平安银行
ContextInfo.set_universe(['000001.SZ'])
def handlebar(ContextInfo):
# 获取当前股票池
stock_list = ContextInfo.get_universe()
# 获取最近 100 天的收盘价数据
# 返回的是 dict,key 为股票代码,value 为价格 list
history_data = ContextInfo.get_history_data(100, '1d', 'close')
for stock in stock_list:
if stock in history_data:
close_list = history_data[stock]
# 确保数据长度足够计算 MACD(通常需要大于 slowperiod + signalperiod)
if len(close_list) > 35:
# 将 list 转换为 numpy 数组,并指定类型为 float
close_array = np.array(close_list, dtype=float)
# 调用 talib 计算 MACD
macd, macdsignal, macdhist = talib.MACD(close_array, fastperiod=12, slowperiod=26, signalperiod=9)
# 打印最新一天的 MACD 数据
# 注意:talib 计算结果的前面部分会是 nan(因为周期不够),所以取最后一位 [-1]
print(f"{stock} 最新 MACD 数据:")
print(f"DIF (macd): {macd[-1]:.4f}")
print(f"DEA (macdsignal): {macdsignal[-1]:.4f}")
print(f"MACD柱 (macdhist): {macdhist[-1]:.4f}")
总结:
QMT 完美兼容标准的 talib 库。您只需要通过 ContextInfo.get_history_data 或 ContextInfo.get_market_data 获取到历史价格数据,将其转换为 numpy.array,即可直接传入 talib.MACD() 中进行计算。