Rockyzsu/stock / 交易边界

交易三条路线与实盘前的安全闸门

先说最重要的一句:这个仓库的交易能力停在「有代码骨架」这一级,没有一条路线是开箱可用的。三条路线分别是:①trader/auto_trader.py 用 easytrader 调券商客户端下单——缺被 .gitignore 排除的 config.py 与 user.json;②PTrade 路线——README 说是「实盘代码」,而 ptrade/ 目录里只有一个 0 字节的 __init__.py;③富途路线——futu/ 的 5 个文件只有行情订阅,没有下单代码。

本站不会演示下单,也不会给出任何关于 Rockyzsu/stock 的实盘操作指令。本页要做的是把缺口清单和风险清单摊开:你要接实盘,先得自己补什么、先得自己想清楚什么。

三条路线均不可开箱使用12 项安全闸门核验提交 9478dee
只读行情与监控monitor/ 与行情接口
本地落库与记录MySQL 持仓/交割单表
模拟与记录仓记录我的选股与盈亏
券商客户端下单缺凭证,代码不可达
依据 trader/、ptrade/、monitor/server_api.py 与 .gitignore 整理的能力分级示意;当前仓库缺少下单所需凭证与代码,非官方能力声明。

Rockyzsu/stock · 三条路线

Rockyzsu/stock 的三条交易路线怎么选:一条缺凭证、一条目录为空、一条只有行情

路线代码入口调用方式实际能做到什么缺什么
① 券商客户端下单trader/auto_trader.py(6,266 字节)easytrader.use('gj_client')(备选 'ths')后 prepare('user.json');行情用 easyquotation.use('qq')读取券商客户端持仓、按阈值批量挂单、把持仓落 MySQL① config.py(auto_trader.py 第 11 行 import 它,仓库中不存在且在 .gitignore 里);② user.json 券商登录凭证;③ __init__ 里被注释掉的候选池与黑名单初始化
② PTrade 桥接ptrade/__init__.py(0 字节)+ monitor/server_api.pyserver_api.py 取可转债快照后写 Redis 键 ptrade,由 PTrade 侧读取只完成了「把快照放到一个约定位置」这一步① ptrade/ 目录里没有任何实现;② server_api.py 生成的 22 个字段取值全部写成 item[''](空键),尚未填字段名;③ PTrade 侧的读取代码不在本仓库
③ 富途 OpenAPI 行情futu/ 5 个文件:basic_usage.py、realtime_price.py、subscribe.py、unsubscrible.py、util.pyOpenQuoteContext 订阅行情、取实时价、打印报价对象只有行情与订阅,没有任何下单调用需本机运行 OpenD 网关;无交易相关代码

把三条路线连起来看:①是三条里仅有具备下单代码的路线,但缺两个凭证文件;②是最接近「与外部实盘系统对接」的设计,但关键字段没填完;③只是行情示例。所以「Rockyzsu/stock 能接实盘吗」的准确回答是:有骨架,无一条可直接使用。

Rockyzsu/stock · 缺口清单

接入前要自己补什么:Rockyzsu/stock 的六个缺口

缺口项源码位置缺失方式影响怎么补
config.pytrader/auto_trader.py 第 11 行 from config import PROGRAM_PATH, MONGO_PORT, MONGO_HOST仓库中没有该文件,且 .gitignore 明确忽略 config.py整个模块 ImportError,无法启动自己建一个 config.py,至少要定义这三个常量
user.jsontrader/auto_trader.py 第 28 行 self.user.prepare('user.json')被 .gitignore 忽略,仓库中没有prepare() 报错,拿不到券商会话用 easytrader 的方式在本机生成并妥善保管
候选池与黑名单初始化__init__ 中 self.stock_candidates、self.blacklist_bond 的赋值行被注释代码里被注释掉了morning_start()、get_blacklist() 等函数一旦调用即 AttributeError需要先构造候选池(脚本对应函数也依赖 self.engine 等未赋值属性)
self.engineget_candidates()、get_market_data() 里使用__init__ 中从未赋值(只在 save_position() 里赋值)相关函数按调用顺序不同会抛 AttributeError在初始化阶段显式建立数据库引擎
PTrade 侧读取实现不在本仓库本仓库只写了 Redis 写入端写进去的快照没有消费者需在 PTrade 环境内自行实现
server_api.py 的字段名22 个 item['']取值键是空字符串KeyError按可转债字段映射逐个填入

注意第 3、4 行的性质:它们不是「缺配置文件」,而是代码本身被注释掉或从未赋值——也就是说即便你补上 config.py 与 user.json,morning_start() 这类函数仍然跑不了。可运行的入口只剩 set_ceiling() 一条(依赖券商持仓 + MySQL 的 db_jisilu 表)。

Rockyzsu/stock · 安全闸门

实盘前要过哪些安全闸门:12 项中四项属于资金安全底线

闸门为什么必须过怎么建不过会怎样
① 凭证不进版本库券商账号与站点 cookie 等于账户控制权user.json、config.json、data.cfg、validate_key.py 全部写进 .gitignore 并本地加密备份凭证泄露后可能被用于真实下单
② 先验证只读能力下单是不可逆操作,先确认能正确读先跑持仓查询与行情订阅,核对字段与实际账户一致在错误的持仓数据上做决策
③ 本地离线跑通再联网逻辑错误在离线环境里最容易发现用历史数据或模拟数据走一遍完整链路线上才发现逻辑问题
④ 模拟环境优先模拟环境无资金风险券商模拟盘、纸面交易或记录仓(recordMyChoice.py 的思路)直接暴露在真实资金风险下
⑤ 最小下单量人工确认验证接口连通性不等于验证策略先用最小交易单位,且逐笔人工确认一次批量下单造成不可逆损失
⑥ T+1 与可用数量A 股当日买入不可卖出下单前读券商返回的可用余额字段,而不是持仓数量下单被拒或重复卖出
⑦ 涨跌停与废单处理涨跌停时挂单可能无法成交显式处理废单返回,不要假设一定成交以为已成交,实际空仓或满仓
⑧ 最小交易单位股票 100 股、可转债 10 张(以交易所规则为准)下单数量按规则取整废单
⑨ 滑点与手续费回测与实盘的差距主要来自这两项在评估策略时显式建模高估策略收益
⑩ 重复下单防护网络重试极易造成重复委托用订单编号做幂等,记录每笔委托状态资金被重复占用
⑪ 断线与重连网络断开时状态未知断线后先查询委托与持仓状态,再决定是否重发状态不一致
⑫ 风控熔断与人工兜底程序可能进入非预期状态设置单日下单笔数与总金额上限,并保留人工一键停止的开关损失被放大

本页只列清单,不提供下单代码,也不提供实盘操作指引。这份闸门的作用是让你在动手前知道「哪些坑是已知的」——其中①④⑩⑫ 四项是资金安全底线,建议无论如何先建起来。以你的券商与交易所当前规则为准。

Rockyzsu/stock · 推进路径

为什么不建议从自动下单开始:Rockyzsu/stock 的六级能力路径

能力分级:从只读一路走到自动下单

  1. 级别 1 只读行情。跑通行情订阅或查询,确认数据字段与实际一致。预期输出:终端打印的现价、涨跌幅与行情软件一致。
  2. 级别 2 本地记录。把持仓与交割单导入本地库,长期积累自己的操作记录。预期输出:utils/delivery_order.py 把交割单写入按券商分表的数据库表。
  3. 级别 3 模拟与记录仓。用模拟盘或记录仓验证策略信号,不涉及真实资金。预期输出:recordMyChoice.py 持续跟踪每只自选股的收益。
  4. 级别 4 券商模拟/纸面交易。走券商提供的模拟环境,验证下单接口的调用链。预期输出:模拟环境里出现委托与持仓记录。
  5. 级别 5 小额人工确认。真实资金、最小单位、逐笔人工确认。预期输出:每笔委托都有人工确认记录。
  6. 级别 6 自动下单。只有在前面五级都有日志与复盘、且有熔断机制之后才考虑。预期输出:具备可审计的下单日志与人工急停能力。

Rockyzsu/stock · 与技能对照

同一批任务,Rockyzsu/stock 与 EasyClaw 各自覆盖哪些

任务Rockyzsu/stock 的现状EasyClaw 本机技能对照结论
读行情 / 查指标datahub/ 与 monitor/ 自建脚本,需自建库与登录态akshare-finance、a-stock-analysis、tushare-finance、mx-data两边都能做;技能侧免部署
盯盘预警monitor/ 四类机制,需自建 cron 与推送通道stock-monitor-skill-0-1-0(7 类预警规则、分级预警,不支持自动下单)两边都能做;技能侧开箱即用
技术分析 / 形态识别k-line/,依赖 talib 本地 C 库stock-technical-mastery、chart-image(含 K 线出图)两边都能做
回测backtest/ 5 个示例,无绩效统计quant-analyst(回测方法、风险指标、组合优化)技能侧在方法论层面更完整
条件选股select_stock.py(导入期报错)tonghuashun-research-assistant、iwencai、mx-select-stock技能侧免维护
券商客户端自动下单trader/auto_trader.py(缺凭证、部分函数被注释)本机 29 个技能中没有等价技能两边都没有可用实现;这是明确的空白区
模拟交易recordMyChoice.py 记录选股后收益mx-stock-simulator(东财妙想模拟组合,支持买卖/撤单/持仓查询)技能侧提供了现成的模拟环境
自建落库(MySQL/Mongo/Redis/ES)项目核心设计的一部分本机技能侧没有对应能力这是自建路线的独有价值

这张表最值得注意的两行:「券商客户端自动下单」两边都没有可用实现——这是真实的空白区,不存在「换个工具就能自动下单」的捷径;「自建落库」是自建路线独有的价值。Rockyzsu/stock 与 EasyClaw 无已证实集成,完整对照见导航栏的「对比」页。

FAQ

关于 Rockyzsu/stock 的常见问题

Rockyzsu/stock 能直接接实盘自动交易吗?
不能。trader/auto_trader.py 缺少 config.py(第 11 行 import)与 user.json(券商登录凭证),两者都被 .gitignore 排除;另外 __init__ 里候选池与黑名单的初始化行被注释掉,morning_start() 这类函数即使补上凭证也会因缺少属性而失败。ptrade/ 目录只有一个 0 字节文件,server_api.py 的 22 个字段取值都是空键。结论:有骨架,无一条可直接使用。
easytrader 是什么?安全吗?
easytrader 是一个通过自动化操作券商客户端(而非官方 API)来下单的第三方库,用法是 easytrader.use('gj_client') 后 prepare('user.json')。本站不对该库的安全性做评价,只陈述两点与仓库相关的客观事实:①它对券商客户端的版本与界面变化敏感;②它需要 user.json 这类包含登录信息的凭证文件,而仓库作者把它排除在版本控制之外(.gitignore 里有 user.json),这个处理是对的。本站不提供该库的配置教程,也不建议在真实账户上做未经充分验证的自动化下单。
PTrade 路线走到哪一步了?
只完成了一半,而且是「容易的一半」。monitor/server_api.py 会把可转债快照写入 Redis 键 ptrade,这建立了「本仓库 → 外部 PTrade 环境」的约定通道;但 ①它生成的 22 个字段取值全部是 item[''](字段名尚未填写);②ptrade/ 目录里只有一个 0 字节的 __init__.py;③PTrade 侧的读取实现不在本仓库。所以这条路线目前只能说明「作者打算这么做」。
富途接口能做交易吗?
本仓库里的 futu/ 5 个文件只做行情:建 OpenQuoteContext、订阅与取消订阅、取实时价与报价对象。没有任何下单相关的调用。要做交易需要另外查看富途 OpenAPI 中交易部分的能力与权限要求,那不在本仓库范围内。
怎么做才能既用它、又不出事?
建议按本页给 Rockyzsu/stock 规划的六级能力路径走,并且至少先把四项资金安全底线建起来:凭证不进版本库、先在模拟环境验证、做重复下单防护、设人工一键停止。另外强烈建议先用只读能力(持仓查询、行情订阅)跑满一周,确认字段口径与人工记录一致之后,再考虑任何带资金的动作。
本站会提供下单代码示例吗?
不会。原因不是「藏私」,而是:①仓库本身没有可运行的下单代码,任何示例都得由本站自己编写,那就脱离了「核验源码」的证据边界;②下单代码的正确性高度依赖券商客户端版本、账户权限与当时的市场规则,写出来也未必适用于你;③本站的定位是研究手册,不是交易教程。本站只做「能力与缺口的陈述」。
不接实盘的话,这个项目还能做什么?
能做的很多,而且风险为零:取数落库、按因子筛选、涨停池与情绪统计、K 线与形态识别、盯盘告警、交割单入库与复盘。这七件事都只需要只读权限与本地数据库。对于绝大多数使用者来说,做到「盯盘告警 + 交割单复盘」就已经比手工操作省很多事了,并不需要走到自动下单那一步。

接下来读哪一页?

上面所有内容都建立在一个前提上:代码能跑起来。而这份仓库有至少八个模块在 import 阶段就会失败——报错排查页把四类失败按发生时机分类列出,并对号给出修复方向。