mirror of
https://ghfast.top/https://github.com/aeroxw/easy_tdx_max.git
synced 2026-09-12 16:54:20 +08:00
展示层对标专业看盘终端(tick-stock-panel 模式),数据全部来自通达信协议直连: - 市场看板:五大指数实时条(迷你分时)、涨跌统计、四维情绪雷达、 全市场涨跌分布直方图(约 5500 只 22 桶、鼠标跟随浮窗)、涨停雷达、 行业/概念热冷榜(可下钻)、涨幅/跌幅/成交额/换手四联排行榜、异动雷达 - 自选行情:6 位代码即加(symbol-info 自动取名)、SSE 实时全表刷新、 行内迷你分时;SQLite 持久化(watchlist.db,幂等加删) - 个股弹窗:五档盘口 + 1/3/5 日分时 + 日K(MA/BOLL/EMA + MACD/KDJ/RSI 前端本地计算)+ 一键加自选 + 一键全策略寻优 - 板块弹窗:板块分时/日K + 成分股涨跌榜直达个股 - SSE 架构:QuoteStreamer 单循环轮询 fan-out(独立队列 + 背压丢旧、 无订阅休眠、盘中 8s/盘外 60s 降频);前端 pinia 单连接指数退避重连 - fix(codec): SH 000 系大盘指数与 881/885 板块指数报价按 2 位小数解析 (曾缩小 10 倍:科创50 1647.53→164.753);880 统计指数保持 3 位 - fix: 前端批量五档路径 /security/quotes→/quotes、SSE 五档白名单 bid1_vol→bid_vol1、MAC 排行 close 列归一化、日K v-if 撑满、 寻优查看跳转 /→/backtest、FastAPI 0.141 _IncludedRouter 测试适配 新增 27 个单测(streamer/自选/小数位语义),全套 1078 passed
54 lines
1.7 KiB
TypeScript
54 lines
1.7 KiB
TypeScript
// A股代码 → 市场智能识别。
|
||
// 用户只输入 6 位代码,按代码段规则自动匹配 沪市(SH)/深市(SZ)/北交所(BJ),
|
||
// 拼成后端要求的 "市场:代码" 格式(如 SZ:000001)。
|
||
|
||
export type Market = 'SH' | 'SZ' | 'BJ'
|
||
|
||
/**
|
||
* 根据 6 位股票代码智能判断所属市场。
|
||
*
|
||
* 规则(按优先级,先匹配到的为准):
|
||
* - 北交所(BJ):43/83/87/92/93/920(小盘/三板)或 4xx/8xx 开头
|
||
* - 沪市(SH) :6/9 开头(主板 60/68 科创、B 股 900)或 5 开头(基金 50/51/56/58)
|
||
* - 其余归深市(SZ):000/001/002/003/300/301 创业板、200 B股 等
|
||
*
|
||
* @param code 6 位股票代码(纯数字)
|
||
* @returns 市场代码 SH/SZ/BJ;无法判断时默认深市(覆盖面最广)
|
||
*/
|
||
export function detectMarket(code: string): Market {
|
||
const c = code.trim()
|
||
if (!/^\d{6}$/.test(c)) return 'SZ'
|
||
|
||
// 通达信板块指数(沪市):880 统计 / 881 行业 / 885 概念等
|
||
if (/^88[0-9]/.test(c)) return 'SH'
|
||
|
||
// 北交所:43/83/87/92(含920段)/93 + 4xx/8xx(三板/小盘)
|
||
if (/^(43|83|87|92|93|4|8)/.test(c)) return 'BJ'
|
||
|
||
// 沪市:6xx(主板/科创板 60/68)、9xx(B股)、5xx(沪市基金 50/51/56/58/50ETF 等)
|
||
if (/^[695]/.test(c)) return 'SH'
|
||
|
||
// 其余归深市:000/001/002/003/300/301/200 等
|
||
return 'SZ'
|
||
}
|
||
|
||
/**
|
||
* 把 6 位代码转成后端要求的 "市场:代码" 格式。
|
||
* @param code 6 位股票代码
|
||
*/
|
||
export function toSymbol(code: string): string {
|
||
return `${detectMarket(code)}:${code.trim()}`
|
||
}
|
||
|
||
/** 市场中文显示名。 */
|
||
export function marketLabel(market: Market): string {
|
||
switch (market) {
|
||
case 'SH':
|
||
return '沪市'
|
||
case 'BJ':
|
||
return '北交所'
|
||
default:
|
||
return '深市'
|
||
}
|
||
}
|