36 lines
1.1 KiB
Python
36 lines
1.1 KiB
Python
|
|
from __future__ import annotations
|
||
|
|
|
||
|
|
import argparse
|
||
|
|
from pathlib import Path
|
||
|
|
|
||
|
|
from qfr.data.tushare_client import fetch_daily, load_tushare_config
|
||
|
|
|
||
|
|
|
||
|
|
def main() -> None:
|
||
|
|
p = argparse.ArgumentParser()
|
||
|
|
p.add_argument("--env", default=None, help="Path to .env (default: auto-detect)")
|
||
|
|
p.add_argument("--ts-code", default=None, help="e.g. 000001.SZ")
|
||
|
|
p.add_argument("--start", dest="start_date", default=None, help="YYYYMMDD")
|
||
|
|
p.add_argument("--end", dest="end_date", default=None, help="YYYYMMDD")
|
||
|
|
p.add_argument("--trade-date", default=None, help="YYYYMMDD")
|
||
|
|
p.add_argument("--out", default="data/raw/tushare_daily.parquet")
|
||
|
|
args = p.parse_args()
|
||
|
|
|
||
|
|
cfg = load_tushare_config(args.env)
|
||
|
|
df = fetch_daily(
|
||
|
|
cfg,
|
||
|
|
ts_code=args.ts_code,
|
||
|
|
trade_date=args.trade_date,
|
||
|
|
start_date=args.start_date,
|
||
|
|
end_date=args.end_date,
|
||
|
|
)
|
||
|
|
|
||
|
|
out = Path(args.out)
|
||
|
|
out.parent.mkdir(parents=True, exist_ok=True)
|
||
|
|
df.to_parquet(out, index=False)
|
||
|
|
print(f"wrote {len(df)} rows -> {out}")
|
||
|
|
|
||
|
|
|
||
|
|
if __name__ == "__main__":
|
||
|
|
main()
|