From 21f71d3701de972d075c645fb7f7bc54575a61e1 Mon Sep 17 00:00:00 2001 From: Justin Gu <97915@qq.com> Date: Wed, 10 Jun 2026 11:54:08 +0800 Subject: [PATCH] chore: ignore .omc, .claude, .playwright-mcp directories and remove from tracking --- .claude/settings.json | 16 - .claude/settings.local.json | 85 - .claude/skills/publish.md | 57 - .claude/skills/verify/SKILL.md | 16 - .gitignore | 2 + .omc/project-memory.json | 282 --- .../1c05c4c7-0987-444f-b329-e1c772d1a048.json | 8 - .../718ffd08-a67f-463d-ae5b-dea1d6703fc8.json | 8 - .../8e49af4a-ddee-483a-92bb-550dbb3cc506.json | 8 - .../a3ab4095-2313-431e-be46-a80ffa727e66.json | 8 - .../checkpoint-2026-05-21T18-43-39-867Z.json | 16 - .../checkpoint-2026-05-21T19-44-09-192Z.json | 16 - .omc/state/hud-stdin-cache.json | 1 - .../hud-state.json | 6 - .../session-started.json | 6 - .../hud-state.json | 6 - .../hud-state.json | 6 - .../hud-state.json | 6 - .../hud-state.json | 6 - .../console-2026-06-05T10-12-13-252Z.log | 1 - .../page-2026-06-05T10-12-25-202Z.yml | 2169 ----------------- 21 files changed, 2 insertions(+), 2727 deletions(-) delete mode 100644 .claude/settings.json delete mode 100644 .claude/settings.local.json delete mode 100644 .claude/skills/publish.md delete mode 100644 .claude/skills/verify/SKILL.md delete mode 100644 .omc/project-memory.json delete mode 100644 .omc/sessions/1c05c4c7-0987-444f-b329-e1c772d1a048.json delete mode 100644 .omc/sessions/718ffd08-a67f-463d-ae5b-dea1d6703fc8.json delete mode 100644 .omc/sessions/8e49af4a-ddee-483a-92bb-550dbb3cc506.json delete mode 100644 .omc/sessions/a3ab4095-2313-431e-be46-a80ffa727e66.json delete mode 100644 .omc/state/checkpoints/checkpoint-2026-05-21T18-43-39-867Z.json delete mode 100644 .omc/state/checkpoints/checkpoint-2026-05-21T19-44-09-192Z.json delete mode 100644 .omc/state/hud-stdin-cache.json delete mode 100644 .omc/state/sessions/1c05c4c7-0987-444f-b329-e1c772d1a048/hud-state.json delete mode 100644 .omc/state/sessions/4a6378cc-96bc-4f30-809a-a6b4c4243d5e/session-started.json delete mode 100644 .omc/state/sessions/718ffd08-a67f-463d-ae5b-dea1d6703fc8/hud-state.json delete mode 100644 .omc/state/sessions/84b721c5-06e3-4191-ae03-5f4795cf33f3/hud-state.json delete mode 100644 .omc/state/sessions/8e49af4a-ddee-483a-92bb-550dbb3cc506/hud-state.json delete mode 100644 .omc/state/sessions/a3ab4095-2313-431e-be46-a80ffa727e66/hud-state.json delete mode 100644 .playwright-mcp/console-2026-06-05T10-12-13-252Z.log delete mode 100644 .playwright-mcp/page-2026-06-05T10-12-25-202Z.yml diff --git a/.claude/settings.json b/.claude/settings.json deleted file mode 100644 index 8429890..0000000 --- a/.claude/settings.json +++ /dev/null @@ -1,16 +0,0 @@ -{ - "hooks": { - "PostToolUse": [ - { - "matcher": "Write|Edit", - "hooks": [ - { - "type": "command", - "command": "python scripts/ruff_hook.py", - "timeout": 30 - } - ] - } - ] - } -} diff --git a/.claude/settings.local.json b/.claude/settings.local.json deleted file mode 100644 index 91b0959..0000000 --- a/.claude/settings.local.json +++ /dev/null @@ -1,85 +0,0 @@ -{ - "permissions": { - "allow": [ - "Skill(update-config)", - "Bash(echo '{\"tool_name\":\"Edit\",\"tool_input\":{\"file_path\":\"D:\\\\\\\\python\\\\\\\\xmtdx\\\\\\\\src\\\\\\\\xmtdx\\\\\\\\__init__.py\"}}')", - "Bash(python -c \"import sys,json,subprocess;d=json.load\\(sys.stdin\\);f=d.get\\('tool_input',{}\\).get\\('file_path',''\\);exec\\('' if not f.endswith\\(\\\\\\\\'.py\\\\\\\\'\\) else 'subprocess.run\\([\\\\\\\\'ruff\\\\\\\\',\\\\\\\\'check\\\\\\\\',\\\\\\\\'--fix\\\\\\\\',f],capture_output=True\\);subprocess.run\\([\\\\\\\\'ruff\\\\\\\\',\\\\\\\\'format\\\\\\\\',f],capture_output=True\\)'\\);print\\(f'done: {f}'\\)\")", - "Bash(python *)", - "Bash(ruff check *)", - "Bash(git add *)", - "Bash(git commit *)", - "Bash(git push *)", - "mcp__zread__get_repo_structure", - "Bash(pip install *)", - "mcp__web-reader__webReader", - "Bash(python3 *)", - "Bash(where mypy *)", - "Bash(pip list *)", - "Bash(uv run *)", - "Bash(git stash *)", - "Bash(dir /s /b src\\\\xmtdx)", - "Bash(git remote *)", - "Bash(uv --version)", - "Bash(git rm *)", - "mcp__plugin_context7_context7__resolve-library-id", - "mcp__plugin_context7_context7__query-docs", - "Bash(grep -E \"\\\\.py$\")", - "Bash(awk '{added+=$1; deleted+=$2} END {print \"+\" added \" -\" deleted}')", - "Bash(find D:/python/easty_tdx/examples/1[1-7]* -name \"*.py\")", - "Bash(easy-tdx ping *)", - "Bash(easy-tdx version *)", - "Bash(easy-tdx kline *)", - "Bash(easy-tdx quote *)", - "Bash(easy-tdx tick *)", - "Bash(easy-tdx transaction *)", - "Bash(easy-tdx auction *)", - "Bash(easy-tdx quote-list *)", - "Bash(easy-tdx board-list *)", - "Bash(easy-tdx board-members *)", - "Bash(easy-tdx belong-board *)", - "Bash(easy-tdx capital-flow *)", - "Bash(echo \"EXIT CODE: $?\")", - "Bash(easy-tdx unusual *)", - "Bash(easy-tdx market-stat *)", - "Bash(easy-tdx server-info *)", - "Bash(easy-tdx symbol-info *)", - "Bash(easy-tdx ex *)", - "WebSearch", - "mcp__zread__search_doc", - "mcp__zread__read_file", - "Bash(git status *)", - "Bash(pip show *)", - "Bash(git tag *)", - "Bash(twine upload *)", - "Bash(pip index *)", - "Bash(curl -s https://pypi.org/pypi/easy-tdx/json)", - "Bash(curl -sI \"https://files.pythonhosted.org/packages/py3/e/easy-tdx/easy_tdx-1.2.0-py3-none-any.whl\")", - "Bash(gh run *)", - "Bash(easy-tdx *)", - "mcp__web-search-prime__web_search_prime", - "mcp__plugin_compound-engineering_context7__resolve-library-id", - "mcp__plugin_compound-engineering_context7__query-docs", - "Bash(pip uninstall *)", - "Bash(xargs grep -l \"Command\\\\|Request\\\\|Response\")", - "Bash(quotes/stock_xdxr_info.go)", - "Bash(mypy src/)", - "Bash(ruff format *)", - "mcp__plugin_episodic-memory_episodic-memory__search", - "Bash(echo \"FK/\")", - "Bash(git pull *)", - "mcp__playwright__browser_navigate", - "mcp__playwright__browser_snapshot", - "Bash(gh auth *)", - "Bash(rm -rf easy_tdx.wiki)", - "Bash(gh repo *)", - "Bash(gh api *)", - "Bash(mypy src/easy_tdx/backtest/types.py)", - "Bash(mypy tests/unit/test_backtest_types.py)", - "Bash(mypy src/easy_tdx/backtest/types.py tests/unit/test_backtest_types.py)", - "Bash(mypy *)", - "Bash(git diff *)", - "Bash(echo \"exit: $?\")", - "Bash(where easy-tdx *)" - ] - } -} diff --git a/.claude/skills/publish.md b/.claude/skills/publish.md deleted file mode 100644 index a62b17e..0000000 --- a/.claude/skills/publish.md +++ /dev/null @@ -1,57 +0,0 @@ ---- -name: publish -description: Bump version, commit, push tag to trigger GitHub Actions PyPI publish workflow, and verify release ---- - -Publish a new version of easy-tdx to PyPI via GitHub Actions trusted publisher. - -## Prerequisites - -- All code changes must already be committed and pushed to `main`. -- PyPI trusted publisher must be configured (owner: `handsomejustin`, repo: `easy_tdx`, workflow: `publish.yml`, environment: `release`). -- GitHub `release` environment must exist in repo settings. - -## Steps - -1. **Confirm working tree is clean on `main`**: Run `git status` and `git log --oneline -3`. All changes must be pushed. - -2. **Determine new version**: Read current version from `pyproject.toml`. Ask user for target version if not obvious (patch/minor/major), defaulting to patch bump. - -3. **Bump version**: Edit `version` in `pyproject.toml` to the new version. - -4. **Commit and push**: - ```bash - git add pyproject.toml - git commit -m "chore: bump version to X.Y.Z" - git push origin main - ``` - -5. **Create and push tag**: - ```bash - git tag vX.Y.Z - git push origin vX.Y.Z - ``` - -6. **Wait for GitHub Actions**: Run `gh run list --limit 1` to get the run ID, then `gh run watch ` to monitor. Timeout after 120 seconds. - -7. **Verify on PyPI**: - ```bash - curl -s https://pypi.org/pypi/easy-tdx/json | python -c "import sys,json; d=json.load(sys.stdin); print('latest:', d['info']['version'])" - ``` - Confirm the version matches. - -8. **Report result**: State the published version and PyPI URL. - -## Rollback - -If the publish fails: -- Do NOT delete the tag (it's already pushed). -- Fix the issue, bump to next patch version, and re-run. -- If PyPI shows the version but something is wrong, it cannot be yanked automatically — the user must do it manually via PyPI dashboard. - -## Notes - -- The workflow file is at `.github/workflows/publish.yml`. -- It triggers on `push tags: v*`. -- Uses OIDC trusted publishing — no API tokens needed. -- Build uses `python -m build` (hatchling backend). diff --git a/.claude/skills/verify/SKILL.md b/.claude/skills/verify/SKILL.md deleted file mode 100644 index c01491b..0000000 --- a/.claude/skills/verify/SKILL.md +++ /dev/null @@ -1,16 +0,0 @@ ---- -name: verify -description: Run full offline verification suite (pytest unit tests + mypy + ruff) before committing changes. -disable-model-invocation: true ---- - -# Verify - -Run the full offline verification pipeline: - -1. Run `python -m pytest tests/unit/ -v` — all unit tests must pass. -2. Run `mypy src/` — strict type checking must pass with zero errors. -3. Run `ruff check src/ tests/` — no lint errors. -4. Run `ruff format --check src/ tests/` — formatting must be clean. - -If any step fails, fix the issues and re-run. Do not report completion until all four steps pass. diff --git a/.gitignore b/.gitignore index f065990..7d6c3d1 100644 --- a/.gitignore +++ b/.gitignore @@ -11,6 +11,8 @@ build/ .venv/ venv/ .omc/ +.claude/ +.playwright-mcp/ uv.lock docs/_build/ FK/ diff --git a/.omc/project-memory.json b/.omc/project-memory.json deleted file mode 100644 index 9426285..0000000 --- a/.omc/project-memory.json +++ /dev/null @@ -1,282 +0,0 @@ -{ - "version": "1.0.0", - "lastScanned": 1780948623576, - "projectRoot": "D:\\python\\easy_tdx", - "techStack": { - "languages": [ - { - "name": "Python", - "version": null, - "confidence": "high", - "markers": [ - "pyproject.toml" - ] - } - ], - "frameworks": [ - { - "name": "pytest", - "version": null, - "category": "testing" - } - ], - "packageManager": null, - "runtime": null - }, - "build": { - "buildCommand": null, - "testCommand": "python -m pytest tests/unit/ -q --tb=line 2>&1 | tail -5", - "lintCommand": "ruff check", - "devCommand": null, - "scripts": {} - }, - "conventions": { - "namingStyle": null, - "importStyle": null, - "testPattern": null, - "fileOrganization": null - }, - "structure": { - "isMonorepo": false, - "workspaces": [], - "mainDirectories": [ - "docs", - "examples", - "scripts", - "src", - "tests" - ], - "gitBranches": { - "defaultBranch": "main", - "branchingStrategy": null - } - }, - "customNotes": [], - "directoryMap": { - "dist": { - "path": "dist", - "purpose": "Distribution/build output", - "fileCount": 2, - "lastAccessed": 1780948623545, - "keyFiles": [ - "easy_tdx-1.0.0-py3-none-any.whl", - "easy_tdx-1.0.0.tar.gz" - ] - }, - "docs": { - "path": "docs", - "purpose": "Documentation", - "fileCount": 8, - "lastAccessed": 1780948623545, - "keyFiles": [ - "api_reference.md", - "conf.py", - "field_mapping.md", - "index.md", - "indicator-bias-signal.md" - ] - }, - "examples": { - "path": "examples", - "purpose": "Example code", - "fileCount": 0, - "lastAccessed": 1780948623546, - "keyFiles": [] - }, - "scripts": { - "path": "scripts", - "purpose": "Build/utility scripts", - "fileCount": 4, - "lastAccessed": 1780948623547, - "keyFiles": [ - "probe_unknowns.py", - "ruff_hook.py", - "verify_fixes_20260415.py", - "__init__.py" - ] - }, - "src": { - "path": "src", - "purpose": "Source code", - "fileCount": 0, - "lastAccessed": 1780948623548, - "keyFiles": [] - }, - "tests": { - "path": "tests", - "purpose": "Test files", - "fileCount": 1, - "lastAccessed": 1780948623549, - "keyFiles": [ - "__init__.py" - ] - }, - "venv": { - "path": "venv", - "purpose": null, - "fileCount": 2, - "lastAccessed": 1780948623550, - "keyFiles": [ - "pyvenv.cfg" - ] - }, - "tests\\fixtures": { - "path": "tests\\fixtures", - "purpose": "Test fixtures", - "fileCount": 24, - "lastAccessed": 1780948623554, - "keyFiles": [ - "company_info_category.hex", - "company_info_category.json", - "company_info_content.hex" - ] - }, - "venv\\Lib": { - "path": "venv\\Lib", - "purpose": "Library code", - "fileCount": 0, - "lastAccessed": 1780948623555, - "keyFiles": [] - }, - "venv\\Scripts": { - "path": "venv\\Scripts", - "purpose": "Build/utility scripts", - "fileCount": 25, - "lastAccessed": 1780948623555, - "keyFiles": [ - "activate", - "activate.bat", - "activate.fish" - ] - } - }, - "hotPaths": [ - { - "path": "src\\easy_tdx\\backtest\\cli.py", - "accessCount": 14, - "lastAccessed": 1781024440572, - "type": "file" - }, - { - "path": "run_all_strategies.py", - "accessCount": 13, - "lastAccessed": 1781024439395, - "type": "file" - }, - { - "path": "src\\easy_tdx\\MyTT.py", - "accessCount": 9, - "lastAccessed": 1781025723850, - "type": "file" - }, - { - "path": "README.md", - "accessCount": 4, - "lastAccessed": 1781026610801, - "type": "file" - }, - { - "path": "src\\easy_tdx\\backtest\\combo.py", - "accessCount": 3, - "lastAccessed": 1781023715594, - "type": "file" - }, - { - "path": "src\\easy_tdx\\backtest\\__init__.py", - "accessCount": 3, - "lastAccessed": 1781023799015, - "type": "file" - }, - { - "path": "tests\\unit\\test_backtest_combo.py", - "accessCount": 2, - "lastAccessed": 1781023758085, - "type": "file" - }, - { - "path": "src\\easy_tdx\\backtest\\strategy.py", - "accessCount": 1, - "lastAccessed": 1781021955703, - "type": "file" - }, - { - "path": "src\\easy_tdx\\backtest\\engine.py", - "accessCount": 1, - "lastAccessed": 1781021956588, - "type": "file" - }, - { - "path": "src\\easy_tdx\\backtest\\types.py", - "accessCount": 1, - "lastAccessed": 1781021957067, - "type": "file" - }, - { - "path": "src\\easy_tdx\\backtest\\dsl.py", - "accessCount": 1, - "lastAccessed": 1781021962044, - "type": "file" - }, - { - "path": "strategies\\ma_cross.py", - "accessCount": 1, - "lastAccessed": 1781021963164, - "type": "file" - }, - { - "path": "strategies\\macd_cross.py", - "accessCount": 1, - "lastAccessed": 1781021963925, - "type": "file" - }, - { - "path": "strategies\\rsi_reversal.py", - "accessCount": 1, - "lastAccessed": 1781021964466, - "type": "file" - }, - { - "path": "strategies\\bollinger_breakout.py", - "accessCount": 1, - "lastAccessed": 1781021964950, - "type": "file" - }, - { - "path": "src\\easy_tdx\\backtest\\performance.py", - "accessCount": 1, - "lastAccessed": 1781021974264, - "type": "file" - }, - { - "path": "strategies\\turtle_breakout.py", - "accessCount": 1, - "lastAccessed": 1781021982151, - "type": "file" - }, - { - "path": "C:\\Users\\毛利哥\\.claude\\plans\\2-3-deep-melody.md", - "accessCount": 1, - "lastAccessed": 1781022126312, - "type": "file" - }, - { - "path": "tests\\unit\\test_backtest_strategy.py", - "accessCount": 1, - "lastAccessed": 1781023334642, - "type": "file" - }, - { - "path": "tests\\unit\\test_backtest_engine.py", - "accessCount": 1, - "lastAccessed": 1781023335435, - "type": "file" - }, - { - "path": "pyproject.toml", - "accessCount": 1, - "lastAccessed": 1781026550566, - "type": "file" - } - ], - "userDirectives": [] -} \ No newline at end of file diff --git a/.omc/sessions/1c05c4c7-0987-444f-b329-e1c772d1a048.json b/.omc/sessions/1c05c4c7-0987-444f-b329-e1c772d1a048.json deleted file mode 100644 index daf95d2..0000000 --- a/.omc/sessions/1c05c4c7-0987-444f-b329-e1c772d1a048.json +++ /dev/null @@ -1,8 +0,0 @@ -{ - "session_id": "1c05c4c7-0987-444f-b329-e1c772d1a048", - "ended_at": "2026-05-21T17:01:21.757Z", - "reason": "prompt_input_exit", - "agents_spawned": 0, - "agents_completed": 0, - "modes_used": [] -} \ No newline at end of file diff --git a/.omc/sessions/718ffd08-a67f-463d-ae5b-dea1d6703fc8.json b/.omc/sessions/718ffd08-a67f-463d-ae5b-dea1d6703fc8.json deleted file mode 100644 index ec5d1dd..0000000 --- a/.omc/sessions/718ffd08-a67f-463d-ae5b-dea1d6703fc8.json +++ /dev/null @@ -1,8 +0,0 @@ -{ - "session_id": "718ffd08-a67f-463d-ae5b-dea1d6703fc8", - "ended_at": "2026-05-21T04:31:14.583Z", - "reason": "clear", - "agents_spawned": 0, - "agents_completed": 0, - "modes_used": [] -} \ No newline at end of file diff --git a/.omc/sessions/8e49af4a-ddee-483a-92bb-550dbb3cc506.json b/.omc/sessions/8e49af4a-ddee-483a-92bb-550dbb3cc506.json deleted file mode 100644 index 15d89d2..0000000 --- a/.omc/sessions/8e49af4a-ddee-483a-92bb-550dbb3cc506.json +++ /dev/null @@ -1,8 +0,0 @@ -{ - "session_id": "8e49af4a-ddee-483a-92bb-550dbb3cc506", - "ended_at": "2026-05-21T04:31:59.748Z", - "reason": "prompt_input_exit", - "agents_spawned": 0, - "agents_completed": 0, - "modes_used": [] -} \ No newline at end of file diff --git a/.omc/sessions/a3ab4095-2313-431e-be46-a80ffa727e66.json b/.omc/sessions/a3ab4095-2313-431e-be46-a80ffa727e66.json deleted file mode 100644 index da389bc..0000000 --- a/.omc/sessions/a3ab4095-2313-431e-be46-a80ffa727e66.json +++ /dev/null @@ -1,8 +0,0 @@ -{ - "session_id": "a3ab4095-2313-431e-be46-a80ffa727e66", - "ended_at": "2026-05-21T17:15:43.971Z", - "reason": "prompt_input_exit", - "agents_spawned": 0, - "agents_completed": 0, - "modes_used": [] -} \ No newline at end of file diff --git a/.omc/state/checkpoints/checkpoint-2026-05-21T18-43-39-867Z.json b/.omc/state/checkpoints/checkpoint-2026-05-21T18-43-39-867Z.json deleted file mode 100644 index d67039b..0000000 --- a/.omc/state/checkpoints/checkpoint-2026-05-21T18-43-39-867Z.json +++ /dev/null @@ -1,16 +0,0 @@ -{ - "created_at": "2026-05-21T18:43:39.866Z", - "trigger": "manual", - "active_modes": {}, - "todo_summary": { - "pending": 0, - "in_progress": 0, - "completed": 0 - }, - "wisdom_exported": false, - "background_jobs": { - "active": [], - "recent": [], - "stats": null - } -} \ No newline at end of file diff --git a/.omc/state/checkpoints/checkpoint-2026-05-21T19-44-09-192Z.json b/.omc/state/checkpoints/checkpoint-2026-05-21T19-44-09-192Z.json deleted file mode 100644 index b55d095..0000000 --- a/.omc/state/checkpoints/checkpoint-2026-05-21T19-44-09-192Z.json +++ /dev/null @@ -1,16 +0,0 @@ -{ - "created_at": "2026-05-21T19:44:09.191Z", - "trigger": "manual", - "active_modes": {}, - "todo_summary": { - "pending": 0, - "in_progress": 0, - "completed": 0 - }, - "wisdom_exported": false, - "background_jobs": { - "active": [], - "recent": [], - "stats": null - } -} \ No newline at end of file diff --git a/.omc/state/hud-stdin-cache.json b/.omc/state/hud-stdin-cache.json deleted file mode 100644 index a41de98..0000000 --- a/.omc/state/hud-stdin-cache.json +++ /dev/null @@ -1 +0,0 @@ -{"session_id":"86732a4c-5e66-4d81-afe8-a170fdd2102f","transcript_path":"C:\\Users\\毛利哥\\.claude\\projects\\D--python-easy-tdx\\86732a4c-5e66-4d81-afe8-a170fdd2102f.jsonl","cwd":"D:\\python\\easy_tdx","effort":{"level":"medium"},"session_name":"multi-factor-combo-backtest","model":{"id":"glm-5.1","display_name":"glm-5.1"},"workspace":{"current_dir":"D:\\python\\easy_tdx","project_dir":"D:\\python\\easy_tdx","added_dirs":[],"repo":{"host":"github.com","owner":"handsomejustin","name":"easy_tdx"}},"version":"2.1.165","output_style":{"name":"default"},"cost":{"total_cost_usd":5.7581050000000005,"total_duration_ms":77996980,"total_api_duration_ms":1457761,"total_lines_added":1393,"total_lines_removed":28},"context_window":{"total_input_tokens":134645,"total_output_tokens":42,"context_window_size":200000,"current_usage":{"input_tokens":245,"output_tokens":42,"cache_creation_input_tokens":0,"cache_read_input_tokens":134400},"used_percentage":67,"remaining_percentage":33},"exceeds_200k_tokens":false,"fast_mode":false,"thinking":{"enabled":true}} \ No newline at end of file diff --git a/.omc/state/sessions/1c05c4c7-0987-444f-b329-e1c772d1a048/hud-state.json b/.omc/state/sessions/1c05c4c7-0987-444f-b329-e1c772d1a048/hud-state.json deleted file mode 100644 index 369f788..0000000 --- a/.omc/state/sessions/1c05c4c7-0987-444f-b329-e1c772d1a048/hud-state.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "timestamp": "2026-05-21T04:37:36.738Z", - "backgroundTasks": [], - "sessionStartTimestamp": "2026-05-21T04:35:51.188Z", - "sessionId": "1c05c4c7-0987-444f-b329-e1c772d1a048" -} \ No newline at end of file diff --git a/.omc/state/sessions/4a6378cc-96bc-4f30-809a-a6b4c4243d5e/session-started.json b/.omc/state/sessions/4a6378cc-96bc-4f30-809a-a6b4c4243d5e/session-started.json deleted file mode 100644 index 663d03d..0000000 --- a/.omc/state/sessions/4a6378cc-96bc-4f30-809a-a6b4c4243d5e/session-started.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "session_id": "4a6378cc-96bc-4f30-809a-a6b4c4243d5e", - "started_at": "2026-05-21T17:02:00.621Z", - "cwd": "D:\\python\\easty_tdx", - "pid": 13160 -} \ No newline at end of file diff --git a/.omc/state/sessions/718ffd08-a67f-463d-ae5b-dea1d6703fc8/hud-state.json b/.omc/state/sessions/718ffd08-a67f-463d-ae5b-dea1d6703fc8/hud-state.json deleted file mode 100644 index f21b400..0000000 --- a/.omc/state/sessions/718ffd08-a67f-463d-ae5b-dea1d6703fc8/hud-state.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "timestamp": "2026-05-21T04:21:33.768Z", - "backgroundTasks": [], - "sessionStartTimestamp": "2026-05-21T04:21:11.890Z", - "sessionId": "718ffd08-a67f-463d-ae5b-dea1d6703fc8" -} \ No newline at end of file diff --git a/.omc/state/sessions/84b721c5-06e3-4191-ae03-5f4795cf33f3/hud-state.json b/.omc/state/sessions/84b721c5-06e3-4191-ae03-5f4795cf33f3/hud-state.json deleted file mode 100644 index f7ccf5a..0000000 --- a/.omc/state/sessions/84b721c5-06e3-4191-ae03-5f4795cf33f3/hud-state.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "timestamp": "2026-05-21T17:33:21.608Z", - "backgroundTasks": [], - "sessionStartTimestamp": "2026-05-21T17:30:31.097Z", - "sessionId": "84b721c5-06e3-4191-ae03-5f4795cf33f3" -} \ No newline at end of file diff --git a/.omc/state/sessions/8e49af4a-ddee-483a-92bb-550dbb3cc506/hud-state.json b/.omc/state/sessions/8e49af4a-ddee-483a-92bb-550dbb3cc506/hud-state.json deleted file mode 100644 index ed76083..0000000 --- a/.omc/state/sessions/8e49af4a-ddee-483a-92bb-550dbb3cc506/hud-state.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "timestamp": "2026-05-21T04:31:15.192Z", - "backgroundTasks": [], - "sessionStartTimestamp": "2026-05-21T04:31:14.919Z", - "sessionId": "8e49af4a-ddee-483a-92bb-550dbb3cc506" -} \ No newline at end of file diff --git a/.omc/state/sessions/a3ab4095-2313-431e-be46-a80ffa727e66/hud-state.json b/.omc/state/sessions/a3ab4095-2313-431e-be46-a80ffa727e66/hud-state.json deleted file mode 100644 index 14993dd..0000000 --- a/.omc/state/sessions/a3ab4095-2313-431e-be46-a80ffa727e66/hud-state.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "timestamp": "2026-05-21T17:07:49.338Z", - "backgroundTasks": [], - "sessionStartTimestamp": "2026-05-21T17:07:32.750Z", - "sessionId": "a3ab4095-2313-431e-be46-a80ffa727e66" -} \ No newline at end of file diff --git a/.playwright-mcp/console-2026-06-05T10-12-13-252Z.log b/.playwright-mcp/console-2026-06-05T10-12-13-252Z.log deleted file mode 100644 index 7c73b55..0000000 --- a/.playwright-mcp/console-2026-06-05T10-12-13-252Z.log +++ /dev/null @@ -1 +0,0 @@ -[ 12502ms] [ERROR] Failed to load resource: the server responded with a status of 503 () @ https://collector.github.com/github/collect:0 diff --git a/.playwright-mcp/page-2026-06-05T10-12-25-202Z.yml b/.playwright-mcp/page-2026-06-05T10-12-25-202Z.yml deleted file mode 100644 index 5365a6e..0000000 --- a/.playwright-mcp/page-2026-06-05T10-12-25-202Z.yml +++ /dev/null @@ -1,2169 +0,0 @@ -- generic [ref=e2]: - - generic [ref=e3]: - - link "Skip to content" [ref=e4] [cursor=pointer]: - - /url: "#start-of-content" - - banner [ref=e6]: - - heading "Navigation Menu" [level=2] [ref=e7] - - generic [ref=e8]: - - link "Homepage" [ref=e10] [cursor=pointer]: - - /url: / - - img [ref=e11] - - generic [ref=e13]: - - navigation "Global" [ref=e16]: - - list [ref=e17]: - - listitem [ref=e18]: - - button "Platform" [ref=e20] [cursor=pointer]: - - text: Platform - - img [ref=e21] - - listitem [ref=e23]: - - button "Solutions" [ref=e25] [cursor=pointer]: - - text: Solutions - - img [ref=e26] - - listitem [ref=e28]: - - button "Resources" [ref=e30] [cursor=pointer]: - - text: Resources - - img [ref=e31] - - listitem [ref=e33]: - - button "Open Source" [ref=e35] [cursor=pointer]: - - text: Open Source - - img [ref=e36] - - listitem [ref=e38]: - - button "Enterprise" [ref=e40] [cursor=pointer]: - - text: Enterprise - - img [ref=e41] - - listitem [ref=e43]: - - link "Pricing" [ref=e44] [cursor=pointer]: - - /url: https://github.com/pricing - - generic [ref=e45]: Pricing - - generic [ref=e46]: - - button "Search or jump to…" [ref=e49] [cursor=pointer]: - - img [ref=e51] - - link "Sign in" [ref=e54] [cursor=pointer]: - - /url: /login?return_to=https%3A%2F%2Fgithub.com%2Fhandsomejustin%2Feasy_tdx - - link "Sign up" [ref=e55] [cursor=pointer]: - - /url: /signup?ref_cta=Sign+up&ref_loc=header+logged+out&ref_page=%2F%3Cuser-name%3E%2F%3Crepo-name%3E&source=header-repo&source_repo=handsomejustin%2Feasy_tdx - - button "Appearance settings" [ref=e58] [cursor=pointer]: - - img - - main [ref=e62]: - - generic [ref=e63]: - - generic [ref=e64]: - - generic [ref=e66]: - - img [ref=e67] - - link "handsomejustin" [ref=e70] [cursor=pointer]: - - /url: /handsomejustin - - generic [ref=e71]: / - - strong [ref=e72]: - - link "easy_tdx" [ref=e73] [cursor=pointer]: - - /url: /handsomejustin/easy_tdx - - generic [ref=e74]: Public - - generic [ref=e75]: - - list: - - listitem [ref=e76]: - - link "You must be signed in to change notification settings" [ref=e77] [cursor=pointer]: - - /url: /login?return_to=%2Fhandsomejustin%2Feasy_tdx - - img [ref=e78] - - text: Notifications - - listitem [ref=e80]: - - link "Fork 23" [ref=e81] [cursor=pointer]: - - /url: /login?return_to=%2Fhandsomejustin%2Feasy_tdx - - img [ref=e82] - - text: Fork - - generic "23" [ref=e84] - - listitem [ref=e85]: - - link "You must be signed in to star a repository" [ref=e87] [cursor=pointer]: - - /url: /login?return_to=%2Fhandsomejustin%2Feasy_tdx - - img [ref=e88] - - text: Star - - generic "61 users starred this repository" [ref=e90]: "61" - - navigation "Repository" [ref=e91]: - - list [ref=e92]: - - listitem [ref=e93]: - - link "Code" [ref=e94] [cursor=pointer]: - - /url: /handsomejustin/easy_tdx - - img [ref=e95] - - generic [ref=e97]: Code - - listitem [ref=e98]: - - link "Pull requests" [ref=e99] [cursor=pointer]: - - /url: /handsomejustin/easy_tdx/pulls - - img [ref=e100] - - generic [ref=e102]: Pull requests - - listitem [ref=e103]: - - link "Actions" [ref=e104] [cursor=pointer]: - - /url: /handsomejustin/easy_tdx/actions - - img [ref=e105] - - generic [ref=e107]: Actions - - listitem [ref=e108]: - - link "Projects" [ref=e109] [cursor=pointer]: - - /url: /handsomejustin/easy_tdx/projects - - img [ref=e110] - - generic [ref=e112]: Projects - - listitem [ref=e113]: - - link "Security and quality" [ref=e114] [cursor=pointer]: - - /url: /handsomejustin/easy_tdx/security - - img [ref=e115] - - generic [ref=e117]: Security and quality - - listitem [ref=e118]: - - link "Insights" [ref=e119] [cursor=pointer]: - - /url: /handsomejustin/easy_tdx/pulse - - img [ref=e120] - - generic [ref=e122]: Insights - - generic [ref=e135]: - - heading "handsomejustin/easy_tdx" [level=1] [ref=e137] - - generic [ref=e138]: - - generic [ref=e141]: - - generic [ref=e142]: - - generic [ref=e143]: - - button "main branch" [ref=e145] [cursor=pointer]: - - generic [ref=e146]: - - generic [ref=e148]: - - img [ref=e150] - - generic [ref=e153]: main - - generic: - - img - - generic [ref=e154]: - - link "1 Branch" [ref=e155] [cursor=pointer]: - - /url: /handsomejustin/easy_tdx/branches - - generic [ref=e156]: - - generic: - - img - - generic [ref=e158]: - - strong [ref=e159]: "1" - - text: Branch - - link "11 Tags" [ref=e160] [cursor=pointer]: - - /url: /handsomejustin/easy_tdx/tags - - generic [ref=e161]: - - generic: - - img - - generic [ref=e163]: - - strong [ref=e164]: "11" - - text: Tags - - generic [ref=e165]: - - generic [ref=e169]: - - img [ref=e171] - - combobox "Go to file" [ref=e173] - - button "Code" [ref=e174] [cursor=pointer]: - - generic [ref=e175]: - - generic: - - img - - generic [ref=e176]: Code - - generic: - - img - - generic [ref=e177]: - - generic [ref=e178]: - - heading "Folders and files" [level=2] [ref=e179] - - table "Folders and files" [ref=e180]: - - rowgroup: - - row "Name Last commit message Last commit date": - - columnheader "Name" - - columnheader "Last commit message": - - generic "Last commit message" - - columnheader "Last commit date": - - generic "Last commit date" - - rowgroup [ref=e181]: - - 'row "Latest commit handsomejustin commits by handsomejustin feat: add offline CLI commands and bump version to v1.5.0 Open commit details success Commit b17e984 · Jun 2, 20263 days ago History 57 Commits" [ref=e182]': - - 'cell "Latest commit handsomejustin commits by handsomejustin feat: add offline CLI commands and bump version to v1.5.0 Open commit details success Commit b17e984 · Jun 2, 20263 days ago History 57 Commits" [ref=e183]': - - generic [ref=e184]: - - heading "Latest commit" [level=2] [ref=e185] - - generic [ref=e186]: - - generic [ref=e188]: - - link "handsomejustin" [ref=e189] [cursor=pointer]: - - /url: /handsomejustin - - img "handsomejustin" [ref=e190] - - link "commits by handsomejustin" [ref=e191] [cursor=pointer]: - - /url: /handsomejustin/easy_tdx/commits?author=handsomejustin - - text: handsomejustin - - generic [ref=e192]: - - 'link "feat: add offline CLI commands and bump version to v1.5.0" [ref=e195] [cursor=pointer]': - - /url: /handsomejustin/easy_tdx/commit/b17e98468b03cf73251b417f24142ad6f352c088 - - button "Open commit details" [ref=e196] [cursor=pointer]: - - img [ref=e197] - - button "success" [ref=e199] [cursor=pointer]: - - img [ref=e200] - - generic [ref=e202]: - - generic [ref=e204]: - - link "Commit b17e984" [ref=e205] [cursor=pointer]: - - /url: /handsomejustin/easy_tdx/commit/b17e98468b03cf73251b417f24142ad6f352c088 - - text: b17e984 - - text: · - - generic "Jun 2, 2026, 12:30 PM GMT+8" [ref=e206]: Jun 2, 20263 days ago - - generic [ref=e207]: - - heading "History" [level=2] [ref=e208] - - link "57 Commits" [ref=e209] [cursor=pointer]: - - /url: /handsomejustin/easy_tdx/commits/main/ - - generic [ref=e210]: - - generic: - - img - - generic [ref=e211]: 57 Commits - - 'row ".claude, (Directory) skill: add publish skill for PyPI release workflow May 26, 2026last week" [ref=e212]': - - cell ".claude, (Directory)" [ref=e213]: - - generic [ref=e214]: - - img [ref=e215] - - link ".claude, (Directory)" [ref=e220] [cursor=pointer]: - - /url: /handsomejustin/easy_tdx/tree/main/.claude - - text: .claude - - 'cell "skill: add publish skill for PyPI release workflow" [ref=e221]': - - 'link "skill: add publish skill for PyPI release workflow" [ref=e224] [cursor=pointer]': - - /url: /handsomejustin/easy_tdx/commit/2ec36e01bf9ddfe87a6dd13b677b1f1137929ca4 - - cell "May 26, 2026last week" [ref=e225]: - - generic [ref=e226]: May 26, 2026last week - - 'row ".github/workflows, (Directory) ci: disable sigstore attestations to fix 502 from rekor May 26, 2026last week" [ref=e227]': - - cell ".github/workflows, (Directory)" [ref=e228]: - - generic [ref=e229]: - - img [ref=e230] - - link ".github/workflows, (Directory)" [ref=e235] [cursor=pointer]: - - /url: /handsomejustin/easy_tdx/tree/main/.github/workflows - - text: .github/workflows - - 'cell "ci: disable sigstore attestations to fix 502 from rekor" [ref=e236]': - - 'link "ci: disable sigstore attestations to fix 502 from rekor" [ref=e239] [cursor=pointer]': - - /url: /handsomejustin/easy_tdx/commit/c825515ee61b63b67fc82fce68a798e8aee1947d - - cell "May 26, 2026last week" [ref=e240]: - - generic [ref=e241]: May 26, 2026last week - - 'row ".omc, (Directory) docs: update README to reflect merged datetime fields in DataFrame ou… May 22, 20262 weeks ago" [ref=e242]': - - cell ".omc, (Directory)" [ref=e243]: - - generic [ref=e244]: - - img [ref=e245] - - link ".omc, (Directory)" [ref=e250] [cursor=pointer]: - - /url: /handsomejustin/easy_tdx/tree/main/.omc - - text: .omc - - 'cell "docs: update README to reflect merged datetime fields in DataFrame ou…" [ref=e251]': - - 'link "docs: update README to reflect merged datetime fields in DataFrame ou…" [ref=e254] [cursor=pointer]': - - /url: /handsomejustin/easy_tdx/commit/d7547f7c4cc77039ed5f9ab30e5c2c3cb652bab4 - - cell "May 22, 20262 weeks ago" [ref=e255]: - - generic [ref=e256]: May 22, 20262 weeks ago - - 'row "docs, (Directory) feat: add BIAS_SIGNAL indicator (30-day bias with signal lines) May 28, 2026last week" [ref=e257]': - - cell "docs, (Directory)" [ref=e258]: - - generic [ref=e259]: - - img [ref=e260] - - link "docs, (Directory)" [ref=e265] [cursor=pointer]: - - /url: /handsomejustin/easy_tdx/tree/main/docs - - text: docs - - 'cell "feat: add BIAS_SIGNAL indicator (30-day bias with signal lines)" [ref=e266]': - - 'link "feat: add BIAS_SIGNAL indicator (30-day bias with signal lines)" [ref=e269] [cursor=pointer]': - - /url: /handsomejustin/easy_tdx/commit/4c5817f7b08703d7564731daac0ca33c912693e6 - - cell "May 28, 2026last week" [ref=e270]: - - generic [ref=e271]: May 28, 2026last week - - 'row "examples, (Directory) feat: add offline CLI commands and bump version to v1.5.0 Jun 2, 20263 days ago" [ref=e272]': - - cell "examples, (Directory)" [ref=e273]: - - generic [ref=e274]: - - img [ref=e275] - - link "examples, (Directory)" [ref=e280] [cursor=pointer]: - - /url: /handsomejustin/easy_tdx/tree/main/examples - - text: examples - - 'cell "feat: add offline CLI commands and bump version to v1.5.0" [ref=e281]': - - 'link "feat: add offline CLI commands and bump version to v1.5.0" [ref=e284] [cursor=pointer]': - - /url: /handsomejustin/easy_tdx/commit/b17e98468b03cf73251b417f24142ad6f352c088 - - cell "Jun 2, 20263 days ago" [ref=e285]: - - generic [ref=e286]: Jun 2, 20263 days ago - - 'row "scripts, (Directory) feat!: rename project from xmtdx to easy-tdx May 21, 20262 weeks ago" [ref=e287]': - - cell "scripts, (Directory)" [ref=e288]: - - generic [ref=e289]: - - img [ref=e290] - - link "scripts, (Directory)" [ref=e295] [cursor=pointer]: - - /url: /handsomejustin/easy_tdx/tree/main/scripts - - text: scripts - - 'cell "feat!: rename project from xmtdx to easy-tdx" [ref=e296]': - - 'link "feat!: rename project from xmtdx to easy-tdx" [ref=e299] [cursor=pointer]': - - /url: /handsomejustin/easy_tdx/commit/50491f9aae4953eeb7baedc8d707a1ae33da833d - - cell "May 21, 20262 weeks ago" [ref=e300]: - - generic [ref=e301]: May 21, 20262 weeks ago - - 'row "src/easy_tdx, (Directory) feat: add offline CLI commands and bump version to v1.5.0 Jun 2, 20263 days ago" [ref=e302]': - - cell "src/easy_tdx, (Directory)" [ref=e303]: - - generic [ref=e304]: - - img [ref=e305] - - link "src/easy_tdx, (Directory)" [ref=e310] [cursor=pointer]: - - /url: /handsomejustin/easy_tdx/tree/main/src/easy_tdx - - text: src/easy_tdx - - 'cell "feat: add offline CLI commands and bump version to v1.5.0" [ref=e311]': - - 'link "feat: add offline CLI commands and bump version to v1.5.0" [ref=e314] [cursor=pointer]': - - /url: /handsomejustin/easy_tdx/commit/b17e98468b03cf73251b417f24142ad6f352c088 - - cell "Jun 2, 20263 days ago" [ref=e315]: - - generic [ref=e316]: Jun 2, 20263 days ago - - 'row "tests, (Directory) feat: add technical indicator calculation (30 indicators via MyTT), b… May 28, 2026last week" [ref=e317]': - - cell "tests, (Directory)" [ref=e318]: - - generic [ref=e319]: - - img [ref=e320] - - link "tests, (Directory)" [ref=e325] [cursor=pointer]: - - /url: /handsomejustin/easy_tdx/tree/main/tests - - text: tests - - 'cell "feat: add technical indicator calculation (30 indicators via MyTT), b…" [ref=e326]': - - 'link "feat: add technical indicator calculation (30 indicators via MyTT), b…" [ref=e329] [cursor=pointer]': - - /url: /handsomejustin/easy_tdx/commit/bcddf5a05205e730a6d0b5f747ffd6e387eb3ab5 - - cell "May 28, 2026last week" [ref=e330]: - - generic [ref=e331]: May 28, 2026last week - - 'row ".gitignore, (File) chore: remove uv.lock and add to .gitignore May 22, 20262 weeks ago" [ref=e332]': - - cell ".gitignore, (File)" [ref=e333]: - - generic [ref=e334]: - - img [ref=e335] - - link ".gitignore, (File)" [ref=e340] [cursor=pointer]: - - /url: /handsomejustin/easy_tdx/blob/main/.gitignore - - text: .gitignore - - 'cell "chore: remove uv.lock and add to .gitignore" [ref=e341]': - - 'link "chore: remove uv.lock and add to .gitignore" [ref=e344] [cursor=pointer]': - - /url: /handsomejustin/easy_tdx/commit/67a0415c38ef4c78ad720da5ccd3d3a1402a8d5f - - cell "May 22, 20262 weeks ago" [ref=e345]: - - generic [ref=e346]: May 22, 20262 weeks ago - - 'row "CLAUDE.md, (File) feat: merge datetime fields in DataFrame output, hide MinuteBar inter… May 22, 20262 weeks ago" [ref=e347]': - - cell "CLAUDE.md, (File)" [ref=e348]: - - generic [ref=e349]: - - img [ref=e350] - - link "CLAUDE.md, (File)" [ref=e355] [cursor=pointer]: - - /url: /handsomejustin/easy_tdx/blob/main/CLAUDE.md - - text: CLAUDE.md - - 'cell "feat: merge datetime fields in DataFrame output, hide MinuteBar inter…" [ref=e356]': - - 'link "feat: merge datetime fields in DataFrame output, hide MinuteBar inter…" [ref=e359] [cursor=pointer]': - - /url: /handsomejustin/easy_tdx/commit/02701952ca3ba153ae0eaf4c527c8f44f18023b1 - - cell "May 22, 20262 weeks ago" [ref=e360]: - - generic [ref=e361]: May 22, 20262 weeks ago - - 'row "LICENSE, (File) feat!: rename project from xmtdx to easy-tdx May 21, 20262 weeks ago" [ref=e362]': - - cell "LICENSE, (File)" [ref=e363]: - - generic [ref=e364]: - - img [ref=e365] - - link "LICENSE, (File)" [ref=e370] [cursor=pointer]: - - /url: /handsomejustin/easy_tdx/blob/main/LICENSE - - text: LICENSE - - 'cell "feat!: rename project from xmtdx to easy-tdx" [ref=e371]': - - 'link "feat!: rename project from xmtdx to easy-tdx" [ref=e374] [cursor=pointer]': - - /url: /handsomejustin/easy_tdx/commit/50491f9aae4953eeb7baedc8d707a1ae33da833d - - cell "May 21, 20262 weeks ago" [ref=e375]: - - generic [ref=e376]: May 21, 20262 weeks ago - - 'row "NOTICE, (File) feat!: rename project from xmtdx to easy-tdx May 21, 20262 weeks ago" [ref=e377]': - - cell "NOTICE, (File)" [ref=e378]: - - generic [ref=e379]: - - img [ref=e380] - - link "NOTICE, (File)" [ref=e385] [cursor=pointer]: - - /url: /handsomejustin/easy_tdx/blob/main/NOTICE - - text: NOTICE - - 'cell "feat!: rename project from xmtdx to easy-tdx" [ref=e386]': - - 'link "feat!: rename project from xmtdx to easy-tdx" [ref=e389] [cursor=pointer]': - - /url: /handsomejustin/easy_tdx/commit/50491f9aae4953eeb7baedc8d707a1ae33da833d - - cell "May 21, 20262 weeks ago" [ref=e390]: - - generic [ref=e391]: May 21, 20262 weeks ago - - 'row "README.md, (File) feat: add offline CLI commands and bump version to v1.5.0 Jun 2, 20263 days ago" [ref=e392]': - - cell "README.md, (File)" [ref=e393]: - - generic [ref=e394]: - - img [ref=e395] - - link "README.md, (File)" [ref=e400] [cursor=pointer]: - - /url: /handsomejustin/easy_tdx/blob/main/README.md - - text: README.md - - 'cell "feat: add offline CLI commands and bump version to v1.5.0" [ref=e401]': - - 'link "feat: add offline CLI commands and bump version to v1.5.0" [ref=e404] [cursor=pointer]': - - /url: /handsomejustin/easy_tdx/commit/b17e98468b03cf73251b417f24142ad6f352c088 - - cell "Jun 2, 20263 days ago" [ref=e405]: - - generic [ref=e406]: Jun 2, 20263 days ago - - 'row "pyproject.toml, (File) feat: add offline CLI commands and bump version to v1.5.0 Jun 2, 20263 days ago" [ref=e407]': - - cell "pyproject.toml, (File)" [ref=e408]: - - generic [ref=e409]: - - img [ref=e410] - - link "pyproject.toml, (File)" [ref=e415] [cursor=pointer]: - - /url: /handsomejustin/easy_tdx/blob/main/pyproject.toml - - text: pyproject.toml - - 'cell "feat: add offline CLI commands and bump version to v1.5.0" [ref=e416]': - - 'link "feat: add offline CLI commands and bump version to v1.5.0" [ref=e419] [cursor=pointer]': - - /url: /handsomejustin/easy_tdx/commit/b17e98468b03cf73251b417f24142ad6f352c088 - - cell "Jun 2, 20263 days ago" [ref=e420]: - - generic [ref=e421]: Jun 2, 20263 days ago - - generic [ref=e423]: - - generic [ref=e424]: - - heading "Repository files navigation" [level=2] [ref=e425] - - navigation "Repository files" [ref=e426]: - - list [ref=e427]: - - listitem [ref=e428]: - - link "README" [ref=e429] [cursor=pointer]: - - /url: "#" - - img [ref=e431] - - generic [ref=e433]: README - - listitem [ref=e434]: - - link "License" [ref=e435] [cursor=pointer]: - - /url: "#" - - img [ref=e437] - - generic [ref=e439]: License - - button "Outline" [ref=e440] [cursor=pointer]: - - img [ref=e441] - - article [ref=e444]: - - generic [ref=e445]: - - heading "easy-tdx" [level=1] [ref=e446] - - 'link "Permalink: easy-tdx" [ref=e447] [cursor=pointer]': - - /url: "#easy-tdx" - - img [ref=e448] - - paragraph [ref=e450]: - - 'link "License: MIT" [ref=e451] [cursor=pointer]': - - /url: /handsomejustin/easy_tdx/blob/main/LICENSE - - 'img "License: MIT" [ref=e452]' - - link "PyPI" [ref=e453] [cursor=pointer]: - - /url: https://pypi.org/project/easy-tdx/ - - img "PyPI" [ref=e454] - - paragraph [ref=e455]: - - text: 通达信 TCP 行情协议客户端。支持 A 股、港股、美股、期货全市场;内置 - - code [ref=e456]: easy-tdx - - text: CLI 工具,默认 JSON 输出,天然适配 Claude Code、OpenClaw、Hermes 等 AI Agent 工具链。提供同步 + asyncio 双接口;strict mypy 通过;每一层编解码都有离线 fixture 测试覆盖。 - - generic [ref=e457]: - - heading "安装" [level=2] [ref=e458] - - 'link "Permalink: 安装" [ref=e459] [cursor=pointer]': - - /url: "#安装" - - img [ref=e460] - - generic [ref=e462]: - - generic [ref=e463]: pip install easy-tdx - - button "Copy code to clipboard" [ref=e465] [cursor=pointer]: - - img [ref=e466] - - paragraph [ref=e469]: - - text: 安装后自动注册 - - code [ref=e470]: easy-tdx - - text: CLI 命令: - - generic [ref=e471]: - - generic [ref=e472]: easy-tdx --help - - button "Copy code to clipboard" [ref=e474] [cursor=pointer]: - - img [ref=e475] - - paragraph [ref=e478]: 开发模式: - - generic [ref=e479]: - - generic [ref=e480]: - - text: pip install -e - - generic [ref=e481]: "\".[dev]\"" - - button "Copy code to clipboard" [ref=e483] [cursor=pointer]: - - img [ref=e484] - - generic [ref=e487]: - - heading "CLI 参考" [level=2] [ref=e488] - - 'link "Permalink: CLI 参考" [ref=e489] [cursor=pointer]': - - /url: "#cli-参考" - - img [ref=e490] - - paragraph [ref=e492]: - - code [ref=e493]: easy-tdx - - text: 默认输出 JSON(一行一条记录), - - code [ref=e494]: "--table" - - text: 切换表格, - - code [ref=e495]: "--output csv" - - text: 输出 CSV。 - - generic [ref=e496]: - - heading "基础" [level=3] [ref=e497] - - 'link "Permalink: 基础" [ref=e498] [cursor=pointer]': - - /url: "#基础" - - img [ref=e499] - - generic [ref=e501]: - - generic [ref=e502]: - - text: easy-tdx ping - - generic [ref=e503]: "# 服务器测速" - - text: easy-tdx version - - generic [ref=e504]: "# 版本号" - - button "Copy code to clipboard" [ref=e506] [cursor=pointer]: - - img [ref=e507] - - generic [ref=e510]: - - heading "行情" [level=3] [ref=e511] - - 'link "Permalink: 行情" [ref=e512] [cursor=pointer]': - - /url: "#行情" - - img [ref=e513] - - generic [ref=e515]: - - generic [ref=e516]: - - generic [ref=e517]: "# K 线" - - text: easy-tdx kline SZ 000001 --count 30 --table easy-tdx kline SH 600519 --period 5MIN --adjust QFQ - - generic [ref=e518]: "# 实时报价" - - text: easy-tdx quote - - generic [ref=e519]: "\"SZ 000001,SH 600519\"" - - text: "--table" - - generic [ref=e520]: "# 市场分类报价(按涨幅排序)" - - text: easy-tdx quote-list A --count 20 --table easy-tdx quote-list KCB --sort TOTAL_AMOUNT --order ASC easy-tdx quote-list CYB --count 50 - - button "Copy code to clipboard" [ref=e522] [cursor=pointer]: - - img [ref=e523] - - generic [ref=e526]: - - heading "分时 / 成交" [level=3] [ref=e527] - - 'link "Permalink: 分时 / 成交" [ref=e528] [cursor=pointer]': - - /url: "#分时--成交" - - img [ref=e529] - - generic [ref=e531]: - - generic [ref=e532]: easy-tdx tick SZ 000001 --table easy-tdx tick SH 600519 --days 5 easy-tdx tick SZ 000001 --date 20250115 easy-tdx transaction SZ 000001 --count 100 --table easy-tdx transaction SH 600519 --date 20250115 - - button "Copy code to clipboard" [ref=e534] [cursor=pointer]: - - img [ref=e535] - - generic [ref=e538]: - - heading "板块" [level=3] [ref=e539] - - 'link "Permalink: 板块" [ref=e540] [cursor=pointer]': - - /url: "#板块" - - img [ref=e541] - - generic [ref=e543]: - - generic [ref=e544]: - - text: easy-tdx board-list --type GN --table easy-tdx board-list --type HY --count 200 easy-tdx board-members 881001 --table easy-tdx belong-board SZ 000001 --table easy-tdx board-summary 881001 --table - - generic [ref=e545]: "# 板块汇总(成交额/主力净流入/涨跌家数)" - - text: easy-tdx board-summary 881001 --members --table - - generic [ref=e546]: "# 含成分股明细" - - text: easy-tdx board-ranking --type HY --top 10 --table - - generic [ref=e547]: "# 行业板块排行" - - text: easy-tdx board-ranking --type GN --sort-by amount - - generic [ref=e548]: "# 概念板块按成交额排行" - - button "Copy code to clipboard" [ref=e550] [cursor=pointer]: - - img [ref=e551] - - generic [ref=e554]: - - heading "资金 / 监控" [level=3] [ref=e555] - - 'link "Permalink: 资金 / 监控" [ref=e556] [cursor=pointer]': - - /url: "#资金--监控" - - img [ref=e557] - - generic [ref=e559]: - - generic [ref=e560]: easy-tdx capital-flow SH 600519 --table easy-tdx auction SZ 000001 --table easy-tdx unusual SH --count 100 --table easy-tdx market-stat --table easy-tdx server-info --table easy-tdx symbol-info SZ 000001 --table - - button "Copy code to clipboard" [ref=e562] [cursor=pointer]: - - img [ref=e563] - - generic [ref=e566]: - - heading "技术指标" [level=3] [ref=e567] - - 'link "Permalink: 技术指标" [ref=e568] [cursor=pointer]': - - /url: "#技术指标" - - img [ref=e569] - - generic [ref=e571]: - - generic [ref=e572]: - - text: easy-tdx indicator-list --table - - generic [ref=e573]: "# 列出所有可用指标" - - text: easy-tdx indicator MACD -m SH -c 600519 --table - - generic [ref=e574]: "# MACD" - - text: easy-tdx indicator KDJ -m SZ -c 000001 --table - - generic [ref=e575]: "# KDJ" - - text: easy-tdx indicator RSI -m SH -c 600519 --table - - generic [ref=e576]: "# RSI" - - text: easy-tdx indicator BOLL -m SH -c 600519 --table - - generic [ref=e577]: "# BOLL 布林带" - - text: easy-tdx indicator DMI -m SH -c 600519 --table - - generic [ref=e578]: "# DMI 动向指标" - - text: easy-tdx indicator ATR -m SH -c 600519 --table - - generic [ref=e579]: "# ATR 真实波幅" - - text: easy-tdx indicator WR -m SH -c 600519 --table - - generic [ref=e580]: "# WR 威廉指标" - - text: easy-tdx indicator CCI -m SH -c 600519 --table - - generic [ref=e581]: "# CCI 顺势指标" - - text: easy-tdx indicator BIAS -m SZ -c 000001 --table - - generic [ref=e582]: "# BIAS 乖离率" - - text: easy-tdx indicator BIAS_SIGNAL -m SH -c 600519 --table - - generic [ref=e583]: "# 30日乖离率信号" - - text: easy-tdx indicator OBV -m SZ -c 000001 --table - - generic [ref=e584]: "# OBV 能量潮" - - generic [ref=e585]: "# 多指标同时计算" - - text: easy-tdx indicator MACD,KDJ,RSI,BOLL -m SH -c 600519 --count 10 --table - - generic [ref=e586]: "# 自定义参数" - - text: easy-tdx indicator MACD -m SH -c 600519 --params SHORT=10,LONG=22 - - generic [ref=e587]: "# 分钟线指标" - - text: easy-tdx indicator MACD -m SH -c 600519 --period 5MIN --count 50 - - generic [ref=e588]: "# 仅输出指标值(不含 OHLCV)" - - text: easy-tdx indicator RSI -m SZ -c 000001 --no-ohlcv - - button "Copy code to clipboard" [ref=e590] [cursor=pointer]: - - img [ref=e591] - - generic [ref=e594]: - - heading "捉妖大师(重点)" [level=3] [ref=e595] - - 'link "Permalink: 捉妖大师(重点)" [ref=e596] [cursor=pointer]': - - /url: "#捉妖大师重点" - - img [ref=e597] - - paragraph [ref=e599]: 捉妖大师是多周期涨幅共振指标,通过 20/60/120 日涨幅及指数平滑判断短中长线趋势是否同向,用于筛选趋势刚启动的强势股。 - - generic [ref=e600]: - - generic [ref=e601]: - - text: easy-tdx indicator ZHUOYAO -m SH -c 600519 --count 30 --table - - generic [ref=e602]: "# 自定义周期参数" - - text: easy-tdx indicator ZHUOYAO -m SZ -c 000001 --params N1=90,N2=45,N3=15 - - generic [ref=e603]: "# 结合其他指标一起看" - - text: easy-tdx indicator ZHUOYAO,MACD,KDJ -m SH -c 600519 --count 20 --table - - button "Copy code to clipboard" [ref=e605] [cursor=pointer]: - - img [ref=e606] - - paragraph [ref=e609]: 输出列说明: - - table [ref=e611]: - - rowgroup [ref=e612]: - - row "列名 含义" [ref=e613]: - - columnheader "列名" [ref=e614] - - columnheader "含义" [ref=e615] - - rowgroup [ref=e616]: - - row "ZY_LONG 长线 — 120 日涨幅的 10 日指数平滑" [ref=e617]: - - cell "ZY_LONG" [ref=e618]: - - code [ref=e619]: ZY_LONG - - cell "长线 — 120 日涨幅的 10 日指数平滑" [ref=e620] - - row "ZY_MID 中线 — 60 日涨幅(%)" [ref=e621]: - - cell "ZY_MID" [ref=e622]: - - code [ref=e623]: ZY_MID - - cell "中线 — 60 日涨幅(%)" [ref=e624] - - row "ZY_SHORT 短线 — 20 日涨幅(%)" [ref=e625]: - - cell "ZY_SHORT" [ref=e626]: - - code [ref=e627]: ZY_SHORT - - cell "短线 — 20 日涨幅(%)" [ref=e628] - - row "ZY_TREND 趋势 — 中线的 10 日指数平滑" [ref=e629]: - - cell "ZY_TREND" [ref=e630]: - - code [ref=e631]: ZY_TREND - - cell "趋势 — 中线的 10 日指数平滑" [ref=e632] - - paragraph [ref=e633]: - - strong [ref=e634]: 核心信号: - - text: 四线全部 > 0 且短线 > 中线 > 长线 = 短中长趋势完全一致向上,是强势股特征。详见 - - link "捉妖大师指标详解" [ref=e635] [cursor=pointer]: - - /url: /handsomejustin/easy_tdx/blob/main/docs/indicator-zhuoyao.md - - text: 。 - - generic [ref=e636]: - - heading "30日乖离率信号(重点)" [level=3] [ref=e637] - - 'link "Permalink: 30日乖离率信号(重点)" [ref=e638] [cursor=pointer]': - - /url: "#30日乖离率信号重点" - - img [ref=e639] - - paragraph [ref=e641]: 30日乖离率信号指标,在标准乖离率(BIAS)基础上叠加短/长信号线,通过三者位置关系判断趋势方向和转折点。源自通达信经典指标。 - - generic [ref=e642]: - - generic [ref=e643]: - - text: easy-tdx indicator BIAS_SIGNAL -m SH -c 600519 --count 60 --table - - generic [ref=e644]: "# 自定义周期参数" - - text: easy-tdx indicator BIAS_SIGNAL -m SZ -c 000001 --params P=5,M=20 - - generic [ref=e645]: "# 结合其他指标一起看" - - text: easy-tdx indicator BIAS_SIGNAL,MACD,KDJ -m SH -c 600519 --count 30 --table - - button "Copy code to clipboard" [ref=e647] [cursor=pointer]: - - img [ref=e648] - - paragraph [ref=e651]: 输出列说明: - - table [ref=e653]: - - rowgroup [ref=e654]: - - row "列名 含义" [ref=e655]: - - columnheader "列名" [ref=e656] - - columnheader "含义" [ref=e657] - - rowgroup [ref=e658]: - - row "BS_X M日乖离率 — 当前价格偏离30日均线的百分比" [ref=e659]: - - cell "BS_X" [ref=e660]: - - code [ref=e661]: BS_X - - cell "M日乖离率 — 当前价格偏离30日均线的百分比" [ref=e662] - - row "BS_SMA 短周期信号线 — 乖离率的 P 日均线,过滤短期噪音" [ref=e663]: - - cell "BS_SMA" [ref=e664]: - - code [ref=e665]: BS_SMA - - cell "短周期信号线 — 乖离率的 P 日均线,过滤短期噪音" [ref=e666] - - row "BS_LMA 长周期信号线 — 乖离率的 M 日均线,捕捉中期趋势方向" [ref=e667]: - - cell "BS_LMA" [ref=e668]: - - code [ref=e669]: BS_LMA - - cell "长周期信号线 — 乖离率的 M 日均线,捕捉中期趋势方向" [ref=e670] - - paragraph [ref=e671]: - - strong [ref=e672]: 核心信号: - - text: X > S_SMA 且 X_LMA 上升 = 多头确认(通达信红色);S_SMA > X 或 X_LMA 下降 = 空头预警(通达信绿色)。多空判断非对称设计——多头需两个条件同时满足,空头只需其一,偏向保守预警。详见 - - link "30日乖离率信号指标详解" [ref=e673] [cursor=pointer]: - - /url: /handsomejustin/easy_tdx/blob/main/docs/indicator-bias-signal.md - - text: 。 - - generic [ref=e674]: - - generic [ref=e675]: "# Python API 用法 from easy_tdx import MacClient, Market with MacClient.from_best_host() as c: df = c.get_stock_kline_with_indicators( Market.SH, \"600519\", indicators=[\"BIAS_SIGNAL\"], count=60, ) # df 包含: datetime, open, close, high, low, vol, amount # + BS_X, BS_SMA, BS_LMA" - - button "Copy code to clipboard" [ref=e677] [cursor=pointer]: - - img [ref=e678] - - paragraph [ref=e681]: 支持 32 个指标:MACD, KDJ, RSI, BOLL, DMI, ATR, WR, CCI, BIAS, BIAS_SIGNAL, OBV, VR, EMV, MFI, BRAR, ASI, TRIX, DPO, MTM, ROC, EXPMA, BBI, PSY, DFMA, CR, KTN, XSII, MASS, TAQ, ZHUOYAO。 - - generic [ref=e682]: - - generic [ref=e683]: "# Python API 用法 from easy_tdx import MacClient, Market with MacClient.from_best_host() as c: df = c.get_stock_kline_with_indicators( Market.SH, \"600519\", indicators=[\"ZHUOYAO\"], count=30, ) # df 包含: datetime, open, close, high, low, vol, amount # + ZY_LONG, ZY_MID, ZY_SHORT, ZY_TREND" - - button "Copy code to clipboard" [ref=e685] [cursor=pointer]: - - img [ref=e686] - - paragraph [ref=e689]: 支持 32 个指标:MACD, KDJ, RSI, BOLL, DMI, ATR, WR, CCI, BIAS, BIAS_SIGNAL, OBV, VR, EMV, MFI, BRAR, ASI, TRIX, DPO, MTM, ROC, EXPMA, BBI, PSY, DFMA, CR, KTN, XSII, MASS, TAQ, ZHUOYAO。 - - generic [ref=e690]: - - heading "财务" [level=3] [ref=e691] - - 'link "Permalink: 财务" [ref=e692] [cursor=pointer]': - - /url: "#财务" - - img [ref=e693] - - generic [ref=e695]: - - generic [ref=e696]: - - text: easy-tdx f10 SH 600519 - - generic [ref=e697]: "# F10 公司信息" - - text: easy-tdx fund-flow SH 600519 - - generic [ref=e698]: "# 历史资金流向" - - button "Copy code to clipboard" [ref=e700] [cursor=pointer]: - - img [ref=e701] - - generic [ref=e704]: - - heading "扩展市场(港股/美股/期货)" [level=3] [ref=e705] - - 'link "Permalink: 扩展市场(港股/美股/期货)" [ref=e706] [cursor=pointer]': - - /url: "#扩展市场港股美股期货" - - img [ref=e707] - - generic [ref=e709]: - - generic [ref=e710]: - - text: easy-tdx ex markets - - generic [ref=e711]: "# 列出可用市场" - - text: easy-tdx ex kline HK_MAIN_BOARD 00700 --count 30 --table - - generic [ref=e712]: "# 港股 K 线" - - text: easy-tdx ex kline US_STOCK AAPL --table - - generic [ref=e713]: "# 美股 K 线" - - text: easy-tdx ex quote US_STOCK TSLA --table - - generic [ref=e714]: "# 美股报价" - - text: easy-tdx ex quote-list HK_MAIN_BOARD --table - - generic [ref=e715]: "# 港股商品列表" - - text: easy-tdx ex tick HK_MAIN_BOARD 00700 --table - - generic [ref=e716]: "# 港股分时" - - button "Copy code to clipboard" [ref=e718] [cursor=pointer]: - - img [ref=e719] - - generic [ref=e722]: - - heading "离线数据(无需网络)" [level=3] [ref=e723] - - 'link "Permalink: 离线数据(无需网络)" [ref=e724] [cursor=pointer]': - - /url: "#离线数据无需网络" - - img [ref=e725] - - paragraph [ref=e727]: 从本地通达信安装目录直接读取数据文件,无需网络连接: - - generic [ref=e728]: - - generic [ref=e729]: - - text: easy-tdx offline home - - generic [ref=e730]: "# 检测通达信安装目录" - - text: easy-tdx offline daily SH 600000 --count 10 --table - - generic [ref=e731]: "# A 股日线" - - text: easy-tdx offline min SZ 000001 --type lc5 --table - - generic [ref=e732]: "# 分钟线(5min/lc1/lc5)" - - text: easy-tdx offline ex-files --table - - generic [ref=e733]: "# 列出扩展市场可用文件" - - text: easy-tdx offline ex-daily 38#2_CPI --count 5 --table - - generic [ref=e734]: "# 扩展市场日线(期货/港股/外盘)" - - text: easy-tdx offline gbbq C:\new_jyplug\T0002\hq_cache\gbbq --table - - generic [ref=e735]: "# 股本变迁" - - text: easy-tdx offline financial C:\new_jyplug\vipdoc\fin\gpcw20260331.dat - - generic [ref=e736]: "# 历史财务" - - text: easy-tdx offline blocks C:\new_jyplug\T0002\blocknew --table - - generic [ref=e737]: "# 自定义板块" - - button "Copy code to clipboard" [ref=e739] [cursor=pointer]: - - img [ref=e740] - - generic [ref=e743]: - - heading "CLI 命令汇总" [level=2] [ref=e744] - - 'link "Permalink: CLI 命令汇总" [ref=e745] [cursor=pointer]': - - /url: "#cli-命令汇总" - - img [ref=e746] - - table [ref=e749]: - - rowgroup [ref=e750]: - - row "命令 说明" [ref=e751]: - - columnheader "命令" [ref=e752] - - columnheader "说明" [ref=e753] - - rowgroup [ref=e754]: - - row "ping 服务器延迟测速" [ref=e755]: - - cell "ping" [ref=e756]: - - code [ref=e757]: ping - - cell "服务器延迟测速" [ref=e758] - - row "version 版本号" [ref=e759]: - - cell "version" [ref=e760]: - - code [ref=e761]: version - - cell "版本号" [ref=e762] - - row "kline K 线(日/周/月/分钟,支持复权)" [ref=e763]: - - cell "kline" [ref=e764]: - - code [ref=e765]: kline - - cell "K 线(日/周/月/分钟,支持复权)" [ref=e766] - - row "quote 实时报价(单只/批量)" [ref=e767]: - - cell "quote" [ref=e768]: - - code [ref=e769]: quote - - cell "实时报价(单只/批量)" [ref=e770] - - row "quote-list 市场分类排序报价(A/SH/SZ/KCB/CYB)" [ref=e771]: - - cell "quote-list" [ref=e772]: - - code [ref=e773]: quote-list - - cell "市场分类排序报价(A/SH/SZ/KCB/CYB)" [ref=e774] - - row "tick 分时图(单日/多日/历史)" [ref=e775]: - - cell "tick" [ref=e776]: - - code [ref=e777]: tick - - cell "分时图(单日/多日/历史)" [ref=e778] - - row "transaction 逐笔成交" [ref=e779]: - - cell "transaction" [ref=e780]: - - code [ref=e781]: transaction - - cell "逐笔成交" [ref=e782] - - row "board-list 板块列表(行业/概念/风格)" [ref=e783]: - - cell "board-list" [ref=e784]: - - code [ref=e785]: board-list - - cell "板块列表(行业/概念/风格)" [ref=e786] - - row "board-members 板块成分股报价" [ref=e787]: - - cell "board-members" [ref=e788]: - - code [ref=e789]: board-members - - cell "板块成分股报价" [ref=e790] - - row "board-summary 板块汇总(成交额、主力净流入、涨跌家数)" [ref=e791]: - - cell "board-summary" [ref=e792]: - - code [ref=e793]: board-summary - - cell "板块汇总(成交额、主力净流入、涨跌家数)" [ref=e794] - - row "board-ranking 板块涨跌幅排行榜(行业/概念排行)" [ref=e795]: - - cell "board-ranking" [ref=e796]: - - code [ref=e797]: board-ranking - - cell "板块涨跌幅排行榜(行业/概念排行)" [ref=e798] - - row "belong-board 个股所属板块" [ref=e799]: - - cell "belong-board" [ref=e800]: - - code [ref=e801]: belong-board - - cell "个股所属板块" [ref=e802] - - row "capital-flow 资金流向" [ref=e803]: - - cell "capital-flow" [ref=e804]: - - code [ref=e805]: capital-flow - - cell "资金流向" [ref=e806] - - row "auction 集合竞价" [ref=e807]: - - cell "auction" [ref=e808]: - - code [ref=e809]: auction - - cell "集合竞价" [ref=e810] - - row "unusual 市场异动" [ref=e811]: - - cell "unusual" [ref=e812]: - - code [ref=e813]: unusual - - cell "市场异动" [ref=e814] - - row "market-stat 全市场涨跌统计" [ref=e815]: - - cell "market-stat" [ref=e816]: - - code [ref=e817]: market-stat - - cell "全市场涨跌统计" [ref=e818] - - row "server-info 服务器交易时段" [ref=e819]: - - cell "server-info" [ref=e820]: - - code [ref=e821]: server-info - - cell "服务器交易时段" [ref=e822] - - row "symbol-info 个股特征快照" [ref=e823]: - - cell "symbol-info" [ref=e824]: - - code [ref=e825]: symbol-info - - cell "个股特征快照" [ref=e826] - - row "indicator 技术指标计算(32 个:MACD/KDJ/RSI/BOLL/DMI/ATR...)" [ref=e827]: - - cell "indicator" [ref=e828]: - - code [ref=e829]: indicator - - cell "技术指标计算(32 个:MACD/KDJ/RSI/BOLL/DMI/ATR...)" [ref=e830] - - row "indicator-list 列出可用技术指标" [ref=e831]: - - cell "indicator-list" [ref=e832]: - - code [ref=e833]: indicator-list - - cell "列出可用技术指标" [ref=e834] - - row "f10 F10 公司信息" [ref=e835]: - - cell "f10" [ref=e836]: - - code [ref=e837]: f10 - - cell "F10 公司信息" [ref=e838] - - row "fund-flow 历史资金流向" [ref=e839]: - - cell "fund-flow" [ref=e840]: - - code [ref=e841]: fund-flow - - cell "历史资金流向" [ref=e842] - - row "ex kline 扩展市场 K 线" [ref=e843]: - - cell "ex kline" [ref=e844]: - - code [ref=e845]: ex kline - - cell "扩展市场 K 线" [ref=e846] - - row "ex quote 扩展市场报价" [ref=e847]: - - cell "ex quote" [ref=e848]: - - code [ref=e849]: ex quote - - cell "扩展市场报价" [ref=e850] - - row "ex quote-list 扩展市场商品列表" [ref=e851]: - - cell "ex quote-list" [ref=e852]: - - code [ref=e853]: ex quote-list - - cell "扩展市场商品列表" [ref=e854] - - row "ex tick 扩展市场分时" [ref=e855]: - - cell "ex tick" [ref=e856]: - - code [ref=e857]: ex tick - - cell "扩展市场分时" [ref=e858] - - row "ex markets 列出可用扩展市场" [ref=e859]: - - cell "ex markets" [ref=e860]: - - code [ref=e861]: ex markets - - cell "列出可用扩展市场" [ref=e862] - - row "offline home 检测通达信安装目录" [ref=e863]: - - cell "offline home" [ref=e864]: - - code [ref=e865]: offline home - - cell "检测通达信安装目录" [ref=e866] - - row "offline daily A 股日线(本地 .day 文件)" [ref=e867]: - - cell "offline daily" [ref=e868]: - - code [ref=e869]: offline daily - - cell "A 股日线(本地 .day 文件)" [ref=e870] - - row "offline min 分钟线(本地 .5/.lc1/.lc5 文件)" [ref=e871]: - - cell "offline min" [ref=e872]: - - code [ref=e873]: offline min - - cell "分钟线(本地 .5/.lc1/.lc5 文件)" [ref=e874] - - row "offline ex-files 列出扩展市场可用文件" [ref=e875]: - - cell "offline ex-files" [ref=e876]: - - code [ref=e877]: offline ex-files - - cell "列出扩展市场可用文件" [ref=e878] - - row "offline ex-daily 扩展市场日线(期货/港股/外盘)" [ref=e879]: - - cell "offline ex-daily" [ref=e880]: - - code [ref=e881]: offline ex-daily - - cell "扩展市场日线(期货/港股/外盘)" [ref=e882] - - row "offline gbbq 股本变迁数据" [ref=e883]: - - cell "offline gbbq" [ref=e884]: - - code [ref=e885]: offline gbbq - - cell "股本变迁数据" [ref=e886] - - row "offline financial 历史财务数据" [ref=e887]: - - cell "offline financial" [ref=e888]: - - code [ref=e889]: offline financial - - cell "历史财务数据" [ref=e890] - - row "offline blocks 自定义板块数据" [ref=e891]: - - cell "offline blocks" [ref=e892]: - - code [ref=e893]: offline blocks - - cell "自定义板块数据" [ref=e894] - - generic [ref=e895]: - - heading "Python API" [level=2] [ref=e896] - - 'link "Permalink: Python API" [ref=e897] [cursor=pointer]': - - /url: "#python-api" - - img [ref=e898] - - generic [ref=e900]: - - heading "连接管理" [level=3] [ref=e901] - - 'link "Permalink: 连接管理" [ref=e902] [cursor=pointer]': - - /url: "#连接管理" - - img [ref=e903] - - paragraph [ref=e905]: - - text: 所有客户端支持 - - code [ref=e906]: from_best_host() - - text: 自动选最低延迟服务器: - - generic [ref=e907]: - - generic [ref=e908]: "from easy_tdx import MacClient with MacClient.from_best_host() as c: df = c.get_stock_kline(...)" - - button "Copy code to clipboard" [ref=e910] [cursor=pointer]: - - img [ref=e911] - - table [ref=e915]: - - rowgroup [ref=e916]: - - row "客户端 端口 覆盖范围" [ref=e917]: - - columnheader "客户端" [ref=e918] - - columnheader "端口" [ref=e919] - - columnheader "覆盖范围" [ref=e920] - - rowgroup [ref=e921]: - - row "MacClient / AsyncMacClient 7709 A 股行情(MAC 协议,推荐)" [ref=e922]: - - cell "MacClient / AsyncMacClient" [ref=e923]: - - code [ref=e924]: MacClient - - text: / - - code [ref=e925]: AsyncMacClient - - cell "7709" [ref=e926] - - cell "A 股行情(MAC 协议,推荐)" [ref=e927] - - row "MacExClient / AsyncMacExClient 7727 港股/美股/期货(MAC 协议)" [ref=e928]: - - cell "MacExClient / AsyncMacExClient" [ref=e929]: - - code [ref=e930]: MacExClient - - text: / - - code [ref=e931]: AsyncMacExClient - - cell "7727" [ref=e932] - - cell "港股/美股/期货(MAC 协议)" [ref=e933] - - row "UnifiedTdxClient / AsyncUnifiedTdxClient 自动 A 股 + 扩展市场统一入口" [ref=e934]: - - cell "UnifiedTdxClient / AsyncUnifiedTdxClient" [ref=e935]: - - code [ref=e936]: UnifiedTdxClient - - text: / - - code [ref=e937]: AsyncUnifiedTdxClient - - cell "自动" [ref=e938] - - cell "A 股 + 扩展市场统一入口" [ref=e939] - - row "TdxClient / AsyncTdxClient 7709 A 股行情(标准协议)" [ref=e940]: - - cell "TdxClient / AsyncTdxClient" [ref=e941]: - - code [ref=e942]: TdxClient - - text: / - - code [ref=e943]: AsyncTdxClient - - cell "7709" [ref=e944] - - cell "A 股行情(标准协议)" [ref=e945] - - generic [ref=e946]: - - heading "MAC 协议(推荐)" [level=3] [ref=e947] - - 'link "Permalink: MAC 协议(推荐)" [ref=e948] [cursor=pointer]': - - /url: "#mac-协议推荐" - - img [ref=e949] - - generic [ref=e951]: - - heading "报价" [level=4] [ref=e952] - - 'link "Permalink: 报价" [ref=e953] [cursor=pointer]': - - /url: "#报价" - - img [ref=e954] - - generic [ref=e956]: - - generic [ref=e957]: "from easy_tdx import MacClient, Market, Category, SortType, SortOrder with MacClient.from_best_host() as c: # 批量报价(最多 80 只/次) df = c.get_stock_quotes([(Market.SH, \"600519\"), (Market.SZ, \"000858\")]) # 市场分类排序报价 df = c.get_stock_quotes_list( Category.A, count=20, sort_type=SortType.CHANGE_PCT, sort_order=SortOrder.DESC, )" - - button "Copy code to clipboard" [ref=e959] [cursor=pointer]: - - img [ref=e960] - - paragraph [ref=e963]: - - text: 返回列: - - code [ref=e964]: market, code, name - - text: + 动态字段( - - code [ref=e965]: pre_close, open, high, low, close, vol, amount, turnover, vol_ratio - - text: 等)。 - - generic [ref=e966]: - - heading "K 线(支持复权)" [level=4] [ref=e967] - - 'link "Permalink: K 线(支持复权)" [ref=e968] [cursor=pointer]': - - /url: "#k-线支持复权" - - img [ref=e969] - - generic [ref=e971]: - - generic [ref=e972]: "from easy_tdx import MacClient, Market, Period, Adjust with MacClient.from_best_host() as c: # 日K前复权 df = c.get_stock_kline(Market.SH, \"600519\", Period.DAILY, count=10, adjust=Adjust.QFQ) # 5分钟线 df = c.get_stock_kline(Market.SZ, \"000001\", Period.MIN_5, count=100)" - - button "Copy code to clipboard" [ref=e974] [cursor=pointer]: - - img [ref=e975] - - paragraph [ref=e978]: - - text: 返回列: - - code [ref=e979]: datetime, open, close, high, low, vol, amount - - text: 。 - - generic [ref=e980]: - - heading "技术指标" [level=4] [ref=e981] - - 'link "Permalink: 技术指标" [ref=e982] [cursor=pointer]': - - /url: "#技术指标-1" - - img [ref=e983] - - paragraph [ref=e985]: - - text: 自动获取 200+ 条历史数据预热 EMA,返回最后 - - code [ref=e986]: count - - text: 条带指标的结果: - - generic [ref=e987]: - - generic [ref=e988]: "from easy_tdx import MacClient, Market, Period, Adjust from easy_tdx.indicator import compute_indicators, list_indicators with MacClient.from_best_host() as c: # 便捷方法:获取 K 线 + 计算指标一步完成(默认前复权) df = c.get_stock_kline_with_indicators( Market.SH, \"600519\", indicators=[\"MACD\", \"KDJ\", \"RSI\", \"BOLL\"], count=30, ) # df 包含: datetime, open, close, high, low, vol, amount # + MACD_DIF, MACD_DEA, MACD_HIST, KDJ_K, KDJ_D, KDJ_J, RSI, # BOLL_UPPER, BOLL_MID, BOLL_LOWER # 自定义指标参数 df = c.get_stock_kline_with_indicators( Market.SH, \"600519\", indicators=[\"MACD\"], params={\"MACD\": {\"SHORT\": 10, \"LONG\": 22}}, ) # 独立使用:对已有 DataFrame 计算指标 raw = c.get_stock_kline(Market.SH, \"600519\", Period.DAILY, count=200, adjust=Adjust.QFQ) result = compute_indicators(raw, [\"ATR\", \"CCI\", \"WR\"], tail=30) # 查看所有可用指标 for info in list_indicators(): print(info[\"name\"], info[\"description\"], info[\"outputs\"])" - - button "Copy code to clipboard" [ref=e990] [cursor=pointer]: - - img [ref=e991] - - paragraph [ref=e994]: 支持 31 个技术指标: - - table [ref=e996]: - - rowgroup [ref=e997]: - - row "指标 输入 输出列" [ref=e998]: - - columnheader "指标" [ref=e999] - - columnheader "输入" [ref=e1000] - - columnheader "输出列" [ref=e1001] - - rowgroup [ref=e1002]: - - row "MACD close MACD_DIF, MACD_DEA, MACD_HIST" [ref=e1003]: - - cell "MACD" [ref=e1004] - - cell "close" [ref=e1005] - - cell "MACD_DIF, MACD_DEA, MACD_HIST" [ref=e1006] - - row "KDJ close, high, low KDJ_K, KDJ_D, KDJ_J" [ref=e1007]: - - cell "KDJ" [ref=e1008] - - cell "close, high, low" [ref=e1009] - - cell "KDJ_K, KDJ_D, KDJ_J" [ref=e1010] - - row "RSI close RSI" [ref=e1011]: - - cell "RSI" [ref=e1012] - - cell "close" [ref=e1013] - - cell "RSI" [ref=e1014] - - row "BOLL close BOLL_UPPER, BOLL_MID, BOLL_LOWER" [ref=e1015]: - - cell "BOLL" [ref=e1016] - - cell "close" [ref=e1017] - - cell "BOLL_UPPER, BOLL_MID, BOLL_LOWER" [ref=e1018] - - row "DMI close, high, low DMI_PDI, DMI_MDI, DMI_ADX, DMI_ADXR" [ref=e1019]: - - cell "DMI" [ref=e1020] - - cell "close, high, low" [ref=e1021] - - cell "DMI_PDI, DMI_MDI, DMI_ADX, DMI_ADXR" [ref=e1022] - - row "ATR close, high, low ATR" [ref=e1023]: - - cell "ATR" [ref=e1024] - - cell "close, high, low" [ref=e1025] - - cell "ATR" [ref=e1026] - - row "WR close, high, low WR1, WR2" [ref=e1027]: - - cell "WR" [ref=e1028] - - cell "close, high, low" [ref=e1029] - - cell "WR1, WR2" [ref=e1030] - - row "CCI close, high, low CCI" [ref=e1031]: - - cell "CCI" [ref=e1032] - - cell "close, high, low" [ref=e1033] - - cell "CCI" [ref=e1034] - - row "BIAS close BIAS1, BIAS2, BIAS3" [ref=e1035]: - - cell "BIAS" [ref=e1036] - - cell "close" [ref=e1037] - - cell "BIAS1, BIAS2, BIAS3" [ref=e1038] - - row "OBV close, vol OBV" [ref=e1039]: - - cell "OBV" [ref=e1040] - - cell "close, vol" [ref=e1041] - - cell "OBV" [ref=e1042] - - row "VR close, vol VR" [ref=e1043]: - - cell "VR" [ref=e1044] - - cell "close, vol" [ref=e1045] - - cell "VR" [ref=e1046] - - row "EMV high, low, vol EMV, EMV_MA" [ref=e1047]: - - cell "EMV" [ref=e1048] - - cell "high, low, vol" [ref=e1049] - - cell "EMV, EMV_MA" [ref=e1050] - - row "MFI close, high, low, vol MFI" [ref=e1051]: - - cell "MFI" [ref=e1052] - - cell "close, high, low, vol" [ref=e1053] - - cell "MFI" [ref=e1054] - - row "BRAR open, close, high, low AR, BR" [ref=e1055]: - - cell "BRAR" [ref=e1056] - - cell "open, close, high, low" [ref=e1057] - - cell "AR, BR" [ref=e1058] - - row "ASI open, close, high, low ASI, ASI_MA" [ref=e1059]: - - cell "ASI" [ref=e1060] - - cell "open, close, high, low" [ref=e1061] - - cell "ASI, ASI_MA" [ref=e1062] - - row "TRIX close TRIX, TRIX_MA" [ref=e1063]: - - cell "TRIX" [ref=e1064] - - cell "close" [ref=e1065] - - cell "TRIX, TRIX_MA" [ref=e1066] - - row "DPO close DPO, DPO_MA" [ref=e1067]: - - cell "DPO" [ref=e1068] - - cell "close" [ref=e1069] - - cell "DPO, DPO_MA" [ref=e1070] - - row "MTM close MTM, MTM_MA" [ref=e1071]: - - cell "MTM" [ref=e1072] - - cell "close" [ref=e1073] - - cell "MTM, MTM_MA" [ref=e1074] - - row "ROC close ROC, ROC_MA" [ref=e1075]: - - cell "ROC" [ref=e1076] - - cell "close" [ref=e1077] - - cell "ROC, ROC_MA" [ref=e1078] - - row "EXPMA close EXPMA_12, EXPMA_50" [ref=e1079]: - - cell "EXPMA" [ref=e1080] - - cell "close" [ref=e1081] - - cell "EXPMA_12, EXPMA_50" [ref=e1082] - - row "BBI close BBI" [ref=e1083]: - - cell "BBI" [ref=e1084] - - cell "close" [ref=e1085] - - cell "BBI" [ref=e1086] - - row "PSY close PSY, PSY_MA" [ref=e1087]: - - cell "PSY" [ref=e1088] - - cell "close" [ref=e1089] - - cell "PSY, PSY_MA" [ref=e1090] - - row "DFMA close DFMA_DIF, DFMA_DMA" [ref=e1091]: - - cell "DFMA" [ref=e1092] - - cell "close" [ref=e1093] - - cell "DFMA_DIF, DFMA_DMA" [ref=e1094] - - row "CR close, high, low CR" [ref=e1095]: - - cell "CR" [ref=e1096] - - cell "close, high, low" [ref=e1097] - - cell "CR" [ref=e1098] - - row "KTN close, high, low KTN_UPPER, KTN_MID, KTN_LOWER" [ref=e1099]: - - cell "KTN" [ref=e1100] - - cell "close, high, low" [ref=e1101] - - cell "KTN_UPPER, KTN_MID, KTN_LOWER" [ref=e1102] - - row "XSII close, high, low XSII_TD1, XSII_TD2, XSII_TD3, XSII_TD4" [ref=e1103]: - - cell "XSII" [ref=e1104] - - cell "close, high, low" [ref=e1105] - - cell "XSII_TD1, XSII_TD2, XSII_TD3, XSII_TD4" [ref=e1106] - - row "MASS high, low MASS, MASS_MA" [ref=e1107]: - - cell "MASS" [ref=e1108] - - cell "high, low" [ref=e1109] - - cell "MASS, MASS_MA" [ref=e1110] - - row "TAQ high, low TAQ_UP, TAQ_MID, TAQ_DOWN" [ref=e1111]: - - cell "TAQ" [ref=e1112] - - cell "high, low" [ref=e1113] - - cell "TAQ_UP, TAQ_MID, TAQ_DOWN" [ref=e1114] - - row "ZHUOYAO close ZY_LONG, ZY_MID, ZY_SHORT, ZY_TREND" [ref=e1115]: - - cell "ZHUOYAO" [ref=e1116] - - cell "close" [ref=e1117] - - cell "ZY_LONG, ZY_MID, ZY_SHORT, ZY_TREND" [ref=e1118] - - row "BIAS_SIGNAL close BS_X, BS_SMA, BS_LMA" [ref=e1119]: - - cell "BIAS_SIGNAL" [ref=e1120] - - cell "close" [ref=e1121] - - cell "BS_X, BS_SMA, BS_LMA" [ref=e1122] - - generic [ref=e1123]: - - heading "分时" [level=4] [ref=e1124] - - 'link "Permalink: 分时" [ref=e1125] [cursor=pointer]': - - /url: "#分时" - - img [ref=e1126] - - generic [ref=e1128]: - - generic [ref=e1129]: "with MacClient.from_best_host() as c: df = c.get_tick_chart(Market.SH, \"600519\") # 单日分时 df = c.get_tick_charts(Market.SH, \"600519\", days=3) # 多日分时(最多5天) df = c.get_chart_sampling(Market.SH, \"600519\") # 240点缩略采样" - - button "Copy code to clipboard" [ref=e1131] [cursor=pointer]: - - img [ref=e1132] - - generic [ref=e1135]: - - heading "逐笔成交" [level=4] [ref=e1136] - - 'link "Permalink: 逐笔成交" [ref=e1137] [cursor=pointer]': - - /url: "#逐笔成交" - - img [ref=e1138] - - generic [ref=e1140]: - - generic [ref=e1141]: "with MacClient.from_best_host() as c: df = c.get_transactions(Market.SH, \"600519\", count=100) df = c.get_transactions(Market.SH, \"600519\", count=100, date=20250115)" - - button "Copy code to clipboard" [ref=e1143] [cursor=pointer]: - - img [ref=e1144] - - generic [ref=e1147]: - - heading "板块" [level=4] [ref=e1148] - - 'link "Permalink: 板块" [ref=e1149] [cursor=pointer]': - - /url: "#板块-1" - - img [ref=e1150] - - generic [ref=e1152]: - - generic [ref=e1153]: "from easy_tdx import BoardType with MacClient.from_best_host() as c: df = c.get_board_list(BoardType.GN) # 概念板块 df = c.get_board_members(\"881001\", sort_type=SortType.CHANGE_PCT) df = c.get_belong_board(Market.SZ, \"000001\") # 个股所属板块 # 板块汇总:成交额、主力净流入、涨跌家数 summary = c.get_board_summary(\"881001\") # summary = { # \"member_count\": 82, # \"amount\": 5823456000.0, # 板块总成交额(元) # \"vol\": 412356789, # 板块总成交量(股) # \"main_net_amount\": -123456.0, # 当日主力净流入 # \"main_net_3d\": -567890.0, # 近3日主力净流入 # \"main_net_5d\": -234567.0, # 近5日主力净流入 # \"up_count\": 45, # \"down_count\": 37, # \"members\": DataFrame(...), # 成分股明细 # } # 板块涨跌幅排行榜 df = c.get_board_ranking(BoardType.HY, top_n=10, sort_by=\"change_pct\") df = c.get_board_ranking(BoardType.GN, top_n=20, sort_by=\"main_net_amount\") # 返回列:code, name, change_pct, amount, vol, main_net_amount, up_count, down_count, member_count" - - button "Copy code to clipboard" [ref=e1155] [cursor=pointer]: - - img [ref=e1156] - - generic [ref=e1159]: - - heading "资金流向" [level=4] [ref=e1160] - - 'link "Permalink: 资金流向" [ref=e1161] [cursor=pointer]': - - /url: "#资金流向" - - img [ref=e1162] - - generic [ref=e1164]: - - generic [ref=e1165]: "with MacClient.from_best_host() as c: df = c.get_capital_flow(Market.SH, \"600519\")" - - button "Copy code to clipboard" [ref=e1167] [cursor=pointer]: - - img [ref=e1168] - - paragraph [ref=e1171]: - - text: 返回列: - - code [ref=e1172]: date, main_in, main_out, main_net, small_in/out/net, mid_in/out/net, large_in/out/net - - text: 。 - - generic [ref=e1173]: - - heading "监控" [level=4] [ref=e1174] - - 'link "Permalink: 监控" [ref=e1175] [cursor=pointer]': - - /url: "#监控" - - img [ref=e1176] - - generic [ref=e1178]: - - generic [ref=e1179]: "with MacClient.from_best_host() as c: df = c.get_auction(Market.SH, \"600519\") # 集合竞价 df = c.get_unusual(Market.SH) # 市场异动 df = c.get_symbol_info(Market.SZ, \"000001\") # 个股特征快照 df = c.get_server_info() # 服务器交易时段" - - button "Copy code to clipboard" [ref=e1181] [cursor=pointer]: - - img [ref=e1182] - - generic [ref=e1185]: - - heading "扩展市场" [level=3] [ref=e1186] - - 'link "Permalink: 扩展市场" [ref=e1187] [cursor=pointer]': - - /url: "#扩展市场" - - img [ref=e1188] - - generic [ref=e1190]: - - generic [ref=e1191]: "from easy_tdx import MacExClient, ExMarket, Period with MacExClient.from_best_host() as c: count = c.goods_count(ExMarket.HK_MAIN_BOARD) df = c.goods_list(ExMarket.HK_MAIN_BOARD, start=0, count=50) df = c.goods_kline(ExMarket.US_STOCK, \"AAPL\", Period.DAILY, count=10) df = c.goods_quotes([(ExMarket.HK_MAIN_BOARD, \"00700\")]) df = c.goods_tick_chart(ExMarket.HK_MAIN_BOARD, \"00700\") df = c.goods_transaction(ExMarket.HK_MAIN_BOARD, \"00700\", count=100)" - - button "Copy code to clipboard" [ref=e1193] [cursor=pointer]: - - img [ref=e1194] - - generic [ref=e1197]: - - heading "统一客户端" [level=3] [ref=e1198] - - 'link "Permalink: 统一客户端" [ref=e1199] [cursor=pointer]': - - /url: "#统一客户端" - - img [ref=e1200] - - generic [ref=e1202]: - - generic [ref=e1203]: "from easy_tdx import UnifiedTdxClient, ExMarket, Market, Period with UnifiedTdxClient() as client: # A 股 -- 自动路由到 MacClient df = client.get_stock_kline(Market.SH, \"600519\", Period.DAILY, count=5) df = client.get_stock_quotes([(Market.SH, \"600519\")]) df = client.get_board_list() # 扩展市场 -- 自动路由到 MacExClient df = client.goods_kline(ExMarket.HK_MAIN_BOARD, \"00700\", Period.DAILY, count=5)" - - button "Copy code to clipboard" [ref=e1205] [cursor=pointer]: - - img [ref=e1206] - - generic [ref=e1209]: - - heading "标准协议" [level=3] [ref=e1210] - - 'link "Permalink: 标准协议" [ref=e1211] [cursor=pointer]': - - /url: "#标准协议" - - img [ref=e1212] - - generic [ref=e1214]: - - generic [ref=e1215]: "from easy_tdx import TdxClient, Market, KlineCategory with TdxClient.from_best_host() as c: count = c.get_security_count(Market.SH) stocks = c.get_security_list(Market.SH, start=0) quotes = c.get_security_quotes([(Market.SH, \"600000\"), (Market.SZ, \"000001\")]) bars = c.get_security_bars(Market.SZ, \"002176\", KlineCategory.DAY, 0, 100) minute = c.get_minute_time_data(Market.SH, \"600000\") trades = c.get_transaction_data(Market.SH, \"600000\", 0, 20) flow = c.get_fund_flow(Market.SH, \"600519\") blocks = c.get_block_info(\"block_gn.dat\") xdxr = c.get_xdxr_info(Market.SH, \"600519\") stat = c.get_market_stat()" - - button "Copy code to clipboard" [ref=e1217] [cursor=pointer]: - - img [ref=e1218] - - paragraph [ref=e1221]: - - code [ref=e1222]: AsyncTdxClient - - text: 提供对应的 - - code [ref=e1223]: async def - - text: 方法,接口一一对应。 - - generic [ref=e1224]: - - heading "SecurityQuote 字段说明" [level=3] [ref=e1225] - - 'link "Permalink: SecurityQuote 字段说明" [ref=e1226] [cursor=pointer]': - - /url: "#securityquote-字段说明" - - img [ref=e1227] - - paragraph [ref=e1229]: - - code [ref=e1230]: get_security_quotes() - - text: 返回的 DataFrame 包含以下特殊字段: - - table [ref=e1232]: - - rowgroup [ref=e1233]: - - row "字段 类型 说明" [ref=e1234]: - - columnheader "字段" [ref=e1235] - - columnheader "类型" [ref=e1236] - - columnheader "说明" [ref=e1237] - - rowgroup [ref=e1238]: - - row "trading_status int 交易状态标志。0x8020(32800) = 停牌,其余值表示正常交易或集合竞价" [ref=e1239]: - - cell "trading_status" [ref=e1240]: - - code [ref=e1241]: trading_status - - cell "int" [ref=e1242] - - cell "交易状态标志。0x8020(32800) = 停牌,其余值表示正常交易或集合竞价" [ref=e1243]: - - text: 交易状态标志。 - - code [ref=e1244]: "0x8020" - - text: (32800) = 停牌,其余值表示正常交易或集合竞价 - - row "open_amount float 集合竞价成交金额(元)。仅个股有效,指数该字段无意义" [ref=e1245]: - - cell "open_amount" [ref=e1246]: - - code [ref=e1247]: open_amount - - cell "float" [ref=e1248] - - cell "集合竞价成交金额(元)。仅个股有效,指数该字段无意义" [ref=e1249] - - row "server_time str 服务器时间,格式 HH:MM:SS.mmm" [ref=e1250]: - - cell "server_time" [ref=e1251]: - - code [ref=e1252]: server_time - - cell "str" [ref=e1253] - - cell "服务器时间,格式 HH:MM:SS.mmm" [ref=e1254]: - - text: 服务器时间,格式 - - code [ref=e1255]: HH:MM:SS.mmm - - 'row "unknown_2 int 指数: 集合竞价成交金额/100;个股: 舍入残差≈0" [ref=e1256]': - - cell "unknown_2" [ref=e1257]: - - code [ref=e1258]: unknown_2 - - cell "int" [ref=e1259] - - 'cell "指数: 集合竞价成交金额/100;个股: 舍入残差≈0" [ref=e1260]' - - 'row "unknown_3 int 个股: 集合竞价成交金额/100;指数: 负值/无意义" [ref=e1261]': - - cell "unknown_3" [ref=e1262]: - - code [ref=e1263]: unknown_3 - - cell "int" [ref=e1264] - - 'cell "个股: 集合竞价成交金额/100;指数: 负值/无意义" [ref=e1265]' - - row "unknown_5-8 int 保留字段,恒为 0" [ref=e1266]: - - cell "unknown_5-8" [ref=e1267]: - - code [ref=e1268]: unknown_5-8 - - cell "int" [ref=e1269] - - cell "保留字段,恒为 0" [ref=e1270] - - paragraph [ref=e1271]: 检测停牌: - - generic [ref=e1272]: - - generic [ref=e1273]: df = c.get_security_quotes([(Market.SH, "600000")]) is_suspended = df.iloc[0]["trading_status"] == 0x8020 - - button "Copy code to clipboard" [ref=e1275] [cursor=pointer]: - - img [ref=e1276] - - generic [ref=e1279]: - - heading "离线数据读取" [level=3] [ref=e1280] - - 'link "Permalink: 离线数据读取" [ref=e1281] [cursor=pointer]': - - /url: "#离线数据读取" - - img [ref=e1282] - - paragraph [ref=e1284]: 无需网络,从本地通达信安装目录直接读取: - - generic [ref=e1285]: - - generic [ref=e1286]: from easy_tdx.offline import detect_tdx_home, read_daily_bars, find_daily_bar_file from easy_tdx import Market home = detect_tdx_home() filepath = find_daily_bar_file(Market.SH, "600000") bars = read_daily_bars(filepath) - - button "Copy code to clipboard" [ref=e1288] [cursor=pointer]: - - img [ref=e1289] - - paragraph [ref=e1292]: 支持:日线、分钟线、扩展市场日线、板块、股本变迁、历史财务数据。 - - paragraph [ref=e1293]: v1.5.0 起可通过 CLI 直接使用: - - generic [ref=e1294]: - - generic [ref=e1295]: easy-tdx offline daily SH 600000 --count 10 --table easy-tdx offline ex-files --table easy-tdx offline ex-daily 29#A1801 --table - - button "Copy code to clipboard" [ref=e1297] [cursor=pointer]: - - img [ref=e1298] - - generic [ref=e1301]: - - heading "枚举参考" [level=2] [ref=e1302] - - 'link "Permalink: 枚举参考" [ref=e1303] [cursor=pointer]': - - /url: "#枚举参考" - - img [ref=e1304] - - generic [ref=e1306]: - - heading "Period(K 线周期)" [level=3] [ref=e1307] - - 'link "Permalink: Period(K 线周期)" [ref=e1308] [cursor=pointer]': - - /url: "#periodk-线周期" - - img [ref=e1309] - - table [ref=e1312]: - - rowgroup [ref=e1313]: - - row "值 名称 说明" [ref=e1314]: - - columnheader "值" [ref=e1315] - - columnheader "名称" [ref=e1316] - - columnheader "说明" [ref=e1317] - - rowgroup [ref=e1318]: - - row "7 MIN_1 1 分钟" [ref=e1319]: - - cell "7" [ref=e1320] - - cell "MIN_1" [ref=e1321]: - - code [ref=e1322]: MIN_1 - - cell "1 分钟" [ref=e1323] - - row "0 MIN_5 5 分钟" [ref=e1324]: - - cell "0" [ref=e1325] - - cell "MIN_5" [ref=e1326]: - - code [ref=e1327]: MIN_5 - - cell "5 分钟" [ref=e1328] - - row "1 MIN_15 15 分钟" [ref=e1329]: - - cell "1" [ref=e1330] - - cell "MIN_15" [ref=e1331]: - - code [ref=e1332]: MIN_15 - - cell "15 分钟" [ref=e1333] - - row "2 MIN_30 30 分钟" [ref=e1334]: - - cell "2" [ref=e1335] - - cell "MIN_30" [ref=e1336]: - - code [ref=e1337]: MIN_30 - - cell "30 分钟" [ref=e1338] - - row "3 MIN_60 60 分钟" [ref=e1339]: - - cell "3" [ref=e1340] - - cell "MIN_60" [ref=e1341]: - - code [ref=e1342]: MIN_60 - - cell "60 分钟" [ref=e1343] - - row "4 DAILY 日线" [ref=e1344]: - - cell "4" [ref=e1345] - - cell "DAILY" [ref=e1346]: - - code [ref=e1347]: DAILY - - cell "日线" [ref=e1348] - - row "5 WEEKLY 周线" [ref=e1349]: - - cell "5" [ref=e1350] - - cell "WEEKLY" [ref=e1351]: - - code [ref=e1352]: WEEKLY - - cell "周线" [ref=e1353] - - row "6 MONTHLY 月线" [ref=e1354]: - - cell "6" [ref=e1355] - - cell "MONTHLY" [ref=e1356]: - - code [ref=e1357]: MONTHLY - - cell "月线" [ref=e1358] - - row "10 QUARTERLY 季线" [ref=e1359]: - - cell "10" [ref=e1360] - - cell "QUARTERLY" [ref=e1361]: - - code [ref=e1362]: QUARTERLY - - cell "季线" [ref=e1363] - - row "11 YEARLY 年线" [ref=e1364]: - - cell "11" [ref=e1365] - - cell "YEARLY" [ref=e1366]: - - code [ref=e1367]: YEARLY - - cell "年线" [ref=e1368] - - generic [ref=e1369]: - - heading "Adjust(复权类型)" [level=3] [ref=e1370] - - 'link "Permalink: Adjust(复权类型)" [ref=e1371] [cursor=pointer]': - - /url: "#adjust复权类型" - - img [ref=e1372] - - table [ref=e1375]: - - rowgroup [ref=e1376]: - - row "值 名称 说明" [ref=e1377]: - - columnheader "值" [ref=e1378] - - columnheader "名称" [ref=e1379] - - columnheader "说明" [ref=e1380] - - rowgroup [ref=e1381]: - - row "0 NONE 不复权" [ref=e1382]: - - cell "0" [ref=e1383] - - cell "NONE" [ref=e1384]: - - code [ref=e1385]: NONE - - cell "不复权" [ref=e1386] - - row "1 QFQ 前复权" [ref=e1387]: - - cell "1" [ref=e1388] - - cell "QFQ" [ref=e1389]: - - code [ref=e1390]: QFQ - - cell "前复权" [ref=e1391] - - row "2 HFQ 后复权" [ref=e1392]: - - cell "2" [ref=e1393] - - cell "HFQ" [ref=e1394]: - - code [ref=e1395]: HFQ - - cell "后复权" [ref=e1396] - - generic [ref=e1397]: - - heading "Category(市场分类)" [level=3] [ref=e1398] - - 'link "Permalink: Category(市场分类)" [ref=e1399] [cursor=pointer]': - - /url: "#category市场分类" - - img [ref=e1400] - - table [ref=e1403]: - - rowgroup [ref=e1404]: - - row "值 名称 说明" [ref=e1405]: - - columnheader "值" [ref=e1406] - - columnheader "名称" [ref=e1407] - - columnheader "说明" [ref=e1408] - - rowgroup [ref=e1409]: - - row "0 SH 上证 A 股" [ref=e1410]: - - cell "0" [ref=e1411] - - cell "SH" [ref=e1412]: - - code [ref=e1413]: SH - - cell "上证 A 股" [ref=e1414] - - row "2 SZ 深证 A 股" [ref=e1415]: - - cell "2" [ref=e1416] - - cell "SZ" [ref=e1417]: - - code [ref=e1418]: SZ - - cell "深证 A 股" [ref=e1419] - - row "6 A 全部 A 股" [ref=e1420]: - - cell "6" [ref=e1421] - - cell "A" [ref=e1422]: - - code [ref=e1423]: A - - cell "全部 A 股" [ref=e1424] - - row "7 B B 股" [ref=e1425]: - - cell "7" [ref=e1426] - - cell "B" [ref=e1427]: - - code [ref=e1428]: B - - cell "B 股" [ref=e1429] - - row "8 KCB 科创板" [ref=e1430]: - - cell "8" [ref=e1431] - - cell "KCB" [ref=e1432]: - - code [ref=e1433]: KCB - - cell "科创板" [ref=e1434] - - row "12 BJ 北证 A 股" [ref=e1435]: - - cell "12" [ref=e1436] - - cell "BJ" [ref=e1437]: - - code [ref=e1438]: BJ - - cell "北证 A 股" [ref=e1439] - - row "14 CYB 创业板" [ref=e1440]: - - cell "14" [ref=e1441] - - cell "CYB" [ref=e1442]: - - code [ref=e1443]: CYB - - cell "创业板" [ref=e1444] - - generic [ref=e1445]: - - heading "BoardType(板块类型)" [level=3] [ref=e1446] - - 'link "Permalink: BoardType(板块类型)" [ref=e1447] [cursor=pointer]': - - /url: "#boardtype板块类型" - - img [ref=e1448] - - table [ref=e1451]: - - rowgroup [ref=e1452]: - - row "值 名称 说明" [ref=e1453]: - - columnheader "值" [ref=e1454] - - columnheader "名称" [ref=e1455] - - columnheader "说明" [ref=e1456] - - rowgroup [ref=e1457]: - - row "0 HY 行业一级" [ref=e1458]: - - cell "0" [ref=e1459] - - cell "HY" [ref=e1460]: - - code [ref=e1461]: HY - - cell "行业一级" [ref=e1462] - - row "1 HY2 行业二级" [ref=e1463]: - - cell "1" [ref=e1464] - - cell "HY2" [ref=e1465]: - - code [ref=e1466]: HY2 - - cell "行业二级" [ref=e1467] - - row "3 GN 概念" [ref=e1468]: - - cell "3" [ref=e1469] - - cell "GN" [ref=e1470]: - - code [ref=e1471]: GN - - cell "概念" [ref=e1472] - - row "4 FG 风格" [ref=e1473]: - - cell "4" [ref=e1474] - - cell "FG" [ref=e1475]: - - code [ref=e1476]: FG - - cell "风格" [ref=e1477] - - row "5 DQ 地区" [ref=e1478]: - - cell "5" [ref=e1479] - - cell "DQ" [ref=e1480]: - - code [ref=e1481]: DQ - - cell "地区" [ref=e1482] - - row "255 ALL 全部" [ref=e1483]: - - cell "255" [ref=e1484] - - cell "ALL" [ref=e1485]: - - code [ref=e1486]: ALL - - cell "全部" [ref=e1487] - - generic [ref=e1488]: - - heading "SortType(排序字段)" [level=3] [ref=e1489] - - 'link "Permalink: SortType(排序字段)" [ref=e1490] [cursor=pointer]': - - /url: "#sorttype排序字段" - - img [ref=e1491] - - table [ref=e1494]: - - rowgroup [ref=e1495]: - - row "名称 说明" [ref=e1496]: - - columnheader "名称" [ref=e1497] - - columnheader "说明" [ref=e1498] - - rowgroup [ref=e1499]: - - row "CODE 代码" [ref=e1500]: - - cell "CODE" [ref=e1501]: - - code [ref=e1502]: CODE - - cell "代码" [ref=e1503] - - row "PRICE 现价" [ref=e1504]: - - cell "PRICE" [ref=e1505]: - - code [ref=e1506]: PRICE - - cell "现价" [ref=e1507] - - row "CHANGE_PCT 涨幅%" [ref=e1508]: - - cell "CHANGE_PCT" [ref=e1509]: - - code [ref=e1510]: CHANGE_PCT - - cell "涨幅%" [ref=e1511] - - row "VOLUME 成交量" [ref=e1512]: - - cell "VOLUME" [ref=e1513]: - - code [ref=e1514]: VOLUME - - cell "成交量" [ref=e1515] - - row "TOTAL_AMOUNT 成交额" [ref=e1516]: - - cell "TOTAL_AMOUNT" [ref=e1517]: - - code [ref=e1518]: TOTAL_AMOUNT - - cell "成交额" [ref=e1519] - - row "TURNOVER_RATE 换手%" [ref=e1520]: - - cell "TURNOVER_RATE" [ref=e1521]: - - code [ref=e1522]: TURNOVER_RATE - - cell "换手%" [ref=e1523] - - row "MAIN_NET_AMOUNT 主力净额" [ref=e1524]: - - cell "MAIN_NET_AMOUNT" [ref=e1525]: - - code [ref=e1526]: MAIN_NET_AMOUNT - - cell "主力净额" [ref=e1527] - - generic [ref=e1528]: - - heading "ExMarket(扩展市场)" [level=3] [ref=e1529] - - 'link "Permalink: ExMarket(扩展市场)" [ref=e1530] [cursor=pointer]': - - /url: "#exmarket扩展市场" - - img [ref=e1531] - - table [ref=e1534]: - - rowgroup [ref=e1535]: - - row "值 名称 说明" [ref=e1536]: - - columnheader "值" [ref=e1537] - - columnheader "名称" [ref=e1538] - - columnheader "说明" [ref=e1539] - - rowgroup [ref=e1540]: - - row "28 ZZ_FUTURES 郑州商品" [ref=e1541]: - - cell "28" [ref=e1542] - - cell "ZZ_FUTURES" [ref=e1543]: - - code [ref=e1544]: ZZ_FUTURES - - cell "郑州商品" [ref=e1545] - - row "29 DL_FUTURES 大连商品" [ref=e1546]: - - cell "29" [ref=e1547] - - cell "DL_FUTURES" [ref=e1548]: - - code [ref=e1549]: DL_FUTURES - - cell "大连商品" [ref=e1550] - - row "30 SH_FUTURES 上海期货" [ref=e1551]: - - cell "30" [ref=e1552] - - cell "SH_FUTURES" [ref=e1553]: - - code [ref=e1554]: SH_FUTURES - - cell "上海期货" [ref=e1555] - - row "31 HK_MAIN_BOARD 香港主板" [ref=e1556]: - - cell "31" [ref=e1557] - - cell "HK_MAIN_BOARD" [ref=e1558]: - - code [ref=e1559]: HK_MAIN_BOARD - - cell "香港主板" [ref=e1560] - - row "47 CFFEX_FUTURES 中金所期货" [ref=e1561]: - - cell "47" [ref=e1562] - - cell "CFFEX_FUTURES" [ref=e1563]: - - code [ref=e1564]: CFFEX_FUTURES - - cell "中金所期货" [ref=e1565] - - row "48 HK_GEM 香港创业板" [ref=e1566]: - - cell "48" [ref=e1567] - - cell "HK_GEM" [ref=e1568]: - - code [ref=e1569]: HK_GEM - - cell "香港创业板" [ref=e1570] - - row "74 US_STOCK 美国股票" [ref=e1571]: - - cell "74" [ref=e1572] - - cell "US_STOCK" [ref=e1573]: - - code [ref=e1574]: US_STOCK - - cell "美国股票" [ref=e1575] - - generic [ref=e1576]: - - heading "Market(市场)" [level=3] [ref=e1577] - - 'link "Permalink: Market(市场)" [ref=e1578] [cursor=pointer]': - - /url: "#market市场" - - img [ref=e1579] - - table [ref=e1582]: - - rowgroup [ref=e1583]: - - row "值 名称 说明" [ref=e1584]: - - columnheader "值" [ref=e1585] - - columnheader "名称" [ref=e1586] - - columnheader "说明" [ref=e1587] - - rowgroup [ref=e1588]: - - row "0 SZ 深圳" [ref=e1589]: - - cell "0" [ref=e1590] - - cell "SZ" [ref=e1591]: - - code [ref=e1592]: SZ - - cell "深圳" [ref=e1593] - - row "1 SH 上海" [ref=e1594]: - - cell "1" [ref=e1595] - - cell "SH" [ref=e1596]: - - code [ref=e1597]: SH - - cell "上海" [ref=e1598] - - row "2 BJ 北京" [ref=e1599]: - - cell "2" [ref=e1600] - - cell "BJ" [ref=e1601]: - - code [ref=e1602]: BJ - - cell "北京" [ref=e1603] - - generic [ref=e1604]: - - heading "完整 API 列表" [level=2] [ref=e1605] - - 'link "Permalink: 完整 API 列表" [ref=e1606] [cursor=pointer]': - - /url: "#完整-api-列表" - - img [ref=e1607] - - generic [ref=e1609]: - - heading "MacClient / AsyncMacClient" [level=3] [ref=e1610] - - 'link "Permalink: MacClient / AsyncMacClient" [ref=e1611] [cursor=pointer]': - - /url: "#macclient--asyncmacclient" - - img [ref=e1612] - - table [ref=e1615]: - - rowgroup [ref=e1616]: - - row "方法 说明" [ref=e1617]: - - columnheader "方法" [ref=e1618] - - columnheader "说明" [ref=e1619] - - rowgroup [ref=e1620]: - - row "get_stock_quotes(stocks, fields) 批量实时报价" [ref=e1621]: - - cell "get_stock_quotes(stocks, fields)" [ref=e1622]: - - code [ref=e1623]: get_stock_quotes(stocks, fields) - - cell "批量实时报价" [ref=e1624] - - row "get_stock_quotes_list(category, ...) 市场分类排序报价" [ref=e1625]: - - cell "get_stock_quotes_list(category, ...)" [ref=e1626]: - - code [ref=e1627]: get_stock_quotes_list(category, ...) - - cell "市场分类排序报价" [ref=e1628] - - row "get_stock_kline(market, code, period, ...) K 线(支持复权)" [ref=e1629]: - - cell "get_stock_kline(market, code, period, ...)" [ref=e1630]: - - code [ref=e1631]: get_stock_kline(market, code, period, ...) - - cell "K 线(支持复权)" [ref=e1632] - - row "get_stock_kline_with_indicators(market, code, indicators, ...) K 线 + 技术指标" [ref=e1633]: - - cell "get_stock_kline_with_indicators(market, code, indicators, ...)" [ref=e1634]: - - code [ref=e1635]: get_stock_kline_with_indicators(market, code, indicators, ...) - - cell "K 线 + 技术指标" [ref=e1636] - - row "get_tick_chart(market, code, date) 单日分时图" [ref=e1637]: - - cell "get_tick_chart(market, code, date)" [ref=e1638]: - - code [ref=e1639]: get_tick_chart(market, code, date) - - cell "单日分时图" [ref=e1640] - - row "get_tick_charts(market, code, days) 多日分时图" [ref=e1641]: - - cell "get_tick_charts(market, code, days)" [ref=e1642]: - - code [ref=e1643]: get_tick_charts(market, code, days) - - cell "多日分时图" [ref=e1644] - - row "get_chart_sampling(market, code) 分时缩略采样" [ref=e1645]: - - cell "get_chart_sampling(market, code)" [ref=e1646]: - - code [ref=e1647]: get_chart_sampling(market, code) - - cell "分时缩略采样" [ref=e1648] - - row "get_transactions(market, code, ...) 逐笔成交" [ref=e1649]: - - cell "get_transactions(market, code, ...)" [ref=e1650]: - - code [ref=e1651]: get_transactions(market, code, ...) - - cell "逐笔成交" [ref=e1652] - - row "get_symbol_info(market, code) 个股特征快照" [ref=e1653]: - - cell "get_symbol_info(market, code)" [ref=e1654]: - - code [ref=e1655]: get_symbol_info(market, code) - - cell "个股特征快照" [ref=e1656] - - row "get_board_list(board_type, ...) 板块列表" [ref=e1657]: - - cell "get_board_list(board_type, ...)" [ref=e1658]: - - code [ref=e1659]: get_board_list(board_type, ...) - - cell "板块列表" [ref=e1660] - - row "get_board_members(board_symbol, ...) 板块成分股报价" [ref=e1661]: - - cell "get_board_members(board_symbol, ...)" [ref=e1662]: - - code [ref=e1663]: get_board_members(board_symbol, ...) - - cell "板块成分股报价" [ref=e1664] - - row "get_board_summary(board_symbol, ...) 板块汇总(成交额、主力净流入、涨跌家数)" [ref=e1665]: - - cell "get_board_summary(board_symbol, ...)" [ref=e1666]: - - code [ref=e1667]: get_board_summary(board_symbol, ...) - - cell "板块汇总(成交额、主力净流入、涨跌家数)" [ref=e1668] - - row "get_board_ranking(board_type, top_n, sort_by, ...) 板块涨跌幅排行榜(行业/概念排行)" [ref=e1669]: - - cell "get_board_ranking(board_type, top_n, sort_by, ...)" [ref=e1670]: - - code [ref=e1671]: get_board_ranking(board_type, top_n, sort_by, ...) - - cell "板块涨跌幅排行榜(行业/概念排行)" [ref=e1672] - - row "get_belong_board(market, code) 个股所属板块" [ref=e1673]: - - cell "get_belong_board(market, code)" [ref=e1674]: - - code [ref=e1675]: get_belong_board(market, code) - - cell "个股所属板块" [ref=e1676] - - row "get_capital_flow(market, code) 资金流向" [ref=e1677]: - - cell "get_capital_flow(market, code)" [ref=e1678]: - - code [ref=e1679]: get_capital_flow(market, code) - - cell "资金流向" [ref=e1680] - - row "get_auction(market, code) 集合竞价" [ref=e1681]: - - cell "get_auction(market, code)" [ref=e1682]: - - code [ref=e1683]: get_auction(market, code) - - cell "集合竞价" [ref=e1684] - - row "get_unusual(market, ...) 市场异动" [ref=e1685]: - - cell "get_unusual(market, ...)" [ref=e1686]: - - code [ref=e1687]: get_unusual(market, ...) - - cell "市场异动" [ref=e1688] - - row "get_server_info() 服务器交易时段" [ref=e1689]: - - cell "get_server_info()" [ref=e1690]: - - code [ref=e1691]: get_server_info() - - cell "服务器交易时段" [ref=e1692] - - row "get_kline_offset(offset, count) K 线偏移信息" [ref=e1693]: - - cell "get_kline_offset(offset, count)" [ref=e1694]: - - code [ref=e1695]: get_kline_offset(offset, count) - - cell "K 线偏移信息" [ref=e1696] - - row "get_goods_list(market, ...) 扩展市场商品列表" [ref=e1697]: - - cell "get_goods_list(market, ...)" [ref=e1698]: - - code [ref=e1699]: get_goods_list(market, ...) - - cell "扩展市场商品列表" [ref=e1700] - - generic [ref=e1701]: - - heading "MacExClient / AsyncMacExClient" [level=3] [ref=e1702] - - 'link "Permalink: MacExClient / AsyncMacExClient" [ref=e1703] [cursor=pointer]': - - /url: "#macexclient--asyncmacexclient" - - img [ref=e1704] - - table [ref=e1707]: - - rowgroup [ref=e1708]: - - row "方法 说明" [ref=e1709]: - - columnheader "方法" [ref=e1710] - - columnheader "说明" [ref=e1711] - - rowgroup [ref=e1712]: - - row "goods_count(market) 商品总数" [ref=e1713]: - - cell "goods_count(market)" [ref=e1714]: - - code [ref=e1715]: goods_count(market) - - cell "商品总数" [ref=e1716] - - row "goods_list(market, start, count) 商品列表" [ref=e1717]: - - cell "goods_list(market, start, count)" [ref=e1718]: - - code [ref=e1719]: goods_list(market, start, count) - - cell "商品列表" [ref=e1720] - - row "goods_quotes(stocks, fields) 批量报价" [ref=e1721]: - - cell "goods_quotes(stocks, fields)" [ref=e1722]: - - code [ref=e1723]: goods_quotes(stocks, fields) - - cell "批量报价" [ref=e1724] - - row "goods_quotes_list(market, ...) 市场分类报价列表" [ref=e1725]: - - cell "goods_quotes_list(market, ...)" [ref=e1726]: - - code [ref=e1727]: goods_quotes_list(market, ...) - - cell "市场分类报价列表" [ref=e1728] - - row "goods_kline(market, code, period, ...) K 线(支持复权)" [ref=e1729]: - - cell "goods_kline(market, code, period, ...)" [ref=e1730]: - - code [ref=e1731]: goods_kline(market, code, period, ...) - - cell "K 线(支持复权)" [ref=e1732] - - row "goods_tick_chart(market, code, ...) 分时图" [ref=e1733]: - - cell "goods_tick_chart(market, code, ...)" [ref=e1734]: - - code [ref=e1735]: goods_tick_chart(market, code, ...) - - cell "分时图" [ref=e1736] - - row "goods_chart_sampling(market, code) 分时缩略采样" [ref=e1737]: - - cell "goods_chart_sampling(market, code)" [ref=e1738]: - - code [ref=e1739]: goods_chart_sampling(market, code) - - cell "分时缩略采样" [ref=e1740] - - row "goods_transaction(market, code, ...) 逐笔成交" [ref=e1741]: - - cell "goods_transaction(market, code, ...)" [ref=e1742]: - - code [ref=e1743]: goods_transaction(market, code, ...) - - cell "逐笔成交" [ref=e1744] - - generic [ref=e1745]: - - heading "TdxClient / AsyncTdxClient" [level=3] [ref=e1746] - - 'link "Permalink: TdxClient / AsyncTdxClient" [ref=e1747] [cursor=pointer]': - - /url: "#tdxclient--asynctdxclient" - - img [ref=e1748] - - table [ref=e1751]: - - rowgroup [ref=e1752]: - - row "方法 说明" [ref=e1753]: - - columnheader "方法" [ref=e1754] - - columnheader "说明" [ref=e1755] - - rowgroup [ref=e1756]: - - row "get_security_count(market) 市场证券总数" [ref=e1757]: - - cell "get_security_count(market)" [ref=e1758]: - - code [ref=e1759]: get_security_count(market) - - cell "市场证券总数" [ref=e1760] - - row "get_security_list(market, start) 证券列表(分页)" [ref=e1761]: - - cell "get_security_list(market, start)" [ref=e1762]: - - code [ref=e1763]: get_security_list(market, start) - - cell "证券列表(分页)" [ref=e1764] - - row "get_security_list_all() 沪深 A 股完整列表(含行业)" [ref=e1765]: - - cell "get_security_list_all()" [ref=e1766]: - - code [ref=e1767]: get_security_list_all() - - cell "沪深 A 股完整列表(含行业)" [ref=e1768] - - row "get_security_quotes(stocks) 批量五档行情" [ref=e1769]: - - cell "get_security_quotes(stocks)" [ref=e1770]: - - code [ref=e1771]: get_security_quotes(stocks) - - cell "批量五档行情" [ref=e1772] - - row "get_security_bars(market, code, ...) 个股 K 线" [ref=e1773]: - - cell "get_security_bars(market, code, ...)" [ref=e1774]: - - code [ref=e1775]: get_security_bars(market, code, ...) - - cell "个股 K 线" [ref=e1776] - - row "get_index_bars(market, code, ...) 指数 K 线" [ref=e1777]: - - cell "get_index_bars(market, code, ...)" [ref=e1778]: - - code [ref=e1779]: get_index_bars(market, code, ...) - - cell "指数 K 线" [ref=e1780] - - row "get_minute_time_data(market, code) 今日分时" [ref=e1781]: - - cell "get_minute_time_data(market, code)" [ref=e1782]: - - code [ref=e1783]: get_minute_time_data(market, code) - - cell "今日分时" [ref=e1784] - - row "get_history_minute_time_data(market, code, date) 历史分时" [ref=e1785]: - - cell "get_history_minute_time_data(market, code, date)" [ref=e1786]: - - code [ref=e1787]: get_history_minute_time_data(market, code, date) - - cell "历史分时" [ref=e1788] - - row "get_transaction_data(market, code, ...) 当日逐笔成交" [ref=e1789]: - - cell "get_transaction_data(market, code, ...)" [ref=e1790]: - - code [ref=e1791]: get_transaction_data(market, code, ...) - - cell "当日逐笔成交" [ref=e1792] - - row "get_history_transaction_data(...) 历史逐笔成交" [ref=e1793]: - - cell "get_history_transaction_data(...)" [ref=e1794]: - - code [ref=e1795]: get_history_transaction_data(...) - - cell "历史逐笔成交" [ref=e1796] - - row "get_fund_flow(market, code) 当日资金流向" [ref=e1797]: - - cell "get_fund_flow(market, code)" [ref=e1798]: - - code [ref=e1799]: get_fund_flow(market, code) - - cell "当日资金流向" [ref=e1800] - - row "get_history_fund_flow(market, code, ...) 历史资金流向" [ref=e1801]: - - cell "get_history_fund_flow(market, code, ...)" [ref=e1802]: - - code [ref=e1803]: get_history_fund_flow(market, code, ...) - - cell "历史资金流向" [ref=e1804] - - row "get_xdxr_info(market, code) 除权除息历史" [ref=e1805]: - - cell "get_xdxr_info(market, code)" [ref=e1806]: - - code [ref=e1807]: get_xdxr_info(market, code) - - cell "除权除息历史" [ref=e1808] - - row "get_finance_info(market, code) 最新财务数据" [ref=e1809]: - - cell "get_finance_info(market, code)" [ref=e1810]: - - code [ref=e1811]: get_finance_info(market, code) - - cell "最新财务数据" [ref=e1812] - - row "get_company_info_category(market, code) 公司信息目录" [ref=e1813]: - - cell "get_company_info_category(market, code)" [ref=e1814]: - - code [ref=e1815]: get_company_info_category(market, code) - - cell "公司信息目录" [ref=e1816] - - row "get_company_info_content(...) 公司信息文本" [ref=e1817]: - - cell "get_company_info_content(...)" [ref=e1818]: - - code [ref=e1819]: get_company_info_content(...) - - cell "公司信息文本" [ref=e1820] - - row "get_block_info(filename) 板块信息" [ref=e1821]: - - cell "get_block_info(filename)" [ref=e1822]: - - code [ref=e1823]: get_block_info(filename) - - cell "板块信息" [ref=e1824] - - row "get_report_file(filename) 下载服务器文件" [ref=e1825]: - - cell "get_report_file(filename)" [ref=e1826]: - - code [ref=e1827]: get_report_file(filename) - - cell "下载服务器文件" [ref=e1828] - - row "get_market_stat() 全市场涨跌统计" [ref=e1829]: - - cell "get_market_stat()" [ref=e1830]: - - code [ref=e1831]: get_market_stat() - - cell "全市场涨跌统计" [ref=e1832] - - row "get_price_limits(market, code, name, pre_close) 涨跌停价" [ref=e1833]: - - cell "get_price_limits(market, code, name, pre_close)" [ref=e1834]: - - code [ref=e1835]: get_price_limits(market, code, name, pre_close) - - cell "涨跌停价" [ref=e1836] - - generic [ref=e1837]: - - heading "架构" [level=2] [ref=e1838] - - 'link "Permalink: 架构" [ref=e1839] [cursor=pointer]': - - /url: "#架构" - - img [ref=e1840] - - generic [ref=e1842]: - - code [ref=e1844]: "src/easy_tdx/ ├── client.py # TdxClient / AsyncTdxClient(标准协议) ├── unified.py # UnifiedTdxClient(统一入口) ├── config.py # 服务器地址、端口、超时配置 ├── indicator.py # 技术指标计算(32 个,基于 MyTT) ├── MyTT.py # 麦语言技术指标算法库 ├── mac/ │ ├── client.py # MacClient / AsyncMacClient(MAC 协议) │ ├── enums.py # Period, Adjust, Category, ExMarket, SortType, ... │ ├── models.py # MacBar, MacQuoteField, MacTick, BoardInfo, ... │ └── commands/ # MAC 命令(build_request + parse_response,无 IO) ├── ex/ │ ├── client.py # ExTdxClient / AsyncExTdxClient(标准协议扩展市场) │ ├── mac_client.py # MacExClient / AsyncMacExClient(MAC 协议扩展市场) │ └── transport/ # ExTdxConnection(端口 7727) ├── transport/ │ ├── sync.py # TdxConnection + ping_host / ping_all │ └── async_.py # AsyncTdxConnection(asyncio) ├── commands/ # 标准协议命令(无 IO) ├── codec/ # price / volume / datetime / frame / bitmap 编解码 ├── models/ # 纯 dataclass,无业务逻辑 ├── offline/ # 离线数据读取模块 └── cli/ # easy-tdx CLI(click)" - - button "Copy code to clipboard" [ref=e1846] [cursor=pointer]: - - img [ref=e1847] - - paragraph [ref=e1850]: commands 层不依赖 transport,可独立单测。 - - generic [ref=e1851]: - - heading "开发" [level=2] [ref=e1852] - - 'link "Permalink: 开发" [ref=e1853] [cursor=pointer]': - - /url: "#开发" - - img [ref=e1854] - - generic [ref=e1856]: - - generic [ref=e1857]: - - text: python -m pytest tests/unit/ -v - - generic [ref=e1858]: "# 单元测试(无需网络)" - - text: XMTDX_LIVE=1 python -m pytest tests/integration/ -v - - generic [ref=e1859]: "# 集成测试" - - text: mypy src/ - - generic [ref=e1860]: "# 类型检查" - - text: ruff check src/ tests/ - - generic [ref=e1861]: "# lint" - - text: ruff format --check src/ tests/ - - generic [ref=e1862]: "# format check" - - button "Copy code to clipboard" [ref=e1864] [cursor=pointer]: - - img [ref=e1865] - - generic [ref=e1868]: - - heading "致谢" [level=2] [ref=e1869] - - 'link "Permalink: 致谢" [ref=e1870] [cursor=pointer]': - - /url: "#致谢" - - img [ref=e1871] - - list [ref=e1873]: - - listitem [ref=e1874]: - - link "pytdx" [ref=e1875] [cursor=pointer]: - - /url: https://github.com/rainx/pytdx - - text: "-- 离线数据读取模块借鉴自 pytdx 项目,感谢 rainx 及所有贡献者" - - listitem [ref=e1876]: - - link "xmtdx" [ref=e1877] [cursor=pointer]: - - /url: https://github.com/minionszyw/xmtdx - - text: "-- 本项目初始原型" - - listitem [ref=e1878]: - - link "mootdx" [ref=e1879] [cursor=pointer]: - - /url: https://github.com/mootdx/mootdx - - text: "-- 工程化封装参考" - - listitem [ref=e1880]: - - link "MyTT" [ref=e1881] [cursor=pointer]: - - /url: https://github.com/mpquant/MyTT - - text: "-- 麦语言技术指标算法库,技术指标计算基于此实现" - - paragraph [ref=e1882]: - - text: 详见 - - link "NOTICE" [ref=e1883] [cursor=pointer]: - - /url: /handsomejustin/easy_tdx/blob/main/NOTICE - - text: 和 - - link "LICENSE" [ref=e1884] [cursor=pointer]: - - /url: /handsomejustin/easy_tdx/blob/main/LICENSE - - text: 。 - - generic [ref=e1885]: - - heading "Changelog" [level=2] [ref=e1886] - - 'link "Permalink: Changelog" [ref=e1887] [cursor=pointer]': - - /url: "#changelog" - - img [ref=e1888] - - generic [ref=e1890]: - - heading "1.5.0 (2026-06-02)" [level=3] [ref=e1891] - - 'link "Permalink: 1.5.0 (2026-06-02)" [ref=e1892] [cursor=pointer]': - - /url: "#150-2026-06-02" - - img [ref=e1893] - - paragraph [ref=e1895]: - - strong [ref=e1896]: 离线数据 CLI 命令 - - text: — 新增 - - code [ref=e1897]: offline - - text: 命令组,无需网络即可通过 CLI 读取本地通达信数据文件。 - - list [ref=e1898]: - - listitem [ref=e1899]: - - text: 新增 - - code [ref=e1900]: offline home - - text: :检测通达信安装目录 - - listitem [ref=e1901]: - - text: 新增 - - code [ref=e1902]: offline daily - - text: :A 股日线数据(.day 文件) - - listitem [ref=e1903]: - - text: 新增 - - code [ref=e1904]: offline min - - text: :分钟线数据(.5/.lc1/.lc5 文件, - - code [ref=e1905]: "--type" - - text: 指定格式) - - listitem [ref=e1906]: - - text: 新增 - - code [ref=e1907]: offline ex-files - - text: :列出扩展市场可用日线文件 - - listitem [ref=e1908]: - - text: 新增 - - code [ref=e1909]: offline ex-daily - - text: :扩展市场日线数据(期货/港股/外盘) - - listitem [ref=e1910]: - - text: 新增 - - code [ref=e1911]: offline gbbq - - text: :股本变迁数据 - - listitem [ref=e1912]: - - text: 新增 - - code [ref=e1913]: offline financial - - text: :历史财务数据 - - listitem [ref=e1914]: - - text: 新增 - - code [ref=e1915]: offline blocks - - text: :自定义板块数据 - - generic [ref=e1916]: - - heading "1.4.3 (2026-05-28)" [level=3] [ref=e1917] - - 'link "Permalink: 1.4.3 (2026-05-28)" [ref=e1918] [cursor=pointer]': - - /url: "#143-2026-05-28" - - img [ref=e1919] - - paragraph [ref=e1921]: - - strong [ref=e1922]: 30日乖离率信号指标 - - text: — 新增 BIAS_SIGNAL 指标,在标准乖离率基础上叠加短/长信号线,通过三者位置关系判断趋势方向和转折点。源自通达信经典指标。 - - list [ref=e1923]: - - listitem [ref=e1924]: - - text: 新增 - - code [ref=e1925]: BIAS_SIGNAL - - text: 指标:输出 BS_X/BS_SMA/BS_LMA 三条线 - - listitem [ref=e1926]: - - text: "CLI:" - - code [ref=e1927]: easy-tdx indicator BIAS_SIGNAL -m SH -c 600519 --table - - listitem [ref=e1928]: - - text: "Python API:" - - code [ref=e1929]: indicators=["BIAS_SIGNAL"] - - listitem [ref=e1930]: - - text: 详见 - - link "30日乖离率信号指标详解" [ref=e1931] [cursor=pointer]: - - /url: /handsomejustin/easy_tdx/blob/main/docs/indicator-bias-signal.md - - generic [ref=e1932]: - - heading "1.4.2 (2026-05-28)" [level=3] [ref=e1933] - - 'link "Permalink: 1.4.2 (2026-05-28)" [ref=e1934] [cursor=pointer]': - - /url: "#142-2026-05-28" - - img [ref=e1935] - - paragraph [ref=e1937]: 修复 1.4.1 发布遗漏:MyTT.py 中 ZHUOYAO 函数定义未包含在 1.4.1 的 PyPI 包中。 - - generic [ref=e1938]: - - heading "1.4.1 (2026-05-28)" [level=3] [ref=e1939] - - 'link "Permalink: 1.4.1 (2026-05-28)" [ref=e1940] [cursor=pointer]': - - /url: "#141-2026-05-28" - - img [ref=e1941] - - paragraph [ref=e1943]: - - strong [ref=e1944]: 捉妖大师指标 - - text: — 新增 ZHUOYAO 多周期涨幅共振指标,通过 20/60/120 日涨幅及指数平滑判断短中长线趋势是否同向,用于筛选趋势刚启动的强势股。 - - list [ref=e1945]: - - listitem [ref=e1946]: - - text: 新增 - - code [ref=e1947]: ZHUOYAO - - text: 指标:输出 ZY_LONG/ZY_MID/ZY_SHORT/ZY_TREND 四条线 - - listitem [ref=e1948]: - - text: "CLI:" - - code [ref=e1949]: easy-tdx indicator ZHUOYAO -m SH -c 600519 --table - - listitem [ref=e1950]: - - text: "Python API:" - - code [ref=e1951]: indicators=["ZHUOYAO"] - - listitem [ref=e1952]: - - text: 详见 - - link "捉妖大师指标详解" [ref=e1953] [cursor=pointer]: - - /url: /handsomejustin/easy_tdx/blob/main/docs/indicator-zhuoyao.md - - generic [ref=e1954]: - - heading "1.4.0 (2026-05-28)" [level=3] [ref=e1955] - - 'link "Permalink: 1.4.0 (2026-05-28)" [ref=e1956] [cursor=pointer]': - - /url: "#140-2026-05-28" - - img [ref=e1957] - - paragraph [ref=e1959]: - - strong [ref=e1960]: 技术指标计算 - - text: — 集成 - - link "MyTT" [ref=e1961] [cursor=pointer]: - - /url: https://github.com/mpquant/MyTT - - text: 麦语言指标库,支持 30 个常用技术指标,一步获取 K 线 + 指标值。 - - list [ref=e1962]: - - listitem [ref=e1963]: - - text: 新增 - - code [ref=e1964]: indicator.py - - text: 核心模块:注册表驱动的指标调度, - - code [ref=e1965]: compute_indicators() - - text: 纯计算无 IO - - listitem [ref=e1966]: - - text: 新增 - - code [ref=e1967]: MacClient.get_stock_kline_with_indicators() - - text: / - - code [ref=e1968]: AsyncMacClient - - text: 同名方法 - - listitem [ref=e1969]: - - text: 新增 - - code [ref=e1970]: UnifiedTdxClient.get_stock_kline_with_indicators() - - text: / - - code [ref=e1971]: AsyncUnifiedTdxClient - - text: 同名方法 - - listitem [ref=e1972]: - - text: 新增 CLI 命令 - - code [ref=e1973]: easy-tdx indicator - - text: 和 - - code [ref=e1974]: easy-tdx indicator-list - - listitem [ref=e1975]: 自动获取 200+ 条历史数据预热 EMA,用户只需指定返回条数 - - listitem [ref=e1976]: 支持的指标:MACD, KDJ, RSI, BOLL, DMI, ATR, WR, CCI, BIAS, OBV, VR, EMV, MFI, BRAR, ASI, TRIX, DPO, MTM, ROC, EXPMA, BBI, PSY, DFMA, CR, KTN, XSII, MASS, TAQ - - generic [ref=e1977]: - - heading "1.3.1 (2025-05-15)" [level=3] [ref=e1978] - - 'link "Permalink: 1.3.1 (2025-05-15)" [ref=e1979] [cursor=pointer]': - - /url: "#131-2025-05-15" - - img [ref=e1980] - - list [ref=e1982]: - - listitem [ref=e1983]: - - text: 新增 - - code [ref=e1984]: board-summary - - text: 和 - - code [ref=e1985]: board-ranking - - text: CLI 命令 - - listitem [ref=e1986]: - - text: 新增 - - code [ref=e1987]: get_board_summary() - - text: 板块汇总(成交额、主力净流入、涨跌家数) - - listitem [ref=e1988]: - - text: 新增 - - code [ref=e1989]: get_board_ranking() - - text: 板块涨跌幅排行榜 - - generic [ref=e1990]: - - heading "1.3.0 (2025-05-12)" [level=3] [ref=e1991] - - 'link "Permalink: 1.3.0 (2025-05-12)" [ref=e1992] [cursor=pointer]': - - /url: "#130-2025-05-12" - - img [ref=e1993] - - list [ref=e1995]: - - listitem [ref=e1996]: - - text: 新增 MAC 协议客户端 - - code [ref=e1997]: MacClient - - text: / - - code [ref=e1998]: AsyncMacClient - - text: (端口 7709) - - listitem [ref=e1999]: - - text: 新增扩展市场客户端 - - code [ref=e2000]: MacExClient - - text: / - - code [ref=e2001]: AsyncMacExClient - - text: (端口 7727) - - listitem [ref=e2002]: - - text: 新增统一客户端 - - code [ref=e2003]: UnifiedTdxClient - - text: 自动路由 A 股 / 扩展市场 - - listitem [ref=e2004]: 新增板块、资金流向、集合竞价、异动、个股特征等数据接口 - - listitem [ref=e2005]: - - text: 新增 - - code [ref=e2006]: easy-tdx - - text: CLI 工具,默认 JSON 输出 - - generic [ref=e2007]: - - heading "1.2.1 (2025-04-20)" [level=3] [ref=e2008] - - 'link "Permalink: 1.2.1 (2025-04-20)" [ref=e2009] [cursor=pointer]': - - /url: "#121-2025-04-20" - - img [ref=e2010] - - list [ref=e2012]: - - listitem [ref=e2013]: 离线数据读取模块(日线、分钟线、板块、财务) - - listitem [ref=e2014]: 除权除息、股本变迁读取 - - generic [ref=e2015]: - - heading "1.0.0 (2025-03-01)" [level=3] [ref=e2016] - - 'link "Permalink: 1.0.0 (2025-03-01)" [ref=e2017] [cursor=pointer]': - - /url: "#100-2025-03-01" - - img [ref=e2018] - - list [ref=e2020]: - - listitem [ref=e2021]: 首个正式版本 - - listitem [ref=e2022]: TdxClient / AsyncTdxClient 标准协议客户端 - - listitem [ref=e2023]: K 线、实时报价、分时、逐笔成交、财务数据 - - generic [ref=e2027]: - - generic [ref=e2030]: - - heading "About" [level=2] [ref=e2031] - - paragraph [ref=e2032]: 通达信python SDK,支持在线获取数据及离线本地数据读取。全面优化接口。 - - heading "Topics" [level=3] [ref=e2033] - - generic [ref=e2035]: - - link "technical-analysis" [ref=e2036] [cursor=pointer]: - - /url: /topics/technical-analysis - - link "financial-data" [ref=e2037] [cursor=pointer]: - - /url: /topics/financial-data - - link "tdx" [ref=e2038] [cursor=pointer]: - - /url: /topics/tdx - - link "pytdx" [ref=e2039] [cursor=pointer]: - - /url: /topics/pytdx - - link "mootdx" [ref=e2040] [cursor=pointer]: - - /url: /topics/mootdx - - link "chinese-stock-market" [ref=e2041] [cursor=pointer]: - - /url: /topics/chinese-stock-market - - link "a-share-tdx" [ref=e2042] [cursor=pointer]: - - /url: /topics/a-share-tdx - - heading "Resources" [level=3] [ref=e2043] - - link "Readme" [ref=e2045] [cursor=pointer]: - - /url: "#readme-ov-file" - - img [ref=e2046] - - text: Readme - - heading "License" [level=3] [ref=e2048] - - link "View license" [ref=e2050] [cursor=pointer]: - - /url: "#License-1-ov-file" - - img [ref=e2051] - - text: View license - - link "Activity" [ref=e2054] [cursor=pointer]: - - /url: /handsomejustin/easy_tdx/activity - - img [ref=e2055] - - text: Activity - - heading "Stars" [level=3] [ref=e2057] - - link "61 stars" [ref=e2059] [cursor=pointer]: - - /url: /handsomejustin/easy_tdx/stargazers - - img [ref=e2060] - - strong [ref=e2062]: "61" - - text: stars - - heading "Watchers" [level=3] [ref=e2063] - - link "1 watching" [ref=e2065] [cursor=pointer]: - - /url: /handsomejustin/easy_tdx/watchers - - img [ref=e2066] - - strong [ref=e2068]: "1" - - text: watching - - heading "Forks" [level=3] [ref=e2069] - - link "23 forks" [ref=e2071] [cursor=pointer]: - - /url: /handsomejustin/easy_tdx/forks - - img [ref=e2072] - - strong [ref=e2074]: "23" - - text: forks - - link "Report repository" [ref=e2076] [cursor=pointer]: - - /url: /contact/report-content?content_url=https%3A%2F%2Fgithub.com%2Fhandsomejustin%2Feasy_tdx&report=handsomejustin+%28user%29 - - generic [ref=e2078]: - - heading "Releases 2" [level=2] [ref=e2079]: - - link "Releases 2" [ref=e2080] [cursor=pointer]: - - /url: /handsomejustin/easy_tdx/releases - - text: Releases - - generic "2" [ref=e2081] - - link "v1.5.0 离线数据 CLI 版 Latest Jun 2, 20263 days ago" [ref=e2082] [cursor=pointer]: - - /url: /handsomejustin/easy_tdx/releases/tag/v1.5.0 - - img [ref=e2083] - - generic [ref=e2085]: - - generic [ref=e2086]: - - generic [ref=e2087]: v1.5.0 离线数据 CLI 版 - - 'generic "Label: Latest" [ref=e2088]': Latest - - generic [ref=e2089]: Jun 2, 20263 days ago - - link "+ 1 release" [ref=e2091] [cursor=pointer]: - - /url: /handsomejustin/easy_tdx/releases - - generic [ref=e2093]: - - heading "Packages" [level=2] [ref=e2094]: - - link "Packages" [ref=e2095] [cursor=pointer]: - - /url: /users/handsomejustin/packages?repo_name=easy_tdx - - generic [ref=e2096]: No packages published - - generic [ref=e2098]: - - heading "Contributors 4" [level=2] [ref=e2099]: - - link "Contributors 4" [ref=e2100] [cursor=pointer]: - - /url: /handsomejustin/easy_tdx/graphs/contributors - - text: Contributors - - generic "4" [ref=e2101] - - list [ref=e2102]: - - listitem [ref=e2103]: - - link "@claude" [ref=e2104] [cursor=pointer]: - - /url: https://github.com/claude - - img "@claude" [ref=e2105] - - link "claude Claude" [ref=e2107] [cursor=pointer]: - - /url: https://github.com/claude - - strong [ref=e2108]: claude - - text: Claude - - listitem [ref=e2109]: - - link "@actions-user" [ref=e2110] [cursor=pointer]: - - /url: https://github.com/actions-user - - img "@actions-user" [ref=e2111] - - link "actions-user" [ref=e2113] [cursor=pointer]: - - /url: https://github.com/actions-user - - strong [ref=e2114]: actions-user - - listitem [ref=e2115]: - - link "@handsomejustin" [ref=e2116] [cursor=pointer]: - - /url: https://github.com/handsomejustin - - img "@handsomejustin" [ref=e2117] - - link "handsomejustin 毛利哥" [ref=e2119] [cursor=pointer]: - - /url: https://github.com/handsomejustin - - strong [ref=e2120]: handsomejustin - - text: 毛利哥 - - listitem [ref=e2121]: - - link "@minionszyw" [ref=e2122] [cursor=pointer]: - - /url: https://github.com/minionszyw - - img "@minionszyw" [ref=e2123] - - link "minionszyw" [ref=e2125] [cursor=pointer]: - - /url: https://github.com/minionszyw - - strong [ref=e2126]: minionszyw - - generic [ref=e2128]: - - heading "Languages" [level=2] [ref=e2129] - - list [ref=e2133]: - - listitem [ref=e2134]: - - link "Python 100.0%" [ref=e2135] [cursor=pointer]: - - /url: /handsomejustin/easy_tdx/search?l=python - - img [ref=e2136] - - generic [ref=e2138]: Python - - generic [ref=e2139]: 100.0% - - contentinfo [ref=e2141]: - - heading "Footer" [level=2] [ref=e2142] - - generic [ref=e2143]: - - generic [ref=e2144]: - - link "GitHub Homepage" [ref=e2145] [cursor=pointer]: - - /url: https://github.com - - img [ref=e2146] - - generic [ref=e2148]: © 2026 GitHub, Inc. - - navigation "Footer" [ref=e2149]: - - heading "Footer navigation" [level=3] [ref=e2150] - - list "Footer navigation" [ref=e2151]: - - listitem [ref=e2152]: - - link "Terms" [ref=e2153] [cursor=pointer]: - - /url: https://docs.github.com/site-policy/github-terms/github-terms-of-service - - listitem [ref=e2154]: - - link "Privacy" [ref=e2155] [cursor=pointer]: - - /url: https://docs.github.com/site-policy/privacy-policies/github-privacy-statement - - listitem [ref=e2156]: - - link "Security" [ref=e2157] [cursor=pointer]: - - /url: https://github.com/security - - listitem [ref=e2158]: - - link "Status" [ref=e2159] [cursor=pointer]: - - /url: https://www.githubstatus.com/ - - listitem [ref=e2160]: - - link "Community" [ref=e2161] [cursor=pointer]: - - /url: https://github.community/ - - listitem [ref=e2162]: - - link "Docs" [ref=e2163] [cursor=pointer]: - - /url: https://docs.github.com/ - - listitem [ref=e2164]: - - link "Contact" [ref=e2165] [cursor=pointer]: - - /url: https://support.github.com?tags=dotcom-footer - - listitem [ref=e2166]: - - button "Manage cookies" [ref=e2168] [cursor=pointer] - - listitem [ref=e2169]: - - button "Do not share my personal information" [ref=e2171] [cursor=pointer] \ No newline at end of file