create daily timeseries engine for 30 mins which aligns data from 09:15:00 to 09:44:59

I want to create daily timeseries engine for 30 mins which aligns data from 09:15:00 to 09:44:59 I tried below code but it didnt work. If I use updateTime=60*30 seconds and step=60*15 seconds the engine displays data from 09:00:00, 09:15:00, 09:30:00 etc. Which I dont want, I need like this 09:15:00, 09:45:00, 10:15:00 etc. Please help me.


share streamTable(1000:0, `ts`sym`volume, [DATETIME, SYMBOL, INT]) as trades
output1 = table(10000:0, `time`sym`sumVolume, [DATETIME, SYMBOL, INT])

agg1 = createDailyTimeSeriesEngine(name="agg1", windowSize=60*30, step=60*15, metrics=<[sum(volume)]>, dummyTable=trades, outputTable=output1, timeColumn=`ts, useSystemTime=false, keyColumn=`sym, garbageSize=50, useWindowStartTime=true, sessionBegin = 09:15:00, sessionEnd = 15:30:00)

subscribeTable(tableName="trades", actionName="agg1", offset=0, handler=append!{agg1}, msgAsTable=true);

insert into trades values(2018.10.08T09:15:02,`A,26)
insert into trades values(2018.10.08T09:30:02,`A,26)
insert into trades values(2018.10.08T09:30:10,`B,14)
insert into trades values(2018.10.08T09:45:10,`A,14)
insert into trades values(2018.10.08T09:47:10,`B,14)
insert into trades values(2018.10.08T10:00:10,`A,14)
insert into trades values(2018.10.08T10:00:10,`B,14)
insert into trades values(2018.10.08T10:20:15,`A,14)
insert into trades values(2018.10.08T10:20:18,`B,14)
insert into trades values(2018.10.08T11:29:46,`A,30)
insert into trades values(2018.10.08T11:29:50,`B,11)
insert into trades values(2018.10.08T11:30:00,`A,14)
insert into trades values(2018.10.08T11:30:00,`B,4)
insert into trades values(2018.10.08T13:00:10,`A,16)
insert into trades values(2018.10.08T13:00:12,`B,9)
insert into trades values(2018.10.08T14:59:56,`A,20)
insert into trades values(2018.10.08T14:59:58,`B,20)
insert into trades values(2018.10.08T15:00:00,`A,10)
insert into trades values(2018.10.08T15:00:00,`B,29)

select * from output1 //gives incorrect results as time wont align to sessionBegin 09:15:00

select sum(volume) from trades group by sym,dailyAlignedBar(ts, 09:15:00, 60*30) as k30 //gives correct results as time wont align to sessionBegin 09:15:00


Which Gives Result as under:

1) DailyTimeSeries Results

time	                sym	sumVolume
2018.10.08T09:00:00	A	26
2018.10.08T09:15:00	A	52
2018.10.08T09:15:00	B	14
2018.10.08T09:30:00	A	40
2018.10.08T09:30:00	B	28
2018.10.08T09:45:00	A	28
2018.10.08T09:45:00	B	28
2018.10.08T10:00:00	A	28
2018.10.08T10:00:00	B	28
2018.10.08T10:15:00	A	14
2018.10.08T10:15:00	B	14
2018.10.08T11:00:00	A	30
2018.10.08T11:00:00	B	11
2018.10.08T11:15:00	A	44
2018.10.08T11:15:00	B	15
2018.10.08T11:30:00	A	14
2018.10.08T11:30:00	B	4
2018.10.08T12:45:00	A	16
2018.10.08T12:45:00	B	9
2018.10.08T13:00:00	A	16
2018.10.08T13:00:00	B	9
2018.10.08T14:30:00	A	20
2018.10.08T14:30:00	B	20
2) dailyAlignedbar results (I want to replicate these results in DailyTimeSeriesEngine
sym	         k30	    sum_volume
A	2018.10.08T09:15:00	52
B	2018.10.08T09:15:00	14
A	2018.10.08T09:45:00	28
B	2018.10.08T09:45:00	28
A	2018.10.08T10:15:00	14
B	2018.10.08T10:15:00	14
A	2018.10.08T11:15:00	44
B	2018.10.08T11:15:00	15
A	2018.10.08T12:45:00	16
B	2018.10.08T12:45:00	9
A	2018.10.08T14:45:00	30
B	2018.10.08T14:45:00	49


please refer https://ask.dolphindb.net/question/1140 for updates and / or solutions

请先 登录 后评论

1 个回答

Shena Mao

using forceTriggerTime = 60, and waiting for 2 more minutes, you could get what you want.

share streamTable(1000:0, `ts`sym`volume, [DATETIME, SYMBOL, INT]) as trades
output1 = table(10000:0, `time`sym`sumVolume, [DATETIME, SYMBOL, INT])
agg1 = createDailyTimeSeriesEngine(name="agg1", windowSize=60*30, step=60*15, metrics=<[sum(volume)]>, dummyTable=trades, outputTable=output1, timeColumn=`ts, useSystemTime=false, keyColumn=`sym, useWindowStartTime=true, sessionBegin = 09:15:00,  sessionEnd = 15:30:00, forceTriggerTime = 60)
subscribeTable(tableName="trades", actionName="agg1", offset=0, handler=append!{agg1}, msgAsTable=true);
insert into trades values(2018.10.08T09:15:02,`A,26)
insert into trades values(2018.10.08T09:30:02,`A,26)
insert into trades values(2018.10.08T09:30:10,`B,14)
insert into trades values(2018.10.08T09:45:10,`A,14)
insert into trades values(2018.10.08T09:47:10,`B,14)
insert into trades values(2018.10.08T10:00:10,`A,14)
insert into trades values(2018.10.08T10:00:10,`B,14)
insert into trades values(2018.10.08T10:20:15,`A,14)
insert into trades values(2018.10.08T10:20:18,`B,14)
insert into trades values(2018.10.08T11:29:46,`A,30)
insert into trades values(2018.10.08T11:29:50,`B,11)
insert into trades values(2018.10.08T11:30:00,`A,14)
insert into trades values(2018.10.08T11:30:00,`B,4)
insert into trades values(2018.10.08T13:00:10,`A,16)
insert into trades values(2018.10.08T13:00:12,`B,9)
insert into trades values(2018.10.08T14:59:56,`A,20)
insert into trades values(2018.10.08T14:59:58,`B,20)
insert into trades values(2018.10.08T15:00:00,`A,10)
insert into trades values(2018.10.08T15:00:00,`B,29)

b = exec distinct(second(k30)) from a
a = select sum(volume) from trades group by sym,dailyAlignedBar(ts, 09:15:00, 60*30) as k30
select * from output1 where second(time) in b

However, as for realtime data, we recommend you set forceTriggerTime parameter equal or larger than half of the window size.

请先 登录 后评论
  • 1 关注
  • 0 收藏,1006 浏览
  • Vishvesh Upadhyay 提出于 2022-01-10 16:00

相似问题