我把老鸭头拆成四行,删掉了最好看的那版

通达信公式手记 · 第 027 期
鸭脖 · 缩颈 · 再抬头
把老形态写成四行可复算的条件
末班地铁 · 便签纸 · 一个只认当根锚点的写法

老鸭头这类形态,人眼一扫就"觉得像",写成公式却老翻车。这期不谈怎么看盘,只解决一件很窄的事: 怎样用纯历史行情函数,把"抬颈—缩颈—再抬头"三步写成可复算、不回搜起点的条件组, 顺手把最容易埋雷的四个坑标出来。用途:盘后条件选股 + 副图复核。

昨晚末班,车厢里就剩我们俩。

他把手机扣在腿上,说了句挺闷的话:"照着老鸭头我写了三版,回测好看,一上实盘就变脸。"

我问哪一行出的鬼。他想了半天:"好像……是我允许它'回调最少 4 天、最多 25 天'那句。"

便签 · 一

"4 到 25 天"这句话,人脑能模糊匹配,公式不能。
你写 BARSLAST(高点)>=4 AND <=25, 等于在每个 bar 上偷偷做了一次"回溯挑最好看的那天当起点"。它不是未来函数,但性质一样危险——回测必然漂亮,实盘必然对不上。

他"哦"了一声,车过了个弯。于是有了下面这版。丑,但每一行都能当场对着 K 线数出来。

▍先说清这版砍掉了什么

✂ 砍掉"区间内任意回调天数"→ 改成固定锚点:只在鸭头高点当根锁死起点,之后只用 BARSLAST 读距离,不做区间搜索;

✂ 砍掉 ZIG / PEAK / REFX / BACKSET 及画线未来段 → 全文只用 REF MA HHV LLV BARSLAST COUNT EVERY SUM FILTER CODELIKE;

✂ 砍掉 DYNAINFO 系列盘中动态值 → 否则盘后复跑和盘中结果对不齐,复盘就没法验;

✂ 砍掉板块过滤的硬编码 → 用 CODELIKE 写成开关,要不要限定自己改一行。

▍源码 · 副图(末尾可直改选股)
INPUT: N(10,5,30), M(60,20,250), Q(5,2,20), VR(1.3,1.0,3.0), GAP(10,3,40), KEEP(3,1,10);{==== 一、趋势底:短均线在长均线之上,且长线本身不塌 ====}MA_N:=MA(C,N);
MA_M:=MA(C,M);
趋势底:=MA_N>MA_M AND MA_M>REF(MA_M,1);{==== 二、鸭脖:抬颈段,短线连升且已站上长线 ====}抬颈:=EVERY(MA_N>REF(MA_N,1),Q)
      AND COUNT(C>MA_M,Q)>=Q-1;{==== 三、锁死鸭头高点:唯一锚点,只认当根,不回搜 ====}头高:=HHV(H,Q);
是头:=H=头高 AND 抬颈 AND 趋势底;
锚:=BARSLAST(是头);        {距高点的bar数,只读}在窗:=锚>=Q AND 锚<=GAP;   {边界即参数,无区间寻优}{==== 四、缩颈:回踩缩量、浅回、不破长线 ====}缩量:=REF(MA(V,Q),锚)<MA(V,Q)*0.85;
不破:=LLV(L,锚)>=REF(MA_M,锚)*0.99;
浅回:=REF(H,锚)/LLV(L,锚)<1.15;
蓄势:=在窗 AND 缩量 AND 不破 AND 浅回;{==== 五、再抬头:两根量 + 一根价,挡单根脉冲 ====}量回:=V>MA(V,Q)*VR
      AND COUNT(V>MA(V,Q)*VR,KEEP)>=2;
价过:=C>REF(H,锚) AND C>MA_N
      AND MA_N>REF(MA_N,1);
条件满足:=蓄势 AND 量回 AND 价过
          AND FILTER(蓄势 AND 量回,GAP);{==== 六、输出:只给读数与状态,不写买卖字样 ====}颈深:REF(H,锚)/LLV(L,锚)-1,COLORYELLOW,NODRAW;
量比:V/MA(V,Q),COLORWHITE,NODRAW;
回踩天:锚,COLORMAGENTA,NODRAW;
STICKLINE(抬颈,0,1,2,0),COLOR404040;
STICKLINE(蓄势,0,0.6,2,0),COLOR607060;
STICKLINE(条件满足,0,1.4,2,0),COLOR805030;
DRAWTEXT(是头,1.5,'头'),COLORAAAAAA;
DRAWTEXT(条件满足 AND REF(条件满足,1)=0,1.7,         '条件满足'),COLORDDDDDD;

↑ 手机上正常应是自动折行、左边齐平、不用左右拖。若你的编辑器把它居中了,选中代码块点一次「左对齐」+清一次首行缩进即可; 长行我已在 AND 处预折好,折完不破坏语法,可直接整块复制。

▍导入五步 · 别跳第 3 步

01 Ctrl+F → 技术指标公式 → 其他类型 → 新建;

02 名字随手起(建议 YB_SANDUAN),整块贴入,第一个字符必须是 INPUT,前面不留空行;

03 右下角画线方法选「副图」,参数表会按 INPUT 自动填出六格。缺格=复制掉了行,重贴,别手补。

04 点「测试公式」,出"通过"再保存。报"未知的字符串",十有八九是中文注释的花括号被洗成半角嵌套了;

05 改条件选股:新建一条,只贴三~五段 + 末行 选股:条件满足;,参数区一字不动。盘后跑——量没走完时 MA(V,Q) 不稳态。

▍逻辑拆解 · 三句话 + 一个坑单

一、先立趋势底,再谈形态。MA_N>MA_M 且 MA_M 上行 是门票。没这一步,后面所有"鸭头"都只是下跌途中的一次反抽被误认成颈线。

二、锚点只锁一次。是头 用 H=HHV(H,Q) 在当根判定,判完只用 BARSLAST 读距离。 不在选股式里写"过去 25 天里存在某个高点满足…"——那句等于让公式自己回头挑最好看的那天当起点。 这是本版和网上同题公式唯一、但致命的差别。

三、确认要"两根量 + 一根价"。COUNT(V>均量*VR, KEEP)>=2 要求量能连续两天过阈,专挡单根脉冲式放量; 价过 再叠加收在短均线上方且短线仍翘。三个与的关系,缺一不出信号。

▍四个坑 · 抄走备用

坑一 · 区间寻优 错写 EXIST(高点,4~25) → 事后挑起点,回测虚高。
本版:BARSLAST 只读锚距,不搜。

坑二 · 未来函数 错写 ZIG / PEAK / REFX / BACKSET → 信号会"往回改",复盘全是马后炮。
本版:全文未用,可逐行查。

坑三 · 盘中脏值 错写 DYNAINFO(7) → 盘后复跑结果漂移,验无可验。
本版:只吃 C / H / L / V 历史值。

坑四 · 无量突破 错写只留 C>前高 → 脉冲日大面积误触发。
本版:COUNT(...,KEEP)>=2 兜住。

▍复盘只看三个读数

回踩天 落在 Q~GAP 中段的最多,贴着边界的最可疑——贴边往往说明是参数在凑它,不是形态自己在长。

颈深 就是回撤幅度。同参数下把历史触发样本按颈深排一遍,你会立刻看见这版公式的脾气,比看任何"胜率宣传"都实在。

量比 只用来做分层复盘,不再往上加戏。读数不是指令,是让你知道刚才改的那行参数到底动了什么。

便签 · 二(他那张,我留着了)

公式的价值不在于它选中了谁,
而在于它逼你把"我觉得像",
翻译成第几根 bar、比谁大、连续几根。
翻译不出来的那部分感觉,就别假装它已经被量化了。

车到站,他把便签折了两折,塞回书里。

本 期 作 业 · 只 聊 语 法

你手里那版老形态公式,现在自查一遍——最可能是哪一行在偷偷"回头挑起点"? 是 EXIST、是 HHVBARS 套进了选股式,还是某个从别处抄来没读懂的 REFDATE?

写函数名就行,别带代码、别带名字,我们纯拆语法。
下期拆「同一形态,副图和选股为何结果对不上」(多半是 FILTER 和画线周期在打架),想看的评论区扣个「周期」。

⚠ 合规与免责声明

本文为通达信指标公式编写教学与技术交流,仅做编程逻辑学习参考;不构成任何投资建议,不推荐任何个股或交易策略;公式基于历史数据,过往表现不代表未来,不承诺收益;据此操作盈亏自负;股市有风险,投资需谨慎。

自查口径同步公开:全文不含个股名称与代码、不含价位与任何收益/胜率数字;「推荐/买入/卖出/抄底/逃顶」等导向性措辞零出现(仅本段自查句作反面列举); 文中 ZIG / REFX / DYNAINFO 等词只出现在"已砍掉/别这么写"的教学语境,源码本体未调用; 未设加群、私信领源码、付费课等任何站外引流入口;「条件满足」仅为布尔变量中性命名,不含操作含义。指标源码属软件技术讨论, 如需证券投资咨询服务,请认准中国证监会许可机构及在中国证券业协会可查执业编号的人员。

通达信公式手记 · 只拆语法,不给方向


相关阅读

最近发表
在线客服
QQ:332879389
联系电话
13605084160