乐于分享
好东西不私藏

潜龙在渊——短线擒龙战法Ptrade源码程序

潜龙在渊——短线擒龙战法Ptrade源码程序

大家好,旅游了好几天策略涨得不错,大家这几天收益怎么样?今天给大家介绍一个短线擒龙策略,我叫它「潜龙在渊」——名字出自《易经》乾卦的"潜龙勿用"。什么意思?龙(有资金干过活的强势股)深藏于渊(缩量洗盘、抛压出清),时机一到就要飞。这个策略做的就是这件事:先找有资金痕迹的小盘股,等它们缩量到位,早盘确认形态就买,持仓过夜,次日一有不对劲就走

老规矩:本公众号不拉群不荐股,只公布源码,老规矩后台回复 潜龙在渊 获取 Ptrade 源码。

注:程序依赖 tushare 接口(文中用的是山西证券 sxsc_tushare),需根据你自己的账户改 token。

策略中心思想

  1. 1. 盘前筛"异动缩量"的小盘股 —— 全市场 A 股里,先剔除创业板、科创板、ST、停牌、退市、房地产,再只留市值 100 亿以内、近 25 日有过涨停或近 5 日有过倍量的票。进池子的,都是"最近有资金干过活"的小盘股。
  2. 2. 早盘 9:35-9:40 用 5 个条件狙击 —— 在池子里等开盘博弈结果:现价站上开盘价、贴近均价线、近期缩量,加上量能因子 VolumeMeanRatio < 0.8,满足就买 5000 元。
  3. 3. 持仓过夜,次日 10:01 起多信号离场 —— A股 T+1,当天买入的票当天卖不掉,最早也得隔夜。次日 10:01 开始扫持仓:跌破 5 日均线、盈利回调、弱反弹、放量滞涨、止损 -8%、当日跌超 3%,10:40 还有一记「三K线法则」兜底:今天最高点盖不过前两天,就卖。

一、为什么是"异动 + 缩量"?

这是整套策略的命门,拆开看就两个词。

异动,证明有资金来过。 一只票近 25 天涨停过,或者近 5 天成交量是之前的两倍以上,说明有主力进场、有资金痕迹。没有异动的票,你根本不知道它在干嘛,买了就是赌。

缩量,说明抛压快没了。 涨停或者倍量之后,通常要经历一个换手、洗盘的过程——早买的想落袋,被套的想割肉,这些卖盘会慢慢出清。等成交量缩到地量,说明该卖的人都卖完了,筹码沉淀下来了,这时候价格一旦企稳,反弹就是大概率。

代码里用了一个叫 VolumeMeanRatio 的因子来量化"缩到位没有":

def calculate_volume_mean_ratio(stock, n=5):    his_data = get_history(count=n*3, frequency='1d',                          field=['volume'],                          security_list=stock, fq='pre')    # 5日量均线 / 10日量均线    mean_1n = his_data['volume'].rolling(n, min_periods=1).mean()    mean_2n = his_data['volume'].rolling(2 * n, min_periods=1).mean()    volume_mean_ratio = mean_1n / mean_2n    return volume_mean_ratio.iloc[-1]

VolumeMeanRatio = 5日均量 ÷ 10日均量。这个值小于 0.8,就是说最近 5 天的量比前 10 天萎缩了 20% 以上——放量干完活,缩量洗到位,就这两个条件,缺一个都不碰。

💡 量价关系的学术依据很扎实,Karpoff (1987) 的经典综述《The Relation Between Price Changes and Trading Volume》就指出:成交量是价格的先行指标,放量是资金行为,缩量是筹码沉淀,量永远走在价前面。

二、为什么是小盘股?

市值 100 亿以内的票,天生是短线玩家的猎场:

  • • 弹性大 —— 几千万资金就能撬动一根大阳线,主力控盘成本低
  • • 散户少 —— 没那么多机构抱团,走势更多由游资和短线资金主导,异动后惯性更明显
  • • 过滤干净 —— 市值大了盘子太重,缩量企稳后的反弹往往没什么肉

同时剔除三类:科创板(688,20% 涨跌幅,波动太野)、创业板(300,同样 20% 涨跌幅,容易追在尖顶)、房地产(政策面压制,很难走出像样的趋势行情)。

💡 这背后是 De Bondt-Thaler (1985) 的过度反应理论:小盘股对信息的反应更剧烈,也更容易在反应过头后回归均值——异动后缩量企稳的买点,吃的就是这个"回归"的肉。

三、为什么要看大盘脸色?

策略有个硬性前置条件:估算全市场上涨家数超过 3000 家,才允许买入

def check_market_environment():    ...    rising_stocks = (latest_data['close'] > latest_data['preclose']).sum()    estimated_rising = int(rising_stocks * total_stocks / sample_stocks)    return estimated_rising > 3000

翻译成人话:普涨的日子才动手,普跌的日子空仓。逻辑很朴素——缩量企稳的小盘股,在普涨行情里反弹概率高;在泥沙俱下的行情里,再好的形态也扛不住大盘砸。这一条过滤掉的不只是亏损,还有大量无效交易。

💡 Cooper, Gutierrez & Hameed (2004) 发表在《Journal of Finance》上的研究《Market States and Momentum》证实:同样的策略,在市场普涨期和普跌期的收益天差地别,大盘状态是策略能否生效的前提条件。

四、5 个买入条件(缺一不可)

9:35-9:40 这 5 分钟,程序每分钟扫一遍股票池,盯的是分时形态:

  1. 1. 现价在开盘价上方 —— 开盘后没塌,多头控场
  2. 2. 贴近均价线(±2% 以内) —— 回踩均价不破,企稳信号
  3. 3. 近期缩量(后 3 分钟均量 < 前 3 分钟的 80%) —— 冲高后没有抛压
  4. 4. VolumeMeanRatio < 0.8 —— 日线级别量能充分萎缩
  5. 5. 不触发弃买条件 —— 以下任一情况直接跳过:
    • • 跌破 5 日均线(×0.98)
    • • 开盘放量下跌、反弹却盖不住开盘价(弱反弹)
    • • 放量滞涨(量比 > 10 但涨幅只有 1%-2%)
    • • 当日已跌超 3%
    • • 股价超过 20 元

为什么要 9:35 之后才动手?开盘前 5 分钟是 9:15-9:25 集合竞价的延续,主力经常挂单又撤单试盘,价量信息不可信。9:30-9:35 这一轮真实博弈打完之后,9:35-9:40 才看得到"谁赢了"。这个窗口的把握,就是整套策略的节奏感。

五、买完过夜,次日离场:卖出的艺术

短线策略的命,一半在买,一半在卖。先说一个必须搞清楚的点:A股是 T+1,当天 9:35-9:40 买入的票当天卖不掉,必须持仓过夜——所以这策略本质是隔日短线,持仓短则一天,长则几天,直到触发卖出信号为止。卖出条件有 7 个,从次日 10:01 起持续扫持仓,触发任何一个就卖:

卖出信号
触发条件
一句话解释
破 5 日线
现价 < MA5 × 0.98
趋势破了,走
盈利回调
浮盈 > 2% 且现价 < 昨收 × 0.98
有肉就落袋,不贪
弱反弹
开盘放量跌、反弹不破开盘价
反弹无力,走
放量滞涨
量比 > 10 但涨幅仅 1%-2%
出货嫌疑,走
硬止损
亏损 ≥ 8%
铁律,无条件走
当日急跌
现价 ≤ 昨收 × 0.97
当日走弱,走
三K线法则
今日最高 ≤ max(昨日最高, 前日最高)
10:40 检查,盖不过前高就走

重点说下三K线法则,这是整套策略里最有味道的一个信号:

def three_k_check(context):    ...    today_high = minute_data['high'][-1]      # 今日最高    yesterday_high = minute_data['high'][-2]  # 昨日最高    day_before_high = minute_data['high'][-3] # 前日最高    # 今日最高点不高于前两日,卖出    if today_high <= max(yesterday_high, day_before_high):        execute_sell(stock, position)

翻译过来就一句话:不创新高就离场。买入的逻辑是"异动后缩量企稳",那持仓的逻辑就是"必须持续创新高"。价格连续两天盖不过前高,说明这波异动的动能已经耗尽,再拿着就是坐过山车。

💡 这和海龟交易系统的核心思想同源——Richard Donchian 的通道突破法则:趋势存在的前提是价格不断创出新高,一旦失去新高动能,趋势就宣告结束。

六、关于回测,说句实话

这个策略没有附回测数据,因为条件较多回测很慢,一个月数据要回测好久。但是一个月回测又没有意义,所以只讲策略思路,不放回测结果。

「潜龙在渊」更像是一套经验型打法:它把"缩量企稳买、不创新高卖"这套老股民都懂的手感,翻译成了可以执行的规则。有没有效,得靠你自己拿历史数据跑一遍,或者小仓位实盘验证。

七、风险与展望

坦诚说几个硬伤:

  • • 无回测支撑 —— 这是最大的不确定性,策略有效性存疑
  • • 早盘买入有滑点 —— 9:35-9:40 挂限价,行情快的时候可能成交不了
  • • 单笔仓位太小 —— 每只 5000 元,手续费占比高,收益会被摩擦成本吃掉一部分,各位可以根据自己的资金实力修改
  • • 依赖普涨环境 —— 上涨家数不过 3000 就空仓,熊市基本不干活,但也因此躲过了大部分下跌

后续可以做的事:

  • • 做消融对比:去掉大盘过滤、去掉三K线法则,分别看收益和回撤变化
  • • 调 VolumeMeanRatio 阈值(0.7 / 0.75 / 0.8 / 0.85),找到对参数最不敏感的区域

写在最后

「潜龙在渊」——真正的机会不是追出来的,是等出来的。强势股异动之后,缩量洗盘就是在积蓄下一次起飞的力量,潜得越深,飞得越高。它告诉我们一个朴素的道理:把"缩量企稳、不创新高就跑"这种模糊的手感,拆成几个能落地的条件,交易就从赌博变成了执行。

纪律 > 预测,规则 > 感觉。


代码已开源,剩下的就是拿你自己的仓位去验证。后台回复:潜龙在渊 获取全部源码。

风险提示:以上仅为个人投资思路分享,不构成任何投资建议,市场有风险,盈亏自负。

本公众号不拉群不荐股,只公布源码,老规矩后台回复 潜龙在渊 获取 Ptrade 源码。