markdown复制## 1. 策略核心逻辑解析
上升旗形是技术分析中常见的持续形态,通常出现在强势上涨行情的中途。其核心特征是:
- 旗杆:前期快速上涨形成的近乎垂直的价格走势
- 旗面:价格小幅回调形成的向下倾斜的平行通道
- 成交量:旗杆阶段放量,旗面阶段缩量
在JoinQuant平台实现该策略需要三个关键判断:
1. 形态识别:通过20日最高价确定旗杆高度,用布林带宽度确认通道斜率
2. 买入触发:价格突破旗面上轨且成交量放大至5日均量1.5倍
3. 卖出条件:收盘价跌破5日均线或达到旗杆高度的等幅涨幅目标
> 注意:实际交易中旗形持续时间通常在5-15个交易日,我们设置最大持仓周期为10天强制平仓
## 2. 代码实现详解
### 2.1 初始化函数配置
```python
def initialize(context):
# 设置标的为沪深300成分股
context.stocks = get_index_stocks('000300.XSHG')
# 动态持仓数量(前5只符合条件的股票)
context.hold_num = 5
# 旗形识别参数
context.flag_days = 20 # 旗杆识别周期
context.chan_width = 0.03 # 通道宽度阈值
# 风控参数
context.stop_loss = 0.95 # 止损线
context.max_hold = 10 # 最大持仓天数
2.2 形态识别算法
python复制def detect_flag_pattern(stock, data):
highs = history(context.flag_days, '1d', 'high')[stock]
lows = history(context.flag_days, '1d', 'low')[stock]
closes = history(context.flag_days, '1d', 'close')[stock]
pole_high = max(highs[:5])