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

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

怎么取得前K线的均线值?
跨周期策略的大周期回测可能引入未来数据的问题
经纪商ID怎么取得?
橡胶用后复权订阅K线数据可能有问题
请问如何取得上一根bar的横坐标
如何选取合适的持仓函数?
橡胶用后复权订阅K线数据可能有问题
如何取得上一小节的收盘价
GetTick函数可能存在阻塞
Hide , Show的可能BUG

这个函数取得的小节定义包含日期,如下面的数据。

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点以后又会出问题?不是都相同吗