全部 智大领峰 TBQuant功能 TBL语言 TB开户 问答专区 高手圈 其他
已解决
关于策略交易数据的问题
2022-08-19 14:12

我用多品种测试程序在策略交易的执行情况时,发现总有因为数据对不上而导致执行异常的情况,首先列出我的代码:

        If(indexs[0]==0)
        {               
            h0 = HighestFC(Data1.High,xK);
        }
        h3 = HighestFC(Data1.High,xK);
        h4 = HighestFC(Data1.High[1],xK);

        If(BarStatus == 2)
        {
            FileAppend("E://输出数据//MKHZ//"+FormulaName+"_"+symbolname+"_"+text(date)+".txt", "This is OnBarClose!" );
            FileAppend("E://输出数据//MKHZ//"+FormulaName+"_"+symbolname+"_"+text(date)+".txt", "bartimeOr=" + Text(SystemDateTime));
            FileAppend("E://输出数据//MKHZ//"+FormulaName+"_"+symbolname+"_"+text(date)+".txt", "CurrentTime=" + Text(CurrentTime));
            FileAppend("E://输出数据//MKHZ//"+FormulaName+"_"+symbolname+"_"+text(date)+".txt", "maxcount=" + Text(maxCount));
            FileAppend("E://输出数据//MKHZ//"+FormulaName+"_"+symbolname+"_"+text(date)+".txt", "h0=HighestFC(Data1.High,xK)=" + Text(h0));
            FileAppend("E://输出数据//MKHZ//"+FormulaName+"_"+symbolname+"_"+text(date)+".txt", "h3=HighestFC(Data1.High,xK)=" + Text(h3));
            FileAppend("E://输出数据//MKHZ//"+FormulaName+"_"+symbolname+"_"+text(date)+".txt", "h4=HighestFC(Data1.High[1],xK)=" + Text(h4));
            FileAppend("E://输出数据//MKHZ//"+FormulaName+"_"+symbolname+"_"+text(date)+".txt", "        " );
        }

以上代码只是简单的计算了data1图层的xk柱范围内K线的最高价,然后输出一个TB的日志。

然后问题就出现了,我发现策略交易出现异常后,回来读TB输出日志中的最高价,发现在TB图标上找不到对应的最高价,例子是在沪铜2022-8-18--21:30后发生的,具体情况如下第二张图:

从输出的日志中蓝色框可以读出,沪铜在21:00时,30条K线(我的程序参数xK默认为30)内的最高价为62360,我们可以打开cu2209图表数数,是可以发现没有错误的。

然后到了红色框的位置,22:00的OnBarClose对应的是cu2209在21:30最后一次图层bar数据,其中TB日志输出的最高价为62500,但我们回到cu2209的K线图表,可以发现图表显示的最高价为62520,这导致了后续所有程序运行异常。

甚至到了今天2022-8-19早上9:30前,计算的最高价h0仍然是62500,而9:30时cu2209的最高价为62510,这时候可以看到下图的输出日志黄色框部分发现,h0变成了62510,h4仍是62500,这明显与TB的图表对不上号,因为30柱K线内的最高价应该是21:30的62520,不是62500,也不是62510。

以上问题出现了不止一次,实在搞不懂原因,请各位老师帮忙解惑 ,谢谢!

tblaocai

http://www.tbquant.net/community/113.html?cid=all

2022-08-19 20:47
czs763268157
@tblaocai

老师好,虽然你指出了我序列函数的错误用法,但这并没有解决我的问题,因为我的h3和h4是没有在条件语句里的,它们的作用就是对照,但我们可以看到,它们得出的值与h0一样,都是错的,请问这如何解释呢?

2022-08-22 13:37
czs763268157
@tblaocai

老师好,我已经根据您的提供的视频教程修改了程序如下:

但是错误并没有得到修正,策略交易读取的数据还是与图表交易有差异的,例子如下:

可以看到,pg2209在2022.08.24_11:00创新高,图表读取的是5759,但TB当时输出的数据却是5755,这表明当时数据读取的是5755,有明显差异啊!

所以我想请教一下,请问图表数据是事后统计的数据吗(所以与实际交易的数据其实是有出入的)?若图表数据不真实,那我们如何保证我们的策略交易正常运行呢?

2022-08-25 10:15
tblaocai
@czs763268157

h0 = Highest(data1.High,xk) 这种写法不太对,我不知您具体是什么周期对什么周期,但这种写法,实际是计算的Data0的xk个数据的高点,只不过数据是从data1取过来的。就好比,如果data0是1分钟,data1是5分钟,xk=10,那你这么写等于是求了10根data0上和data1对应的数据,实际结果约等于求了data1两根K线的高点。因为有5根data0的K线对应的都是同一根5分钟K线

2022-08-25 20:28
czs763268157
@tblaocai

老师好,我知道您很忙,但您在回答问题时能先认真读一下全部内容再回复吗?(抱歉,你回答得太敷衍了,我就发一下牢骚)

首先,我在最初的问题已经截图了我的策略单元,是上下两个图层的策略单元,两个图层的数据都是30分钟周期同品种的数据,只是时间段不一样而已,有图有真相:

然后,我也已经根据您给的视频更改了程序代码,代码是:

而不是h0=HighestFC(Data1.High,xK),至于你若只看最后图片输出的数据,那你会发现那只是输出文字那部分我忘记改了而已,忘改部分截图如下:

所以最终您才会以为我写的是h0=HighestFC(Data1.High,xK)=XXXX。

先感谢老师每天为我们解决各种问题,那么能重新回复一下我之前的问题吗?为什么图表数据和行情输出的数据会不同呢?

P.S.下面一位朋友给了我一点启发,他本来一开始图表数据与我是不同的,但后来换了一下行情服务器就相同了,请问是不是TB在行情演绎时会自动更换行情服务器导致数据不同时段出现差异呢?

2022-08-26 14:03
Bryan2020

有没有这样一种可能:函数前面也要带上数据图层,比如:

        h3 = Data1.HighestFC(Data1.High,xK);
        h4 = Data1.HighestFC(Data1.High[1],xK);

如果你的xK是计算出来的变量,也许还需要指明 Data1.xK 或者 Data0.xK

2022-08-22 15:06
czs763268157
@Bryan2020

老师好,我已经根据您的说法修改了程序如下:

但是错误并没有得到修正,策略交易读取的数据还是错的,例子如下:

可以看到,pg2209在2022.08.24_11:00创新高,图表读取的是5759,但TB当时输出的数据却是5755,这表明当时数据读取的是5755,有明显差异啊!另外,xk不是变量,是参数(Params)。

所以我想请教一下,请问图表数据是事后统计的数据吗(所以与实际交易的数据其实是有出入的)?若图表数据不真实,那我们如何保证我们的策略交易正常运行呢?

2022-08-25 10:11
Bryan2020
@czs763268157

 

PG2209,在8月24日收盘前的几十天中,最高价就是5755,不知道你从哪里看到的5759?

2022-08-25 10:58
czs763268157
@Bryan2020

我在30分钟图看的,而且我打开15min图也是一样5759哦,数据为什么会有差异呢?

我的行情服务器如下:

2022-08-25 13:46
Bryan2020
@czs763268157

这确实是非常奇怪的事情了。期待TB工作人员的回复。

我不是TB老师哈,我和你一样是用户。

2022-08-25 14:41
Bryan2020
@czs763268157

我刚才切换到你连接的那个数据源,然后刷新数据,确实出现了5759.

这。。。。唉。。。。。

2022-08-25 14:48
202****8123415103

我也遇到这个问题,希望官方出来解释并解决问题,实盘与回测数据  最高价差异!

2022-10-22 09:36
kuuhot

之前我也出现过,在数据中心-行情数据那里清一下,还不行就删掉软件重新安装

2022-10-23 09:29
您未登录,请先 登录注册 后发表评论
顶部