夜雨聆风学习资料网

ARTICLE · 1102190

电脑正常,手机却报错?先查跨周期引用|通达信指标公式排错教程

电脑正常,手机却报错?先查跨周期引用|通达信指标公式排错教程

同一段公式在电脑上测试正常,复制到手机版却提示错误,很多人第一反应是改变量名、删颜色。

如果公式里出现#WEEK、#MONTH这类写法,先把跨周期引用单独查一遍,往往能更快缩小问题范围。

免责声明:本文仅做通达信公式技术与使用方法分享,不构成投资建议,不推荐具体个股或交易策略。不同客户端版本的公式支持存在差异,实际结果以当前客户端测试为准。

先搜一个符号

打开公式编辑器,直接搜索#。

看到下面这类写法,就说明公式正在引用其他周期的数据:

周收:=C#WEEK;

周DIF:=MACD.DIF#WEEK;

月DIF:=MACD.DIF#MONTH;

这类代码本身不代表公式有问题。

真正需要检查的是:当前公式运行周期、被引用周期和引用对象是否符合要求。

先查跨周期引用

跨周期引用不是简单换一个参数。

例如日线公式调用周线数据时,公式使用的已经不是单纯的日线数据。

如果还写成:

MACD.DIF#WEEK

那么又多了一层指标引用。

所以电脑端正常、手机端异常时,先把这些位置单独拿出来测试,比整段源码一起乱改更容易定位问题。

排查顺序

第一步:找到所有#

把#WEEK、#MONTH、#MIN60等位置全部找出来。

只要存在,先记录下来,不要一上来整段删除。

第二步:检查周期方向

通达信跨周期引用要求:

被引用的周期必须高于当前运行周期。

例如日线公式可以引用周线、月线数据。

反过来,如果在大周期公式里直接使用#去取得更小周期数据,就不符合这种跨周期转换方式。

第三步:把可疑引用单独测试

例如完整公式里有:

周收:=C#WEEK;

排查时可以先把复杂条件暂时拿掉,只测试这一项在当前客户端能不能通过。

如果最小测试已经报错,问题范围就明显缩小了。

如果能够通过,再继续检查其他代码。

第四步:分清两种引用

C#WEEK

属于直接引用其他周期的基础行情数据。

MACD.DIF#WEEK

属于引用其他指标在周线周期下的输出。

两种写法不要混在一起排查。

而且跨周期指标引用还有一个容易忽略的限制:

不能给被引用的指标再带参数。

所以碰到带参数的指标引用时,也要单独检查。

第五步:不要直接删除#WEEK

这是最容易产生新问题的一步。

原公式如果本来要比较日线与周线状态,把#WEEK直接删除以后,原来的周线条件就变成当前周期条件。

公式可能不报错了,但计算含义已经改变。

所以正确顺序应该是:

先确定问题是不是出在跨周期引用,再决定保留、替换,还是为手机版单独做兼容处理。

还有一个重要边界

跨周期引用得到的大周期数据,在这个大周期尚未结束时仍可能变化。

例如本周还没有结束,周线的最高价、最低价和收盘价都还可能继续改变。

因此这类数据不能简单理解成“出现以后就固定不动”的历史信号。

做历史分析时,对涉及跨周期数据的信号尤其要注意这一点。

一句话

电脑正常、手机报错,不要先乱删变量。公式里只要有#,先把跨周期引用单独测试。

免责声明:本文仅用于通达信公式技术与使用方法交流,不构成投资建议,不推荐具体个股或交易策略。不同客户端及数据环境可能存在差异,请以实际测试结果为准并独立判断。

相关学习资料