3 分钟快速生成代码
输入想法,AI 即刻生成可运行代码
在 PTrade 量化交易平台中,开发者可以直接使用内置的技术指标计算函数 get_MACD 来快速获取异同移动平均线指标的数据,避免自行编写平滑移动平均逻辑。本文将详细介绍 get_MACD 接口的使用方法,并提供一个完整的 MACD 金叉死叉交易策略实现。
get_MACD 接口说明get_MACD(close, short=12, long=26, m=9)
close:收盘价的时间序列数据,要求为 numpy.ndarray 类型。short:快线(短周期),整型,默认值为 12。long:慢线(长周期),整型,默认值为 26。m:Signal 线(移动平均周期),整型,默认值为 9。返回三个 numpy.ndarray 类型的时间序列:
macdDIF_data:DIF 线(快线与慢线的差值)macdDEA_data:DEA 线(DIF 的移动平均线/Signal 线)macd_data:MACD 柱状图数值import numpy as np
def initialize(context):
# 设置标的股票
g.security = '600570.SS' # 恒生电子
set_universe(g.security)
# MACD 参数配置
g.short = 12
g.long = 26
g.m = 9
def handle_data(context, data):
security = g.security
# 获取过去100个交易日的收盘价数据(以numpy数组形式返回)
history_df = get_history(100, frequency='1d', field='close', security_list=security)
if history_df is None or history_df.empty:
return
close_data = history_df['close'].values
# 调用 PTrade 内置 get_MACD 函数计算指标
macdDIF_data, macdDEA_data, macd_data = get_MACD(close_data, g.short, g.long, g.m)
# 获取前一周期和当前周期的 DIF 与 DEA
prev_dif = macdDIF_data[-2]
prev_dea = macdDEA_data[-2]
curr_dif = macdDIF_data[-1]
curr_dea = macdDEA_data[-1]
# 获取可用现金及持仓
cash = context.portfolio.cash
position = get_position(security)
# 判断金叉:前一周期 DIF <= DEA 且 当前周期 DIF > DEA
if prev_dif <= prev_dea and curr_dif > curr_dea:
if cash > 0:
order_value(security, cash)
log.info("触发 MACD 金叉买入信号,股票代码: %s" % security)
# 判断死叉:前一周期 DIF >= DEA 且 当前周期 DIF < DEA
elif prev_dif >= prev_dea and curr_dif < curr_dea:
if position.amount > 0:
order_target(security, 0)
log.info("触发 MACD 死叉卖出信号,股票代码: %s" % security)
get_history 获取的数量不低于 100 根。get_MACD 接收的 close 参数必须为 numpy.ndarray 类型,使用 get_history 获取 DataFrame 后需调用 .values 提取数组。limit_price),需对价格进行适当的舍入处理。