44import pandas as pd
55from sqlalchemy import or_ , and_
66
7- from zvt .api .kdata import default_adjust_type , get_kdata_schema
8- from zvt .contract import IntervalLevel
7+ from zvt .api .kdata import default_adjust_type , get_kdata_schema , get_latest_kdata_date
8+ from zvt .contract import IntervalLevel , AdjustType
99from zvt .contract .api import get_entity_ids
1010from zvt .domain import DragonAndTiger , Stock1dHfqKdata , Stock , LimitUpInfo , StockQuote , StockQuoteLog
1111from zvt .utils .pd_utils import pd_is_not_null
@@ -335,6 +335,34 @@ def get_shoot_today(up_change_pct=0.03, down_change_pct=-0.03, interval=2):
335335 return up .index .tolist (), down .index .tolist ()
336336
337337
338+ def get_top_vol (
339+ entity_ids ,
340+ target_date = None ,
341+ limit = 500 ,
342+ provider = "qmt" ,
343+ ):
344+ if provider == "qmt" :
345+ df = StockQuote .query_data (
346+ entity_ids = entity_ids ,
347+ columns = [StockQuote .entity_id ],
348+ order = StockQuote .turnover .desc (),
349+ limit = limit ,
350+ )
351+ return df ["entity_id" ].to_list ()
352+ else :
353+ if not target_date :
354+ target_date = get_latest_kdata_date (provider = "em" , entity_type = "stock" , adjust_type = AdjustType .hfq )
355+ df = Stock1dHfqKdata .query_data (
356+ provider = "em" ,
357+ filters = [Stock1dHfqKdata .timestamp == to_pd_timestamp (target_date )],
358+ entity_ids = entity_ids ,
359+ columns = [Stock1dHfqKdata .entity_id ],
360+ order = Stock1dHfqKdata .turnover .desc (),
361+ limit = limit ,
362+ )
363+ return df ["entity_id" ].to_list ()
364+
365+
338366def get_top_down_today (n = 100 ):
339367 df = StockQuote .query_data (columns = [StockQuote .entity_id ], order = StockQuote .change_pct .asc (), limit = n )
340368 if pd_is_not_null (df ):
@@ -348,22 +376,8 @@ def get_limit_down_today():
348376
349377
350378if __name__ == "__main__" :
351- # target_date = get_latest_kdata_date(provider="em", entity_type="stock", adjust_type=AdjustType.hfq)
352- # big = get_big_cap_stock(timestamp=target_date)
353- # print(len(big))
354- # print(big)
355- # middle = get_middle_cap_stock(timestamp=target_date)
356- # print(len(middle))
357- # print(middle)
358- # small = get_small_cap_stock(timestamp=target_date)
359- # print(len(small))
360- # print(small)
361- # mini = get_mini_cap_stock(timestamp=target_date)
362- # print(len(mini))
363- # print(mini)
364- # df = get_player_performance(start_timestamp="2022-01-01")
365- # print((get_entity_ids_by_filter(ignore_new_stock=False)))
366- print (get_limit_up_stocks (timestamp = "2023-12-2" ))
379+ stocks = get_top_vol (entity_ids = None , provider = "em" )
380+ assert len (stocks ) == 500
367381
368382
369383# the __all__ is generated
0 commit comments