关于CurrentBar实时取值

老师,您好!下面一段代码是求历史最高价与历史最低价,并Plot显示,在非实盘情况下,一切正常,但在实盘时,最后一个hisHigh及hisLow就不正确,导致线形扭曲。不知何故?怎样才能解决这个问题?顺便说一句,用系统提供的Highest与Lowest求值,更不正确。Numeric hisHigh; // 用以储存历史最高价Numeric hisLow; // 用以储存历史最低价// 赋初值hisHigh = High[CurrentBar]; hisLow = Low{CurrentBar]; // 循环求值For i = CurrentBar Downto 0{ If(High[i] >= hisHigh) hisHigh = High[i]; // 历史最高价 If(Low[i] <= hisLow) hisLow = Low[i]; // 历史最低价}// 可视化PlotNumeric("plt_hisHigh", hisHigh);PlotNumeric("plt_hisLow", hisLow);

你这个算法的运算效率太低了.....你有计算过你的运算量吗?如果你样本数有1000,第一根循环1次,第二根循环2次,以此类推,第1000根循环1000次,总共50050次计算明明只用1000次计算就能达到效果series<Numeric> hisHigh; // 用以储存历史最高价 series<Numeric> hisLow; // 用以储存历史最低价 hisHigh = max(hisHigh,high); hisLow = min(hisLow,low); PlotNumeric("plt_hisHigh", hisHigh); PlotNumeric("plt_hisLow", hisLow);

回复:您说的对!👍,不过,我说的那个问题不知是否能解决了,我来试下。

回复:掉一把铜斧头到水里 捞起来一把金斧头 嘿嘿

回复:完美解决,还是老师厉害,代码效率高太多了!顺便提一下,hisLow需要赋一个很大的初值,否则结果会是0。谢谢!

回复:确实如此,这比喻形象。👍

回复:

回复:学习了