This website requires JavaScript.
Explore
Help
Register
Sign In
sanguo
/
sanguo_vnpy_v2
Watch
3
Star
0
Fork
0
You've already forked sanguo_vnpy_v2
Code
Issues
4
Pull Requests
Actions
Packages
Projects
Releases
Wiki
Activity
Files
4aad65aad9dddb0d4c93ccc7049efe37e45f4b62
sanguo_vnpy_v2
/
sanguo_portfolio
T
History
claude_dev
ff05207f48
CI/CD / test (push)
Successful in 12s
Details
CI/CD / nas-deploy (push)
Successful in 33s
Details
CI/CD / nas-verify (push)
Successful in 14s
Details
fix(provider): 实盘provider方法面全兜齐+CI钉死——用户拍板「不论有无消费方,统一堵光同款洞」:补最后两个裸名缺口①get_constituent(=get_index_stocks纯别名,对齐unified spec§6语义)②get_price_ex(转发base get_price xtdata成熟路径零新逻辑,签名/默认值对齐unified,fq默认'raw'而非base裸名'pre'保跨环境同语义);核心=新增方法面钉死测试:unified全部公共方法在SanguoMiniQmt(+MiniQMTProvider基类)逐一存在,缺任一CI直接红——「回测有实盘无」洞从巡检发现升级为结构性防住,未来unified加新公共方法必须同步实盘侧否则测试fail;+4测试(别名等值/转发参数含fq=raw钉/kwargs透传/方法面零缺口) [vps]
2026-08-22 08:50:30 +08:00
..
factors
feat(portfolio): sanguo_portfolio 组合策略框架(BulletTrade+miniQMT,不用jqdatasdk)
2026-07-18 19:08:18 +08:00
providers
fix(provider): 实盘provider方法面全兜齐+CI钉死——用户拍板「不论有无消费方,统一堵光同款洞」:补最后两个裸名缺口①get_constituent(=get_index_stocks纯别名,对齐unified spec§6语义)②get_price_ex(转发base get_price xtdata成熟路径零新逻辑,签名/默认值对齐unified,fq默认'raw'而非base裸名'pre'保跨环境同语义);核心=新增方法面钉死测试:unified全部公共方法在SanguoMiniQmt(+MiniQMTProvider基类)逐一存在,缺任一CI直接红——「回测有实盘无」洞从巡检发现升级为结构性防住,未来unified加新公共方法必须同步实盘侧否则测试fail;+4测试(别名等值/转发参数含fq=raw钉/kwargs透传/方法面零缺口) [vps]
2026-08-22 08:50:30 +08:00
strategies
fix(strategy): 实盘选股挂死根治——证券信息批量委托本地库替600次xtdata RPC + 选股阶段耗时日志 [vps]
2026-08-21 22:58:57 +08:00
__init__.py
feat(portfolio): 移植3聚宽策略到BulletTrade + 8bug修正 + 数据缺口文档
2026-07-28 22:20:49 +08:00
filters.py
feat(portfolio): B fundamentals批量 + C涨跌停filter修复(get_limit_status_batch接入)
2026-07-30 07:37:03 +08:00
live_instance_ledger.py
fix(live): instance虚拟账本+成交归因+实盘日志黑洞——共享QMT账户三害根治第一步 [vps]
2026-08-19 18:39:13 +08:00
live_portfolio_proxy.py
feat(portfolio): B2定寸虚拟化InstancePortfolio代理——策略决策层脱离全账户污染(spec§B2+A2清单issue#29)——①live_portfolio_proxy:InstanceContextProxy(portfolio→账本视图,其余属性透传真context,property+__getattr__实现)+InstancePortfolio(每次访问现算)②覆盖A2清单全集:available_cash/cash=账本现金(168万/只定寸污染根治点,.cash fallback同源);positions=账本jq对象(total_amount/amount/closeable_amount(T+1)/avg_cost(台账口径=成交价)/cost_basis/security)+price/last_sale_price从真portfolio同名标的透传(市场数据非所有权,缺→None止损跳过);value/market_value/total_value=现价×量(缺价→0偏保守不误卖);total_value/positions_value=账本equity(现价优先成本兜底);locked_cash=0③清单外属性AttributeError fail-fast(真值=全账户数字,静默透传=污染复发,宁可崩=A1同款house style)④wrap_scheduler包装facade的run_daily/run_monthly(发生在策略initialize注册任务之前,策略代码零改动);functools.wraps保任务名;无账本原样返回=回测/影子零改动⑤live_strategy._setup接线(_ledger None→wrap直通);引擎内部撮合/风控仍看真实账户;+13测试(定寸现金/T+1/现价透传/缺价保守/equity兜底/fail-fast/调度代理注入/无账本零改动/_setup接线两态);portfolio 373绿 [vps]
2026-08-19 22:37:16 +08:00
live_strategy.py
fix(live): P0 order_target_value执行层跨实例互卖根治——2026-08-20 14:06实锤#22探针otv(513030,0)(own仅100股)按引擎全账户target把#18的43,500股(~8.3万)一起卖了,当晚15:10恒等式如实报警(unattributed -83,346/-19.09%>0.5%);所有真实策略卖出全是同款写法(aw:191/409·mom:472·sc:392·vs:383),不修则9:30轮换同代码票必互卖——修法=facade层实例相对化(_instance_order_wrappers):有账本时otv换算 目标-持有 增量下显式股数单(买入差额/卖出硬顶own closeable,清仓允许零股尾巴,减仓整手化,可卖0一单不下·绝不卖别家),负order_value同款硬顶,正order_value买入不动;价格取get_current_data实时价,拿不到回退账本加权成本,双失效才透传引擎旧语义;无账本(回测/单测)原样透传行为零改动;+10测试(只卖自己恰好-100/P0原样复现own空再清仓零下单/T+1当日买closeable=0拒/半仓锁定只卖可卖600/加仓差额2400/减仓整手5000/负ov硬顶1000/正ov透传/无账本identity/价格回退avg_cost);portfolio 410绿 [vps]
2026-08-20 20:05:33 +08:00
runner_backtest.py
fix(portfolio): 实盘/影子引擎重启后定时任务全丢根治——process_initialize+facade注入run_daily [vps]
2026-08-17 11:52:26 +08:00
runner_live.py
fix(live): 成交时间1970守卫——08-20探针首日实锤9笔traded_at=1970-01-01 00:00:01(QMT原始时间经引擎pd.to_datetime失败形态落epoch),前端『今日成交』按日期过滤全空+账本trade_date失真(当日仓被当历史仓,T+1视图frozen=0);修=_effective_trade_time守卫:年份<2000一律回退当前时刻(归因轮询≤60s,日期误差仅跨日60s窗口);+2测试(1970回退当日记账且frozen生效/有效时间原样保留);附带已治疗VPS存量9行(从引擎日志按标的+数量回填13:03/13:05真实时刻,#18今日成交即时可见);portfolio 29+398绿 [vps]
2026-08-20 13:32:54 +08:00