chore: scaffold python desktop app
This commit is contained in:
1
src/grid_trading/__init__.py
Normal file
1
src/grid_trading/__init__.py
Normal file
@@ -0,0 +1 @@
|
||||
__version__ = "0.1.0"
|
||||
29
src/grid_trading/app.py
Normal file
29
src/grid_trading/app.py
Normal file
@@ -0,0 +1,29 @@
|
||||
from __future__ import annotations
|
||||
|
||||
import argparse
|
||||
import sys
|
||||
|
||||
|
||||
def build_parser() -> argparse.ArgumentParser:
|
||||
parser = argparse.ArgumentParser(
|
||||
prog="grid-trading",
|
||||
description="Local A-share and ETF grid trading manager.",
|
||||
)
|
||||
parser.add_argument(
|
||||
"--db",
|
||||
help="Path to the SQLite database. Defaults to data/grid_trading.db.",
|
||||
)
|
||||
return parser
|
||||
|
||||
|
||||
def main(argv: list[str] | None = None) -> int:
|
||||
parser = build_parser()
|
||||
args = parser.parse_args(argv)
|
||||
|
||||
from grid_trading.ui.main_window import run_gui
|
||||
|
||||
return run_gui(db_path=args.db)
|
||||
|
||||
|
||||
if __name__ == "__main__":
|
||||
raise SystemExit(main(sys.argv[1:]))
|
||||
20
src/grid_trading/config.py
Normal file
20
src/grid_trading/config.py
Normal file
@@ -0,0 +1,20 @@
|
||||
from __future__ import annotations
|
||||
|
||||
from dataclasses import dataclass
|
||||
from decimal import Decimal
|
||||
from pathlib import Path
|
||||
|
||||
|
||||
PROJECT_ROOT = Path(__file__).resolve().parents[2]
|
||||
DEFAULT_DB_PATH = PROJECT_ROOT / "data" / "grid_trading.db"
|
||||
|
||||
|
||||
@dataclass(frozen=True)
|
||||
class DefaultFeeConfig:
|
||||
commission_rate: Decimal = Decimal("0.00025")
|
||||
min_commission: Decimal = Decimal("5")
|
||||
stamp_tax_rate: Decimal = Decimal("0.0005")
|
||||
transfer_fee_rate: Decimal = Decimal("0.00001")
|
||||
|
||||
|
||||
DEFAULT_FEE_CONFIG = DefaultFeeConfig()
|
||||
Reference in New Issue
Block a user