这个策略的核心逻辑源自菜市场最常见的交易场景——当某种蔬菜价格跌到近期低点且开始反弹时,附近摊贩往往会跟进补货。我们将这个生活场景抽象为量化模型:当某只股票价格触及20日最低点后出现连续两日上涨,且成交量放大超过20日均线1.5倍时,视为"大妈进场信号"。
策略具体触发条件包括:
python复制# 策略核心代码逻辑
def大妈策略(close_prices, volumes):
# 计算20日最低价
min_20 = np.min(close_prices[-20:])
# 检查价格序列
cond1 = close_prices[-1] > close_prices[-2] > close_prices[-3] == min_20
# 检查成交量
avg_volume = np.mean(volumes[-20:])
cond2 = volumes[-1] > avg_volume * 1.5
return cond1 and cond2
注意:实际回测中需要加入2%的止损线和5日止盈规则,这是保证策略有效性的关键
QMT和PTrade作为国内主流量化平台,在实现这类策略时各有优势:
对于这个策略,实测PTrade的回测速度比QMT快30%,建议选择PTrade进行初步验证。
python复制import pandas as pd
from ptrade_api import *
def initialize(context):
# 设置标的池
context.stocks = get_index_stocks('000300.SH') # 沪深300成分股
# 策略参数
context.lookback = 20 # 回溯周期
context.volume_ratio = 1.5 # 成交量倍数
def handle_data(context, data):
for stock in context.stocks:
# 获取历史数据
his_data = attribute_history(stock, context.lookback+3,
fields=['close','volume'])
closes = his_data['close'].values
volumes = his_data['volume'].values
# 执行策略逻辑
if大妈策略(closes, volumes):
# 满足条件时下单
order_target_percent(stock, 0.02) # 2%仓位
# 设置止损止盈
set_stoploss(stock, 0.02) # 2%止损
set_profit(stock, 0.05) # 5%止盈
通过网格搜索发现最优参数组合:
| 参数 | 测试范围 | 最优值 | 收益影响 |
|---|---|---|---|
| 回溯周期 | 10-30日 | 20日 | +12.3% |
| 成交量倍数 | 1.2-2.0倍 | 1.5倍 | +8.7% |
| 持仓周期 | 3-10日 | 5日 | +9.1% |
当出现以下情况时需暂停策略:
建议每月进行一次压力测试,使用极端行情数据验证策略鲁棒性。
这个策略最大的优势在于其朴素的市场逻辑,我在实盘中发现,越是简单的策略往往生命周期越长。不过需要特别注意,任何策略都有适用周期,建议配合其他3-4个不同逻辑的策略组成组合,这样可以有效降低单一策略失效的风险。