@@ -218,6 +218,27 @@ public Tick getTicks(String symbol, String category, int count, List<String> tra
218218 return apiClient .request (request ).responseType (new TypeToken <Tick >() {}.getType ()).doAction ();
219219 }
220220
221+ @ Override
222+ public List <FootprintResponse > getFootprint (Set <String > symbols , String category , String timespan , int count , Boolean realTimeRequired , String tradingSessions ) {
223+ Assert .notEmpty (ArgNames .SYMBOLS , symbols );
224+ Assert .notBlank (ArgNames .CATEGORY , category );
225+ Assert .notBlank (ArgNames .TIMESPAN , timespan );
226+ HttpRequest request = new HttpRequest ("/openapi/market-data/stock/footprint" , Versions .V2 , HttpMethod .GET );
227+ Map <String , Object > params = new HashMap <>();
228+ params .put (ArgNames .SYMBOLS , String .join ("," , symbols ));
229+ params .put (ArgNames .CATEGORY , category );
230+ params .put (ArgNames .TIMESPAN , timespan );
231+ params .put (ArgNames .COUNT , count );
232+ if (Objects .nonNull (realTimeRequired )){
233+ params .put (ArgNames .REAL_TIME_REQUIRED , realTimeRequired );
234+ }
235+ if (StringUtils .isNotEmpty (tradingSessions )){
236+ params .put (ArgNames .TRADING_SESSIONS , tradingSessions );
237+ }
238+ request .setQuery (params );
239+ return apiClient .request (request ).responseType (new TypeToken <List <FootprintResponse >>() {}.getType ()).doAction ();
240+ }
241+
221242 @ Override
222243 public List <NBar > getFuturesBars (List <String > symbols , String category , String timespan , int count , Boolean realTimeRequired ) {
223244 Assert .notEmpty (ArgNames .SYMBOLS , symbols );
@@ -319,6 +340,27 @@ public List<FuturesInstrument> getFuturesInstrumentsByCode(String code, String c
319340 return apiClient .request (request ).responseType (new TypeToken <List <FuturesInstrument >>() {}.getType ()).doAction ();
320341 }
321342
343+ @ Override
344+ public List <FootprintResponse > getFuturesFootprint (Set <String > symbols , String category , String timespan , int count , Boolean realTimeRequired , String tradingSessions ) {
345+ Assert .notEmpty (ArgNames .SYMBOLS , symbols );
346+ Assert .notBlank (ArgNames .CATEGORY , category );
347+ Assert .notBlank (ArgNames .TIMESPAN , timespan );
348+ HttpRequest request = new HttpRequest ("/openapi/market-data/futures/footprint" , Versions .V2 , HttpMethod .GET );
349+ Map <String , Object > params = new HashMap <>();
350+ params .put (ArgNames .SYMBOLS , String .join ("," , symbols ));
351+ params .put (ArgNames .CATEGORY , category );
352+ params .put (ArgNames .TIMESPAN , timespan );
353+ params .put (ArgNames .COUNT , count );
354+ if (Objects .nonNull (realTimeRequired )){
355+ params .put (ArgNames .REAL_TIME_REQUIRED , realTimeRequired );
356+ }
357+ if (StringUtils .isNotEmpty (tradingSessions )){
358+ params .put (ArgNames .TRADING_SESSIONS , tradingSessions );
359+ }
360+ request .setQuery (params );
361+ return apiClient .request (request ).responseType (new TypeToken <List <FootprintResponse >>() {}.getType ()).doAction ();
362+ }
363+
322364 @ Override
323365 public List <Snapshot > getCryptoSnapshots (Set <String > symbols , String category ) {
324366 Assert .notEmpty (ArgNames .SYMBOLS , symbols );
0 commit comments