# 期魔方双均线策略示例 (Python)
# 说明:当短周期均线上穿长周期均线时买入开多/平空;当短周期均线下穿长周期均线时卖出开空/平多。
# 1. 导入必要模块
from qmf import * # 导入期魔方量化核心库
# 2. 初始化策略参数
def init(context):
# 定义均线周期 (您可根据品种特性调整,常用组合如 5/20, 10/50)
context.fast_period = 5 # 短周期均线 (例如5日)
context.slow_period = 20 # 长周期均线 (例如20日)
context.symbol = “RB888” # 交易合约代码 (例如螺纹主力)
# 订阅行情数据 (K线频率)
subscribe(context.symbol, frequency=”1d”) # 默认日线,可改为”60m”(60分钟)、”15m”等
# 3. 策略主逻辑 (逐根K线运行)
def handle_bar(context, bar):
# 获取历史K线数据
hist_data = history_bars(context.symbol, count=max(context.fast_period, context.slow_period) + 1, frequency=”1d”)
# 计算均线值 (简单移动平均SMA)
fast_ma = sma(hist_data[‘close’], context.fast_period) # 短周期均线
slow_ma = sma(hist_data[‘close’], context.slow_period) # 长周期均线
# 获取当前仓位
pos = get_position(context.symbol, context.account_id)
# 交易信号判断 (金叉死叉)
# 金叉信号:短均线上穿长均线 (当前快线>慢线 且 前一根K线快线<=慢线)
if fast_ma[-1] > slow_ma[-1] and fast_ma[-2] <= slow_ma[-2]:
if pos <= 0: # 若无多头仓位或持有空仓
close_short(context.symbol, volume=abs(pos)) # 先平空仓
buy_open(context.symbol, volume=1) # 再开多仓 (按1手示例)
# 死叉信号:短均线下穿长均线
elif fast_ma[-1] < slow_ma[-1] and fast_ma[-2] >= slow_ma[-2]:
if pos >= 0: # 若无空头仓位或持有多仓
close_long(context.symbol, volume=pos) # 先平多仓
sell_open(context.symbol, volume=1) # 再开空仓
# === 辅助函数 (简单移动平均) ===
def sma(series, period):
return series.rolling(window=period).mean()





请登录后查看回复内容