常见误区之为什么突破不能用close来判断?

先说结论。向上突破用high>=阻力位,向下突破用low<=支撑位。

再说原因:

很多人进行策略模型开发的时候,对信号的判断条件,下意识会选择在盘中代表最新价格的close。

比如,表述"最新价突破前高"时,喜欢用close>=high[1]来表述。

这种表述在盘中执行的时候没什么问题,在盘中close确实代表"最新价",high[1]也确实代表上一根bar的"最高价",也就是"前高"。

但是在历史bar上,这样表述就会出问题。

因为tb的onbar驱动域,在历史bar上,只以收盘状态的开高低收执行域内代码语句。也就是说,在历史bar上,close返回的是这根bar的'收盘价",而不是所谓的"最新价"。这个其实也很好理解,一根bar内的"最新价"少则几十,多则几千,close只有一个,如果要返回"最新价",到底要代表哪个时刻的"最新价"呢?这就没有办法返回了。

所以close>=high[1]这个表达式,在历史bar上,表达的其实“收盘价突破前高”,而不是“最新价突破前高”。

这两种表述是有很大区别的。从数学的表述说,“最新价突破前高”是“收盘价突破前高”的子集。

而通俗的说,就是“最新价突破前高”,不一定“收盘价突破前高”,而“收盘价突破前高”,一定是“最新价突破前高”,两者不是完全等价的,不能互相替换。

那么如何找一个表述方式,不管是历史bar状态还是实时bar状态,都能清晰表达出“最新价突破前高”这个状态呢?

我们对这个表述进行一下语义分析。

盘中“最新价突破前高”,这里的"最新价"在数值上既是close,也是high(自己想想为什么)。

历史“最新价曾经突破前高”,那么只要"最高价"比前高要大,那也可以等效描述。

所以在盘中和历史上都能等效表述的表达式就是high>=前高。

向下突破同理


信号闪烁 不能用Global ,怎么来解决
如何判断是否有委托单来防止信号闪烁
突破类型的交易如何下单
请问老师,判断20根K线内,是否有出现突破布林线上下轨,是用什么函数,或者如何撰写
突破
C[1] 跟 Close[1]有什么区别?
换月判断问题
突破问题
Commentary常见用法
连续合约判断信号,主力合约发单

收藏