全部 智大领峰 TBQuant功能 TBL语言 TB开户 问答专区 高手圈 其他
回溯有问题,程序重装了。
2023-06-21 11:33

回溯有问题,(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;}

    }

    这是输出结果

data-href=



zhangnj

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

2023-06-21 12:48
blackduke
@zhangnj

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

2023-06-21 13:21
blackduke
@zhangnj

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;}}

    }

    data-href=

2023-06-21 13:33
blackduke
@zhangnj

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

2023-06-21 14:26
zhangnj
@blackduke

\"\"

2023-06-21 14:31
zhangnj

data-href=

2023-06-21 14:30
blackduke
@zhangnj

为什么

\"\"

2023-06-21 14:43
blackduke
@zhangnj

为什么一进逻辑判断就不行

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;}}

    }

    \"\"

2023-06-21 14:49
blackduke
@zhangnj

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

2023-06-21 14:54
blackduke

为什么一进逻辑判断就不行

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;}}

    }

   

2023-06-21 14:48
zhangnj
@blackduke

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

2023-06-21 15:01
blackduke
@zhangnj

收到,我把这篇截下来\"\"

2023-06-21 15:07
您未登录,请先 登录注册 后发表评论
顶部