先说结论。向上突破用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>=前高。
向下突破同理
收藏