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.