3 分钟快速生成代码
输入想法,AI 即刻生成可运行代码
在 QMT(迅投)量化交易平台中,TA_Lib(简称 talib)是平台默认内置的第三方技术分析库(当前内置版本一般为 0.4.17)。它包含了大量常用的技术指标(如 MACD, RSI, KDJ 等)和 K 线形态识别函数。
关于 talib.MACD() 函数以及整个 talib 库的使用说明,您可以通过以下几种途径查看和学习:
TA-Lib 是一个非常标准的开源 Python 库,它的语法在所有 Python 环境中都是通用的。您可以直接访问其官方文档或中文翻译网站:
您可以在 QMT 的策略编辑器中,利用 Python 的 help() 函数或打印 __doc__ 属性来直接在日志输出窗口查看函数说明。
#coding:gbk
import talib
def init(ContextInfo):
# 打印 MACD 函数的官方英文使用说明
print(talib.MACD.__doc__)
def handlebar(ContextInfo):
pass
talib.MACD() 的标准语法如下:
macd, macdsignal, macdhist = talib.MACD(close_array, fastperiod=12, slowperiod=26, signalperiod=9)
在 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() 中进行计算。