回溯有问题,程序重装了。

回溯有问题,(Close[4]+Close[3]+Close[2]+Close[1]+High)与(Close[1]+Close[1]+Close[1]+Close[1]+High)/Length1;是一个值?下面是测试代码Params Numeric Length1(5);Vars Numeric Mathen; Global Bool ret(False); Events OnReady() { } onBar(ArrayRef<Integer> indexs) { If(!ret) {MAthen=(Close[4]+Close[3]+Close[2]+Close[1]+High)/Length1; Print(计算最高价时的5日均线价格:+Text(MAthen)); MAthen=(SummationFC(Close[1],4)+High)/Length1; Print(使用函数SummationFC计算最高价时的5日均线价格:+Text(MAthen)); MAthen=(Close[1]+Close[1]+Close[1]+Close[1]+High)/Length1; Print(使用Close[1]累计4次计算最高价时的5日均线:+Text(MAthen)); ret=True;} } 这是输出结果

为什么一进逻辑判断就不行Params Numeric Length1(5);Vars Numeric Mathen; Global Bool ret(False); Numeric a(10);Events OnReady() { } onBar(ArrayRef<Integer> indexs) { If(BarStatus==2) {If(a>3) {MAthen=(Close[4]+Close[3]+Close[2]+Close[1]+High)/Length1; Print(\"计算最高价时的5日均线价格:\"+Text(MAthen)); MAthen=(SummationFC(Close[1],4)+High)/Length1; Print(\"使用函数SummationFC计算最高价时的5日均线价格:\"+Text(MAthen)); MAthen=(Summation(Close[1],Length1-1)+High)/Length1; Print(\"使用函数Summation计算最高价时的5日均线价格:\"+Text(MAthen)); MAthen=(Close[1]+Close[1]+Close[1]+Close[1]+High)/Length1; Print(\"使用Close[1]累计4次计算最高价时的5日均线:\"+Text(MAthen)); a=1;}} }

回复:看下序列变量的吗链接 像SummationFC不能加上面限定 序列变量求值混乱 看链接 https://www.tbquant.net/forumarticle?cur=article&id=113&cid=all

回复:收到,我把这篇截下来

回复:为什么

回复:为什么一进逻辑判断就不行Params Numeric Length1(5);Vars Numeric Mathen; Global Bool ret(False); Numeric a(10);Events OnReady() { } onBar(ArrayRef<Integer> indexs) { If(BarStatus==2) {If(a>3) {MAthen=(Close[4]+Close[3]+Close[2]+Close[1]+High)/Length1; Print(\"计算最高价时的5日均线价格:\"+Text(MAthen)); MAthen=(SummationFC(Close[1],4)+High)/Length1; Print(\"使用函数SummationFC计算最高价时的5日均线价格:\"+Text(MAthen)); MAthen=(Summation(Close[1],Length1-1)+High)/Length1; Print(\"使用函数Summation计算最高价时的5日均线价格:\"+Text(MAthen)); MAthen=(Close[1]+Close[1]+Close[1]+Close[1]+High)/Length1; Print(\"使用Close[1]累计4次计算最高价时的5日均线:\"+Text(MAthen)); a=1;}} }

回复:实际情况中,我得在指定条件符合才调用吧,而不是加大运算量吧

根据复现发现,如下图,If(!ret)造成你的代码只在图表最左边bar运行,也就是currentbar==0的那根bar的值的输出。注释掉If(!ret)再运行即可!

回复:收到b( ̄▽ ̄)d,因为着急忘记加If(BarStatus==2)

回复:Length1=5;MAthen=(Close[4]+Close[3]+Close[2]+Close[1]+High)/Length1;MAthen=(SummationFC(Close[1],4)+High)/Length1;MAthen=(Summation(Close[1],Length1-1)+High)/Length1;这三个值应该是一样的吧,最初我是发现summation这个函数有问题,参数不回朔新测试代码这样Params Numeric Length1(5);Vars Numeric Mathen; Global Bool ret(False); Events OnReady() { } onBar(ArrayRef<Integer> indexs) { If(BarStatus==2) {If(!ret) {MAthen=(Close[4]+Close[3]+Close[2]+Close[1]+High)/Length1; Print(计算最高价时的5日均线价格:+Text(MAthen)); MAthen=(SummationFC(Close[1],4)+High)/Length1; Print(使用函数SummationFC计算最高价时的5日均线价格:+Text(MAthen)); MAthen=(Summation(Close[1],Length1-1)+High)/Length1; Print(使用函数Summation计算最高价时的5日均线价格:+Text(MAthen)); MAthen=(Close[1]+Close[1]+Close[1]+Close[1]+High)/Length1; Print(使用Close[1]累计4次计算最高价时的5日均线:+Text(MAthen)); ret=True;}} }

回复:Summation历史数据测试时是没有问题的。交易时间时不行的。

回复: