通达信公式:跳空高开未回补【绝对准确】

编程达人挑战赛·第4期 6.5w人浏览 83人参与

ECT-OS-JiuHuaShan/https://orcid.org/0009-0006-8591-1891

通达信公式:跳空高开未回补的优化表达

跳空高开未回补的精确定义是:缺口日及以后的最低价都大于缺口日的前一天最高价

推荐使用:

{ 推荐使用这个版本,清晰易懂 }
跳空日 := BARSLAST(L > REF(H, 1));
选股条件: 跳空日 <= 9 AND LLV(L, 跳空日 + 1) > REF(H, 跳空日 + 1);

核心函数解析:

  • BARSLAST(L > REF(H, 1)):找到最近一次跳空高开的日期
  • LLV(L, N):求N日内的最低价
  • REF(H, N):引用N日前的最高价

逻辑验证:

  1. 跳空日确认L > REF(H, 1) 当日跳空高开
  2. 时间窗口跳空日 <= 9 跳空发生在10日内
  3. 未回补验证LLV(L, 跳空日+1) > REF(H, 跳空日+1) 跳空后最低价始终高于跳空前最高价

参数调整:

  • 9改为其他数字调整周期(N日内 = N-1)
  • 加入成交量、均线等条件提高准确性

在通达信中的使用方法:

  1. Ctrl+F打开公式编辑器
  2. 选择"条件选股公式"
  3. 新建公式,粘贴优化后的代码
  4. 保存后即可用于选股

这个优化版本准确地反映了"跳空高开未回补"的技术定义,代码简洁且逻辑清晰,是寻找强势突破股票的有效工具。

<think>好的,我需要帮用户写一个通达信的选股公式,满足以下条件: 1. 向前第四天(即四天前)涨停。 2. 第三天(三天前)跳空。 3. 之后连续横盘三天,低点不跌破跳空缺口。 4. 今天收阴线。 首先,我需要明确每个条件如何转化为通达信公式语言。通达信使用的是类似公式语言,有各种函数来获取历史数据,比如REF、HIGH、LOW、CLOSE、OPEN等。 第一步,处理四天前涨停的条件。涨停通常是指当日收盘价等于涨停价。不同市场和股票的涨停幅度可能不同,比如A股主板是10%,创业板和科创板可能不同。这里可能需要用户确认,但通常假设为10%。所以四天前的收盘价应该等于前一日收盘价的1.1倍。公式为: 涨停条件: C == REF(C,1) * 1.1; 但是这里要四天前,所以用REF函数,四天前的涨停应该是: REF(C,4) == REF(REF(C,1),4) * 1.1; 或者更简单一点,REF(C,4) = REF(C,5) * 1.1。这可能更准确,因为四天前的收盘价相对于五天前的收盘价涨停了10%。 但可能要考虑ST股的情况,比如5%的涨停。但用户没说明,可能默认10%。 第二步,三天前跳空跳空通常指当天的盘价于前一天的收盘价,并且形成缺口,即当天的最低价也于前一天的最价。所以三天前的盘价要大于两天前的收盘价(即四天前的收盘价?或者两天前的收盘价?这里需要注意时间点。第三天是指三天前,即相对于今天来说,第三天是T-3,第四天是T-4。所以跳空发生在第三天(T-3),也就是相对于第四天(T-4)的收盘价而言。例如,T-3的盘价要于T-4的收盘价,并且最低价不低于T-4的最价,从而形成缺口。但用户可能指的是T-3当天于T-4的收盘,并且之后三天横盘,缺口被填。所以跳空的条件应该是: REF(OPEN,3) > REF(C,4) * 1.0,并且REF(LOW,3) > REF(HIGH,4)。即第三天(T-3)的盘价于T-4的收盘价,且当天的最低价不低于T-4的最价,形成向上缺口。 接下来是连续横盘三天,即第三天(T-3)、第二天(T-2)、昨天(T-1)这三天的K线都在某个范围内波动,并且低点不低于跳空缺口的低点,也就是T-3的最低价(因为缺口形成后的最低价应该不低于缺口的下沿)。或者用户可能指的是缺口的下沿是T-4的最价,而之后三天的低点都不跌破这个缺口的下沿,即T-3、T-2、T-1这三天的LOW都大于等于T-4的最价。或者可能指的是跳空当天的缺口,即T-3的盘价形成的缺口,其缺口下沿是T-4的最价,因此之后三天的最低价都不低于T-4的最价。 这里需要明确用户的意思。用户说的“跳空”应该是指T-3日于T-4日的收盘,并且形成缺口,即T-3的最低价于T-4的最价。因此,缺口的下沿是T-4的最价。之后的三天横盘,即T-3、T-2、T-1这三天的低点都不低于缺口下沿(即T-4的最价)。所以横盘三天的条件应该是: REF(LOW,3) >= REF(HIGH,4) AND REF(LOW,2) >= REF(HIGH,4) AND REF(LOW,1) >= REF(HIGH,4); 同时,横盘可能还意味着这三天的波动幅度较小,比如最价和最低价的差在一定范围内。但用户没有具体说明,可能只需要低点不跌破缺口即可,所以这部分可能不需要额外的幅度限制。 最后,今天(T日)收阴线,即今天的收盘价低于盘价:C < OPEN。 现在将这些条件组合起来。需要注意日期的索引是否正确。例如,REF(X, N)表示N天前的X值。例如,今天(当前K线)是第0天,昨天是REF(CLOSE,1),三天前是REF(CLOSE,3)。 所以,具体分解: 条件一:四天前(T-4)涨停: REF(C,4) >= REF(C,5) * 1.095; (这里使用9.5%以上,因为有时候涨停可能有小数点的误差,比如四舍五入) 条件二:三天前(T-3)跳空,即盘价于T-4的收盘价,并且最低价于T-4的最价: REF(OPEN,3) > REF(C,4) AND REF(LOW,3) > REF(HIGH,4); 条件三:之后三天(T-3、T-2、T-1)的横盘,即这三天的低点都不低于T-4的最价。注意这里可能需要明确,是否横盘的三天包括T-3日,因为T-3日已经跳空。根据用户描述,“连续横盘三天”应该是指跳空后的三天,即T-3之后的三天?或者可能用户的意思是从T-3始的连续三天?或者可能用户的时间点有误,需要重新理清时间顺序。 用户的原话是:“向前第四天涨停,第三天跳空,连续横盘三天”。时间顺序应该是: - 第四天(T-4):涨停 - 第三天(T-3):跳空 - 之后连续三天(T-2, T-1, T0)横盘?或者可能是T-3、T-2、T-1三天横盘? 但用户的描述可能有问题,因为如果第三天跳空,然后连续横盘三天,那么这三天应该是T-3之后的三天,也就是T-2、T-1、T0。但今天(T0)是最后一天,而用户要求今天收阴线,所以横盘的三天可能是指T-3、T-2、T-1这三天,而今天T0是收阴线。需要明确。 根据用户的问题,完整的时间线应该是: - 第四天(T-4):涨停 - 第三天(T-3):跳空 - 接下来三天(T-3、T-2、T-1)连续横盘,且低点不跌破跳空缺口 - 今天(T0)收阴线 但这样的话,跳空是在T-3日,之后横盘三天即T-3、T-2、T-1,这可能不合理,因为T-3日当天已经跳空,可能形成大阳线,而横盘应该是之后的两天?或者用户可能希望的是跳空后的三天横盘,即T-2、T-1、T0,但今天T0需要收阴线,可能这不符合。需要再仔细分析。 可能用户的时间线是: - T-4日:涨停 - T-3日:跳空(相对于T-4日的收盘) - 接下来的三天(T-2、T-1、T0)横盘,且低点不跌破T-3日的跳空缺口(缺口下沿是T-4日的最价) - 今天(T0)收阴线 但这样,横盘的三天包括今天,而今天收阴线可能属于横盘的一部分。或者可能用户的意思是: - T-4日涨停 - T-3日跳空,形成缺口 - 接下来的三天(T-3、T-2、T-1)横盘,缺口被填(即这三天的低点不低于缺口下沿) - 今天(T0)收阴线 这似乎更合理,因为如果横盘是在跳空之后的三天,而今天是收阴线,那么横盘的三天可能指的是T-3、T-2、T-1。但这样的话,T-3日当天已经跳空,可能当天的波动较大,是否属于横盘?可能用户希望的是在跳空后的三天内,股价波动不大,形成横盘整理,且不跌破缺口。 这个时候,横盘的条件可能需要定义这三天的最价和最低价波动幅度较小,比如每天的实体幅度较小,或者三天的最价和最低价在一个区间内。但用户提到的是“连续横盘三天,且低点不跌破跳空缺口”,所以可能只要满足这三天的低点都不低于缺口下沿(即T-4的最价),而横盘可能指这三天的波动幅度较小,比如振幅不大。或者用户可能仅指低点不跌破缺口,而不考虑振幅。 所以,条件三应该是: 三天(T-3、T-2、T-1)的最低价均不低于T-4日的最价: REF(LOW,3) >= REF(HIGH,4) AND REF(LOW,2) >= REF(HIGH,4) AND REF(LOW,1) >= REF(HIGH,4); 此外,横盘可能意味着这三天的股价波动较小,比如每天的收盘价在某个范围内。例如,这三天的收盘价相对于T-3日的收盘价波动不大,或者最价和最低价的幅度较小。但用户没有具体说明,所以可能这部分可以忽略,或者需要加入一些条件,比如每天的涨幅在一定范围内。 例如,这三天的最价和最低价的幅度不超过一定百分比,比如5%: REF((HHV(HIGH,3) - LLV(LOW,3)) / LLV(LOW,3),1) <= 0.05; 但这里的时间范围可能需要调整,因为要检查的是T-3到T-1这三天的波动。或者使用HHV和LLV函数来计算这三天的最和最低。 比如: 横盘条件: (HHV(REF(HIGH,3),3) - LLV(REF(LOW,3),3)) / LLV(REF(LOW,3),3) <= 0.05; 但可能写法有问题,需要重新考虑。 或者,对于T-3、T-2、T-1这三天的每一天,其最价和最低价的振幅较小: EVERY((HIGH - LOW)/LOW <= 0.03, 3); 但这里的EVERY函数可能需要用AND连接三天的条件: REF((HIGH - LOW)/LOW <= 0.03,3) AND REF((HIGH - LOW)/LOW <= 0.03,2) AND REF((HIGH - LOW)/LOW <= 0.03,1); 这里的0.03是假设振幅3%以内,用户可能需要调整。但用户没有给出具体数值,所以可能这部分需要忽略,或者必须与用户确认。但根据用户的问题,可能只需要低点不跌破缺口,而横盘的定义可能用户认为只要缺口不即可,所以可能不需要振幅限制,只满足低点不破即可。 最后,今天收阴线:CLOSE < OPEN。 综合以上条件,编写公式: 涨停条件: REF(C,4) / REF(C,5) >= 1.095; (涨停,考虑四天前的收盘相对于五天前的涨幅≥9.5%) 跳空: REF(OPEN,3) > REF(C,4) AND REF(LOW,3) > REF(HIGH,4); 缺口不破: REF(LOW,3) >= REF(HIGH,4) AND REF(LOW,2) >= REF(HIGH,4) AND REF(LOW,1) >= REF(HIGH,4); 今天阴线: C < O; 选股公式: 涨停条件 AND 跳空 AND 缺口不破 AND 今天阴线; 但需要注意,这里的缺口不破是否应该包括T-3日的最低价,因为T-3日已经跳空,所以当天的最低价已经于T-4日的最价,所以实际上,只要T-3、T-2、T-1这三天的LOW都不低于T-4的HIGH即可。而跳空条件中的REF(LOW,3) > REF(HIGH,4)已经保证了T-3日的最低价于T-4的最价,所以缺口不破中的REF(LOW,3) >= REF(HIGH,4)其实是重复的。因此,缺口不破的条件可能只需检查T-2和T-1的最低价是否不低于T-4的HIGH: 缺口不破: REF(LOW,2) >= REF(HIGH,4) AND REF(LOW,1) >= REF(HIGH,4); 因为T-3日的最低价已经满足在跳空条件中。 所以综合起来: 条件四天前涨停: REF(C,4) / REF(C,5) >= 1.095; 条件三天前跳空: REF(OPEN,3) > REF(C,4) AND REF(LOW,3) > REF(HIGH,4); 缺口被填: REF(LOW,2) >= REF(HIGH,4) AND REF(LOW,1) >= REF(HIGH,4); 今天阴线: C < O; 选股公式: 条件四天前涨停 AND 条件三天前跳空 AND 缺口被填 AND 今天阴线; 另外,关于涨停的判断,通达信中可能使用不同的方式,比如考虑ST股票的5%涨停,或者新股的不同规则。但一般情况下,可以简化为涨幅≥9.8%或接近涨停。例如: 涨停条件: (REF(C,4) - REF(C,5)) / REF(C,5) * 100 >= 9.8; 或者使用ZTPRICE函数,比如REF(C,4) = ZTPRICE(REF(C,5), 0.1); 但这个函数可能返理论涨停价,但需要考虑四舍五入的问题。 不过为了兼容性,可能直接用涨幅大于9.8%更稳妥。 另外,关于横盘的三天,用户可能是指连续三天的小K线,比如实体较小,或者波动幅度小,但用户没有明确说明,所以可能无法加入这部分条件。如果用户需要,可能需要进一步询问。 现在把这些条件组合成通达信公式: { 选股公式 } T4涨停:= (REF(C,4) - REF(C,5))/REF(C,5)*100 >= 9.8; T3跳空:= REF(O,3) > REF(C,4) AND REF(L,3) > REF(H,4); 缺口不破:= REF(L,2) >= REF(H,4) AND REF(L,1) >= REF(H,4); 今天阴线:= C < O; 选股条件: T4涨停 AND T3跳空 AND 缺口不破 AND 今天阴线; 但要注意,在通达信中,公式的周期是从当前K线始计算的。例如,REF(C,4)表示四天前的收盘价。例如,如果今天是2023年10月10日(假设是交易日),那么REF(C,4)就是四天前的收盘价,比如如果是连续交易日,可能是2023年10月4日(假设中间没有节假日)。需要确保时间的正确性。 此外,测试该公式时,可能需要检查历史数据是否符合条件。例如,某股票在四天前涨停,三天前跳空缺口,之后两天的最低价不低于缺口,今天收阴线。 可能的潜在问题: 1. 跳空的判断是否正确,包括盘价于前日收盘,且最低价于前日最。 2. 缺口被填的条件是否遗漏了第三天(T-3)之后的两天,即T-2和T-1。 3. 涨停的判断是否准确,是否有考虑ST股的情况。 4. 今天收阴线是否指的是当前交易日,而公式是否在收盘后使用。 最终的通达信公式可能如下: { 选股公式:前第四天涨停,第三天跳空,缺口不破,今收阴 } T4涨停:= (REF(CLOSE,4) - REF(CLOSE,5))/REF(CLOSE,5) >= 0.095; { 涨停9.5%以上 } T3跳空:= REF(OPEN,3) > REF(CLOSE,4) AND REF(LOW,3) > REF(HIGH,4); { 第三天跳空 } 缺口不破:= EVERY(REF(LOW,2) >= REF(HIGH,4) AND REF(LOW,1) >= REF(HIGH,4), 1); { T-2和T-1的最低价不低于T-4的最价 } 今天阴线:= CLOSE < OPEN; 选股条件: T4涨停 AND T3跳空 AND 缺口不破 AND 今天阴线; 或者更准确的条件: 缺口不破:= REF(LOW,2) >= REF(HIGH,4) AND REF(LOW,1) >= REF(HIGH,4); 因为EVERY函数可能在这里不适用,应该用两个独立的REF条件。 此外,用户可能需要调整涨停的幅度,比如用更精确的计算方式,比如ZTPRICE函数: T4涨停:= REF(CLOSE,4) = ZTPRICE(REF(CLOSE,5), 0.1); { 假设是非ST股,10%涨停 } 但ZTPRICE返的是理论涨停价,实际收盘价可能因为四舍五入略有差异,所以可以允许一定误差: T4涨停:= ABS(REF(CLOSE,4) - ZTPRICE(REF(CLOSE,5), 0.1)) < 0.01; { 误差小于0.01元 } 这样更准确。 综合这些,最终的公式可能如下: { 通达信选股公式 } T4涨停:= ABS(REF(C,4) - ZTPRICE(REF(C,5), 0.1)) < 0.01; { 四天前涨停 } T3跳空:= REF(O,3) > REF(C,4) AND REF(L,3) > REF(H,4); { 三天前跳空 } 缺口不破:= REF(L,2) >= REF(H,4) AND REF(L,1) >= REF(H,4); { 之后两天的最低价不低于缺口 } 今阴线:= C < O; { 今天收阴 } 选股条件: T4涨停 AND T3跳空 AND 缺口不破 AND 今阴线; 需要注意的是,该公式可能需要在日线数据下运行,且用户需要确保数据完整,尤其是四天前的数据存在。此外,实际应用中可能需要根据市场情况调整涨停的判断方式,比如创业板或科创板20%的涨停,这时候需要调整ZTPRICE的参数为0.2。但用户没有说明市场类型,所以可能需要通用处理,或者用户自行调整。 最后,提醒用户公式可能需要进一步测试和优化。</think>以下是根据您的要求编写的通达信选股公式: ```plaintext { 通达信选股公式:前四天涨停,三天前跳空,缺口不破,今收阴 } T4涨停:= ABS(REF(C,4) - ZTPRICE(REF(C,5), 0.1)) < 0.01; { 四天前涨停(10%涨停)} T3跳空:= REF(O,3) > REF(C,4) AND REF(L,3) > REF(H,4); { 三天前跳空且不缺口 } 缺口不破:= REF(L,2) >= REF(H,4) AND REF(L,1) >= REF(H,4); { 过去两天最低价不破缺口 } 今收阴:= C < O; { 今日收阴线 } 选股条件: T4涨停 AND T3跳空 AND 缺口不破 AND 今收阴; ``` ### 公式说明: 1. **四天前涨停** 使用`ZTPRICE`函数精准计算涨停价,允许0.01元误差(应对价格四舍
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值