3 分钟快速生成代码
输入想法,AI 即刻生成可运行代码
在量化交易中,顺势指标(Commodity Channel Index, CCI) 是一种常用于判断标的超买超卖以及趋势突破的技术指标。PTrade 量化平台提供了内置函数 get_CCI,可以帮助开发者高效获取 CCI 计算结果。
get_CCI 函数用于获取顺势指标 CCI 的计算结果,仅在回测与交易模块可用。
get_CCI(high, low, close, n=14)
numpy.ndarray): 最高价的时间序列数据。numpy.ndarray): 最低价的时间序列数据。numpy.ndarray): 收盘价的时间序列数据。int): 计算周期,默认值为 14。numpy.ndarray。CCI 指标以 0 为中心,通常在 +100 到 -100 之间波动:
以下是在 PTrade 平台运行的完整 CCI 顺势突破策略代码:
def initialize(context):
# 设置目标交易股票
g.security = '600570.SS' # 恒生电子
set_universe(g.security)
# 设置策略参数:CCI计算周期
g.cci_period = 14
def handle_data(context, data):
security = g.security
# 1. 获取过去 100 天的历史最高价、最低价和收盘价
df = get_history(100, '1d', ['high', 'low', 'close'], security_list=security, fq=None, include=False)
if df.empty:
return
high_data = df['high'].values
low_data = df['low'].values
close_data = df['close'].values
# 2. 调用 PTrade API 计算 CCI
cci_series = get_CCI(high_data, low_data, close_data, n=g.cci_period)
# 取最新及上一个周期的 CCI 值用于突破判断
current_cci = cci_series[-1]
previous_cci = cci_series[-2]
# 获取当前可用资金与持仓
cash = context.portfolio.cash
position_amount = get_position(security).amount
# 3. 交易逻辑判断
# 向上突破 +100,买入信号
if previous_cci <= 100 and current_cci > 100 and position_amount == 0:
order_value(security, cash)
log.info("CCI突破+100,买入 %s,当前CCI: %.2f" % (security, current_cci))
# 向下跌破 0,卖出平仓信号
elif current_cci < 0 and position_amount > 0:
order_target(security, 0)
log.info("CCI跌破0,卖出 %s,当前CCI: %.2f" % (security, current_cci))
get_history 时,传入的数据长度应大于 CCI 的周期 n,建议至少获取 n * 2 以上的数据以保证指标计算稳定。limit_price),需注意股票价格需保留两位小数,避免因精度问题导致报单失败。