千问 利用整理形态中的上升旗形买入,当股价跌破5日均线时卖出,编写一个能在JoinQuant量化交易平台上运行的交易策略,要求编写Python代码。
以下是在 JoinQuant(聚宽)量化交易平台 上运行的 Python 交易策略代码,该策略基于 上升旗形整理形态 进行买入,并在 股价跌破5日均线时卖出。
由于“上升旗形”属于技术分析中的图表形态,无法直接通过简单指标判断,因此我们采用一种近似识别方法:
- 旗形前有明显上涨(旗杆)
- 随后进入窄幅横盘或轻微下跌(旗面)
- 成交量在旗面阶段萎缩
本策略将用以下逻辑近似识别上升旗形:
✅ 策略逻辑说明:
- 筛选条件(每日全市场扫描):
-
过去 N 日(如 10 日)内存在一段快速上涨(例如涨幅 > 15%)
-
随后 M 日(如 5 日)进入横盘整理(最高价与最低价差 0:
continueif is_rising_flag_pattern(stock, context):
# 计算可用资金,单票全仓(简化)
available_cash = context.portfolio.available_cash
if available_cash > 0:
order_value(stock, available_cash)
g.holding_stocks.add(stock)
log.info(f"买入 {stock},识别到上升旗形")
-
获取过滤后的股票池
def get_stock_list(context):
# 获取所有A股
stocks = list(get_all_securities([‘stock’], date=context.current_dt).index)
# 剔除ST
stocks = [s for s in stocks if not is_st_stock(s)]
# 剔除停牌
stocks = [s for s in stocks if not is_suspended(s)]
# 剔除上市不足60天的新股
stocks = [s for s in stocks if (context.current_dt - get_security_info(s).start_date).days > 60]
return stocks
判断是否为ST股票
def is_st_stock(stock):
return ‘ST’ in get_security_info(stock).display_name
判断是否停牌
def is_suspended(stock):
return get_current_data()[stock].paused
判断是否符合上升旗形(近似)
def is_rising_flag_pattern(stock, context):
total_days = g.flag_pole_days + g.flag_consolidate_days
try:
h = attribute_history(stock, total_days + 5, ‘1d’, [‘close’, ‘high’, ‘low’, ‘volume’], skip_paused=False)
except:
return False
if len(h) = pole_min_return
pole_return = (pole_data['close'][-1] - pole_data['close']) / pole_data['close']
if pole_return g.consolidate_max_range:
return False
# 3. 旗面成交量萎缩
pole_vol_avg = pole_data['volume'].mean()
flag_vol_avg = flag_data['volume'].mean()
if pole_vol_avg == 0:
return False
if flag_vol_avg > pole_vol_avg * g.volume_shrink_ratio:
return False
# 4. 当前价格突破旗面上沿(即今日收盘价 > 旗面最高价)
current_price = get_current_data()[stock].last_price
if current_price <= flag_high:
return False
return True
📌 注意事项:
- 形态识别是近似:真正的“旗形”需人工看图确认,程序只能通过价格/成交量统计特征模拟。
- 参数可调:g.pole_min_return、g.consolidate_max_range 等可根据回测效果优化。
- 仅适用于日线级别:本策略按日频交易,适合中短线。
- 风险提示:该策略未包含止损、仓位管理等高级风控,实盘需谨慎。
✅ 如何在聚宽使用:
- 登录 JoinQuant 聚宽官网
- 新建策略 → 粘贴上述代码
- 设置回测时间(建议至少1年以上)
- 运行回测并观察收益、胜率、最大回撤等指标
如需加入多因子过滤、动态仓位、止盈机制等,可进一步扩展。
需要我帮你加上 止盈 或 多股票分散持仓 功能吗?
更多推荐





所有评论(0)