下面语句应用在分钟周期时,变化不同步。HH,LL和LC在夜盘的第二根bar才开始变化,和HC不同步,哪里有问题?
HH = Highest(HighD(1), 2);
HC = Highest(CloseD(1), 2);
LL = Lowest(LowD(1), 2);
LC = Lowest(CloseD(1), 2);
PlotNumeric("HH", HH);
PlotNumeric("HC", HC);
PlotNumeric("LL", LL);
PlotNumeric("LC", LC);
您反馈的问题,应该是理解的问题。HighD(1)在每根bar上得到的是这根bar前一天的最高价,所以,3.23夜盘21点(实际交易日是3.24)得到的是3.23的最高价,而您要计算的是两根bar上highd(1)值的最高价,那3.23夜盘21点,计算的结果就是3.23日21点和3.23日14:55这两根bar的highd(1)值的最高价。3.23夜盘21点05分,计算的结果就是3.23日21点05分和3.23日21点这两根bar的highd(1)值的最高价,这两根Bar的highd(1)其实都是实际交易日3.23的最高价,所以会让您产生从夜盘第二根K线才开始同步的错觉。文字描述有点啰嗦,但愿您能看懂。
理解了,Highest的函数的回溯是是在当前周期的回溯,不是日线上的回溯。所以解决办法是只能加载日线图层跨周期?如果不用多图层,有解决办法吗?
用跨周期图层实现起来会比较简单,否则写起来会比较复杂一些。可以用以前跨周期函数那套方法,或者是用数组记录,再重编写一个数组做参数的highest函数,都是可以实现的。
当然,如果确定只求2天的最高和最低,也可以用笨办法,记录两个序列变量,分别记录1天和2天的高低价,然后两个变量求大小。
highd closed是序列函数 在一定条件下使用会出错
你可以打开代码查看算法 看看在使用中是不是违反了某些语法机制
也可以使用quant的跨周期调用图层机制来取日线数据