Skip to content

增强A股数据源和交易分析功能 - #20

Open
blankkids wants to merge 16 commits into
rosemarycox5334-debug:mainfrom
blankkids:dev
Open

blankkids wants to merge 16 commits into
rosemarycox5334-debug:mainfrom
blankkids:dev

Conversation

@blankkids

Copy link
Copy Markdown

No description provided.

blankkids added 16 commits July 24, 2026 15:53
- 将 AkShare 与东方财富加入 GUI 数据来源,补齐默认代码、完整周期和使用文档
- 修复东方财富盘中实时价格函数的局部变量遮蔽问题,并增加回归测试
- 优化 Windows 启动脚本与首次 API Key 提示,避免启动阶段嵌套弹窗
- 补充统一依赖清单与 Pygments 测试依赖,并忽略 CodeGraph 本地索引
- 基于预估胜率与 TP1 盈亏比计算全凯利和半凯利比例,保留原始值并将负优势风险比例归零
- 在阶段二最终决策中写入程序化凯利指标,并在交易结论区域展示正优势或无优势状态
- 新增计算与界面单元测试,覆盖正负优势、有效订单及不下单清理场景
- 影响范围包括交易指标计算、阶段二结果标准化和交易决策面板展示
- 新增买卖五档盘口展示与市场上下文,仅东方财富数据源启用并提交至两阶段模型分析
- 将盘口分析约束独立至 prompt_engineering,明确盘口仅作为即时供需和入场时机的辅助证据
- 修正 ETF 盘口价格按 f59 精度缩放,补充数据源、界面、提示词及价格解析回归测试
- 获取并缓存最近四十笔逐笔成交,在东方财富盘口面板展示时间、价格、手数及主买主卖方向
- 汇总近期主买、主卖和中性成交手数,将最近二十笔明细提交至阶段一与阶段二模型
- 扩展盘口提示词的成交主动性约束,并补充解析、数据源、界面及提示词回归测试
- 在东方财富数据源下增加盘口与成交明细显示切换按钮,并根据当前状态动态更新按钮文案
- 隐藏中间区域时保留最新盘口缓存,利用横向分隔布局自动释放空间并扩展K线图
- 切换其他数据源时同步隐藏按钮和盘口区域,补充显隐状态及切换回调回归测试
- 为东方财富A股增加起止日期筛选,完善日线、分钟线及Baostock历史区间获取
- 为K线图增加日期时间X轴、悬浮详情、十字光标和单击锁定交互
- 开放TuShare数据源选择,增加Token配置、成交额与涨跌幅映射及依赖说明
- 补充相关单元测试和使用文档,覆盖日期范围、图表详情及TuShare设置
- 根据屏幕可用宽度缩放窗口与组件,并在单行和双行控制栏间自适应切换,避免几何超限及按钮重叠
- 限制代理网关中的 DeepSeek 最大输出为 393216,并修正网关错误被描述为校验失败的问题
- 新增响应式布局、控件无重叠、代理输出上限和异常提示的回归测试
- 固定数据选择控件在第一行,并将获取数据、分析和图表操作始终保留在第二行。
- 按控件自然尺寸设置按钮与复选框宽度,释放空白倒计时空间并微调间距,避免文字截断。
- 更新响应式布局测试,覆盖操作区归属和可点击控件文字完整显示。
- 将K线图、盘口成交区和AI侧栏的纵向尺寸策略设为可忽略内容最小高度,避免中央区域被内部组件撑出窗口。
- 保留三块区域原有横向伸缩比例和分割条交互,使其按最大化客户区的实际高度自适应收缩。
- 新增响应式回归测试,校验三块面板尺寸策略及主布局最小高度边界。
- 新增 provider.max_output_tokens 配置项(0=自动,>0 强制覆盖),用于 one-api/new-api 等中转网关对 max_tokens 有硬上限且不自动钳制时手动指定
- 将通用兜底 max_tokens 从激进的 524288 降到 131072(128K),匹配主流 OpenAI 兼容网关安全上限,避免未识别模型(如 glm-5.2)直接被网关返回 400
- _provider_max_output_tokens 开头读取用户 override,优先于 packy/deepseek/mimo 等自动分支判断
- AI 模型设置对话框新增「最大输出 Tokens」输入框,支持加载、保存与非负整数校验
- 同步更新 config/README.md 字段说明
- 新增 5 个单元测试覆盖 override 优先、0 时穿透沿用自动分支、未识别模型兜底 131072、字段 round-trip 及默认值
- 图表X轴刻度与hover提示改为按主机本地时区显示K线时间,修正A股分钟线整体偏早8小时的问题(如09:30开盘显示为01:30)
- 在chart_widget新增_format_bar_time_local辅助函数(基于datetime.fromtimestamp),替换原format_epoch_for_display按UTC直接格式化的调用
- ts_open仍保持真实UTC epoch,收盘检测(bar_close_wait)、增量分析、AI prompt时间标签均不受影响,零副作用
- 同步更新test_chart_datetime_axis.py,期望值改为按本地时区动态计算,保证任意主机时区下测试稳定
- 移除阶段一、阶段二及增量分析 Prompt 中的买1-5、卖1-5逐档价格和委托量
- 进一步移除买盘合计与卖盘合计,仅保留委比及最近成交信息供 AI 判断
- 更新 Prompt 组装测试,验证买卖档位和盘口合计均不会提交给模型
- 在K线图绘制EMA10、EMA20、EMA60及BOLL中轨、上下轨和半透明通道,并纳入自动缩放
- 新增BOLL周期N与标准差K输入控件,支持即时重绘、配置持久化及分析期间锁定
- 将当前参数、逐棒均线、布林三轨和收盘位置写入阶段一、阶段二及增量分析Prompt
- 提取共享布林带计算模块并补充图表、控件、设置和Prompt测试
- 修复 _is_network_error 对 httpx2/httpcore2 异常的识别:环境同时安装 httpx 1.x 与 httpx2(新版 openai SDK 依赖后者),两包同名异常类互不兼容,isinstance 判断永远失败,导致流式传输被服务端中断(peer closed connection / incomplete chunked read)时异常直接冒泡到 GUI 而未触发重试
- 改用「模块前缀(httpx/httpx2/httpcore/httpcore2)+ 类名白名单」识别网络异常,兼容新旧包且不会误判无关模块的同名异常类
- _stream_chat_resilient 新增同 provider 直接重试:网络错误先等待 2 秒(_NETWORK_RETRY_DELAY_S)对同一 provider 重试一次,成功则不切换;失败后才走原有 WorkBuddy/TRAE/Cursor/QClaw fallback 链,普通(非 openclaw)模型也获得重试机会
- 重试等待期间检查 cancel_token,用户取消时抛出 CancelledError 而非继续重试
- 更新 2 个受影响的 fallback 测试以反映新调用序列,新增同 provider 重试优先于 fallback 的测试
- 新增 _retire_worker_thread() 统一退役无父 QThread:已结束则 deleteLater(),仍在运行则停靠到既有 _zombie_workers 列表、由 _reap_zombie_workers() 延迟回收,消除控制台 "QThread: Destroyed while thread '' is still running" 告警及潜在崩溃
- 析构竞态根因:_AnalysisWorker 自定义 finished(dict) 信号遮蔽 QThread.finished 且在 run() 内 emit,主线程槽 _on_worker_done 丢弃最后一个 Python 引用时 OS 线程可能尚未退出;同一模式存在于快照 worker 槽、_cancel_snapshot_fetch_worker、prep worker 槽、_enter_demo_mode 等共 7 处引用丢弃点,全部改用统一退役
- _cancel_analysis_prep_worker 废弃 wait(0)+deleteLater() 不安全写法;_cancel_snapshot_fetch_worker 超时后不再裸丢弃引用,与 analysis worker/RefreshLoop 的僵尸停靠机制保持一致
- _arm_wait_for_bar_close 在 RefreshLoop 尚未推送数据时不再直接放弃,改为 _fetch_bars_then_arm_wait_close() 后台拉取快照(复用 SnapshotFetchWorker + generation token 模式),拿到 K 线后自动重新 arm 等待收盘(最新K线已收盘则立即提交),拉取失败原因显示到状态栏而非静默放弃
- _reap_zombie_workers 局部注解放宽为 list,以容纳停靠的 prep/snapshot worker
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant