老师,您好!下面一段代码是求历史最高价与历史最低价,并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。谢谢!
确实如此,这比喻形象。👍