返回列表 发布新帖

MACD顶背离小市值优选量化策略详解:低回撤高收益的A股投资智慧

116 0
image.png
本文将详细解读这个在A股市场表现优异的MACD顶背离小市值优选策略,并分析其降低回撤的机制、盈利特色以及实战效果。
策略核心逻辑解析
该策略的核心逻辑可以概括为以下几点:
1. 选股时机:每周二10:30进行选股操作,这个时间点经过回测验证效果最佳
2. 选股范围:从中小板指数成分股中筛选,按市值升序排列后取前100只股票,最终选取前7
3. 持仓数量:固定持有7只小市值股票,保持相对均衡的资金分配
4. 风险控制
a. 大盘MACD顶背离信号出现时清仓
b. 市场日跌幅超过一定阈值时全部止损
c. 个股亏损超过12%时进行个股止损
d. 四月和一月整月空仓(A股历史表现规律)
e. 昨日涨停今日打开则卖出
下面我们逐一深入分析这些关键点。
选股机制详解
策略的选股流程具有明确的价值投资特征:
  1. 1. 获取中小板指数成分股
  2. 2. 过滤掉新股、ST股和北交所/科创板股票
  3. 3. 过滤停牌、涨停、跌停的股票
  4. 4. 按市值升序排列,选取前100只
  5. 5. 从中最终确定持有前7只小市值股票
复制代码
为什么选择小市值股票?这与A股市场的特点密切相关。小市值股票往往具有以下特征:
1. 成长空间大,有更高的上涨潜力
2. 股价弹性大,对好消息反应更敏感
3. 机构关注度相对较低,存在信息不对称的投资机会
4. 在市场风格偏向成长时,表现往往更为突出
从代码实现看,作者通过下面这段代码完成选股:
  1. def get_stock_list(context):
  2.     final_list = []
  3.     MKT_index = '399101.XSHE'  # 中小板指数
  4.     initial_list = get_index_stocks(MKT_index)
  5.     initial_list = filter_new_stock(context, initial_list)
  6.     initial_list = filter_kcbj_stock(initial_list)
  7.     initial_list = filter_st_stock(initial_list)
  8.     initial_list = filter_paused_stock(initial_list)
  9.     initial_list = filter_limitup_stock(context, initial_list)
  10.     initial_list = filter_limitdown_stock(context, initial_list)

  11.     q = query(valuation.code, indicator.eps).filter(valuation.code.in_(initial_list)).order_by(valuation.market_cap.asc())
  12.     df = get_fundamentals(q)
  13.     stock_list = list(df.code)
  14.     stock_list = stock_list[:100]
  15.     final_list = stock_list[:2 * g.stock_num]

  16.     return final_list
复制代码
风险控制机制分析
该策略最大的亮点在于其多层次的风险控制机制,这也是其能够在A股波动较大的市场环境中保持较低回撤的关键:
1. MACD顶背离清仓信号
策略利用MACD指标检测市场顶部信号。当中小板指数出现MACD顶背离时,认为市场可能即将转向下跌,此时策略会全部清仓,规避系统性风险:
  1. def dapan(context):
  2.     print('大盘')
  3.     print(g.dbl)
  4.     if doDecide('399101.XSHE', context)['dead']:
  5.         g.dbl.append(True)
  6.         print('大盘顶背离,清仓')
  7.         for stock in context.portfolio.positions.keys():
  8.             order_target_value_(stock, 0)
  9.     else:
  10.         g.dbl.append(False)
复制代码
MACD顶背离的判断逻辑是通过对比价格与MACD指标的走势关系来实现的:
  1. suit['dead'] = grid.close[key2] < grid.close[key1] and \
  2.                grid.dif[key2] > grid.dif[key1] > 0 and \
  3.                grid.macd[-2] > 0 > grid.macd[-1]
复制代码
当价格创新高,但MACD指标却出现下降,并且MACD柱由正转负时,判定为顶背离信号。这种信号在实战中往往能提前捕捉到市场转向。
2. 三重止损机制
策略实现了三层止损保护:
  1. <p class="17"><span style="mso-spacerun:'yes';font-family:'Arial Unicode MS';mso-fareast-font-family:MicrosoftYaHei;
  2. font-size:11.0000pt;">g.stoploss_strategy = 3  # 1<font face="MicrosoftYaHei">为止损线止损,</font><font face="Arial Unicode MS">2</font><font face="MicrosoftYaHei">为市场趋势止损</font><font face="Arial Unicode MS">, 3</font><font face="MicrosoftYaHei">为联合</font><font face="Arial Unicode MS">1</font><font face="MicrosoftYaHei">、</font><font face="Arial Unicode MS">2</font><font face="MicrosoftYaHei">策略</font></span><span style="mso-spacerun:'yes';font-family:'Arial Unicode MS';mso-fareast-font-family:MicrosoftYaHei;
  3. font-size:11.0000pt;"><o:p></o:p></span></p><p class="17"><span style="mso-spacerun:'yes';font-family:'Arial Unicode MS';mso-fareast-font-family:MicrosoftYaHei;
  4. font-size:11.0000pt;">g.stoploss_limit = 0.88  # <font face="MicrosoftYaHei">止损线,亏损超过</font><font face="Arial Unicode MS">12%</font><font face="MicrosoftYaHei">止损</font></span><span style="mso-spacerun:'yes';font-family:'Arial Unicode MS';mso-fareast-font-family:MicrosoftYaHei;
  5. font-size:11.0000pt;"><o:p></o:p></span></p><p class="17"><span style="mso-spacerun:'yes';font-family:'Arial Unicode MS';mso-fareast-font-family:MicrosoftYaHei;
  6. font-size:11.0000pt;">g.stoploss_market = 0.94  # <font face="MicrosoftYaHei">市场趋势止损参数,中小板指当日平均跌幅超过</font><font face="Arial Unicode MS">6%</font><font face="MicrosoftYaHei">时清仓</font></span></p>
复制代码
联合策略的具体实现:
  1. <p class="17"><span style="mso-spacerun:'yes';font-family:'Arial Unicode MS';mso-fareast-font-family:MicrosoftYaHei;
  2. font-size:11.0000pt;"># <font face="MicrosoftYaHei">获取中小板指数当日收盘价和开盘价,计算整体市场走势</font></span><span style="mso-spacerun:'yes';font-family:'Arial Unicode MS';mso-fareast-font-family:MicrosoftYaHei;
  3. font-size:11.0000pt;"><o:p></o:p></span></p><p class="17"><span style="mso-spacerun:'yes';font-family:'Arial Unicode MS';mso-fareast-font-family:MicrosoftYaHei;
  4. font-size:11.0000pt;">stock_df = get_price(security=get_index_stocks('399101.XSHE'), end_date=context.previous_date, frequency='daily', fields=['close', 'open'], count=1, panel=False)</span><span style="mso-spacerun:'yes';font-family:'Arial Unicode MS';mso-fareast-font-family:MicrosoftYaHei;
  5. font-size:11.0000pt;"><o:p></o:p></span></p><p class="17"><span style="mso-spacerun:'yes';font-family:'Arial Unicode MS';mso-fareast-font-family:MicrosoftYaHei;
  6. font-size:11.0000pt;">down_ratio = (stock_df['close'] / stock_df['open']).mean()</span><span style="mso-spacerun:'yes';font-family:'Arial Unicode MS';mso-fareast-font-family:MicrosoftYaHei;
  7. font-size:11.0000pt;"><o:p></o:p></span></p><p class="17"><span style="mso-spacerun:'yes';font-family:'Arial Unicode MS';mso-fareast-font-family:MicrosoftYaHei;
  8. font-size:11.0000pt;"> </span></p><p class="17"><span style="mso-spacerun:'yes';font-family:'Arial Unicode MS';mso-fareast-font-family:MicrosoftYaHei;
  9. font-size:11.0000pt;"># <font face="MicrosoftYaHei">如果市场整体大跌,全部清仓</font></span><span style="mso-spacerun:'yes';font-family:'Arial Unicode MS';mso-fareast-font-family:MicrosoftYaHei;
  10. font-size:11.0000pt;"><o:p></o:p></span></p><p class="17"><span style="mso-spacerun:'yes';font-family:'Arial Unicode MS';mso-fareast-font-family:MicrosoftYaHei;
  11. font-size:11.0000pt;">if down_ratio <= g.stoploss_market:</span><span style="mso-spacerun:'yes';font-family:'Arial Unicode MS';mso-fareast-font-family:MicrosoftYaHei;
  12. font-size:11.0000pt;"><o:p></o:p></span></p><p class="17"><span style="mso-spacerun:'yes';font-family:'Arial Unicode MS';mso-fareast-font-family:MicrosoftYaHei;
  13. font-size:11.0000pt;">g.reason_to_sell = 'stoploss'</span><span style="mso-spacerun:'yes';font-family:'Arial Unicode MS';mso-fareast-font-family:MicrosoftYaHei;
  14. font-size:11.0000pt;"><o:p></o:p></span></p><p class="17"><span style="mso-spacerun:'yes';font-family:'Arial Unicode MS';mso-fareast-font-family:MicrosoftYaHei;
  15. font-size:11.0000pt;">log.debug("<font face="MicrosoftYaHei">大盘惨跌</font><font face="Arial Unicode MS">,</font><font face="MicrosoftYaHei">平均降幅</font><font face="Arial Unicode MS">{:.2%}".format(down_ratio))</font></span><span style="mso-spacerun:'yes';font-family:'Arial Unicode MS';mso-fareast-font-family:MicrosoftYaHei;
  16. font-size:11.0000pt;"><o:p></o:p></span></p><p class="17"><span style="mso-spacerun:'yes';font-family:'Arial Unicode MS';mso-fareast-font-family:MicrosoftYaHei;
  17. font-size:11.0000pt;">for stock in context.portfolio.positions.keys():</span><span style="mso-spacerun:'yes';font-family:'Arial Unicode MS';mso-fareast-font-family:MicrosoftYaHei;
  18. font-size:11.0000pt;"><o:p></o:p></span></p><p class="17"><span style="mso-spacerun:'yes';font-family:'Arial Unicode MS';mso-fareast-font-family:MicrosoftYaHei;
  19. font-size:11.0000pt;">order_target_value_(stock, 0)</span><span style="mso-spacerun:'yes';font-family:'Arial Unicode MS';mso-fareast-font-family:MicrosoftYaHei;
  20. font-size:11.0000pt;"><o:p></o:p></span></p><p class="17"><span style="mso-spacerun:'yes';font-family:'Arial Unicode MS';mso-fareast-font-family:MicrosoftYaHei;
  21. font-size:11.0000pt;">else:</span><span style="mso-spacerun:'yes';font-family:'Arial Unicode MS';mso-fareast-font-family:MicrosoftYaHei;
  22. font-size:11.0000pt;"><o:p></o:p></span></p><p class="17"><span style="mso-spacerun:'yes';font-family:'Arial Unicode MS';mso-fareast-font-family:MicrosoftYaHei;
  23. font-size:11.0000pt;"># <font face="MicrosoftYaHei">如果市场正常,检查个股止损</font></span><span style="mso-spacerun:'yes';font-family:'Arial Unicode MS';mso-fareast-font-family:MicrosoftYaHei;
  24. font-size:11.0000pt;"><o:p></o:p></span></p><p class="17"><span style="mso-spacerun:'yes';font-family:'Arial Unicode MS';mso-fareast-font-family:MicrosoftYaHei;
  25. font-size:11.0000pt;">for stock in context.portfolio.positions.keys():</span><span style="mso-spacerun:'yes';font-family:'Arial Unicode MS';mso-fareast-font-family:MicrosoftYaHei;
  26. font-size:11.0000pt;"><o:p></o:p></span></p><p class="17"><span style="mso-spacerun:'yes';font-family:'Arial Unicode MS';mso-fareast-font-family:MicrosoftYaHei;
  27. font-size:11.0000pt;">if context.portfolio.positions[stock].price < context.portfolio.positions[stock].avg_cost * g.stoploss_limit:</span><span style="mso-spacerun:'yes';font-family:'Arial Unicode MS';mso-fareast-font-family:MicrosoftYaHei;
  28. font-size:11.0000pt;"><o:p></o:p></span></p><p class="17"><span style="mso-spacerun:'yes';font-family:'Arial Unicode MS';mso-fareast-font-family:MicrosoftYaHei;
  29. font-size:11.0000pt;">order_target_value_(stock, 0)</span><span style="mso-spacerun:'yes';font-family:'Arial Unicode MS';mso-fareast-font-family:MicrosoftYaHei;
  30. font-size:11.0000pt;"><o:p></o:p></span></p><p class="17"><span style="mso-spacerun:'yes';font-family:'Arial Unicode MS';mso-fareast-font-family:MicrosoftYaHei;
  31. font-size:11.0000pt;">log.debug("<font face="MicrosoftYaHei">收益止损</font><font face="Arial Unicode MS">,</font><font face="MicrosoftYaHei">卖出</font><font face="Arial Unicode MS">{}".format(stock))</font></span><span style="mso-spacerun:'yes';font-family:'Arial Unicode MS';mso-fareast-font-family:MicrosoftYaHei;
  32. font-size:11.0000pt;"><o:p></o:p></span></p><p class="17"><span style="mso-spacerun:'yes';font-family:'Arial Unicode MS';mso-fareast-font-family:MicrosoftYaHei;
  33. font-size:11.0000pt;">g.reason_to_sell = 'stoploss'</span></p>
复制代码
这种联合止损机制确保了:
1. 在市场大幅下跌时能迅速全部清仓,规避系统性风险
2. 在市场正常情况下,控制单只股票的最大亏损幅度
3. 收益达到100%时自动止盈,锁定利润
3. 季节性规避
通过历史数据分析,策略发现A股市场在4月和1月往往表现不佳,因此在这两个月份选择完全空仓,避开市场的季节性弱势期:
  1. <p class="17"><span style="mso-spacerun:'yes';font-family:'Arial Unicode MS';mso-fareast-font-family:MicrosoftYaHei;
  2. font-size:11.0000pt;">def today_is_between(context):</span><span style="mso-spacerun:'yes';font-family:'Arial Unicode MS';mso-fareast-font-family:MicrosoftYaHei;
  3. font-size:11.0000pt;"><o:p></o:p></span></p><p class="17"><span style="mso-spacerun:'yes';font-family:'Arial Unicode MS';mso-fareast-font-family:MicrosoftYaHei;
  4. font-size:11.0000pt;">today = context.current_dt.strftime('%m-%d')</span><span style="mso-spacerun:'yes';font-family:'Arial Unicode MS';mso-fareast-font-family:MicrosoftYaHei;
  5. font-size:11.0000pt;"><o:p></o:p></span></p><p class="17"><span style="mso-spacerun:'yes';font-family:'Arial Unicode MS';mso-fareast-font-family:MicrosoftYaHei;
  6. font-size:11.0000pt;">if g.pass_april is True:</span><span style="mso-spacerun:'yes';font-family:'Arial Unicode MS';mso-fareast-font-family:MicrosoftYaHei;
  7. font-size:11.0000pt;"><o:p></o:p></span></p><p class="17"><span style="mso-spacerun:'yes';font-family:'Arial Unicode MS';mso-fareast-font-family:MicrosoftYaHei;
  8. font-size:11.0000pt;">if (('04-01' <= today) and (today <= '04-30')) or (('01-01' <= today) and (today <= '01-30')):</span><span style="mso-spacerun:'yes';font-family:'Arial Unicode MS';mso-fareast-font-family:MicrosoftYaHei;
  9. font-size:11.0000pt;"><o:p></o:p></span></p><p class="17"><span style="mso-spacerun:'yes';font-family:'Arial Unicode MS';mso-fareast-font-family:MicrosoftYaHei;
  10. font-size:11.0000pt;">return True</span><span style="mso-spacerun:'yes';font-family:'Arial Unicode MS';mso-fareast-font-family:MicrosoftYaHei;
  11. font-size:11.0000pt;"><o:p></o:p></span></p><p class="17"><span style="mso-spacerun:'yes';font-family:'Arial Unicode MS';mso-fareast-font-family:MicrosoftYaHei;
  12. font-size:11.0000pt;">else:</span><span style="mso-spacerun:'yes';font-family:'Arial Unicode MS';mso-fareast-font-family:MicrosoftYaHei;
  13. font-size:11.0000pt;"><o:p></o:p></span></p><p class="17"><span style="mso-spacerun:'yes';font-family:'Arial Unicode MS';mso-fareast-font-family:MicrosoftYaHei;
  14. font-size:11.0000pt;">return False</span><span style="mso-spacerun:'yes';font-family:'Arial Unicode MS';mso-fareast-font-family:MicrosoftYaHei;
  15. font-size:11.0000pt;"><o:p></o:p></span></p><p class="17"><span style="mso-spacerun:'yes';font-family:'Arial Unicode MS';mso-fareast-font-family:MicrosoftYaHei;
  16. font-size:11.0000pt;">else:</span><span style="mso-spacerun:'yes';font-family:'Arial Unicode MS';mso-fareast-font-family:MicrosoftYaHei;
  17. font-size:11.0000pt;"><o:p></o:p></span></p><p class="17"><span style="mso-spacerun:'yes';font-family:'Arial Unicode MS';mso-fareast-font-family:MicrosoftYaHei;
  18. font-size:11.0000pt;">return False</span></p>
复制代码
正是这个机制导致策略在202412日清仓,直到202426日(周二)才重新建仓,中间经历了一个相对较长的空仓期。这段空仓期恰好体现了策略的设计理念:宁可错过一些上涨机会,也要严格控制风险。
image.png
4. 涨停板风险管理
策略对涨停板股票采取了特殊处理:
l当持有的股票前一日涨停,当天涨停打开时及时卖出,避免追高风险
l当持有的股票前一日涨停,当天继续涨停则继续持有,把握强势股的持续上涨机会
  1. <p class="17"><span style="mso-spacerun:'yes';font-family:'Arial Unicode MS';mso-fareast-font-family:MicrosoftYaHei;
  2. font-size:11.0000pt;">def check_limit_up(context):</span><span style="mso-spacerun:'yes';font-family:'Arial Unicode MS';mso-fareast-font-family:MicrosoftYaHei;
  3. font-size:11.0000pt;"><o:p></o:p></span></p><p class="17"><span style="mso-spacerun:'yes';font-family:'Arial Unicode MS';mso-fareast-font-family:MicrosoftYaHei;
  4. font-size:11.0000pt;">now_time = context.current_dt</span><span style="mso-spacerun:'yes';font-family:'Arial Unicode MS';mso-fareast-font-family:MicrosoftYaHei;
  5. font-size:11.0000pt;"><o:p></o:p></span></p><p class="17"><span style="mso-spacerun:'yes';font-family:'Arial Unicode MS';mso-fareast-font-family:MicrosoftYaHei;
  6. font-size:11.0000pt;">if g.yesterday_HL_list != []:</span><span style="mso-spacerun:'yes';font-family:'Arial Unicode MS';mso-fareast-font-family:MicrosoftYaHei;
  7. font-size:11.0000pt;"><o:p></o:p></span></p><p class="17"><span style="mso-spacerun:'yes';font-family:'Arial Unicode MS';mso-fareast-font-family:MicrosoftYaHei;
  8. font-size:11.0000pt;">for stock in g.yesterday_HL_list:</span><span style="mso-spacerun:'yes';font-family:'Arial Unicode MS';mso-fareast-font-family:MicrosoftYaHei;
  9. font-size:11.0000pt;"><o:p></o:p></span></p><p class="17"><span style="mso-spacerun:'yes';font-family:'Arial Unicode MS';mso-fareast-font-family:MicrosoftYaHei;
  10. font-size:11.0000pt;">current_data = get_price(stock, end_date=now_time, frequency='1m', fields=['close', 'high_limit'], skip_paused=False, fq='pre', count=1, panel=False, fill_paused=True)</span><span style="mso-spacerun:'yes';font-family:'Arial Unicode MS';mso-fareast-font-family:MicrosoftYaHei;
  11. font-size:11.0000pt;"><o:p></o:p></span></p><p class="17"><span style="mso-spacerun:'yes';font-family:'Arial Unicode MS';mso-fareast-font-family:MicrosoftYaHei;
  12. font-size:11.0000pt;">if current_data.iloc[0, 0] < current_data.iloc[0, 1]:</span><span style="mso-spacerun:'yes';font-family:'Arial Unicode MS';mso-fareast-font-family:MicrosoftYaHei;
  13. font-size:11.0000pt;"><o:p></o:p></span></p><p class="17"><span style="mso-spacerun:'yes';font-family:'Arial Unicode MS';mso-fareast-font-family:MicrosoftYaHei;
  14. font-size:11.0000pt;">log.info("[%s]<font face="MicrosoftYaHei">涨停打开,卖出</font><font face="Arial Unicode MS">" % (stock))</font></span><span style="mso-spacerun:'yes';font-family:'Arial Unicode MS';mso-fareast-font-family:MicrosoftYaHei;
  15. font-size:11.0000pt;"><o:p></o:p></span></p><p class="17"><span style="mso-spacerun:'yes';font-family:'Arial Unicode MS';mso-fareast-font-family:MicrosoftYaHei;
  16. font-size:11.0000pt;">position = context.portfolio.positions[stock]</span><span style="mso-spacerun:'yes';font-family:'Arial Unicode MS';mso-fareast-font-family:MicrosoftYaHei;
  17. font-size:11.0000pt;"><o:p></o:p></span></p><p class="17"><span style="mso-spacerun:'yes';font-family:'Arial Unicode MS';mso-fareast-font-family:MicrosoftYaHei;
  18. font-size:11.0000pt;">close_position(position)</span><span style="mso-spacerun:'yes';font-family:'Arial Unicode MS';mso-fareast-font-family:MicrosoftYaHei;
  19. font-size:11.0000pt;"><o:p></o:p></span></p><p class="17"><span style="mso-spacerun:'yes';font-family:'Arial Unicode MS';mso-fareast-font-family:MicrosoftYaHei;
  20. font-size:11.0000pt;">g.reason_to_sell = 'limitup'</span><span style="mso-spacerun:'yes';font-family:'Arial Unicode MS';mso-fareast-font-family:MicrosoftYaHei;
  21. font-size:11.0000pt;"><o:p></o:p></span></p><p class="17"><span style="mso-spacerun:'yes';font-family:'Arial Unicode MS';mso-fareast-font-family:MicrosoftYaHei;
  22. font-size:11.0000pt;">else:</span><span style="mso-spacerun:'yes';font-family:'Arial Unicode MS';mso-fareast-font-family:MicrosoftYaHei;
  23. font-size:11.0000pt;"><o:p></o:p></span></p><p class="17"><span style="mso-spacerun:'yes';font-family:'Arial Unicode MS';mso-fareast-font-family:MicrosoftYaHei;
  24. font-size:11.0000pt;">log.info("[%s]<font face="MicrosoftYaHei">涨停,继续持有</font><font face="Arial Unicode MS">" % (stock))</font></span></p>
复制代码
策略特色与盈利原因分析
1. 明确的选股逻辑
该策略的选股逻辑明确且有效:专注于小市值股票。在A股市场,小市值股票具有更高的成长性和弹性,尤其在市场情绪向好时,往往能获得超额收益。从统计数据来看,A股历史上小市值股票的平均收益率显著高于大市值股票。
2. 精确的风险控制
策略成功的关键在于其精确的风险控制:
lMACD顶背离判断市场转向
l三重止损机制限制亏损
l季节性规避避开弱市
l涨停板管理把握强势股
这些风险控制手段使得策略能够在保持较高收益的同时,大幅降低回撤,提高夏普比率。
3. 周期选择与调仓频率优化
策略选择每周二10:30作为固定调仓时间,这一时间点经过回测验证效果最佳。通常周二市场情绪已经稳定,更适合做出理性决策。每周调仓的频率既不会过于频繁增加交易成本,也不会过于稀疏而错过市场机会。
4. 红利复利效应
策略通过持续低回撤高收益的特点,能够实现资金的稳健增长。复利效应在长期投资中发挥巨大作用,尤其是当策略能够有效控制回撤时,复利效果更为显著。
回撤控制分析
该策略在回撤控制方面表现突出,主要归功于以下几点:
1. MACD顶背离的市场趋势判断
MACD是经典的趋势跟踪指标,其顶背离信号在捕捉市场转向方面有着良好表现。通过代码实现:
  1. <p class="17"><span style="mso-spacerun:'yes';font-family:'Arial Unicode MS';mso-fareast-font-family:MicrosoftYaHei;
  2. font-size:11.0000pt;">def doDecide(stock, context):</span><span style="mso-spacerun:'yes';font-family:'Arial Unicode MS';mso-fareast-font-family:MicrosoftYaHei;
  3. font-size:11.0000pt;"><o:p></o:p></span></p><p class="17"><span style="mso-spacerun:'yes';font-family:'Arial Unicode MS';mso-fareast-font-family:MicrosoftYaHei;
  4. font-size:11.0000pt;"># MACD<font face="MicrosoftYaHei">计算与顶背离判断</font></span><span style="mso-spacerun:'yes';font-family:'Arial Unicode MS';mso-fareast-font-family:MicrosoftYaHei;
  5. font-size:11.0000pt;"><o:p></o:p></span></p><p class="17"><span style="mso-spacerun:'yes';font-family:'Arial Unicode MS';mso-fareast-font-family:MicrosoftYaHei;
  6. font-size:11.0000pt;">grid['dif'], grid['dea'], grid['macd'] = MACD(grid.close, SHORT=12, LONG=26, M=9)</span><span style="mso-spacerun:'yes';font-family:'Arial Unicode MS';mso-fareast-font-family:MicrosoftYaHei;
  7. font-size:11.0000pt;"><o:p></o:p></span></p><p class="17"><span style="mso-spacerun:'yes';font-family:'Arial Unicode MS';mso-fareast-font-family:MicrosoftYaHei;
  8. font-size:11.0000pt;"> </span></p><p class="17"><span style="mso-spacerun:'yes';font-family:'Arial Unicode MS';mso-fareast-font-family:MicrosoftYaHei;
  9. font-size:11.0000pt;"># <font face="MicrosoftYaHei">顶背离判断逻辑</font></span><span style="mso-spacerun:'yes';font-family:'Arial Unicode MS';mso-fareast-font-family:MicrosoftYaHei;
  10. font-size:11.0000pt;"><o:p></o:p></span></p><p class="17"><span style="mso-spacerun:'yes';font-family:'Arial Unicode MS';mso-fareast-font-family:MicrosoftYaHei;
  11. font-size:11.0000pt;">mask = grid['macd'] < 0</span><span style="mso-spacerun:'yes';font-family:'Arial Unicode MS';mso-fareast-font-family:MicrosoftYaHei;
  12. font-size:11.0000pt;"><o:p></o:p></span></p><p class="17"><span style="mso-spacerun:'yes';font-family:'Arial Unicode MS';mso-fareast-font-family:MicrosoftYaHei;
  13. font-size:11.0000pt;">mask = mask[mask == True][mask.shift(1) == False]</span><span style="mso-spacerun:'yes';font-family:'Arial Unicode MS';mso-fareast-font-family:MicrosoftYaHei;
  14. font-size:11.0000pt;"><o:p></o:p></span></p><p class="17"><span style="mso-spacerun:'yes';font-family:'Arial Unicode MS';mso-fareast-font-family:MicrosoftYaHei;
  15. font-size:11.0000pt;">key2 = mask.keys()[-2]</span><span style="mso-spacerun:'yes';font-family:'Arial Unicode MS';mso-fareast-font-family:MicrosoftYaHei;
  16. font-size:11.0000pt;"><o:p></o:p></span></p><p class="17"><span style="mso-spacerun:'yes';font-family:'Arial Unicode MS';mso-fareast-font-family:MicrosoftYaHei;
  17. font-size:11.0000pt;">key1 = mask.keys()[-1]</span><span style="mso-spacerun:'yes';font-family:'Arial Unicode MS';mso-fareast-font-family:MicrosoftYaHei;
  18. font-size:11.0000pt;"><o:p></o:p></span></p><p class="17"><span style="mso-spacerun:'yes';font-family:'Arial Unicode MS';mso-fareast-font-family:MicrosoftYaHei;
  19. font-size:11.0000pt;">suit['dead'] = grid.close[key2] < grid.close[key1] and \</span><span style="mso-spacerun:'yes';font-family:'Arial Unicode MS';mso-fareast-font-family:MicrosoftYaHei;
  20. font-size:11.0000pt;"><o:p></o:p></span></p><p class="17"><span style="mso-spacerun:'yes';font-family:'Arial Unicode MS';mso-fareast-font-family:MicrosoftYaHei;
  21. font-size:11.0000pt;">grid.dif[key2] > grid.dif[key1] > 0 and \</span><span style="mso-spacerun:'yes';font-family:'Arial Unicode MS';mso-fareast-font-family:MicrosoftYaHei;
  22. font-size:11.0000pt;"><o:p></o:p></span></p><p class="17"><span style="mso-spacerun:'yes';font-family:'Arial Unicode MS';mso-fareast-font-family:MicrosoftYaHei;
  23. font-size:11.0000pt;">grid.macd[-2] > 0 > grid.macd[-1]</span></p>
复制代码
当策略检测到中小板指数MACD顶背离时立即全部清仓,有效规避了大幅下跌风险。
2. 市场大跌风险控制
策略设置了市场平均跌幅超过6%时的全局止损,这是对系统性风险的有效防御:
  1. <p class="17"><span style="mso-spacerun:'yes';font-family:'Arial Unicode MS';mso-fareast-font-family:MicrosoftYaHei;
  2. font-size:11.0000pt;">down_ratio = (stock_df['close'] / stock_df['open']).mean()</span><span style="mso-spacerun:'yes';font-family:'Arial Unicode MS';mso-fareast-font-family:MicrosoftYaHei;
  3. font-size:11.0000pt;"><o:p></o:p></span></p><p class="17"><span style="mso-spacerun:'yes';font-family:'Arial Unicode MS';mso-fareast-font-family:MicrosoftYaHei;
  4. font-size:11.0000pt;">if down_ratio <= g.stoploss_market:  # g.stoploss_market = 0.94<font face="MicrosoftYaHei">,即跌幅超过</font><font face="Arial Unicode MS">6%</font></span><span style="mso-spacerun:'yes';font-family:'Arial Unicode MS';mso-fareast-font-family:MicrosoftYaHei;
  5. font-size:11.0000pt;"><o:p></o:p></span></p><p class="17"><span style="mso-spacerun:'yes';font-family:'Arial Unicode MS';mso-fareast-font-family:MicrosoftYaHei;
  6. font-size:11.0000pt;">g.reason_to_sell = 'stoploss'</span><span style="mso-spacerun:'yes';font-family:'Arial Unicode MS';mso-fareast-font-family:MicrosoftYaHei;
  7. font-size:11.0000pt;"><o:p></o:p></span></p><p class="17"><span style="mso-spacerun:'yes';font-family:'Arial Unicode MS';mso-fareast-font-family:MicrosoftYaHei;
  8. font-size:11.0000pt;">log.debug("<font face="MicrosoftYaHei">大盘惨跌</font><font face="Arial Unicode MS">,</font><font face="MicrosoftYaHei">平均降幅</font><font face="Arial Unicode MS">{:.2%}".format(down_ratio))</font></span><span style="mso-spacerun:'yes';font-family:'Arial Unicode MS';mso-fareast-font-family:MicrosoftYaHei;
  9. font-size:11.0000pt;"><o:p></o:p></span></p><p class="17"><span style="mso-spacerun:'yes';font-family:'Arial Unicode MS';mso-fareast-font-family:MicrosoftYaHei;
  10. font-size:11.0000pt;">for stock in context.portfolio.positions.keys():</span><span style="mso-spacerun:'yes';font-family:'Arial Unicode MS';mso-fareast-font-family:MicrosoftYaHei;
  11. font-size:11.0000pt;"><o:p></o:p></span></p><p class="17"><span style="mso-spacerun:'yes';font-family:'Arial Unicode MS';mso-fareast-font-family:MicrosoftYaHei;
  12. font-size:11.0000pt;">order_target_value_(stock, 0)</span></p>
复制代码
这种机制在20242A股市场大跌中发挥了重要作用,有效降低了回撤幅度。
3. 个股止损设置
针对单只股票的12%止损线设置,确保了单只股票的亏损幅度受到严格控制:
  1. <p class="17"><span style="mso-spacerun:'yes';font-family:'Arial Unicode MS';mso-fareast-font-family:MicrosoftYaHei;
  2. font-size:11.0000pt;">if context.portfolio.positions[stock].price < context.portfolio.positions[stock].avg_cost * g.stoploss_limit:</span><span style="mso-spacerun:'yes';font-family:'Arial Unicode MS';mso-fareast-font-family:MicrosoftYaHei;
  3. font-size:11.0000pt;"><o:p></o:p></span></p><p class="17"><span style="mso-spacerun:'yes';font-family:'Arial Unicode MS';mso-fareast-font-family:MicrosoftYaHei;
  4. font-size:11.0000pt;">order_target_value_(stock, 0)</span><span style="mso-spacerun:'yes';font-family:'Arial Unicode MS';mso-fareast-font-family:MicrosoftYaHei;
  5. font-size:11.0000pt;"><o:p></o:p></span></p><p class="17"><span style="mso-spacerun:'yes';font-family:'Arial Unicode MS';mso-fareast-font-family:MicrosoftYaHei;
  6. font-size:11.0000pt;">log.debug("<font face="MicrosoftYaHei">收益止损</font><font face="Arial Unicode MS">,</font><font face="MicrosoftYaHei">卖出</font><font face="Arial Unicode MS">{}".format(stock))</font></span><span style="mso-spacerun:'yes';font-family:'Arial Unicode MS';mso-fareast-font-family:MicrosoftYaHei;
  7. font-size:11.0000pt;"><o:p></o:p></span></p><p class="17"><span style="mso-spacerun:'yes';font-family:'Arial Unicode MS';mso-fareast-font-family:MicrosoftYaHei;
  8. font-size:11.0000pt;">g.reason_to_sell = 'stoploss'</span></p>
复制代码
这种机制避免了单只股票的大幅亏损拖累整体表现。
4. 季节性风险规避
通过在历史表现不佳的4月和1月选择空仓,规避了这两个月份可能带来的系统性风险:
  1. <p class="17"><span style="mso-spacerun:'yes';font-family:'Arial Unicode MS';mso-fareast-font-family:MicrosoftYaHei;
  2. font-size:11.0000pt;">if (('04-01' <= today) and (today <= '04-30')) or (('01-01' <= today) and (today <= '01-30')):</span><span style="mso-spacerun:'yes';font-family:'Arial Unicode MS';mso-fareast-font-family:MicrosoftYaHei;
  3. font-size:11.0000pt;"><o:p></o:p></span></p><p class="17"><span style="mso-spacerun:'yes';font-family:'Arial Unicode MS';mso-fareast-font-family:MicrosoftYaHei;
  4. font-size:11.0000pt;">return True  # <font face="MicrosoftYaHei">返回</font><font face="Arial Unicode MS">True</font><font face="MicrosoftYaHei">表示今天需要空仓</font></span></p>
复制代码
这一机制充分利用了A股市场的季节性特征,是对历史规律的有效应用。
实战效果分析
该策略在实战中表现优异,尤其在2024年的市场波动中展现出色的适应能力。
image.png
20242月市场大跌期间表现
20242月,A股市场经历了较大幅度的调整,上证指数从2月初的高点一路下跌,最大跌幅超过15%。在这一期间,该策略凭借其MACD顶背离判断和市场大跌风险控制机制,成功规避了大部分下跌,最大回撤控制在较低水平。
具体表现:
l策略在市场开始下跌前,通过MACD顶背离信号提前减仓
l当市场单日跌幅较大时,触发市场趋势止损机制,及时清仓
l个股层面的12%止损线进一步限制了亏损
20249-10月市场大涨期间表现
20249-10月,A股市场迎来一波强劲上涨,特别是小市值股票表现更为突出。该策略在这一阶段充分发挥其选股优势:
l小市值股票在市场上涨中弹性更大,带来显著超额收益
l涨停板管理策略使得强势股得以持续持有,充分享受上涨红利
l较低的持仓数量(7)使得每只股票获得足够资金配置,放大收益效果
策略绩效指标
从回测结果来看,该策略表现出色:
image.png
从这些指标可以看出,策略不仅收益可观,而且风险控制得当:
l111%的年化收益率远超市场平均水平
l0.20的最大回撤控制在较低范围
l4.02的夏普比率表明策略在风险调整后的收益表现优异
l5.58Calmar比率说明策略在应对回撤方面表现出色
策略编写要点与注意事项
通过分析这个策略,我们可以总结出几点量化策略编写的关键经验:
1. 明确的策略逻辑
好的策略需要有清晰的逻辑支撑,包括选股标准、买入条件、卖出条件等。该策略的逻辑非常清晰:选择小市值股票,结合MACD顶背离风险控制,实现低回撤高收益。
2. 多层次的风险控制
风险控制是量化策略成功的关键。该策略实现了从市场层面到个股层面的多层次风险控制,包括:
l市场趋势判断(MACD顶背离)
l市场整体跌幅控制
l个股止损线设置
l季节性规避
3. 参数可调整性
好的策略应该具有参数可调整性,以适应不同的市场环境:
  1. <p class="17"><span style="mso-spacerun:'yes';font-family:'Arial Unicode MS';mso-fareast-font-family:MicrosoftYaHei;
  2. font-size:11.0000pt;">g.stock_num = 7  # <font face="MicrosoftYaHei">持仓数量</font></span><span style="mso-spacerun:'yes';font-family:'Arial Unicode MS';mso-fareast-font-family:MicrosoftYaHei;
  3. font-size:11.0000pt;"><o:p></o:p></span></p><p class="17"><span style="mso-spacerun:'yes';font-family:'Arial Unicode MS';mso-fareast-font-family:MicrosoftYaHei;
  4. font-size:11.0000pt;">g.stoploss_limit = 0.88  # <font face="MicrosoftYaHei">止损线</font></span><span style="mso-spacerun:'yes';font-family:'Arial Unicode MS';mso-fareast-font-family:MicrosoftYaHei;
  5. font-size:11.0000pt;"><o:p></o:p></span></p><p class="17"><span style="mso-spacerun:'yes';font-family:'Arial Unicode MS';mso-fareast-font-family:MicrosoftYaHei;
  6. font-size:11.0000pt;">g.stoploss_market = 0.94  # <font face="MicrosoftYaHei">市场趋势止损参数</font></span><span style="mso-spacerun:'yes';font-family:'Arial Unicode MS';mso-fareast-font-family:MicrosoftYaHei;
  7. font-size:11.0000pt;"><o:p></o:p></span></p><p class="17"><span style="mso-spacerun:'yes';font-family:'Arial Unicode MS';mso-fareast-font-family:MicrosoftYaHei;
  8. font-size:11.0000pt;">g.HV_control = False  # <font face="MicrosoftYaHei">是否启用放量判断</font></span></p>
复制代码
这些可调整参数使策略具有更强的适应性。
4. 交易记录与日志
详细的交易记录和日志对策略监控和优化至关重要:
  1. <p class="17"><span style="mso-spacerun:'yes';font-family:'Arial Unicode MS';mso-fareast-font-family:MicrosoftYaHei;
  2. font-size:11.0000pt;">def print_position_info(context):</span><span style="mso-spacerun:'yes';font-family:'Arial Unicode MS';mso-fareast-font-family:MicrosoftYaHei;
  3. font-size:11.0000pt;"><o:p></o:p></span></p><p class="17"><span style="mso-spacerun:'yes';font-family:'Arial Unicode MS';mso-fareast-font-family:MicrosoftYaHei;
  4. font-size:11.0000pt;">for position in list(context.portfolio.positions.values()):</span><span style="mso-spacerun:'yes';font-family:'Arial Unicode MS';mso-fareast-font-family:MicrosoftYaHei;
  5. font-size:11.0000pt;"><o:p></o:p></span></p><p class="17"><span style="mso-spacerun:'yes';font-family:'Arial Unicode MS';mso-fareast-font-family:MicrosoftYaHei;
  6. font-size:11.0000pt;">securities = position.security</span><span style="mso-spacerun:'yes';font-family:'Arial Unicode MS';mso-fareast-font-family:MicrosoftYaHei;
  7. font-size:11.0000pt;"><o:p></o:p></span></p><p class="17"><span style="mso-spacerun:'yes';font-family:'Arial Unicode MS';mso-fareast-font-family:MicrosoftYaHei;
  8. font-size:11.0000pt;">cost = position.avg_cost</span><span style="mso-spacerun:'yes';font-family:'Arial Unicode MS';mso-fareast-font-family:MicrosoftYaHei;
  9. font-size:11.0000pt;"><o:p></o:p></span></p><p class="17"><span style="mso-spacerun:'yes';font-family:'Arial Unicode MS';mso-fareast-font-family:MicrosoftYaHei;
  10. font-size:11.0000pt;">price = position.price</span><span style="mso-spacerun:'yes';font-family:'Arial Unicode MS';mso-fareast-font-family:MicrosoftYaHei;
  11. font-size:11.0000pt;"><o:p></o:p></span></p><p class="17"><span style="mso-spacerun:'yes';font-family:'Arial Unicode MS';mso-fareast-font-family:MicrosoftYaHei;
  12. font-size:11.0000pt;">ret = 100 * (price / cost - 1)</span><span style="mso-spacerun:'yes';font-family:'Arial Unicode MS';mso-fareast-font-family:MicrosoftYaHei;
  13. font-size:11.0000pt;"><o:p></o:p></span></p><p class="17"><span style="mso-spacerun:'yes';font-family:'Arial Unicode MS';mso-fareast-font-family:MicrosoftYaHei;
  14. font-size:11.0000pt;">value = position.value</span><span style="mso-spacerun:'yes';font-family:'Arial Unicode MS';mso-fareast-font-family:MicrosoftYaHei;
  15. font-size:11.0000pt;"><o:p></o:p></span></p><p class="17"><span style="mso-spacerun:'yes';font-family:'Arial Unicode MS';mso-fareast-font-family:MicrosoftYaHei;
  16. font-size:11.0000pt;">amount = position.total_amount</span><span style="mso-spacerun:'yes';font-family:'Arial Unicode MS';mso-fareast-font-family:MicrosoftYaHei;
  17. font-size:11.0000pt;"><o:p></o:p></span></p><p class="17"><span style="mso-spacerun:'yes';font-family:'Arial Unicode MS';mso-fareast-font-family:MicrosoftYaHei;
  18. font-size:11.0000pt;">print('<font face="MicrosoftYaHei">代码</font><font face="Arial Unicode MS">:{}'.format(securities))</font></span><span style="mso-spacerun:'yes';font-family:'Arial Unicode MS';mso-fareast-font-family:MicrosoftYaHei;
  19. font-size:11.0000pt;"><o:p></o:p></span></p><p class="17"><span style="mso-spacerun:'yes';font-family:'Arial Unicode MS';mso-fareast-font-family:MicrosoftYaHei;
  20. font-size:11.0000pt;">print('<font face="MicrosoftYaHei">成本价</font><font face="Arial Unicode MS">:{}'.format(format(cost, '.2f')))</font></span><span style="mso-spacerun:'yes';font-family:'Arial Unicode MS';mso-fareast-font-family:MicrosoftYaHei;
  21. font-size:11.0000pt;"><o:p></o:p></span></p><p class="17"><span style="mso-spacerun:'yes';font-family:'Arial Unicode MS';mso-fareast-font-family:MicrosoftYaHei;
  22. font-size:11.0000pt;">print('<font face="MicrosoftYaHei">现价</font><font face="Arial Unicode MS">:{}'.format(price))</font></span><span style="mso-spacerun:'yes';font-family:'Arial Unicode MS';mso-fareast-font-family:MicrosoftYaHei;
  23. font-size:11.0000pt;"><o:p></o:p></span></p><p class="17"><span style="mso-spacerun:'yes';font-family:'Arial Unicode MS';mso-fareast-font-family:MicrosoftYaHei;
  24. font-size:11.0000pt;">print('<font face="MicrosoftYaHei">收益率</font><font face="Arial Unicode MS">:{}%'.format(format(ret, '.2f')))</font></span><span style="mso-spacerun:'yes';font-family:'Arial Unicode MS';mso-fareast-font-family:MicrosoftYaHei;
  25. font-size:11.0000pt;"><o:p></o:p></span></p><p class="17"><span style="mso-spacerun:'yes';font-family:'Arial Unicode MS';mso-fareast-font-family:MicrosoftYaHei;
  26. font-size:11.0000pt;">print('<font face="MicrosoftYaHei">持仓</font><font face="Arial Unicode MS">(</font><font face="MicrosoftYaHei">股</font><font face="Arial Unicode MS">):{}'.format(amount))</font></span><span style="mso-spacerun:'yes';font-family:'Arial Unicode MS';mso-fareast-font-family:MicrosoftYaHei;
  27. font-size:11.0000pt;"><o:p></o:p></span></p><p class="17"><span style="mso-spacerun:'yes';font-family:'Arial Unicode MS';mso-fareast-font-family:MicrosoftYaHei;
  28. font-size:11.0000pt;">print('<font face="MicrosoftYaHei">市值</font><font face="Arial Unicode MS">:{}'.format(format(value, '.2f')))</font></span><span style="mso-spacerun:'yes';font-family:'Arial Unicode MS';mso-fareast-font-family:MicrosoftYaHei;
  29. font-size:11.0000pt;"><o:p></o:p></span></p><p class="17"><span style="mso-spacerun:'yes';font-family:'Arial Unicode MS';mso-fareast-font-family:MicrosoftYaHei;
  30. font-size:11.0000pt;">print('———————————————————————————————————')</span></p>
复制代码
5. 定时任务设置
策略使用run_dailyrun_weekly函数设置定时任务,确保各项功能在合适的时间点执行:
  1. <p class="17"><span style="mso-spacerun:'yes';font-family:'Arial Unicode MS';mso-fareast-font-family:MicrosoftYaHei;
  2. font-size:11.0000pt;"># <font face="MicrosoftYaHei">设置交易运行时间</font></span><span style="mso-spacerun:'yes';font-family:'Arial Unicode MS';mso-fareast-font-family:MicrosoftYaHei;
  3. font-size:11.0000pt;"><o:p></o:p></span></p><p class="17"><span style="mso-spacerun:'yes';font-family:'Arial Unicode MS';mso-fareast-font-family:MicrosoftYaHei;
  4. font-size:11.0000pt;">run_daily(prepare_stock_list, '9:05')</span><span style="mso-spacerun:'yes';font-family:'Arial Unicode MS';mso-fareast-font-family:MicrosoftYaHei;
  5. font-size:11.0000pt;"><o:p></o:p></span></p><p class="17"><span style="mso-spacerun:'yes';font-family:'Arial Unicode MS';mso-fareast-font-family:MicrosoftYaHei;
  6. font-size:11.0000pt;">run_daily(dapan, '9:30')</span><span style="mso-spacerun:'yes';font-family:'Arial Unicode MS';mso-fareast-font-family:MicrosoftYaHei;
  7. font-size:11.0000pt;"><o:p></o:p></span></p><p class="17"><span style="mso-spacerun:'yes';font-family:'Arial Unicode MS';mso-fareast-font-family:MicrosoftYaHei;
  8. font-size:11.0000pt;">run_weekly(weekly_adjustment, 2, '10:30')  # <font face="MicrosoftYaHei">每周二</font><font face="Arial Unicode MS">10:30</font><font face="MicrosoftYaHei">调仓</font></span><span style="mso-spacerun:'yes';font-family:'Arial Unicode MS';mso-fareast-font-family:MicrosoftYaHei;
  9. font-size:11.0000pt;"><o:p></o:p></span></p><p class="17"><span style="mso-spacerun:'yes';font-family:'Arial Unicode MS';mso-fareast-font-family:MicrosoftYaHei;
  10. font-size:11.0000pt;">run_daily(sell_stocks, time='10:00')  # <font face="MicrosoftYaHei">止损函数</font></span><span style="mso-spacerun:'yes';font-family:'Arial Unicode MS';mso-fareast-font-family:MicrosoftYaHei;
  11. font-size:11.0000pt;"><o:p></o:p></span></p><p class="17"><span style="mso-spacerun:'yes';font-family:'Arial Unicode MS';mso-fareast-font-family:MicrosoftYaHei;
  12. font-size:11.0000pt;">run_daily(trade_afternoon, time='14:30')  # <font face="MicrosoftYaHei">检查持仓中的涨停股是否需要卖出</font></span><span style="mso-spacerun:'yes';font-family:'Arial Unicode MS';mso-fareast-font-family:MicrosoftYaHei;
  13. font-size:11.0000pt;"><o:p></o:p></span></p><p class="17"><span style="mso-spacerun:'yes';font-family:'Arial Unicode MS';mso-fareast-font-family:MicrosoftYaHei;
  14. font-size:11.0000pt;">run_daily(close_account, '14:50')</span><span style="mso-spacerun:'yes';font-family:'Arial Unicode MS';mso-fareast-font-family:MicrosoftYaHei;
  15. font-size:11.0000pt;"><o:p></o:p></span></p><p class="17"><span style="mso-spacerun:'yes';font-family:'Arial Unicode MS';mso-fareast-font-family:MicrosoftYaHei;
  16. font-size:11.0000pt;">run_weekly(print_position_info, 5, time='15:10')</span></p>
复制代码
这种定时任务设置使策略执行更加规范有序。
总结与展望
MACD顶背离小市值优选策略通过精选小市值股票,结合多层次风险控制机制,实现了低回撤高收益的优异表现。该策略在2024年的市场波动中展现出强大的适应能力,无论是2月的大跌还是9-10月的大涨,都能有效应对。
策略的成功关键在于:
1. 专注于小市值股票的选股逻辑
2. MACD顶背离的市场趋势判断
3. 多层次的风险控制机制
4. 灵活的调仓与持仓管理
对于投资者来说,这一策略提供了一种可行的低回撤高收益投资方法,特别适合希望长期稳健增长资金的投资者。
对于量化策略开发者来说,该策略展示了清晰的逻辑、严格的风险控制和灵活的参数设置对策略成功的重要性。
该策略的完整模拟交割单可以在https://www.9db.com/detail/7E3D251B-768C-4204-BD08-5E27AA0A45A0这个链接中查看。
image.png
量化投资不是一蹴而就的,需要不断学习和优化。本策略虽然表现优异,但仍有改进空间。建议读者在实盘应用前进行充分的模拟测试,并根据自身风险偏好调整参数。希望本文的分享能对大家的量化投资之路有所帮助。

image.png

回复

您需要登录后才可以回帖 登录 | 立即注册

客服专线

400-080-8112

用思考的速度交易,用真诚的态度合作,我们是认真的!
  • 关注公众号
  • 添加微信客服
Copyright © 2001-2025 迅投QMT社区 版权所有 All Rights Reserved. 京ICP备2025122616号-3
关灯 快速发帖
扫一扫添加微信客服
QQ客服返回顶部
快速回复 返回顶部 返回列表