回溯有问题,(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历史数据测试时是没有问题的。交易时间时不行的。