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()