GetSessionDateTime取得的数据可能不太合适

现在0-24点取得的数据为相同,如果有0点后的夜盘,则对该交易小节的判断会出现问题,将此函数改为15点到15点取得数据一致更为合适。

这个函数取得的小节定义包含日期,如下面的数据。2024-05-28 23:59:00[[20240527.210000000,20240528.023000000],[20240528.090000000,20240528.101500000],[20240528.103000000,20240528.113000000],[20240528.133000000,20240528.150000000]]2024-05-29 00:00:00[[20240528.210000000,20240529.023000000],[20240529.090000000,20240529.101500000],[20240529.103000000,20240529.113000000],[20240529.133000000,20240529.150000000]]2024-05-28 23:59:00 为K线的日期时间,下面的两行为函数取得的小节定义数组。当用(K线日期时间>=小节开始日期时间 and k线日期时间<小节结束日期时间)判断时,0点前为False,0点后为True。

回复:我提个建议吧,你在使用这个函数的时候,可以直接取当根bar对应的真实交易日期,也就是trudedate,不要加时间假如你是5.28日夜盘10点的bar执行truedate,返回的是5.29日,那么就可以正确取到对应的时间分段

回复:不知道是不是你的TBQ版本比较旧,升级到最新版本的TBQ再次试一下,因为我按照你的逻辑写了以下测试代码,得到的session的结果与你的结果不一样。测试代码如下:Events OnBar(ArrayRef<Integer> indexs){ Array<Array<TimeStamp>> sessions; TimeStamp BarDateTime; If(BarStatus != 2) Return; BarDateTime = 20240528.235900; Print(\"BarDateTime =\" + DateTimeToString(BarDateTime)); GetSessionDateTime(Symbol, BarDateTime, sessions); Print(TextArray(sessions)); ArrayClear(sessions); BarDateTime = 20240529.000000; Print(\"BarDateTime = \" + DateTimeToString(BarDateTime)); GetSessionDateTime(Symbol, BarDateTime, sessions); Print(TextArray(sessions)); }【2024-05-28 23:59:00】和【2024-05-29 00:00:00】这两个参数通过【GetSessionDateTime】返回的交易时间段是完全一致的。

回复:哦,我本来以为是因为函数有问题。试了一下,确实函数是正常的,直接使用bar的datetime数据来获取交易时段,也是正确的

回复:是我的问题,不好意思添麻烦了。取值session时使用的GetSessionDateTime(Symbol,Date,sessionTime),只用了date,发现有问题检查时用的date+time输出时间,但取值没有改,看了两位的代码,我再检查我的代码,才发现是取值没有加time。谢谢两位解答。

听不明白你在说什么,0-24点都相同了,怎么0点以后又会出问题?不是都相同吗