全部
文章&策略
学习干货
问答
官方
用户头像mx_****60317
2026-09-16 发布
每天9点15分到9点25分,很多股票已经提前暴露资金态度。盯着涨幅榜追高,往往买在情绪顶点;只看竞价涨幅,又容易被虚假挂单误导。真正有用的集合竞价选股,需要把价格、成交额、未匹配量和开盘后承接放在一起判断。 集合竞价不是预测涨停,而是用有限信息筛出“值得继续观察”的股票。 一、集合竞价到底在看什么 集合竞价阶段,买卖双方提交订单,交易系统按照最大成交量原则撮合。9点15分到9点20分可以撤单,9点20分之后撤单限制增加,9点25分形成开盘价。 实战中,我会重点观察四个字段: 字段 含义 实战用法 jjzf 竞价涨幅 判断资金愿意把价格抬到什么位置 jje 竞价金额 判断参与资金是否足够真实 noe 未匹配金额 判断买卖盘哪一方更拥挤 trend 交易方向 -1为主动性卖,0为中性盘,1为主动性买 单看竞价涨幅很容易踩坑。竞价涨幅达到8%,但成交额只有几十万元,可能只是流动性不足;竞价涨幅3%,成交额超过1000万元,同时未匹配金额持续偏向买方,参考价值更高。 二、我的集合竞价四层筛选法 1. 先做基础排雷 剔除退市整理、风险警示、上市时间过短、成交额长期低迷的股票。涨停价附近的股票,还要注意是否存在一字板无法成交的情况。 建议把竞价涨幅控制在2%至6%。涨幅太低,资金关注度不足;涨幅超过8%,开盘后容易出现获利兑现。 2. 看竞价金额是否达标 竞价金额是过滤“虚假强势”的核心指标。中小盘股可以设置1000万元起步,大盘股则需要结合流通市值提高门槛。 一个简单的标准是: 竞价金额占昨日成交额比例 = jje / 昨日成交额 这个比例不宜一刀切。市场活跃时可以放宽,缩量行情则要提高要求。 3. 观察未匹配金额方向 noe大于0,通常代表买方未匹配金额占优;noe小于0,代表卖方压力更明显。单个时点的未匹配量可能变化很快,最好连续读取9点20分、9点24分和9点25分附近的数据。 真正有参考价值的不是某一刻的买单,而是买方优势能否持续到竞价结束。 4. 等待开盘确认 竞价筛选只是建立候选池,不能直接当作买入信号。开盘后观察前5分钟: 价格是否站在竞价价之上; 成交量是否快速放大; 回踩时是否跌破竞价价; 所属板块是否同步走强。 如果个股高开后快速跌破竞价价,且卖单持续增加,即使竞价数据漂亮,也应放弃追涨。 三、用XTick接口获取竞价数据 XTick文档提供了“竞价数据-实时接口”,地址为/doc/core/bidtime,竞价时间段覆盖9点15分至9点25分。接口支持单只股票、最多100只股票批量查询,也支持code=all获取全市场数据。 请求地址格式如下: http://api.xtick.top/doc/core/bidtime?type=1&code=all&token=YOUR_TOKEN 其中,type=1代表沪深京A股,token需要登录XTick网站后获取。 接口返回的核心字段示例: { "type": 1, "code": "000001", "time": 1725845100000, "seq": 12, "price": 11.26, "close": 10.92, "jjzf": 3.11, "jjl": 86500, "jje": 9736900, "nol": 12000, "noe": 1351200, "trend": 1 } jjzf表示竞价涨幅,jje表示竞价金额,noe表示未匹配金额,trend=1代表主动性买盘。时间字段为毫秒级时间戳,使用时要转换为北京时间。 四、把筛选条件写成程序 下面是一段可以直接改造的Python示例。代码只负责筛选候选股,不构成自动交易指令。 import requests from urllib.parse import quote API = "http://api.xtick.top/doc/core/bidtime" TOKEN = "YOUR_TOKEN" option = { "filter": "jjzf>=2;jjzf<=6;jje>=10000000;noe>0", "sort": "noe", "asc": 0, "limit": 100 } params = { "type": 1, "code": "all", "option": quote(str(option).replace("'", '"')), "token": TOKEN } resp = requests.get(API, params=params, timeout=10) resp.raise_for_status() rows = resp.json() for row in rows: print( row["code"], f"竞价涨幅={row['jjzf']:.2f}%", f"竞价金额={row['jje']:.0f}", f"未匹配金额={row['noe']:.0f}", f"方向={row['trend']}" ) 接口文档中的option参数支持过滤、排序和数量限制。例如: { "filter": "jjzf>5;jje>=10000000", "sort": "noe", "asc": 0, "limit": 100 } 通过这个参数,可以直接筛选竞价涨幅超过5%、竞价金额不低于1000万元的股票,并按未匹配金额从大到小排列。 在生产环境中,建议使用标准JSON编码: import json params["option"] = quote(json.dumps(option, ensure_ascii=False)) 五、如何做历史回测 XTick还提供“竞价数据-历史接口”/doc/hot/bidhistory。该接口保留集合竞价阶段最后一条数据和开盘数据,可用于构建历史样本。 示例请求: http://api.xtick.top/doc/hot/bidhistory?type=1&code=all&startDate=2026-09-09&endDate=2026-09-09&token=YOUR_TOKEN 历史接口中的序列字段需要特别注意: seq值 含义 0 开盘数据 1 集合竞价最后一条数据,通常对应9点25分 回测时不能拿收盘后的数据参与当天选股。正确流程是使用seq=1的数据生成候选池,再用seq=0确认开盘表现,最后计算买入后5分钟、30分钟或收盘收益。 六、一个更稳健的实战模板 可以把策略拆成“竞价初筛”和“开盘确认”两步: 阶段 条件 动作 9:20前 竞价涨幅2%至6%,竞价金额达标 建立观察名单 9:24后 noe持续为正,trend多次为1 保留强势标的 9:25 竞价价格没有明显跳水 等待开盘 9:30至9:35 价格站上竞价价,成交量放大 评估是否参与 跌破竞价价 卖压增加、板块转弱 取消计划 这里的“参与”也要结合仓位管理。单只股票的试错仓位可以控制在总资金的10%以内,连续出现两次开盘破位时,暂停策略并检查市场环境。 七、常见误区 误区一:竞价涨幅越高越好 高开并不等于强势。超过7%的竞价涨幅,往往意味着更高的兑现压力,尤其是前一交易日已经大涨的股票。 误区二:看到大额买单就立即下单 竞价订单可能在规则允许的时间内撤销,单笔大单不能代表全天资金态度。应结合成交额、未匹配金额变化和开盘后承接判断。 误区三:忽视流动性 小市值、低成交量股票即使满足筛选条件,也可能出现滑点大、无法成交的问题。回测必须加入手续费、印花税、滑点和涨跌停无法成交等因素。 误区四:把回测结果当成收益承诺 集合竞价策略对市场风格非常敏感。震荡市、主升市和退潮期的表现差异明显,任何参数都需要滚动验证。 结语:把竞价信号变成交易纪律 集合竞价选股的核心,不是寻找一个“百分百上涨”的神奇指标,而是建立一套可重复执行的流程:用jjzf识别价格意愿,用jje确认资金规模,用noe观察买卖失衡,再用开盘后的价格和成交量完成确认。 竞价负责缩小范围,开盘负责验证逻辑,仓位负责控制结果。 接口详情可参考XTick接口文档,实盘接入前请先用历史数据和模拟账户验证参数。股市有风险,策略只能提高决策一致性,不能消除亏损可能。 开源项目:https://github.com/xticktop/skills
浏览29
评论1
收藏0
用户头像sh_*219t3e
2026-09-10 发布
已支持最新版Supermind,实测下来还挺方便: 👉EasyQuant AI量化助手(支持最新版Supermind):https://easyquant.ai/ 自然语言描述策略 → 直接生成最新版 SuperMind 代码 均线、MACD、选股、买卖逻辑、止盈止损等都可以直接让 AI 写。 而且不只是生成代码,已有代码报错、修改策略、补充交易逻辑也能直接交给 AI。
浏览126
评论3
收藏0
用户头像sh_***174w0d
2026-09-16 发布
引言:一个关于“臭鱼罐头”的华尔街寓言 在华尔街的交易员圈子里,流传着一个既荒诞又残酷的经典寓言:有两个交易员多年来反复倒手一罐沙丁鱼罐头,每一次转手价格都水涨船高,双方账面上都赚得盆满钵满。直到有一天,其中一位交易员出于好奇打开了罐头,却发现里面的鱼早已发臭变质。 他愤怒地质问对方为何卖假货,对方却冷冷地回了一句名言: “谁让你打开的?这罐沙丁鱼是用来交易的,它就不是用来吃的。” 这一句话,直接戳穿了A股散户亏钱的底层逻辑:绝大多数人直到爆仓亏损,都没分清手里拿的标的到底具备的是“交易价值”还是“食用价值”。 核心公式:1%的“边际定价”决定了99%的财富 在资深投资心理学专家看来,股价与公司价值之间存在着显著的心理剪刀差。目前A股总市值超过100万亿,但每天参与真实成交的资金量往往不到1%。这种“边际定价(Marginal Pricing)”现象揭示了一个反直觉的真相:那1%的成交量(往往由极端情绪驱动),决定了剩下99%不交易资产的评估价值。 我们可以将这一逻辑凝练为核心公式: 股价 = 内在价值 × 估值情绪 ●内在价值(Intrinsic Value): 这是企业的压舱石。在数月甚至一两年的短周期内,由于生产线、订单和现金流的稳定性,内在价值的变动通常极其微小。 ●估值情绪(Sentiment Multiplier): 这是人心投射出的放大器。人心瞬息万变,今天市场狂热愿意给50倍市盈率,明天恐慌可能只给20倍。这种基于社会认同(Social Proof)的情绪波动,可以在一周内让股价腰斩,也能让其瞬间翻倍。 痛点一:拿“天气”去推测“地心温度” 散户交易者的第一个心理误区是:将价格波动等同于基本面恶化。 事实上,绝大多数时候股价的红绿数字并不反映公司经营状况。公司的产线没炸、管理层没跑路、行业壁垒依然稳固,变动的仅仅是交易者的博弈情绪。 “你拿价格去反推价值,等于拿天气去判断地球内部的温度。” 天气的阴晴圆缺不过是大气层的表象,它无法撼动地心的滚烫。如果你试图通过短期价格的“天气”去猜测公司价值的“地心温度”,本质上是在用噪音指导决策。 痛点二:便宜不代表能买,臭的永远是臭的 另一种致命逻辑是“价格锚定”带来的幻觉:跌了60%,总该见底了吧? 在职业金融专栏作家的视角下,这往往是典型的流动性陷阱。如果这罐“沙丁鱼”在100元时是腐臭的,跌到40元时它依然是腐臭的。价格的大幅回撤并不意味着内在价值的显现,往往只是说明“接盘侠”枯竭了。如果标的本身缺乏基本面和现金流支撑,无论跌到几折,它都不具备投资价值。 痛点三:故事只是“交易罐头”的包装纸 在A股市场,宏大的叙事、跨界赛道、大佬背书,本质上都是为“交易罐头”定制的包装纸。 我们需要认清一个残酷的真相:包装纸越华丽、越能引发市场共鸣,往往说明里面的东西越不能吃——因为设计这套包装的人,打从一开始就没打算持有。 这类标的呈现出典型的信息不对称: **●**机构博弈: 包装精美是为了制造足够的流动性,方便机构在极高换手率中“偷偷派发”筹码。 ●包装逻辑**:** 无业绩、无现金流,全靠情绪和期待支撑。 一旦换手率停滞,音乐停止,那些被包装纸迷惑而追高的散户,将不得不面对手中罐头腐臭的现实。 避坑指南:你是“资深饕客”还是“冷血雇佣兵”? 要避免成为接盘侠,你必须在买入前进行严苛的心理防御,确认你手中拿的是“使用罐”还是“交易罐”: **◆使用罐(投资逻辑/**饕客模式): **●**核心指标: 现金流、行业壁垒、股息分红。 **●**问询标准: 思考三年之后,这家公司是否能保持盈利并依然存在? **●**操作原则: 价格低于价值时入场,股价下跌是“折价购买”的红利。 **◆交易罐(投机逻辑/**雇佣兵模式): **●**核心指标: 筹码分布、量能换手、市场情绪。 **●**操作原则: 必须保持“冷血”,严格执行止损。不谈感情,不谈“长相”,只要音乐一停,立刻离场。 特别警示: 市场上最凄惨的群体,是那些拿着“交易罐”却在亏损后陷入认知失调(Cognitive Dissonance)的人。为了回避认错的痛苦,他们开始用“长期持有”、“与优秀企业共成长”等投资逻辑自我安慰。但请记住:如果罐头本身已经发臭,你等待再久,等来的也不会是价值回归,而是彻底的清零。 总结:音乐停了,你手里剩下了什么? 在点击“买入”按钮前,请务必进行最后一次灵魂拷问:我是打算真正“吃掉”这笔资产,还是打算在腐臭被揭开前卖给下一个倒霉蛋? 正如华尔街那句名言:用来交易的就别打开,用来吃的才配谈价值。 如果现在音乐戛然而止,你手里那罐经过层层加价的沙丁鱼,你真的敢打开闻闻它的味道吗?
浏览10
评论0
收藏0
用户头像9点半量化
2026-09-16 发布
你是否有过这样的经历:看好的股票被套了,于是开启“摊平之路”,越跌越买。然而,股价似乎深不见底,看着账户资产每天像冰淇淋一样在烈日下融化,最后你实在无法承受心理压力,在绝望中一把割肉。随后,股价却又奇迹般地反转。 对于很多散户而言,补仓被误解为简单的“低价摊低成本”。但在高手眼中,补仓绝非情绪化的豪赌,而是一套基于概率、空间与心理博弈的严密逻辑。为什么高手能在被套后实现反败为胜甚至盈利?答案就在于他们严守的几条“救命铁律”。 法则一:拒绝“退热”的大牛股——警惕心理锚定效应 很多投资者在补仓时常犯一个致命错误:迷恋曾经的“明星股”。 比如,一支股票从20元一路拉升到50元,由于涨得太快你不敢买;当它回落到35元时,你觉得它比最高点便宜了30%,是个“大捡漏”,于是疯狂补仓。 这里存在一个经典的“锚定效应”(Anchoring Effect):你的价值判断被锁定在了50元的巅峰,导致你产生“35元很便宜”的错觉。事实上,35元并不便宜,它只是“比峰值低”而已。一个短期内翻倍的股票一旦见顶,主力资金往往已经完成了大级别的撤退。此时的阴跌是价值回归,调整周期可能长达数月甚至数年。 鳄鱼法则: 如果你被鳄鱼咬住了脚,你愈挣扎,它咬得愈多。唯一的生存机会是牺牲一只脚。 在高位被套后,千万不要幻想通过补仓抓“第二波”,这种操作往往是拿自己的血汗钱去接主力的筹码。此时补仓唯一的逻辑应该是利用反弹果断止损离场,而不是加重负担。 法则二:抬头看天——利用 Beta 铁律规避系统性崩塌 补仓前,高手的第一眼看的永远不是个股盈亏,而是大盘指数。 金融学中有一个核心逻辑叫 Beta**(贝塔效应)。当市场进入非理性杀跌的系统性风险阶段,所有个股的相关系数会趋近于**** 1.0**——也就是说,覆巢之下无完卵,基本面再好的股票也会被泥石流冲走。 散户最容易在“大盘加速下跌”时补仓,本质上是在用有限的子弹对抗无限的趋势,这无异于自杀。 稳妥的补仓(右侧交易)时机: ●等待指数下行斜率由陡转平,下跌动能衰减。 ●观察大盘是否在形成“圆弧底”或横盘震荡。 ●明确看到指数的均线系统开始拐头向上。 法则三:拉开空间——没有价差的补仓只是重复错误 补仓的目的是摊薄成本,但很多人的操作更像是“连续下注”。 今天跌3%补一笔,明天跌2%补一笔。从账户上看,你补了两次,但实际上这两笔买入都挤在一个极小的价格区间内。这并没有起到真正的摊薄作用,反而让你在同一个仓位风险上迅速加码,缩短了你爆仓或心态崩盘的距离。 高手会为补仓设置明确的“空间阈值”: ●短线策略: 股价下跌空间至少拉开 8%-10% 以上,才会考虑启动下一次补仓。 ●中线策略: 价格差异起码要拉开 **15% **以上,甚至更宽。 “没有价差的补仓,那只是在同一个错误上重复加码。” 法则四:轻仓试探——资金管理是补仓的底层骨架 很多投资者补仓失败,根源在于第一笔买入的仓位过重。 在高手的思维逻辑里,资金管理(Money Management)永远优于技术分析。即便你对某个策略的胜率极有信心,第一笔买入也必须是“试探性”的。 第一笔买入的本意不是“决战”,而是“投石问路”,验证市场走势是否符合预期。当价格拉开空间,且出现以下下跌动能衰减的技术信号时,才是追加头寸的时刻: ●MACD 30****分钟底背离:这是捕捉短期技术性反弹或止跌的敏感指标。 ●KDJ ​****低位钝化:意味着空头情绪已释放到极致。 ●重要均线支撑位:股价触及具有战略意义的长周期均线。 记住,只有当市场信号验证了你的判断,你才拥有补仓的入场券。 法则五:敬畏周期——在板块轮动中等待你的“花开” 市场存在一个永恒的铁律:涨多必跌,跌多必涨。 当账户出现赤字,焦虑往往源于对“无限下跌”的恐惧。但现实中,市场是资金轮动的游戏。今天的热点是 AI,明天可能是 有色金属,后天又轮动到 煤炭 或 创新药。 只要你持有的标的逻辑没有被证伪,多一点耐心,给市场一点时间。很多时候,高手获利不是因为他们操作频繁,而是因为他们在周期底部比别人多守了一会儿。 耐心,本身就是一种极高阶的交易能力。 结语:从盲目补仓到逻辑驱动 补仓不是为了缓解被套的焦虑,而是一场基于逻辑、空间、资金管理和周期的精密部署。高手与韭菜的区别在于:高手在等待逻辑信号,而韭菜在祈祷奇迹发生。 下一次,当你看着账户翻红、手心冒汗想要点击“买入”键时,请先停下来自问:你是选择逻辑的尊严,还是选择盲目赌博的快感?
浏览11
评论0
收藏0
用户头像sh_***3272xs
2026-09-16 发布
早期做A股策略,用Python拉通了日K线,回测曲线挺好看,以为数据层搞定了。实盘上线后问题一个接一个:除权日跳空被策略当成下跌信号,两天后才反应过来是K线没做复权;想估滑点,发现手里只有K线,没有盘口,只能拍一个固定值;想做多因子,打开数据源一看,基本面覆盖哪些标的、不覆盖哪些,谁也说不清。 这些坑不是因为接口调不通,而是因为一开始就没看清A股数据到底有几层。 A股数据远不止“行情”两个字。至少分四层:行情、参考数据、基本面、接入方式。缺一层,你的策略就会在某个节点翻车。 这篇文章要做两件事:第一,把A股数据的四层结构摊开,让你在写第一行接入代码前就能画出数据架构图;第二,以一套统一API服务为具体参考,把每一层的实际能力、字段结构、边界条件讲清楚。 A股数据能力全景图 先看整体结构。从数据到用户,是一条四层的链路: ┌─────────────────────────────────────────────────────────────┐ │ 接入层(怎么拿) │ │ REST │ WebSocket │ AI 原生(Skill / MCP / CLI) │ └──────────────────────────┬──────────────────────────────────┘ │ ┌──────────────────────────▼──────────────────────────────────┐ │ 基本面层(公司是什么) │ │ 公司档案 │ 财务三表 │ 估值 │ 行业 │ 股东 │ 事件日历 │ └──────────────────────────┬──────────────────────────────────┘ │ ┌──────────────────────────▼──────────────────────────────────┐ │ 参考数据层(什么时候、对什么) │ │ 交易日历 │ 交易时段 │ 标的信息 │ 指数计算 │ 符号目录 │ └──────────────────────────┬──────────────────────────────────┘ │ ┌──────────────────────────▼──────────────────────────────────┐ │ 行情层(市场发生了什么) │ │ 快照 │ K线 │ 复权因子 │ 分时 │ 盘口 │ 逐笔 │ 资金流 │ └─────────────────────────────────────────────────────────────┘ 行情是地基,参考数据是框架,基本面是纵深,接入层是出口。四层缺一层,你的数据管道就会在某个节点断掉。 下面的内容以一个具体的实时行情API服务商(TickDB)为参考,它的A股能力覆盖了这四层。先建立结构,再看细节。 覆盖范围速查 ┌─────────────────────────────────────────────┐ │ A股数据覆盖范围(参考口径,2026-09-15) │ ├─────────────────────────────────────────────┤ │ 交易所 │ 上交所 SSE + 深交所 SZSE │ │ 标的 │ 全部A股标的 + 主要指数 │ │ 数据品类 │ Tick / Trade / Depth (L2) │ │ 实时性 │ 3秒快照 / 逐笔 │ │ 历史深度 │ 产品支持最长10年K线 │ │ │ (套餐分层:1 / 3 / 10年) │ │ 接入方式 │ REST + WebSocket + MCP/Skill/CLI│ │ 基本面包围│ 沪市 + 深市个股,不含北交所/ETF │ └─────────────────────────────────────────────┘ 一句话概括:官网明确覆盖上交所、深交所全部A股标的,数据品类含实时快照、K线、盘口、逐笔,产品支持最长10年历史K线。 你是哪类读者 你 → 打开文章 │ ├── 个人量化开发者 │ └─→ 行情层 + 复权层 + 最小可用组合 │ ├── 小团队数据工程师 │ └─→ 参考数据 + 基本面层 + 数据架构建议 │ ├── AI工具使用者 │ └─→ AI原生接入 + Agent工作流 │ └── 金融应用团队 └─→ 接入层 + 边界 + POC验收清单 行情层:市场发生了什么 行情层是地基。地基不稳,上面全塌。 品类 能力覆盖 解决什么问题 谁用它 实时快照 单标的/批量/全市场;open缺失表示集合竞价进行中 盯盘、开盘信号、下单前校验 盘中策略、看板、Agent取数 K线与历史 从1分钟到月线多个周期;A股5种复权,港股美股3种 回测、因子、图表、长期收益 量化研究、策略开发 复权因子 每笔公司行动对应前复权/后复权两条记录 自建复权逻辑、跨数据源校验 自建回测框架、审计场景 分时 分钟级价格路径,含价格、成交量、成交额、均价 日内研究、开盘冲击 日内策略、盘中监控 盘口深度 多档买卖盘;增强版、历史版、统计版 滑点估算、流动性分析 执行算法、流动性产品 逐笔成交 逐笔明细、VWAP、聚合成交、价格分布 真实买卖力量、大单行为 订单流研究、执行系统 资金流 主力净流入、主力买卖量、散户净流入 主力资金方向、情绪量化 情绪因子、资金监控 实时快照 单标的、批量、全市场三种模式。真实返回长这样: { "symbol": "688256.SH", "name": "寒武纪", "type": "stock", "category": "CN", "last_price": "1086.58", "open": "1055.00", "prev_close": "1053.98", "volume_24h": "9102334", "high_24h": "1092.50", "low_24h": "1048.00", "timestamp": 1754118000000 } A股集合竞价期间,open字段缺失是合法状态,不是接口出错。 用open是否存在判断是否进入正式交易,比比较当前时间更稳健。这个判断决定了你的开盘信号是在正式交易后触发,还是在集合竞价期间就误触发。 批量模式可以同时监控数百个标的,是跨市场看板的基础。 K线与历史行情 从1分钟到月线的多个周期,覆盖分钟、小时、日、周、月各个粒度。A股支持5种复权方式:不复权、前复权、后复权、前复权加法、后复权加法。港股美股只支持前3种。 { "symbol": "688256.SH", "interval": "1d", "adjust": "forward", "klines": [ {"timestamp": "2026-08-01T00:00:00Z", "open": 1040.00, "high": 1068.88, "low": 1030.01, "close": 1053.98, "volume": 8234521}, {"timestamp": "2026-08-02T00:00:00Z", "open": 1055.00, "high": 1092.50, "low": 1048.00, "close": 1086.58, "volume": 9102334} ] } 接口返回已结束周期的历史K线;当前形成中的周期用另一个接口。这个区分很重要——把形成中的bar当成已收盘bar用,会产生前视式信号。 复权因子 复权因子不是比例,是仿射变换。 每一笔公司行动对应一条前复权、一条后复权记录,公式是: adjusted_price = raw_price × factor_a + factor_b A股市场的factor_b恒为0,所以实际就是raw_price × factor_a。它的价值在于:你可以自己控制复权逻辑,而不是依赖数据源替你算。 前复权适合实时信号和最新价格对齐,后复权适合长期历史比较。混用会产生系统性误差——等价于在同一个价格序列里插入两套时间基准。 盘口、逐笔、资金流 盘口返回多档买卖盘: { "symbol": "688256.SH", "bids": [ {"price": 1086.00, "size": 200}, {"price": 1085.50, "size": 300} ], "asks": [ {"price": 1086.50, "size": 100}, {"price": 1087.00, "size": 350} ] } 盘口对时延极度敏感。用之前必须验证目标市场的实际可用性,不能从接口存在推断全市场覆盖。 逐笔成交返回逐笔明细,含价格、数量、时间、方向。逐笔是判断真实买卖力量的原始材料,比K线更早反映市场意图。 资金流返回主力净流入、主力买卖量、散户净流入等字段。A股资金流有三种常见口径——成交方向归因、大单资金流、主力资金流。这三个定义在不同数据源之间完全不兼容。用两个来源的资金流数据做比较,等于用两把不同刻度的尺子量同一个东西。 行情层的关键认知 如果你只接了K线和ticker,你的策略在除权日、集合竞价、停牌、换月这四个节点上,一定会有一次莫名其妙的回撤。 参考数据层:什么时候、对什么 参考数据层是框架。没有框架,行情数据就是一堆不知道能不能用的数字。 品类 能力覆盖 解决什么问题 谁用它 交易日历 按市场维护的交易日列表,含节假日 回测时间序列、缺口识别 所有回测系统 交易时段 集合竞价、连续竞价、午休、收盘的完整分段 实时策略状态机 实时系统、Agent 标的基础信息 名称、交易所、币种、股本、EPS、BPS、股息率 估值计算、身份确认 估值筛选、AI问答 指数计算 市场宽度、涨跌家数等汇总指标 大盘分析、状态识别 宏观择时、情绪判断 符号目录 全市场可查询标的清单,分市场分类型 选股候选池、UI适配 产品构建、研究准备 交易日历 回测时间序列的基础。我接入时踩过一个坑:首次用from/to参数请求返回400,按错误提示改为beg_day/end_day后才成功。接口参数名不能凭直觉猜,必须以实测或官方文档为准。 A股、港股、美股、期货的休市安排不同,多市场研究必须按市场维护独立的交易日历。“默认按工作日”是回测最常见的陷阱——如果回测框架里的交易日历和真实市场不一致,信号触发时间会系统性偏移。 交易时段 返回市场当天的开收市时段。A股集合竞价(9:15–9:25、14:57–15:00)、港股午休(12:00–13:00)、期货夜盘,这些是“数据有但不能按普通逻辑使用”的时段。不处理会导致策略在错误状态下运行。 标的基础信息 返回名称、交易所、币种、股本、EPS、BPS、股息率。估值计算的起点:当前价除以BPS就是PB,当前价除以EPS就是PE。 参考数据层的关键认知 **交易日历和交易时段不是可选知识,是必须在数据层明确处理的事实。**否则你的日内数据里会有一段“空洞”,或者策略在非交易时段收到错误信号。 基本面层:公司是什么 基本面层是纵深。行情告诉你价格怎么走,基本面告诉你这家公司值多少。 覆盖边界先说清楚:本文使用的数据服务,基本面接口覆盖沪市和深市个股,不覆盖北交所个股,不覆盖沪市和深市的ETF。 品类 能力覆盖 解决什么问题 谁用它 公司档案与高管 公司信息、业务简介、管理层名单 公司研究起点、治理分析 基本面研究、事件驱动 财务三表 利润表/资产负债表/现金流量表;最新期、年度、TTM三种口径 多因子、盈利质量、估值基础 财务因子、质量策略 业务与地区分部 按业务线或地区拆分的收入结构,含历史序列 收入结构分析、地缘风险 深度基本面、风险归因 估值指标 PE/PB/PS/股息率;当前快照+历史时序+一年高低位 估值分位、风格轮动 价值策略、择时 行业分析 同业公司、行业估值分布、行业排行、分类树 横向比较、行业轮动 行业策略、比较分析 资本行动 分红(含TTM)、回购、公司行动 事件驱动、收益策略、回测复权 红利策略、事件研究 股东与基金 最新股东结构、前十大股东、单股东明细、基金持仓 筹码分析、机构行为 筹码因子、机构跟踪 新闻与事件日历 个股新闻+全市场日历(财报、分红、拆股、IPO、宏观、休市、会议、并购) 事件驱动、风控禁入日 事件策略、风控系统 公司档案与财务三表 公司档案返回公司基本信息、业务简介、上市信息、员工数。管理层名单返回当前高管和董事列表,用于治理结构分析。 财务三表是基本面研究的核心。TTM口径只支持利润表和现金流量表,资产负债表不适用——这是财务分析的基本常识,但很多数据源不会主动告诉你。 财务数据必须带报告期和单位使用。跨公司比较时必须确认币种一致,跨期比较时必须确认报告期对齐。 估值与行业 估值指标返回PE、PB、PS、股息率的当前快照与历史时序,含一年高低位和中位数。历史估值分位分析是判断当前估值水平高低的核心方法。估值字段必须注明价格基准日,否则数字没有可比意义。 行业分析返回同业公司列表、行业估值分布、行业排行、行业分类树。横向比较估值的候选集、行业轮动策略的输入数据。 资本行动与股东 资本行动包含分红历史(含TTM)、回购记录、公司行动(拆股、合股、配股、代码变更)。分红除权日是A股价格出现向下跳空的触发日,回测时必须处理,否则系统会把除权跳空误判为价格下跌信号。 股东与基金包含最新股东结构、前十大股东、单股东明细、基金持仓。大股东持仓变动是市场情绪的重要信号。股东数据有披露延迟,不能当成实时信号使用。 基本面层的关键认知 **知道不覆盖什么,比知道覆盖什么更重要。**沪市深市个股覆盖,北交所和ETF不覆盖——这个边界决定了你的多因子选股范围。 接入层:怎么拿 接入层是出口。同一套数据,三种接入路径,对应三种使用场景。 ┌──────────────────────────────────────────────────────────────┐ │ 你的应用 │ │ 研究脚本 │ 实时看板 │ 交易系统 │ AI Agent │ 金融产品 │ └───────┬──────────┬──────────┬──────────┬─────────────────────┘ │ │ │ │ ┌────▼───┐ ┌───▼────┐ ┌───▼────┐ ┌───▼──────────┐ │ REST │ │WebSocket│ │ MCP │ │ Skill / CLI │ │ 批量拉取│ │ 实时推送│ │ Agent │ │ AI 工作流 │ │ 研究回测│ │ 盘中止损│ │ 工具调用│ │ 自然语言取数 │ └────┬───┘ └───┬────┘ └───┬────┘ └───┬──────────┘ │ │ │ │ └──────────┴──────────┴──────────┘ │ ┌────────▼────────┐ │ X-API-Key │ │ 统一认证 │ └─────────────────┘ 接入方式 认证 适用场景 关键特性 REST X-API-Key Header 研究、回测、批量拉取 字段结构固定,有错误码 WebSocket api_key Query 实时看板、盘中止损 密钥过期返回1008 AI原生 X-TickDB-Key Header Agent工作流、自然语言取数 先取结构化事实,再分析 REST 标准HTTP接口,X-API-Key认证。研究、回测、批量拉取的首选。字段结构固定,有错误码,适合写进代码长期跑。 WebSocket 流式订阅行情推送。官方文档明确支持A股的ticker、depth、trade三个频道。连接URL为wss://api.tickdb.ai/v1/realtime,查询参数api_key必填。 **密钥过期时,服务端通过close code 1008关闭连接,同时发送JSON消息说明原因。**重连逻辑必须区分正常断线和密钥过期,分别处理。 AI原生接入 Skill、MCP、CLI三档,通过X-TickDB-Key认证,让Agent直接调用结构化市场数据。 三档的定位: Skill:“对话即用·零配置”,适合PM/研究员/轻度用户 MCP:“一个托管HTTPS端点,让你的AI编码助手一次连接即获得13个行情数据工具” CLI:“终端直查实时行情,JSON/表格双输出,16个原生命令。为脚本和自主Agent设计” **AI原生接入的意义不是“让AI帮你查价格”,而是让模型先取得带标的、字段和时间戳的事实,再进行分析。**顺序反了,分析结论就没有可追溯的数据基础。 接入层的关键认知 **AI工作流中的行情数据,必须在模型推理之前到位。**让模型用记忆猜价格,是把分析过程变成幻觉生成过程。 四类读者的最小可用组合 不同角色的人,不需要接同一套数据。 个人量化开发者 最小组合:K线(含复权)+ 实时快照 + 交易日历 + 标的基础信息 起步路径:先用K线搭回测框架,确认复权口径统一;再加上实时快照做信号触发;交易日历处理非交易日空值;标的基础信息用于估值筛选。 最容易踩的坑:K线没做复权,除权日跳空被策略当成下跌信号。 小团队数据工程师 最小组合:交易日历 + 交易时段 + 复权因子 + 标的信息 + 基本面(财务/估值) 起步路径:先把参考数据层建好,再做行情管道;复权因子用于自建复权逻辑;基本面用于多因子研究。 最容易踩的坑:交易日历没按市场分开维护,多市场回测的时间轴对不齐。 AI工具使用者 最小组合:MCP/Skill/CLI + 实时快照 + 事件日历 起步路径:先用MCP或CLI接入实时快照,让Agent能取到带时间戳的事实;再加上事件日历,让Agent知道今天有什么值得关注的事件。 最容易踩的坑:让模型用训练数据里的历史价格回答“现在多少钱”,而不是先调接口取最新价格。 金融应用团队 最小组合:REST + WebSocket + 多市场统一接入 + 断线重连 + POC验收维度 起步路径:先做POC验收,确认目标市场的字段结构、实时性覆盖、边界处理;再做生产接入,实现断线重连和状态恢复。 最容易踩的坑:没有区分正常断线和密钥过期(1008),重连逻辑一刀切。 覆盖边界与注意事项 基本面覆盖边界:本文使用的数据服务,基本面接口覆盖沪市和深市个股,不覆盖北交所个股,不覆盖沪市和深市的ETF。文中实测的基本面数据样本是688256.SH和600519.SH,均为沪市个股。 资金流口径:A股资金流有三种常见口径,不同数据源之间不兼容。文中展示的字段结构是一套具体实现,跨平台比较之前必须先对齐口径。 复权因子:A股市场的factor_b恒为0,复权公式实际就是raw_price × factor_a。港股美股的支持参数与A股不同。 动态数值:文中涉及的覆盖数量、标的数量等动态信息,以官网和官方文档当前口径为准。官网明确覆盖上交所、深交所全部A股标的,产品支持最长10年K线,套餐分层为1/3/10年。 单次调用边界:任何一次调用成功只证明该时间、样本、请求参数和该API Key权限下的接口行为,不构成全市场覆盖、长期稳定性或投资表现的主张。 结尾 A股行情数据不是“拿到K线就够了”——至少有行情、参考数据、基本面、接入方式四层能力,每层解决不同的问题。 在项目初期就看清完整的数据全景图,比在回测失败后逐个排查遗漏的成本低得多。 你现在就能做的一件事:打开自己的策略代码,对照下面的检查清单,看看每一层数据你是否已经接入或明确不需要。 A股数据接入检查清单 能力层 品类 是否需要 是否已接入 行情 实时快照 行情 K线(含复权) 行情 复权因子 行情 分时 行情 盘口深度 行情 逐笔成交 行情 资金流 参考 交易日历 参考 交易时段 参考 标的信息 参考 指数计算 参考 符号目录 基本面 公司档案 基本面 财务三表 基本面 估值指标 基本面 行业分析 基本面 资本行动 基本面 股东与基金 基本面 新闻与日历 接入 REST 接入 WebSocket 接入 AI原生 把这张表填完,你的数据架构图就出来了。 关于本文参考的统一数据服务 本文全程以 TickDB 作为参考实现,把 A 股数据的四层能力落到具体的接口、字段和边界。官网截至 2026-09-15 描述的核心能力如下: 维度 能力 覆盖范围 上交所、深交所全部 A 股标的;主要指数;另有美股、港股、期货、外汇 数据品类 Tick / Trade / Depth (L2)、K 线、分时、复权因子、资金流、基本面 25 个端点 实时性 3 秒快照 / 逐笔;WebSocket 支持 ticker、depth、trade 三个 A 股频道 历史深度 产品支持最长 10 年 K 线;套餐分层 1 / 3 / 10 年 接入方式 REST + WebSocket + AI 原生(Skill / MCP / CLI),统一 X-API-Key 认证 基本面包围 沪市 + 深市个股;不覆盖北交所个股,不覆盖沪市和深市 ETF 它适合什么人? 个人量化开发者:第一次接 A 股数据,想用一套 API 把四层数据都接上,不想自己拼多源。 小团队数据工程师:要建数据管道,想先看清 A 股数据有几层,再决定用哪一层。 AI 工具使用者:想让 Agent 取到带时间戳的结构化数据,而不是靠模型记忆猜价格。 金融应用团队:需要多市场统一接入、断线重连、错误码规范的工程化数据层。 它不适合什么人? 已经有完整的数据管道,只想替换其中某一个接口的团队——本文的能力对照仍然有用,但不一定需要换整套服务。 只需要免费方案就能覆盖全部需求的场景——本文全篇讨论的是“自建数据层的成本有多高”,如果你的自建成本极低,不需要额外付费。 如果决定试一下,怎么开始? 先按文末检查清单,列出你自己策略实际需要的数据层。然后从最小可用组合入手——多数个人量化开发者只需要 K 线(含复权)+ 实时快照 + 交易日历 + 标的基础信息这四类。跑通之后再决定是否扩展到盘口、逐笔、基本面。 附录A:常见接口示例 端点 功能 /market/ticker 单标的/批量行情快照 /market/ticker/cn-stock A股全市场快照 /market/kline 历史K线 /market/kline/latest 最新K线 /market/kline/ex-factors 复权因子 /market/intraday 分时数据 /market/depth 盘口深度 /market/trades 逐笔成交 /market/trades/vwap VWAP /market/capital-flow 资金流 /market/trade-days 交易日历 /market/trading-sessions 交易时段 /market/stock-info 标的基础信息 /market/calc-index 指数计算指标 /market/intervals/kline 可用K线周期 /symbols/available 符号目录 /fundamentals/profile 公司档案 /fundamentals/financials/latest 最新财务 /fundamentals/financials/ttm TTM财务 /fundamentals/valuation/latest 估值快照 /fundamentals/valuation/ts 估值时序 /fundamentals/dividends 分红历史 /fundamentals/corp-actions 公司行动 /fundamentals/shareholders/top 前十大股东 /fundamentals/calendar 财经日历 /fundamentals/news 个股新闻 /realtime WebSocket实时订阅 附录B:错误码速查 HTTP 业务码 含义 400 2001 港股/美股不支持加法复权 401 1005 API Key过期 403 3009 接口未开放 403 3010 市场未开放 404 40404 上游无数据 404 40405 查询条件无有效业务数据 422 5006 复权基础数据不可用 429 — 请求频率超限 503 5005 复权因子不可用 WS close 1008 — 密钥过期 附录C:常见问题 Q:A股集合竞价期间为什么没有开盘价? A:集合竞价期间(9:15–9:25、14:57–15:00)open字段缺失是合法状态。只有9:25统一撮合之后,open才会出现。 Q:基本面数据覆盖北交所吗? A:本文使用的数据服务,基本面接口覆盖沪市和深市个股,不覆盖北交所个股,也不覆盖沪市和深市的ETF。 Q:资金流数据可以直接当买卖信号吗? A:不能。资金流是市场参与者行为的量化描述,不是买卖信号。而且不同数据源的资金流口径不兼容,引用前必须先冻结口径定义。 Q:WebSocket断线后怎么处理? A:要区分正常断线和密钥过期。密钥过期时服务端返回close code 1008并发送JSON消息说明原因,两种情况的处理方式不同。 Q:TradingView图表可以直接用这套数据吗? A:REST API可以作为TradingView UDF后端的数据源层,但需要开发者自己实现UDF协议的包装层。这套服务在这里承担的是后端数据提供角色。 *文中实测数据来自2026-09-15的API调用,样本标的为688256.SH(寒武纪)和600519.SH(贵州茅台)。
浏览10
评论0
收藏0
用户头像sh_*2176oo
2026-09-16 发布
一句话回答: 布林带均值回归的假设是"价格偏离均线太远会回归"。用 AlphaFeed 取复权日线算出中轨(20 日均线)和上下轨(±2 倍标准差),跌破下轨买入、价格回到中轨止盈,关键是用 T-1 收盘信号、T 开盘成交 避免未来函数,并把手续费算进去——几十行就能诚实地回测这套抄底逻辑值不值。 为什么会有这个问题 / 传统做法的痛点 "跌破布林带下轨就抄底"是网上最流行的说法之一,但真回测时最容易踩两个坑: 未来函数:用当天收盘价判断信号、又用当天收盘价成交,等于"看到收盘才下单还能按收盘成交",回测收益虚高; 不算成本:均值回归交易频繁,手续费/滑点吃掉的收益常被忽略,纸面漂亮实盘亏钱。 正确做法是:信号用已收盘的 T-1 数据,成交用 T 日开盘价,并扣除每笔手续费。数据用前复权日线,保证历史价格连续可复现。 分步骤解决(每步配可运行代码) 第 1 步:取复权日线并计算布林带 from alphafeed import AlphaFeed af = AlphaFeed(api_key="your-api-key") # 或 export ALPHAFEED_API_KEY 后 AlphaFeed() df = af.klines.get("600519.SH", period="1d", count=500, adjust="forward", to_dataframe=True) df = df.sort_values("trade_date").reset_index(drop=True) win, k = 20, 2.0 ma = df["close"].rolling(win).mean() sd = df["close"].rolling(win).std() df["mid"] = ma # 中轨 df["lower"] = ma - k * sd # 下轨 df["upper"] = ma + k * sd # 上轨 布林带参数: 参数 含义 常用取值 win 中轨均线窗口 20(日线经典值) k 标准差倍数(带宽) 2.0(约覆盖 95%) 买入条件 收盘 ≤ 下轨 价格超跌 止盈条件 收盘 ≥ 中轨 回归均值 第 2 步:防未来函数的回测循环 import numpy as np def bollinger_backtest(df, win=20, k=2.0, fee=0.0006): ma = df["close"].rolling(win).mean() sd = df["close"].rolling(win).std() df = df.copy() df["mid"], df["lower"] = ma, ma - k * sd pos = 0 rets = np.zeros(len(df)) for i in range(1, len(df)): prevc = df.loc[i - 1, "close"] o, c = df.loc[i, "open"], df.loc[i, "close"] low_b, mid_b = df.loc[i - 1, "lower"], df.loc[i - 1, "mid"] # T-1 信号 if np.isnan(low_b): continue if pos == 1: rets[i] = c / prevc - 1 # 持仓当日收益 if prevc >= mid_b: # T-1 已回中轨 → T 开盘止盈 rets[i] = (o / prevc - 1) - fee pos = 0 continue if pos == 0 and prevc <= low_b: # T-1 跌破下轨 → T 开盘买入 pos = 1 rets[i] = c / o - 1 - fee df["strat_ret"] = rets df["nav"] = (1 + df["strat_ret"]).cumprod() df["bench"] = df["close"] / df["close"].iloc[0] mdd = float((df["nav"] / df["nav"].cummax() - 1).min()) return df, { "strat_nav": round(float(df["nav"].iloc[-1]), 3), "bench_nav": round(float(df["bench"].iloc[-1]), 3), "strat_maxdd": round(mdd, 3), } 第 3 步:跑回测看结果 _, stats = bollinger_backtest(df) print(stats) # 例如:{'strat_nav': 1.242, 'bench_nav': 0.974, 'strat_maxdd': -0.048} 对贵州茅台近 500 个交易日的样本,这套"跌破下轨买、回中轨卖"的策略净值约 1.24、买入持有约 0.97,最大回撤仅约 -4.8%——在震荡/温和下跌市里,均值回归靠低吸高抛跑赢了持有,且回撤明显更小。但这只是单只标的、单段区间的示例,绝不能外推为普适结论(见下)。 关键坑与注意事项 未来函数是头号杀手:信号必须来自 i-1(已收盘),成交价用 i 的开盘价。用当日收盘既判断又成交是最常见的作弊。 均值回归的天敌是趋势:单边大跌时"跌破下轨"会一路补仓一路套(接飞刀),本策略在趋势市可能持续亏损。实盘务必加止损或趋势过滤(如只在价格位于长期均线上方时做多)。 手续费/滑点:本文按双边约 fee=0.0006 计一次,频繁交易时成本敏感;换标的、换周期务必重算。 参数过拟合:win/k 别在历史上反复调到最优——那是过拟合。用样本外数据检验稳健性。 复权口径:一律前复权,否则除权跳空会误触发下轨买入信号。 常见问题(FAQ) Q:为什么不用当天收盘价成交,代码更简单? A:因为收盘价在收盘那一刻才确定,你无法"按收盘价"提前成交。用 T 开盘成交是贴近现实、且能避免未来函数的标准做法。 Q:这个策略能直接拿去实盘吗? A:不能。它是教学示例,只在特定标的/区间上表现好。实盘前至少要做多标的、多区间、样本外检验,并加止损与趋势过滤。 Q:能改成"触及上轨做空"吗? A:逻辑上可以对称写,但 A 股个股做空受限(融券券源少、成本高),务必诚实评估可行性,别把不能落地的空头收益计入回测。 Q:需要付费吗? A:单只标的的历史日线在免费额度内即可回测;批量多标的检验需 Starter 及以上,详见 AlphaFeed 定价页。 小结 布林带均值回归回测的本质,是"在可复现的复权价上,用 T-1 信号 + T 开盘成交 + 扣费,诚实检验低吸高抛值不值"。代码不难,难的是不骗自己——避免未来函数、算清成本、承认它在趋势市会失效。AlphaFeed 提供口径一致的复权日线,让你把注意力放在策略的诚实性上。 参考 AlphaFeed Python SDK 文档:https://docs.alphafeed.org/zh-Hans/sdk/python-quickstart
浏览12
评论0
收藏0
用户头像sh_****447dvu
2026-09-16 发布
概述 在美股量化策略开发、回测验证与实盘监控的工作流中,高质量的实时行情数据源是模型有效性的基础。笔者在搭建个人美股策略监控工具的过程中,对富途OpenAPI开展接入测试,过程中遇到账户准入、权限订阅、接口限流等现实约束。本文从量化研究的实际需求出发,记录测试过程与选型思考,供同样做美股策略开发、回测与工具开发的研究者参考。 本次测试需求限定为:获取美股实时行情,用于策略信号监控,不涉及交易下单逻辑,目标是完成数据接收、指标计算与信号告警,用于辅助策略验证。 富途OpenAPI实际接入约束 富途OpenAPI具备行情+交易一体化能力,但在仅做行情数据读取的场景下,存在几项不可忽略的前置条件与技术限制。 账户与权限准入约束 调用接口前需要开通证券账户,并完成资质核验以及行情权限审批流程。材料提交与审核周期会拉长原型验证的时间成本,对于仅需要开展回测、行情采样、策略预研的场景,该准入条件会形成客观门槛。 行情权限分级订阅机制 实时行情采用分级授权模式,美股Level1、Level2数据为相互独立的订阅项,港股、A股行情也需要单独开通权限。若研究项目需要覆盖多市场标的,需要按市场、数据等级逐项完成订阅,会增加数据源管理的复杂度与使用成本。 接口并发与调用频率限制 接口设置有并发上限和请求频率阈值。在量化研究场景中,批量扫描多标的、高频采样价格用于因子计算时,很容易触发限流,会直接影响数据采集连续性,进而干扰回测样本、实时信号的可靠性。 从量化研究角度看,该方案的核心矛盾在于:仅做行情采集、因子加工、策略监控,却需要完整绑定券商账户体系,系统耦合度较高。 完成上述测试后,重新梳理量化场景下的核心诉求:获取稳定的实时行情数据流,减少无关业务流程干扰,把研发资源集中在因子处理、信号逻辑、回测模型等核心研究环节。 下面为可直接用于行情订阅测试的Python WebSocket示例代码,可用于快速验证数据流的可用性,便于接入后续的数据清洗与策略处理模块: import json import websocket API_KEY = "your_alltick_api_key" WS_URL = f"wss://quote.alltick.co/quote-stock-b-ws-api?token={API_KEY}" def on_open(ws): subscribe_msg = { "cmd_id": 22004, "seq_id": 1, "trace": "sub-us-stock", "data": { "symbol_list": [ {"code": "AAPL.US"}, {"code": "TSLA.US"} ] } } ws.send(json.dumps(subscribe_msg)) def on_message(ws, message): data = json.loads(message) # 此处可扩展:行情字段解析、因子计算、策略信号判断逻辑 print("收到行情:", data) def on_error(ws, error): print("连接出错:", error) def on_close(ws, close_status_code, close_msg): print("连接关闭,准备重连") if __name__ == "__main__": ws = websocket.WebSocketApp( WS_URL, on_open=on_open, on_message=on_message, on_error=on_error, on_close=on_close ) ws.run_forever() 脚本运行后,短时间内即可获取标的实时行情,返回数据字段规整,无需处理账户校验、多层权限逻辑,适合原型阶段的数据接入验证,可快速对接后续的数据预处理、回测样本构建、实时监控模块。 场景适配分析 没有通用最优的数据源方案,选型取决于量化项目的完整链路需求。 富途OpenAPI更适配行情+实盘交易一体化的开发场景,如果策略最终需要对接下单、持仓查询、账户状态管理,该一体化接口具备明显优势。 如果工作重心集中在数据采集、因子研究、回测迭代、策略监控,不涉及交易环节,则开户审核、分级订阅、接口限流等条件会带来额外的工程负担,需要评估投入产出比。 研究小结 富途OpenAPI依赖证券账户及权限审核,不同市场、不同层级行情需独立订阅,选型时需要把这部分成本纳入量化项目评估; 高频批量采样行情用于因子计算时,必须关注接口并发与频率限制,避免数据断流影响回测与实时信号质量; 数据源选型应优先区分研究目标:是需要完整交易链路,还是仅做行情数据获取。明确需求可以减少不必要的工程与时间消耗。 针对仅需行情数据的研究场景,可以考察 AllTick API,规避券商账户体系带来的接入约束,聚焦模型与策略本身的研究工作。 注:本文仅为技术接入实践分享,不构成投资建议。量化策略效果取决于模型逻辑、样本质量、参数调优等多重因素,数据源仅为工具环节之一。
浏览13
评论0
收藏0
用户头像sh_*219t3e
2026-09-08 发布
亲测最好用的AI编写量化策略工具,可以让 AI 直接写各个平台的策略代码,直接生成可运行的策略代码,代码质量远高于直接使用 DeepSeek、Trae 等平台。大家可以直接用描述策略,然后一键生成可运行的完整策略代码,也可以把它当做一个API 查询工具。 最新消息,已经支持SuperMind等主流量化平台啦,并且实盘亲测过了,很适合小白用户,上线之后获得了非常多朋友的好评。 🚀️Supermind AI量化助手:https://easyquant.ai
浏览159
评论5
收藏0

上课老师给的惊天大策略

用户头像worsle
2026-09-16 发布
上课老师给的惊天大策略
浏览11
评论1
收藏0
用户头像sh_****559rtx
2026-09-16 发布
如果你正在把 R-Breaker 从历史回测推向股票、外汇、黄金实时行情,先别急着调参数。更值得检查的是:数据链路是否闭合、K 线是否完成、信号是否可复现。我做过高校金融系讲师,也带过创业团队做策略工具,下面按研究痛点、数据需求、支持方案、学术价值四个部分,分享一套偏实战与研究交流的工程化思路。面向量化投资者与策略研究者,重点在数据、回测、模型和工具的实际应用价值。 研究痛点:回测一致性与实时触发 R-Breaker 基于前一交易周期 OHLC 计算关键价位。常见痛点包括: 当前 K 线未闭合就计算,导致参数漂移。 Tick 直接触发,噪声过高。 股票、外汇、黄金交易时段不同,上一周期定义不统一。 断线重连后,状态恢复不完整。 这些问题不解决,回测结果很难映射到实时运行。 数据需求:OHLC、K 线聚合与订阅 先取上一周期 High、Low、Close,计算六个价位: Pivot = (High + Low + Close) / 3 SetupBuy = Pivot + (High - Low) SetupSell = Pivot - (High - Low) BreakBuy = High + 2 × (Pivot - Low) BreakSell = Low - 2 × (High - Pivot) EnterBuy = 2 × Pivot - Low EnterSell = 2 × Pivot - High 实际使用时,建议先把实时 Tick 聚合为 1 分钟、5 分钟或其他周期 K 线,再用已结束周期计算 R-Breaker 参数。这样策略计算与行情频率解耦,便于回测复现。 实时订阅可采用 WebSocket。以下示例按 AllTick API 的请求结构组织,便于替换标的: import json import websocket class Feed: def __init__(self): self.url = ( "wss://quote.alltick.co/" "quote-stock-b-ws-api?token=YOUR_TOKEN" ) self.ws = None def on_open(self, ws): print("WebSocket connected") sub_param = { "cmd_id": 22002, "seq_id": 123, "trace": "stock-dashboard-demo", "data": { "symbol_list": [ { "code": "AAPL.US", "depth_level": 5 }, { "code": "MSFT.US", "depth_level": 5 } ] } } ws.send(json.dumps(sub_param)) print("Stock data subscribed") def on_message(self, ws, message): try: data = json.loads(message) print(data) except json.JSONDecodeError: print("Invalid message:", message) def on_error(self, ws, error): print("WebSocket error:", error) def on_close(self, ws, close_status_code, close_msg): print("Connection closed") def start(self): self.ws = websocket.WebSocketApp( self.url, on_open=self.on_open, on_message=self.on_message, on_error=self.on_error, on_close=self.on_close ) self.ws.run_forever() if __name__ == "__main__": feed = Feed() feed.start() 支持方案:信号链路与 BarBuilder 策略工作链路: WebSocket ↓ 实时 Tick ↓ 1分钟K线聚合 ↓ R-Breaker 参数计算 ↓ 实时价格触发 ↓ Buy / Sell Signal ↓ 交易执行模块 例如: if current_price > break_buy: signal = "BUY" elif current_price < break_sell: signal = "SELL" else: signal = None 但真实策略不会这么简单。R-Breaker 参数应来自已经完成的上一周期,而不是正在形成的 K 线。否则 High、Low、Close 持续变化,关键价位漂移,回测与实时运行结果容易不一致。 多市场差异需要显式处理: 外汇:连续交易,上一交易日定义需结合策略周期。 股票:开盘、收盘、不同市场交易时段不同。 黄金:实时价格可获取,但日切时间和数据源定义影响 OHLC。 因此,不要将 high、low、close 写死,而应单独实现 BarBuilder: class BarBuilder: def update(self, tick): # 根据 tick 更新当前 K 线 pass def close_bar(self): # 当前周期结束 # 返回完整 OHLC pass 这样从 EURUSD 切换到 GOLD,或从 GOLD 切换到 AAPL,R-Breaker 主体基本无需修改。 学术价值:可复现、可审计、可扩展 从研究角度看,R-Breaker 的价值不只在参数本身,而在它迫使我们处理时间对齐、K 线闭合、断线恢复和多市场适配。对量化投资者与策略研究者而言,可复现性比短期曲线更重要。你如果要在股票、外汇、黄金实时行情中运行 r-breaker,建议先把数据、回测、信号触发三层拆开,再逐步优化模型与执行。
浏览17
评论0
收藏0