以下是在 JoinQuant(聚宽)量化交易平台 上运行的 Python 交易策略代码,该策略基于 上升旗形整理形态 进行买入,并在 股价跌破5日均线时卖出。

由于“上升旗形”属于技术分析中的图表形态,无法直接通过简单指标判断,因此我们采用一种近似识别方法:

  • 旗形前有明显上涨(旗杆)
  • 随后进入窄幅横盘或轻微下跌(旗面)
  • 成交量在旗面阶段萎缩

本策略将用以下逻辑近似识别上升旗形:

✅ 策略逻辑说明:

  1. 筛选条件(每日全市场扫描):
    • 过去 N 日(如 10 日)内存在一段快速上涨(例如涨幅 > 15%)

    • 随后 M 日(如 5 日)进入横盘整理(最高价与最低价差 0:
      continue

      if 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

📌 注意事项:

  1. 形态识别是近似:真正的“旗形”需人工看图确认,程序只能通过价格/成交量统计特征模拟。
  2. 参数可调:g.pole_min_return、g.consolidate_max_range 等可根据回测效果优化。
  3. 仅适用于日线级别:本策略按日频交易,适合中短线。
  4. 风险提示:该策略未包含止损、仓位管理等高级风控,实盘需谨慎。

✅ 如何在聚宽使用:

  1. 登录 JoinQuant 聚宽官网
  2. 新建策略 → 粘贴上述代码
  3. 设置回测时间(建议至少1年以上)
  4. 运行回测并观察收益、胜率、最大回撤等指标

如需加入多因子过滤、动态仓位、止盈机制等,可进一步扩展。

需要我帮你加上 止盈 或 多股票分散持仓 功能吗?

Logo

小龙虾开发者社区是 CSDN 旗下专注 OpenClaw 生态的官方阵地,聚焦技能开发、插件实践与部署教程,为开发者提供可直接落地的方案、工具与交流平台,助力高效构建与落地 AI 应用

更多推荐