Add JoinQuant simulated trading automation

This commit is contained in:
Yuxuan Yan
2026-07-04 18:12:01 +08:00
parent 39a93259e1
commit d05931f41a
5 changed files with 311 additions and 72 deletions
+35
View File
@@ -559,6 +559,27 @@ def test_browser_config_template_and_placeholder_resolution(tmp_path):
assert resolve_template("save:{expected_joinquant_csvs.fills}", context) == "save:/tmp/jq_fills.csv"
def test_sim_trade_browser_config_template(tmp_path):
config_path = write_browser_config_template(
tmp_path / "sim_config.json",
strategy_url="https://www.joinquant.com/sim",
flow="sim-trade",
)
config = json.loads(config_path.read_text())
assert config["flow"] == "sim-trade"
selectors = " ".join(
action.get("selector", "") for action in config["actions"]
)
assert "模拟盘" in selectors
assert "模拟交易" in selectors
assert any(
action["type"] == "screenshot"
and action["path"] == "{run_artifact_dir}/sim_trade_final.png"
for action in config["actions"]
)
def test_joinquant_cli_browser_config_smoke(tmp_path):
runner = CliRunner()
config_path = tmp_path / "browser_config.json"
@@ -574,3 +595,17 @@ def test_joinquant_cli_browser_config_smoke(tmp_path):
assert result.exit_code == 0, result.output
assert config_path.exists()
assert default_browser_config()["actions"]
sim_config_path = tmp_path / "sim_browser_config.json"
result = runner.invoke(cli, [
"joinquant",
"write-browser-config",
"--out-path",
str(sim_config_path),
"--strategy-url",
"https://www.joinquant.com/sim",
"--flow",
"sim-trade",
])
assert result.exit_code == 0, result.output
assert json.loads(sim_config_path.read_text())["flow"] == "sim-trade"