Add JoinQuant simulated trading automation
This commit is contained in:
@@ -102,6 +102,31 @@ dated by construction/signal date, while the simulator executes at the next
|
||||
available open. The calendar option shifts exported target files to that next
|
||||
trading date, so JoinQuant reads the same target on the same execution session.
|
||||
|
||||
For JoinQuant 模拟盘, the browser automation has two operational phases:
|
||||
|
||||
```bash
|
||||
# Before T open: upload frozen target(s), save strategy, and start/restart 模拟盘.
|
||||
uv run python cli.py joinquant write-browser-config \
|
||||
--out-path /tmp/chinese-equity-quant-realdata/joinquant_sim_config.json \
|
||||
--strategy-url "https://www.joinquant.com/<your 模拟盘 page>" \
|
||||
--flow sim-trade
|
||||
|
||||
uv run python cli.py joinquant run-browser-sim \
|
||||
--manifest-path /tmp/chinese-equity-quant-realdata/joinquant_smoke_manifest.json \
|
||||
--config-path /tmp/chinese-equity-quant-realdata/joinquant_sim_config.json \
|
||||
--storage-state ~/.config/chinese-equity-quant/joinquant_storage_state.json \
|
||||
--headed
|
||||
|
||||
# After T close: download/export JoinQuant fills, positions, and pnl, then
|
||||
# ingest/reconcile. The same run-browser-sim command can do this if the config
|
||||
# includes download actions, otherwise use the ingest/reconcile commands.
|
||||
```
|
||||
|
||||
The default simulated-trading template includes selectors for saving the
|
||||
strategy and clicking simulated-trading controls such as `模拟盘`, `模拟交易`,
|
||||
`启动`, and `重启`. These selectors are intentionally configurable because the
|
||||
JoinQuant web UI can differ by account and page version.
|
||||
|
||||
## Target-Shares Mode
|
||||
|
||||
`target_shares` is the default and preferred correctness mode. The exported
|
||||
@@ -261,12 +286,13 @@ uv run python cli.py joinquant browser-login \
|
||||
--storage-state ~/.config/chinese-equity-quant/joinquant_storage_state.json
|
||||
```
|
||||
|
||||
Create a selector/action config:
|
||||
Create a selector/action config for a historical backtest:
|
||||
|
||||
```bash
|
||||
uv run python cli.py joinquant write-browser-config \
|
||||
--out-path /tmp/chinese-equity-quant-realdata/joinquant_browser_config.json \
|
||||
--strategy-url "https://www.joinquant.com/<your strategy page>"
|
||||
--strategy-url "https://www.joinquant.com/<your strategy page>" \
|
||||
--flow backtest
|
||||
```
|
||||
|
||||
If selectors need tuning, capture the logged-in page:
|
||||
@@ -293,6 +319,16 @@ download result CSVs, and take screenshots. When the configured downloads
|
||||
produce fills, positions, and PnL CSVs, the runner automatically calls
|
||||
`joinquant ingest` and `joinquant reconcile`.
|
||||
|
||||
For forward testing / 模拟盘, create the config with `--flow sim-trade` and run:
|
||||
|
||||
```bash
|
||||
uv run python cli.py joinquant run-browser-sim \
|
||||
--manifest-path /tmp/chinese-equity-quant-realdata/joinquant_smoke_manifest.json \
|
||||
--config-path /tmp/chinese-equity-quant-realdata/joinquant_sim_config.json \
|
||||
--storage-state ~/.config/chinese-equity-quant/joinquant_storage_state.json \
|
||||
--headed
|
||||
```
|
||||
|
||||
Do not store raw JoinQuant passwords in this repository. The browser state file
|
||||
is created with `0600` permissions and should live under `~/.config`, outside
|
||||
the repo.
|
||||
|
||||
Reference in New Issue
Block a user