# 援军研究台 本机运行的沪深主板及创业板量化筛选器。模型名 Q20-Tail,来源于援军思想研究的一个可机械验证的分支,并非原作者完整战法或实盘交易系统。 行情数据库固定保存在 `D:\Codex\援军战法\outputs\援军本地数据.sqlite`。首次扫描通达信目录或导入JSON时会初始化/更新数据库;此后扫描结果从SQLite读取,每日更新任务完成后也会同步数据库。数据库只保留沪深主板及创业板股票最近380个交易日和沪深300最近500个交易日,使用系统自带的SQLite模块,无需额外安装数据库服务。数据库可用DB Browser for SQLite等工具查看;复制数据库时请同时复制可能存在的 `-wal`、`-shm` 文件,或先关闭援军研究台。 “援军观察池”按新低后的确认日是否守住新低筛选。观察池资格与尾盘模拟买入分开:符合观察条件的股票会继续留在池中,模拟买入仅用于独立评估模式历史胜率;收盘价不满足入场区间时仍可列为候选,但显示未成交。 ## 打开 双击“启动工具.cmd”,保持窗口运行,启动器会检查SQLite数据库版服务并自动打开其本机地址。旧服务即使仍能打开网页,也不会被当成数据库版服务复用。 也可以在本目录执行 `node server.mjs`。只使用Node.js内置模块,不需要npm安装。需要Node.js 22.5或以上(使用内置SQLite);启动脚本使用本机Codex附带的Node。端口被占用时会自动选择可用本机端口并记录在 `server.port`。 ## 每日自动更新 已为当前Windows账户安装 `YuanjunTdxDailyRefresh` 计划任务:工作日16:30通过本机通达信 TQ 客户端接口更新沪深主板、创业板证券和沪深300日线,并保存在通达信 `vipdoc` 目录。它只补齐落后于基准指数的代码;第一次可能需要较久,后续通常只补新交易日。任务在Windows用户登录时运行,**需要通达信保持开启并连接行情**;若电脑当时关机,Windows会在下次可运行时补执行。节假日即使触发也不会生成虚构行情。 页面每分钟读取更新状态,后台任务完成后会重扫并同步选股结果。状态和日志保存在 `daily_update_state.json`、`daily_update.log` 与 `daily_update_task.log`。也可手动运行 `运行每日更新.ps1`。如需移除计划任务,在PowerShell执行:`Unregister-ScheduledTask -TaskName YuanjunTdxDailyRefresh -Confirm:$false`。 自动更新使用通达信客户端自带的 `PYPlugins/user/tqcenter.py` 的 `refresh_kline(..., period='1d')` 接口;不会下载每天约550MB的官网全量压缩包,也不连接或操作券商交易。当前环境已经验证接口能将更新的日线写回本机 `.day` 文件。若任务失败,页面显示失败信息,可在 `daily_update_task.log` 查看详细错误。 ## 盘中行情采集 先扫描本地日线,然后在结果表上方点击“启动盘中采集”。工具会把当前“截止日观察”候选与“援龙战法”候选合并,通过通达信 TQ 实时订阅接收行情更新;请保持通达信开启并连接行情。单次订阅最多100只,候选超过100只时优先各取观察池和援龙候选前50只,再用剩余名额补齐。页面显示订阅覆盖数量、更新股票数和最近更新时间;点击“停止采集”结束订阅。 回调到达的快照以JSONL追加保存到 `intraday_ticks.jsonl`,同一股票最多每5秒落盘一次,日志超过50MB时清空后继续记录。采集只保留行情快照,不更新 `.day` 日线、不自动触发买入,也不代表真实可成交价格。候选池或研究截止日期变化后,停止并重新启动采集以更新订阅名单。TQ订阅数据是否可用取决于通达信客户端连接状态和行情权限;没有收到回调时页面不会伪造行情。 ## 选股流程 1. 输入通达信安装目录(不是vipdoc子目录),点击“扫描本地日线”。默认尝试 D:/Users/new_tdx64。 2. 检查黄色提示中的数据截止日。以页面显示的数据截止日为准;本机数据当前已更新到2026-09-24,仍有少量证券未同步,选股只使用指数与个股共同覆盖日期。不要把旧数据当今日信号。 3. “截止日观察”给出进入观察日、下一交易日的买入区间、失效价与压力目标。“仅观察”表示市场过滤不允许开仓。 4. “历史信号”显示历史模拟买入日期/价格、卖出日期/价格和未成交原因。点击一行查看完整条件。数据中的未来日历不存在时,只显示“下一交易日”,不猜日期。 5. “排除记录”可检查成交额不足、指数缺失、ST名称、压力不足及疑似除权等原因。 6. 导出结果JSON可留存参数、版本、日期、所有事件与数据质量说明。 ## 确切规则 - 股票范围:沪深主板600/601/603/605/000/001/002/003及创业板300/301开头的六位代码。排除名称包含ST或退的股票;当前名称不等同于完整历史证券状态。 - 最少60条预热数据。Q20候选低点严格低于最近19条低点,随后2个连续市场交易日不跌破。观察日在第二个确认日收盘后成立。 - 成交额筛选默认使用20日均额,周期可选5、10或20日,默认门槛为5000万元。股票20日均线不降、收盘在60日均线上方分为趋势回调,其余为下跌反弹。 - 市场过滤:沪深300收盘低于20日均线且均线较5日前下降,则只观察。缺少对应指数或预热数据时禁止模拟开仓,即使关闭市场过滤也不会把缺失当通过。 - 撤军触发线L=候选低点;买入区间[L, 向下取分的L×1.01]。日线回测用破位当天的L模拟退出,跳空破位按开盘价。 - 重点形态研究标签(1.1):连板组要求低点前10个交易日内至少两连板后出现断板;主升浪N形近似组要求80日区间先有前低,之后反弹至少20%,观察低点高于该前低且均线背景偏强。标签只加入逐笔记录与复盘分组,不改变Q20观察、买入、止损和退出规则;涨跌幅限制历史、精确转折点和全市场情绪均未完整建模。 - 援龙独立观察(1.3):不再依赖Q20先触发新低。独立列表按主板10%及创业板(2020-08-24起)20%涨停近似识别至少2连板、其后首个非涨停断板日、以连板区间高点为起点,10个交易日内回撤5%—60%,并等待一根低点未跌破此前回撤低点的日K作为观察日。所属板块和细分行业读取本机通达信 `tdxhy.cfg` / `tdxzs3.cfg`;打开列表时自动抓取新浪财经资料页的概念板块,可补充同花顺当前热榜标签并保存在本机 `outputs/研究缓存` 目录中,仍可手动刷新,少数页面失败时会单独报告。浏览器中的旧题材缓存会在首次刷新页面后迁移到该目录。双击可查看日K。它不判断个股是否真正龙头、题材情绪或狙盘手的具体进场条件;候选不是买入信号,也没有可直接引用的历史胜率。 - MACD 背离研究标签(1.2):根据提供的 DIF/DEA/柱体背离及假突破思路,在观察日收盘时用当时及之前的日线标注简化顶/底背离,并在复盘中分组比较训练段和时间外验证段。它不是逐字复刻通达信公式,不改变 Q20 候选、买入或退出,也不会自动筛除信号;样本不足或验证未通过时不代表有效。 - 目标代理:在低点日前40条记录内,寻找已被相邻K线确认的局部高点;从高于买入区间上沿的高点中取最近的价格。没有目标就排除。这是自建代理,不保证是真实阻力;未自动识别平台下沿,需人工复核。 - 最近压力若高于买入区间上沿15%(可调1%—50%),则排除。上限是为短线反弹设的模型参数,不是原作者保证收益目标。 - 风险比不把一个最小报价单位当成真实可控损失。风险估算价S=L−max(0.01元, 0.25×ATR14),作为入场前的滑点缓冲估算;强制止损按用户规则以收盘价低于撤军线L触发全仓退出。成本默认往返30基点,包含估算税费、佣金与滑点。净空间风险比=(目标−买价−成本)/(买价−S+成本),买入上沿和实际开盘均须至少2。0.25ATR是研究假设,不保证破位后只会损失该金额。 - **信号确认当日的尾盘模拟买入。** 收盘价在买入区间内、当日最低价未跌破撤军线且并非停牌/单价交易才入场。尾盘高于区间、盘中破位或当天缺行情均取消。日线收盘价只是尾盘成交代理,不代表真实可成交。 - 买入按信号确认当日收盘价模拟;买入当天不再判断卖出,之后从下一交易日开始按T+1规则检查退出。 - **援军模式分批止盈规则(1.6)**:以尾盘模拟买入价为基准,买入后的交易日涨幅达到5%卖出半仓;达到8%且当日未封涨停时卖出剩余仓位。收盘封涨停则持有;之后跌破最近封板日最低价时全仓退出。收盘价低于撤军线则强制全仓退出。持仓达到设定交易日数且收盘浮盈不足3%时,退出剩余仓位;默认3日。5%/8%/3%为本系统采用的规则参数,不宣称是原作者对所有情形统一规定的固定阈值。 - 部分卖出逐笔记录,并按各卖出仓位加权计算整笔净收益;成本按每笔完整买卖模拟统一扣除。当前历史回测只有日线OHLC:5%/8%触发按当日最高价是否到线近似,卖价按目标线(跳空越过时按开盘价);涨停按主板10%、创业板2020-08-24起20%限制近似识别。它无法恢复盘中成交先后,历史ST涨停制度、创业板IPO前5个交易日无涨跌幅日期及涨跌停无成交队列也未完整核验。封板后跌破封板日低点按该价模拟,跳空低开按开盘价。 - 缺个股数据按停牌/缺失处理,不跨越缺口伪造成交。持仓期间单价日一律保守不成交;若触发撤军线止损或封板日低点退出,排队到下一可交易时点处理。 - 近60条记录出现相邻开盘对前收超过11.5%的断层,候选进入人工核验。持仓期间发生则暂停该事件收益计算。只能发现较大异常,不能识别所有除权、派息或数据错误。 - 同一股票持有时不重叠产生新仓,不补仓;不同股票作为独立信号计算,**没有组合资金约束**。本版不把历史独立信号平均收益称为账户收益,也不报告虚假的组合回撤或资金曲线。 ## 数据格式 可以导入JSON,见sample.json。该文件是合成测试行情,不是真实股票价格。所需结构: ```json {"index":[{"date":"2026-01-05","open":4000,"high":4050,"low":3980,"close":4020,"volume":100000000,"amount":10000000000}],"stocks":[{"code":"600000","name":"浦发银行","bars":[{"date":"2026-01-05","open":10,"high":10.2,"low":9.9,"close":10.1,"volume":1000000,"amount":10100000}]}]} ``` 以上仅展示格式,一条数据不能形成信号。每只股票及沪深300应至少有80条已完成日线。日期必须升序且无重复,价格为元、成交额为元、量为股。实际自动筛选会需要更多历史。上传的是本地网页到本机服务器,不发送第三方。 通达信.day按32字节日线解析,读取最近380条股票数据和500条指数数据;名称从当前本机.tnf缓存识别。本机已验证新缓存格式,其他版本若无法识别名称将排除,届时可用JSON导入提供名称。未复权价格用于历史日期对应的价格线;跨除权窗口须人工排除。不要将前复权历史价当作当时可以提交的订单价格。 数据应在收盘后更新。工具不知道当日尚未收盘的行情是否完整,日内请将研究截止日期设为上一完整交易日。部分股票未更新到指数最后日期时,数量在数据检查里显示,不当作当前候选。 ## 边界与验证 复盘学习按模拟买入日期排序,只纳入已退出信号;前70%样本用于检验预先列出的简单条件(形态类别、市场环境、风险比、成交额、目标距离),后30%作为时间外验证。界面显示基准与训练挑出的一个候选条件在留出区间的胜率和平均净结果,并列出按月及重点形态/MACD标签分组的数据。样本少于30笔不拟合。候选需在验证区间至少30笔、胜率高于基准至少5个百分点、平均净结果改善且有两个正收益半年期,才会显示“达到初步门槛”。 这不是自动改规则或机器自动交易:Q20参数不会被复盘器修改,候选条件也不会自动用于当前选股。只有经人工审核后才适合另建版本,并用之后新发生的信号继续验证。每次重新扫描都会重算切分;反复查看并据此调参会让留出区间也被间接“看过”,因此最终确认应留一段从未查看的新日期作前向验证。历史行情覆盖、公司行动、成本与日线成交假设都会影响结论,不能保证胜率提升。 观察、模拟入场、模拟退出在不同阶段分别显示。未来日期和成交价未知;止损委托也不保证按该价成交。没有连接券商、没有自动下单。 数据仅覆盖本机存在的股票,含存续偏差;无历史ST/退市/上市日期全库、公司行动与完整盘口。60条预热只限制近期样本,不代替完整上市资格核验。单价日全部不成交是保守简化;非单价日开盘也不保证某个实际账户能成交。日线模拟结果只能用于研究筛选,不能当作经过完整执行验证的回测成绩。 v0.1研究文档中的仓位预算、三只上限及前向检验未在本工具实现组合撮合,因此不输出资金收益承诺。本次提供工具功能与自动化边界测试,并非证明战法盈利。 运行检查:`node --test tests/*.test.mjs`。 方法依据:上一层的“援军战法研究模式_v0.1.md”;视频来源:https://www.douyin.com/video/7610959624141395825 。交易规则核对入口:https://www.sse.com.cn/lawandrules/sselawsrules2025/stocks/exchange/c/c_20260424_10816482.shtml 。 ## 本地服务 首次打开时在本机创建管理员账号(用户名3—32位字母、数字、点、下划线或短横线;密码至少12位)。管理员登录后可在右上角“账号管理”为每位访问者创建独立账号、停用账号。密码以加盐哈希保存在本目录 `auth-users.json`,不会明文保存;停用会立即使该用户的会话失效。登录会话在服务重启后失效,单次有效期8小时。 所有 `/api/` 数据接口均要求登录;首次管理员初始化仅允许从本机地址完成。动态域名 + 爱快部署模板已放在 `site-config.cmd`、`Caddyfile` 和 `启动HTTPS入口.cmd`:先确认 `site-config.cmd` 中的域名;在爱快给电脑固定内网IP,并将 WAN TCP 80、443 转发到该电脑的 TCP 80、443;下载官方 Caddy Windows 程序并放到本目录命名为 `caddy.exe`;先运行 `启动工具.cmd`,在本机完成管理员初始化,再运行 `启动HTTPS入口.cmd` 并保持窗口运行。访客访问 `https://你的域名` 登录。不要将应用端口 8765 转发到公网。Caddy 自动 HTTPS 需要域名解析正确且公网可以访问 80/443;电脑需保持开机联网。Windows 防火墙只开放代理需要的端口。关闭命令窗口或Ctrl+C停止;结果只保存在内存,下载导出后才保留。扫描目录只读,不修改通达信文件。 ## 原作者视频核对补充(2026-09-26) 已用 PotPlayer 抽查播放列表中第44、123、124、125、171集关键画面。第171集的手机备忘录提纲列出多种援军形态与六类个人应用场景,包含市场/情绪拐点、主升浪前期、连板断板后修复等,并把目标测绘、撤军线和盈亏比列为重要考虑。第123集展示“N字”A-B-C-D回调结构和D点不创新低;第124集展示支撑观察线与止损线;第44集警示连板起飞时追涨风险,展示断板/高位回落后的被套资金;第125集抽查到“完美失败”及乾坤区间/新高图示。视频只做关键帧抽查,未逐句转写。 因此,“连板股”应理解为连板失败或高位回落后等待援军条件,而非追连板。Q20仍是独立的机械化入场基线;1.1版增加连板断板后回落、主升浪N形回调的复盘标签,1.3版另增援龙战法独立观察列表。该日线近似不等于完整A-B-C-D识别、龙头身份或全市场情绪判断。分组胜率须按历史样本检验,未经前向验证前不代表胜率会提升。 详细证据边界和画面摘录见上层 [援军战法研究模式_v0.1.md](../援军战法研究模式_v0.1.md)。