3 分钟快速生成代码
输入想法,AI 即刻生成可运行代码
在 ptrade 量化交易平台中,RSI(Relative Strength Index,相对强弱指标)是衡量标的价格变动速度和变化幅度的常用技术指标。通过判断 RSI 的超买(通常 RSI > 70/80)与超卖(通常 RSI < 30/20)状态,可以有效捕捉反转交易机会。
600570.SS)进行周期性检测。get_RSI 计算指定周期(如 6 日)的 RSI 值。get_history:获取过去 N 天的 K 线历史数据(用于提取收盘价数组)。get_RSI(close, n):计算收盘价数组的 RSI 值。传入 close 数据(ndarray 类型)和周期 n,返回 RSI 时间序列。order_value(security, value):按指定金额买入标的。order_target(security, amount):调整标的持仓至目标数量(清仓时设为 0)。以下是基于 ptrade 平台的完整 Python 策略代码:
# ptrade RSI 超买超卖量化策略示例
def initialize(context):
# 设置交易标的
g.security = '600570.SS'
set_universe(g.security)
# 设置 RSI 周期与超买超卖阈值
g.rsi_period = 6
g.oversold = 30 # 超卖阈值(买入)
g.overbought = 70 # 超买阈值(卖出)
def handle_data(context, data):
security = g.security
# 1. 获取过去 100 天的每日收盘价数据(计算 RSI 所需)
df = get_history(100, frequency='1d', field=['close'], security_list=security)
if df is None or len(df) == 0:
return
# 提取 close 数组,转为 numpy.ndarray
close_data = df['close'].values
# 2. 调用 ptrade API 计算 RSI 指标
rsi_series = get_RSI(close_data, n=g.rsi_period)
current_rsi = rsi_series[-1] # 获取最新的 RSI 值
log.info(f"当前 {security} 的 RSI({g.rsi_period}) 值为: {current_rsi:.2f}")
# 获取当前持仓与可用资金
current_position = get_position(security).amount
cash = context.portfolio.cash
# 3. 执行超买超卖交易逻辑
# 超卖触发买入
if current_rsi < g.oversold and current_position == 0:
log.info(f"RSI ({current_rsi:.2f}) < {g.oversold},触发超卖信号,全仓买入!")
order_value(security, cash)
# 超买触发卖出
elif current_rsi > g.overbought and current_position > 0:
log.info(f"RSI ({current_rsi:.2f}) > {g.overbought},触发超买信号,清仓卖出!")
order_target(security, 0)
get_RSI 需要充足的历史收盘价序列,建议使用 get_history 获取至少 50~100 根 K 线,避免因序列过短导致指标计算偏差。initialize 中通过 set_commission() 与 set_slippage() 设置交易摩擦成本,以便评估策略逼近真实交易场景的效果。