Skip to content

Commit a5729d8

Browse files
committed
Improve get_high_days_count
1 parent 5debc2d commit a5729d8

File tree

5 files changed

+23
-10
lines changed

5 files changed

+23
-10
lines changed

src/zvt/api/kdata.py

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -32,9 +32,11 @@ def get_trade_dates(start, end=None):
3232
return df["timestamp"].tolist()
3333

3434

35-
def get_recent_trade_dates(days_count=5):
36-
max_start = date_time_by_interval(current_date(), -days_count - 15)
35+
def get_recent_trade_dates(target_date=current_date(), days_count=5):
36+
max_start = date_time_by_interval(target_date, -days_count - 15)
3737
dates = get_trade_dates(start=max_start)
38+
if days_count == 0:
39+
return dates[-1:]
3840
return dates[-days_count:]
3941

4042

src/zvt/api/selector.py

Lines changed: 16 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@
44
import pandas as pd
55
from sqlalchemy import or_, and_
66

7-
from zvt.api.kdata import default_adjust_type, get_kdata_schema, get_latest_kdata_date
7+
from zvt.api.kdata import default_adjust_type, get_kdata_schema, get_latest_kdata_date, get_recent_trade_dates
88
from zvt.contract import IntervalLevel, AdjustType
99
from zvt.contract.api import get_entity_ids
1010
from zvt.domain import DragonAndTiger, Stock1dHfqKdata, Stock, LimitUpInfo, StockQuote, StockQuoteLog
@@ -375,11 +375,20 @@ def get_limit_down_today():
375375
return df["entity_id"].to_list()
376376

377377

378-
def get_high_days_count(entity_ids=None, target_date=current_date(), days=10):
379-
recent_days = date_time_by_interval(target_date, -days)
378+
def get_high_days_count(entity_ids=None, target_date=current_date(), days_count=10, high_days_count=None):
379+
recent_days = get_recent_trade_dates(target_date=target_date, days_count=days_count)
380+
381+
if recent_days:
382+
filters = [LimitUpInfo.timestamp >= recent_days[0]]
383+
else:
384+
filters = [LimitUpInfo.timestamp >= target_date]
385+
386+
if high_days_count:
387+
filters = filters + [LimitUpInfo.high_days_count >= high_days_count]
388+
380389
df = LimitUpInfo.query_data(
381390
entity_ids=entity_ids,
382-
start_timestamp=recent_days,
391+
filters=filters,
383392
columns=[LimitUpInfo.timestamp, LimitUpInfo.entity_id, LimitUpInfo.high_days, LimitUpInfo.high_days_count],
384393
)
385394
df_sorted = df.sort_values(by=["entity_id", "timestamp"])
@@ -392,7 +401,9 @@ def get_high_days_count(entity_ids=None, target_date=current_date(), days=10):
392401
if __name__ == "__main__":
393402
# stocks = get_top_vol(entity_ids=None, provider="em")
394403
# assert len(stocks) == 500
395-
print(get_high_days_count())
404+
# Index1dKdata.record_data(provider="em",sleeping_time=0)
405+
# print(get_recent_trade_dates(days_count=10))
406+
print(get_high_days_count(days_count=3, high_days_count=3))
396407

397408

398409
# the __all__ is generated

src/zvt/recorders/jqka/jqka_api.py

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -80,7 +80,9 @@ def get_jkqa_data(url, pn=1, ps=200, fetch_all=True, headers=_JKQA_HEADER):
8080
if next_data:
8181
data = data + next_data
8282
if pn == 1 and len(data) != json_result["data"]["page"]["total"]:
83-
raise RuntimeError(f"Assertion failed, the total length of data should be {json_result['data']['page']['total']}, only {len(data)} fetched")
83+
raise RuntimeError(
84+
f"Assertion failed, the total length of data should be {json_result['data']['page']['total']}, only {len(data)} fetched"
85+
)
8486
return data
8587
else:
8688
return data

src/zvt/resources/missed_concept.json

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,6 @@
1616
"万达概念",
1717
"成渝特区",
1818
"ST股",
19-
"注册制次新股",
2019
"机构重仓",
2120
"IPO受益",
2221
"参股新三板",

src/zvt/tag/tag_service.py

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -171,7 +171,6 @@ def build_stock_tags(
171171
)
172172

173173
if datas:
174-
assert len(datas) == 1
175174
current_stock_tags: StockTags = datas[0]
176175

177176
# nothing change

0 commit comments

Comments
 (0)