a500 绘图成功

This commit is contained in:
cheney
2026-06-23 10:57:20 +08:00
parent 31d28d8683
commit c4db32374e
11 changed files with 482 additions and 39 deletions
+45
View File
@@ -0,0 +1,45 @@
"""策略1中证 A500 收盘价图测试。"""
from datetime import date
from sidecar.models import KlineBar
from strategy.a500_close_chart import A500_START_DATE, ClosePoint, build_svg_line_chart, filter_close_points
def test_4_1_filter_a500_close_points() -> None:
"""
功能说明:验证策略1会过滤成立日之前和空收盘价数据。
参数说明:无。
返回值说明:无返回值。
注意事项:用例编号 4-1。
"""
bars = [
KlineBar("sh000510", "day", date(2024, 9, 20), 1, 1, 1, 1, 1, 1, "fake"),
KlineBar("sh000510", "day", A500_START_DATE, 1, 1, 1, None, 1, 1, "fake"),
KlineBar("sh000510", "day", date(2024, 9, 24), 1, 1, 1, 1000.5, 1, 1, "fake"),
]
points = filter_close_points(bars, A500_START_DATE)
assert points == [ClosePoint(date(2024, 9, 24), 1000.5)]
def test_4_2_build_svg_line_chart() -> None:
"""
功能说明:验证策略1可生成 SVG 折线图文本。
参数说明:无。
返回值说明:无返回值。
注意事项:用例编号 4-2。
"""
points = [
ClosePoint(date(2024, 9, 23), 1000.0),
ClosePoint(date(2024, 9, 24), 1010.0),
ClosePoint(date(2024, 9, 25), 990.0),
]
svg = build_svg_line_chart(points, "中证 A500 指数成立以来收盘价")
assert svg.startswith("<svg")
assert "中证 A500 指数成立以来收盘价" in svg
assert "2024-09-23" in svg
assert "<polyline" in svg
+19 -2
View File
@@ -1,6 +1,6 @@
"""腾讯财经适配器测试。"""
from sidecar.sources.tencent import parse_tencent_payload, snapshot_from_tencent_fields
from sidecar.sources.tencent import kline_from_tencent_payload, parse_tencent_payload, snapshot_from_tencent_fields
def test_1_1_tencent_snapshot_uses_correct_pb_index() -> None:
@@ -47,4 +47,21 @@ def test_1_2_parse_tencent_payload() -> None:
parsed = parse_tencent_payload(payload)
assert len(parsed) == 88
assert parsed[0] == "v"
assert parsed[0] == "v"
def test_1_3_parse_tencent_kline_payload() -> None:
"""
功能说明:验证腾讯财经 K 线 JSON 可转换为统一 K 线。
参数说明:无。
返回值说明:无返回值。
注意事项:用例编号 1-3,字段顺序为日期、开盘、收盘、最高、最低、成交量。
"""
payload = '{"code":0,"msg":"","data":{"sh000510":{"day":[["2024-09-23","3392.95","3368.53","3392.95","3368.53","1"]]}}}'
bars = kline_from_tencent_payload("sh000510", "day", payload)
assert len(bars) == 1
assert bars[0].symbol == "sh000510"
assert bars[0].close == 3368.53
assert bars[0].source == "tencent"