全部
文章&策略
学习干货
问答
官方
用户头像牛熊仔
2026-10-24 发布
为什么手机不能访问量化回测了,前几天都可以的,也没有公告。
浏览22
评论0
收藏1

精华 长期有效,公开征集意见反馈。

用户头像量化官方小助理
2023-03-09 发布
请大家不要客气,任何意见建议可以在这里评论提出。 被采纳后我们将奖励1G研究环境内存 3个月。
浏览26280
评论191
收藏8
用户头像me_222883480886
2026-10-24 发布
系统升级后,回测出错: ERROR回测运行错误: OperationalError: (psycopg2.OperationalError) FATAL: password authentication failed for user "hxquant" (Background on this error at:** https://sqlalche.me/e/14/e3q8) ** 用系统默认策略回测也是一样情况。
浏览22
评论0
收藏0
用户头像sh_***827nmq
2026-10-23 发布
您好,拟在 SuperMind 研究环境中进行无真实交易的数据校验,请协助提供以下官方文档或可用接口说明: 当日证券状态 是否有覆盖沪市主板、深市主板和创业板的退市整理状态及当日无涨跌幅限制标志?请说明接口、字段枚举、覆盖范围、适用交易日、更新时间及历史查询能力。 get_current / Bar 和 get_price 的 high_limit、low_limit 是否始终代表对应交易日实际生效的价格限制,而非参考价格?无限制交易日如何编码(含 IPO 前五日、重新上市首日、退市整理首日及其他特殊安排)?停牌、缺失或尚未更新时如何区分?仅取得有限正数能否确认当日存在有效限制? 待分析股票事件状态 是否有可按证券查询的监管立案调查与重大资产重组生命周期数据?需要区分有效进行中、终结/撤销及更正,并取得首次公开时间、后续更新时间、状态生效时间、终结时间和原公告链接。请说明接口、字段、事件覆盖边界、完整性与更新时效,以及能否查询某个历史截止时点当时已公开的状态。用途仅为检查待分析股票,不要求全市场公告逐一穷尽。 研究文件加载与环境异常 请提供研究文件上传后使用 read_file 和 Python 原生 import 加载完整 .py 模块的正式方法:支持目录/相对路径、扩展名、编码、文件大小限制、上传后的可见性及覆盖更新后的缓存处理。read_file 返回类型是什么,原生 import 是否需要额外配置? 2026-10-23 约22:19(北京时间)通过正常界面上传完整 .py 文件后,目录一度未显示,约22:29才出现。同期间新建 Python3 小 notebook 曾提示“创建代码失败……error”;随后虽能新建空白 notebook,未执行代码的内核仍持续 busy、Memory 0M/0G。界面当时存储约455.44M/1G、内存约229.53M/2G,均有余量。首次正常点击 Stop My Server 后未观察到停止完成,稍后在确认无运行任务后正常重试,约22:52已确认停止;按默认 Python3.5 启动后尚在等待完成。请协助说明可能需要检查的原因和正式恢复步骤,我们不预设故障原因。 感谢。
浏览15
评论0
收藏0
用户头像sh_*219t3e
2026-09-23 发布
亲测最好用的AI编写量化策略工具,可以让 AI 直接生成同花顺Supermind上可运行的策略代码,代码质量远高于直接使用 DeepSeek、GPT等平台。 😃Supermind AI工具入口:https://easyquant.ai/ 大家可以直接向AI描述策略,然后一键生成可运行的完整策略代码,也可以把它当做一个API 查询工具。
浏览586
评论17
收藏0
用户头像sh_***1145dp
2026-10-23 发布
实时市场数据API怎么选:先验覆盖,再测时效与成本 摘要: 接入股票、外汇、期货、指数或加密行情,怎样判断实时市场数据 API 是否适合项目?先把品种、字段和业务用途写成需求矩阵,再分别验证 REST 查询与 WebSocket 推送,最后用采样、重连测试和授权核对决定是否采购。能收到报价不代表有逐笔、完整盘口或可补齐的历史;接收时间与源时间之差也只有在时间口径明确、时钟同步后才有比较意义。 选型最容易出错的时刻,是收到第一条行情之后。接口返回成功,只证明这次请求或订阅产生了响应;它没有回答高峰期是否跟得上、断线后能否恢复、历史够不够,以及数据能否用于你的产品。 一个可执行的顺序是:先确认不可缺失的能力,再验证实际交付质量,最后比较同一使用范围下的总成本。 功能缺项不能靠低价抵消,授权未确认也不能靠技术接通代替。以下方法适用于行情看板、价格提醒、研究工具和数据服务集成;行情接口本身不等于下单或交易接口。 一、先列需求矩阵,覆盖必须具体到品种与字段 先从一个真实用例出发。自选股看板可能只需要最新价、涨跌幅和更新时间;价差提醒需要买卖报价及其时间;盘口分析需要明确档位、数量单位和更新方式;回测还需要对应粒度的历史、复权或合约连续化口径。不要把这几种任务统一写成“需要实时行情”。 把每条需求标为“必需”或“可选”,并为必需项写明缺失时如何处理。“待核实”是证据状态,不能自动变成“可选”。 需求维度 应写清的内容 验收证据 资产与身份 市场、品种、合约月份、代码、计价单位 代码映射和目标品种响应 字段与语义 最新价、买卖价、成交量、时间戳、盘口档位 字段字典和有效样本 更新与时段 事件推送或定频、常规与延长时段、日历 分时段采样记录 历史与口径 起止日期、日线或分钟、复权、连续合约规则 边界日期与分页查询 容量与用途 同时订阅数、请求量、用户规模、内部或对外展示 压力测试和书面授权 不同资产尤其容易在“字段同名”处产生误会。股票成交量可能使用股或手;期货必须区分具体到期合约与连续序列;指数值不等于可交易标的的成交价;加密资产要说明交易场所与交易对。外汇买卖报价流不能直接解释为集中订单簿,也不能把每次报价变化当作一笔已成交交易。 以 TickDB 作为多资产候选时,官方文档提供了 REST 和 WebSocket 接入,并按频道列出市场与字段。评估时仍应回到目标品种和频道:Ticker、Depth、Trade 的适用范围并不相同,支持某个市场的报价不推出该市场所有品种都有逐笔、深度或完整历史。 二、REST 与 WebSocket 按任务分工,频道权限单独验收 历史区间查询、首次加载和低频点查,优先验证 REST;连续报价、逐笔或盘口变化,优先验证 WebSocket。多数实时应用会同时使用两者,但历史回补、快照与推送能否衔接,必须由接口能力和时间或序列规则决定。 图 1:查询与推送的职责分工示意。快照、回补和流式数据的衔接需验证,不能假定天然无缝。 REST 需要核对单次可查品种数、时间窗口、分页、限流、超时和错误响应。WebSocket 则要核对鉴权、订阅反馈、频道字段、单连接订阅数、总连接数、心跳以及重连后的重新订阅。 “连接已打开”不是“订阅已生效”。应记录订阅请求、成功或失败反馈,以及每个目标品种收到的第一条有效业务消息。若协议没有明确成功回执,就用文档规定的方式与首条有效数据共同判定,不能自造确认机制。 同样,“支持 WebSocket”不等于“提供完整盘口”。需要分别确认报价、逐笔成交、深度是哪些频道,深度是完整快照还是增量,以及覆盖档位与频率。TickDB 的官方 Depth 文档将其 timestamp 描述为服务端时间,而 Trade 文档使用成交时间;因此即使字段同名,也不能未经核实就放在同一张延迟排行榜里。 三、用可解释的样本验收时效、完整性与恢复 先固定采样条件:供应商、套餐、目标品种、频道、测试日期、交易时段、采集机器区域和网络环境。至少包含活跃与低活跃品种、开收盘附近和常规时段;夜盘或延长时段属于需求时,也要单独覆盖。测试长度由业务风险决定,一次短时试接不能代表长期可用性。 时间先分口径,再算分位数 每条消息保存原始内容、供应商时间字段、客户端接收时间和连接编号。明确时间字段表示成交发生、源处理、服务端发送,还是快照生成;统一单位与时区,并记录采集机器的时钟同步情况。无法确认字段含义时,只报告“到达时间与源时间之差”,不要称为交易所到客户端延迟。 用墙钟时间与源时间作差,用单调时钟测量本机处理耗时和重连耗时。负差值应作为时钟或口径异常保留;只给平均值会隐藏尾部积压,应同时报告样本量、P50、P95、P99及异常数量。分位数按品种、频道和时段拆开,避免低频品种与高频品种互相掩盖。 下面的标准库脚本读取已经标准化的 CSV,统计非负时间差分位数和时间回退。CSV 列为 symbol,channel,event_ms,recv_ms,时间统一为整数毫秒,并保持接收顺序。event_ms 是采集层归一化字段,只有源时间确实表示事件时间时才这样解释;否则应在报告中保留真实时间语义。 import csv, math, sys from collections import defaultdict groups = defaultdict(list) with open(sys.argv[1], newline="", encoding="utf-8") as f: for row in csv.DictReader(f): groups[(row["symbol"], row["channel"])].append(row) for key, rows in sorted(groups.items()): ages, negative, missing, regressions = [], 0, 0, 0 high_water = None for row in rows: # Input must preserve arrival order. try: event = int(row["event_ms"]) recv = int(row["recv_ms"]) except (ValueError, KeyError, TypeError): missing += 1 continue age = recv - event negative += age < 0 if age >= 0: ages.append(age) regressions += high_water is not None and event < high_water high_water = event if high_water is None else max(high_water, event) ages.sort() def pct(q): return ages[math.ceil(len(ages) * q) - 1] if ages else None print(key, {"rows": len(rows), "invalid_time": missing, "negative_age": negative, "time_regressions": regressions, "nonnegative_n": len(ages), "p50_ms": pct(.50), "p95_ms": pct(.95), "p99_ms": pct(.99)}) 保存为 audit_samples.py,使用 python audit_samples.py samples.csv 运行。这里的代码用于离线采样分析,不连接供应商,也不测量网络丢包。负差值不进入分位数,必须连同数量单独报告;无有效非负样本时结果为 None,不应填成零。时间回退只提示需要调查,不能单凭它断定网络乱序或数据错误;订阅快照、修正消息和时间精度都可能影响结果。 完整性需要分母,消息少不等于丢包 如果协议提供序列号,先确认序列是全局、按品种还是按频道递增,以及重连是否重置,再检查缺口。没有序列号、可对账事件全集或可靠补数接口时,不能把收到的消息条数换算成“丢消息率”。WebSocket 的应用层缺消息也不等同于网络层丢包。 没有完整分母时,仍可验收必需字段缺失率、活跃时段静默区间、历史时间格覆盖及抽样一致性。静默不必然是故障:停牌、休市、低成交和仅推送变化值都可能正常。盘口增量丢失后的修复方式与报价快照不同;只补一条最新价无法重建漏掉的逐笔历史。 重连要恢复业务状态,再恢复“实时”标识 图 2:断线恢复验收示意。恢复连接、恢复订阅和恢复数据连续性是三个不同结果。 在测试环境主动断开连接,记录断线检测、重新鉴权、重新订阅、首条有效数据和状态同步各自用时。恢复后检查是否丢订阅、重复处理旧消息,或把陈旧缓存重新标成实时。需要增量状态的频道应按协议重新同步快照和序列;不能补齐的区间应在存储和界面中保留缺口标记。 再与独立权威来源抽样核对。比较前统一品种、时段、报价或成交类型、复权、时间精度和来源覆盖;不同场所或不同报价贡献源的价格并不必然相同。抽样核对能帮助定位问题,不能证明全量完整性。报告应区分文档声明、本次观察和仍未验证的部分。 四、把历史、授权和扩容费用放进同一张成本表 历史覆盖要按“品种 × 粒度 × 日期”检查。能查到五年前的日线,不代表能查到同一时期的分钟、逐笔或盘口。至少抽查最早所需日期、最近交易日和跨分页边界,并核对停牌、合约到期、复权、夏令时与交易日归属。 套餐比较必须按同一工作量计算。假设看板需要 300 个品种,每次 REST 请求可以查 50 个品种,每 5 秒轮询一次,那么仅基础轮询就需要 ceil(300 / 50) × 60 / 5 = 72 次请求/分钟;启动加载、重试和历史查询还要另算。这只是容量预算示例,不代表任何供应商的真实配额。改用 WebSocket 后,也仍需核对订阅计数方式、频道是否分别计数、连接配额和下游分发成本。 成本项目 必须确认的问题 需要留存的依据 API 与数据权限 哪些市场、频道、历史与并发包含在内 当前套餐说明与报价 数据使用授权 内部使用、对外展示、衍生结果、再分发是否允许 对应使用场景的书面条款 部署与冗余 备用源、流量、存储、连接和扩容怎样计费 同口径容量预算 实施与维护 代码映射、字段适配、监控和故障处理投入多少 工时估算与运维方案 建议用统一期间比较:总成本 = 订阅及额外数据费 + 授权费 + 基础设施与冗余费 + 实施维护投入。 不预设某项一定另收费,也不默认月费已包含全部使用权。工程上能把数据转发给用户,不意味着合同已允许再分发;“衍生指标”能否展示或销售也应单独确认。 五、验收结论应落到“通过、条件通过、不通过” 把前面的检查变成一页验收记录:需求项、阈值、证据、结果、限制和负责人。阈值由业务容忍度确定,并在测试前写好。例如看板刷新体验与逐笔研究的要求不同,不应共用一个未经论证的毫秒数。 通过: 必需品种、字段、权限和容量均有证据;时效与恢复满足预定目标;总成本落在预算内。 条件通过: 仅有业务明确接受的非关键限制,且写明使用范围、临时措施和复验日期。未核实的必需项不能按此放行。 不通过: 必需能力缺失、关键质量目标不满足,或实际用途的授权仍不明确。 采购比较最终应保留同一天或同一有效期内的文档与报价、同条件的采样记录,以及重连和回补结果。无论候选是谁,只有这些证据能回答“它是否适合这个项目”;品种总数、成功建立连接或一个套餐价格都无法单独完成验收。 资料口径:TickDB 官方接入及 Ticker、Depth、Trade 文档,核对日期为 2026 年 10 月 23 日。文中提供选型方法与分析示例,未给出供应商在线性能测试成绩;具体覆盖、权限、授权与价格以采购时资料及目标场景验证为准。
浏览35
评论0
收藏0
用户头像sh_***174w0d
2026-10-23 发布
引言:被 90% 散户忽略的盘口“黄金指标” 在日常交易的股票行情界面中,存在一个看似不起眼却蕴含玄机的盘口指标——委比。在实战盘口中,有九成散户会完全忽略这个指标;即便是关注到的投资者,也往往仅凭字面意思对其产生严重的“反向误读”。 事实上,委比绝非简单的买卖数字堆砌,而是实时窥探主力资金意图与盘口真实多空博弈的黄金窗口。只要真正吃透委比背后的底层逻辑,看清主力资金是“真抢筹”还是“假托盘”,就能在日内波动中精准把握拐点,显著提升**日内做T(T+0)**的交易成功率。 拆解“委比”:本质概念与底层计算公式 委比是用于衡量盘口买盘与卖盘挂单相对力量强弱的实时统计指标。 核心计算公式 委比****​ = (委买手数 - 委卖手数) / (委买手数 + 委卖手数) × 100% 核心盲点拆解 很多散户以为委比统计的是全市场的买卖意向,这是极其常见的误区: ●**委买手数:特指当前盘口买一至买五**所有挂单的总手数。 ●**委卖手数:特指当前盘口卖一至卖五**所有挂单的总手数。 因此,委比的本质就是**“买一到买五挂单总量”与“卖一到卖五挂单总量”**的动态对比。 数值极限与含义对比 ●当股票涨停时,上方无卖单挂出(委卖手数为0),委比达到极限 100%。 ●当股票跌停时,下方无买单接盘(委买手数为0),委比达到极限 -100%。 **◆买/卖盘挂单特征:**下方买单多于上方卖单(下方挂拖单较多) **对应的委比正负值及含义:**委比为正数(大红):数值越大,说明买一至买五挂单越密集、托单越多。 **◆买/卖盘挂单特征:**上方卖单多于下方买单(上方压单较多) **对应的委比正负值及含义:**委比为负数(大绿):数值越小(负得越多),说明卖一至卖五压单越沉重、买单越稀少。 反常识实战逻辑:主力资金的真实意图 在盘口实战中,单纯看委比数值的大小没有任何操作价值。委比的核心精髓在于结合分时动态去拆解主力的真实心理。它的运行逻辑往往是“反常识”的: 拉升阶段:委比偏小反而容易继续冲高 **●**主力主动扫货抢筹:若主力资金真正看好股价并急于拉升,会采取以等于或高于“卖一”的价格直接吃掉筹码的主动攻击方式,而绝不会被动挂在下方“买一至买五”等待成交。这种主力的主动抢筹行为,会导致下方委买挂单较少,委比偏小甚至呈现负数,但分时股价却能快速放量向上拉升。 ●**拉高吸引跟风:主力在拉升过程中,若发现下方委买挂单寥寥无几,说明场内散户跟风接盘意愿不高。此时主力通常会选择继续向上拉升股价**以造势,激发市场情绪。待拉高后引诱跟风买单在下方堆积,主力才会择机出货。因此,拉升途中委比偏小,股价反而容易持续冲高。 拉升阶段:委比过大(大红托单)容易遇阻砸盘 **●**主力托单诱多出货:分时冲高阶段,若下方突然堆积起密密麻麻的巨量托单,导致委比数值异常飙升(呈现大红),这往往意味着大量跟风散户已被诱入并挂单等待接盘。此时主力见散户接盘踊跃、拉升成本极高,便会顺水推舟停止买入,将手中筹码砸向下方的密集托单完成出货,导致分时图遇阻剧烈回落。 主力资金的核心盘口心理:真买向上扫(下方不挂单),假拉堆托单(吸引跟风接)。 有效性门槛:|委比| > 40% 动态观察中,若委比绝对值太小,说明多空挂单均衡、差距微弱,指标失去参考意义。只有当委比绝对值超过**** 40%(即 |委比| > 40%)时,盘口买卖盘的分歧与主力意图才足够明确,指标才具备较高的做T指导价值。 委比“做T”实战指南:高抛低吸的操作法门 结合主力资金在盘口的微观心理,日内 T+0 操作可遵循以下具体的诊断与执行步骤: **1.**高抛信号(日内冲高锁定利润) **●**判断条件:股价在分时拉升过程中,委比数值偏高(如呈高位大红),且“买一至买五”堆积大量密集拖单。 **●**逻辑拆解:表明跟风情绪被调动,散户挂单接盘踊跃。主力失去继续拉升的动力,大概率会顺水推舟砸向下方托单出货。 **●**执行动作:锁定日内浮盈,择机分批高抛。 **2.**低吸信号(日内回调介入博弈) **●**判断条件:股价在分时回调阶段,委比持续走低(负值扩大,盘面大绿),上方“卖一至卖五”挂出沉重压单,下方买单极少。 **●**逻辑拆解:这是典型的盘口“洗盘与空头衰竭”特征。上方巨量压单制造了恐慌氛围,诱使散户抛出割肉盘或挂高位压单。然而微观盘口上,虽然挂单看空气氛浓厚,但主动性抛盘却砸不动股价,分时呈现无量阴跌或触底止跌承接。这表明空头释放完毕、抛压衰竭,盘面即将发生反转。 **●**执行动作:密切关注分时企稳(如出现小V反转或上方压单被主动大单吃掉),一旦止跌信号确立,即为极佳的日内做T低吸介入点。 总结与核心 Key Takeaways ●**看清统计基准:委比仅统计买一至买五与卖一至卖五**的挂单力量;绝对值必须满足 |委比| > 40%,盘口信号才具有明确的实战价值。 ●拉升看“小”:分时拉升时委比偏小甚至偏负,多为主力主动向上扫货抢筹或继续拉高吸引跟风,后市股价易继续冲高。 ●高抛看“大”:冲高时委比大红且下方堆满密集托单,常为主力托单诱多、顺势砸盘的前兆,应及时逢高高抛。 ●低吸看“衰”:股价回调时委比持续走低、上方沉重压单却砸不动股价,代表恐慌盘释放完毕、空头动能衰竭,可择机低吸。
浏览77
评论0
收藏0
用户头像sh_*092at69ED
2026-10-23 发布
美股数据源怎么选?实时行情、历史回测和AI查询的选型清单 摘要:做美股产品、量化研究或 AI 助手,团队最怕“演示时看着都行,真交付了全得返工”。实时行情得卡准时段,历史回测得弄清复权,AI 查询必须能追溯真实数据。本文结合 Yahoo/yfinance、Alpha Vantage、Massive 和 TickDB 的官方资料与真实跑通样本,给你一套选型顺序,并附上能直接扔给技术同事的“需求卡”、原始结果和测试脚本。 假设你们团队要接入苹果(AAPL)的行情:产品经理要做盘前看板,研究员要拉历史数据跑回测,还有个同事想直接接入 AI,随时问“苹果现在多少钱”。 如果这三份需求,你跟供应商提的都是“我要美股行情”,演示的时候大家都很开心。但一到交付,大概率会演变成三轮扯皮:看板展示了昨天的收盘价、回测因为复权口径不对导致结果全废、AI 给你的答案连个时间戳都没有。 问题出在哪?不是数据源“有没有”数据,而是你拿到的到底是哪个对象、哪个时点、哪个口径。 选数据源,别一上来就比价格。先按用途排除不合适的方案,拿样本跑通,再谈接入。以 TickDB 为例,我们可以用它的快照、历史 K 线和 AI 数据工具,分别检查看板、研究和问答到底能不能落地。本文通过已配置的 TickDB MCP,真实取回了快照、日线、交易日历和时段记录,用实打实的数据带你做第一轮验收。 图1:三条路线代表不同用途,不代表供应商排名。 一分钟看懂:先分清你到底在买什么 你要交付什么 最先要确认的事 什么情况下赶紧跑 实时看板/价格提醒 显示哪个时段的价格?多久更新?能接受多旧的数据? 只给了一个价格,没给数据时间;你要盘前,他只有常规时段。 历史回测/量化研究 要几年的数据?分钟线还是日线?复权方式怎么算? 只验证了最近几天日线,就敢让你直接买多年分钟历史。 AI 行情查询 AI 是真调了接口,还是凭记忆瞎编?回答有没有时间? 回答极其流畅,但找不到调用结果,把昨天的价格说成“现在”。 如果是自己盘后复盘,免费日终数据可能就够用;但如果要盘中异动提醒,再便宜的日终数据也解决不了问题。对内部研究够用的东西,放到给客户看的产品里,往往要重新验一遍。 选型的顺序应该是:先定用途 → 再核数据范围与权限 → 拿样本验真 → 最后算费用和维护账。关键条件不满足,直接排除;资料没写清的,标为待确认,别把“未知”当成“支持”。 另外,很多人容易搞混:数据供应商、访问库和 MCP 根本不是一个维度的东西。供应商提供数据;yfinance 是帮你抓数据的库;MCP 则是让 AI 客户端直接调用外部工具。选了哪种连接方式,就得核对它最后递到你手里的是什么。 四个常见入口:什么任务下值得继续看? 我们列出了四个考察入口(Yahoo/yfinance、Alpha Vantage、Massive 核对官方资料;TickDB 另外做了实测)。这不是同条件性能横评,也没有名次总分,你对号入座即可: 入口 什么任务下可以考察 决定要不要继续看的关键问题 Yahoo / yfinance 个人研究、学习、快速写个原型 你的实际用途合规吗?目标接口能满足吗? Alpha Vantage 基础 API 取数,或评估官方 MCP 入口 免费额度够吗?你需要的数据,是不是得充值? Massive 专门查美股成交、报价、聚合 K 线的项目 你买的是哪个时效层级(日终、延时还是实时)? TickDB 想在一个服务里同时验快照、历史 K 线和 AI 取数 目标标的和区间能不能取到?要持续更新的话,订阅稳不稳? 1. Yahoo/yfinance:先看能取到,再看能不能用 yfinance 维护者明确说了,这主要面向研究和教育。开源代码免费,不代表数据你可以随便商用。给客户展示前,先去查查 Yahoo 的条款,把数据使用权当个硬条件。 2. Alpha Vantage:拿了 Key,先查余额和权限 它的 FAQ 里写了,免费版多数数据集每天只有 25 次请求;实时和延时 15 分钟的美股数据得付费买。所以拿到 Key 别急着写代码,先算算历史研究、刷看板、AI 问答的请求量够不够。 3. Massive:产品页写着实时,盯紧你买的具体层级 Massive 把股票数据分了日终、延时和实时层级。搞盘后和搞盘中,选的层级完全不同。采购时一定要把层级写进需求里,别光看首页写了“实时”就以为全都给。 4. TickDB:跑完 MCP 再谈持续推送 TickDB 可以从快照、K 线和 AI 工具入口做任务验证。本文实际用了它的 MCP 查询;如果要持续推送,得去单独测它的 WebSocket 行情。单次查询成功,和看板连续跑一周,完全是两码事。 选错以后,成本通常从这四个地方冒出来 坑一:看板价格没报错,但用户理解的时间错了 用户在盘前打开看板,看到红绿数字,默认这是“现在”的涨跌。如果系统取的是昨天的收盘价又没标时间,用户就被误导了。FINRA 也提醒过,盘前盘后流动性差、波动大,不同交易所价格还不一样。 怎么避坑? 需求写清楚:展示 AAPL 盘前最新成交价,必须带纽约时间;盘前没数据就明确显示“缺失”,绝不能拿昨收顶替。 坑二:都叫“复权”,换源后曲线却变了 遇到拆股、分红,各家调整历史价格的方式不一样。Massive 的 adjusted 只算拆股;Alpha Vantage 算了拆股和现金分红;TickDB 则区分不复权、前复权和后复权,默认是不复权(none)。 如果两份数据都有“收盘价”和“复权”标签,但底层处理的事件不同,直接拼在一起,你的回测结果变了,你都不知道是策略改了还是数据变了。 怎么避坑? 换源前,存好调整规则和查询时间;对比成交量时,核对好单位和调整方式。 坑三:少了一根 K 线,一自动补齐反而造了假 缺一根分钟 K 线,第一反应是接口漏数。但 Massive 官方给过另一种情况:如果没有符合条件的成交,那个时间窗就是不会生成 K 线。 整齐的数据不一定最真实。用上一根价格填满空位,就是把“没有记录”变成了假行情。 怎么避坑? 遇到缺口,先查交易日、时段、查询范围和聚合规则。确实要填,保留填充标记,别让后续研究把假数据当真。 坑四:便宜的请求,带出更贵的维护 套餐费只是冰山一角。历史数据要补吗?几套接口谁来维护?客户查一个价格,你能找出当时的原始记录吗? 这些工作没写进需求,最后往往落到某个倒霉同事头上。 怎么避坑? 比价格时,把数据费、权限、请求量和维护人力放在一起看。统一入口的价值,就是帮你省掉重复接入和核对的工作。 实际跑一组 TickDB 数据,验收到底要落在哪? 2026 年 10 月 20 日北京时间 21:08,我们通过 TickDB MCP 发起四项查询:AAPL 与 TSLA 的行情快照、AAPL 一段日线、美国市场交易日历及交易时段。原始数据和脚本都保存在随文材料中。 1. 同一个响应,两个价格,两个时点 快照请求很简单: {"symbols":"AAPL.US,TSLA.US"} AAPL 返回如下(价格单位美元,时间换算为纽约时间): 数据对象 价格 纽约时间 主价格last_price 342.94 2026-10-19 16:00:00(前一天收盘) 盘前对象pre_market_quote.last_done 339.18 2026-10-20 09:08:30(今天盘前) 同一个响应,一个昨天的收盘价,一个今天的盘前价。你要做盘前看板,直接拿主字段展示,就是拿昨收冒充盘前。 “最新”这两个字,必须落实到具体的数据对象上。 盘前/盘后对象有没有值,取决于当时的时段,UI 一定要做好缺失状态的准备。 做 AI 问答同理,回答里必须带着“数据对象、价格、数据时间、来源”,MCP 解决了 AI 调用数据的问题,但结果怎么呈现,还得产品来定规矩。 2. 历史样本,先把区间和复权方式锁死 这次拉日线,我们指定了 AAPL.US、1d、adjust="none"、limit=20,区间是 2026-10-13 到 2026-10-19(UTC)。 返回了 5 条日线,收盘价依次是:10 月 13 日 341.27、14 日 342.96、15 日 342.00、16 日 343.46、19 日 342.94。这 5 个日期和交易日历完全对得上。 随文脚本校验了代码、周期、复权、时间范围和重复时间戳。这只能算第一轮跑通,如果要几年的分钟数据,还得拿那些具体需求去测。 提醒一句:TickDB 当前免费版不支持用 start_time 和 end_time 指定区间,最新一根 K 线可能还在形成中。做研究时,记得把查询时间和复权方式一起存下来。 一份需求卡,让产品和技术吵不起来 下面是一份可以直接改写的需求模板(以 AAPL 盘前看板为例): 需求项 示例填写 用途与使用者 团队内部盘前观察;暂不包含客户展示 标的与对象 AAPL.US;盘前最新成交价,必须和主价格分开处理 时间与更新 显示纽约数据时间;更新方式和数据延迟由业务和技术共同定 缺失处理 盘前没数据要明确提示;保留旧价格时必须标出旧价时间 历史需求 如看历史,单列日期、粒度、复权方式,不能用快照代替 权益与维护 确认账号权限和内部用途条件;指定异常核对、补取与留存负责人 把这张卡发给候选供应商,按三种状态记录: 已满足:有文档、账号或样本证据。 待确认:资料不足,写明下一步补什么。 不满足:和当前用途冲突,如果是硬条件,直接踢出候选。 比如,这次确实拿到了盘前对象,但“持续更新稳不稳”还得另测。两项分开记,就不会被一张成功截图忽悠了。 下载包里提供了空白需求模板、示例和核对卡。非技术负责人可以先定用途、底线和预算,再把技术验证交给同事。 技术同事可以直接运行什么? 解压随文材料,在根目录运行: python3 attachments/inspect_us_sample.py evidence --out my_check 它只用 Python 3.10+ 的标准库和系统时区,不联网、不读密钥(my_check 必须是个新目录)。 这次跑出来的结果是 PASS,生成了报价对象、日线和检查报告。但注意,PASS 只代表这次样本没毛病;持续更新、独立价格核对和实际用途权益,还得另外验。 如果重新取数,MCP 的参数都在材料里,自己配好权限复跑就行。 已经用着旧源,怎么安全替换? 换源前,把新旧两边的样本放在同一起跑线上:同证券、同区间、同时段、同复权方式。先确认可以比较,再看返回范围和数值差异。 随文提供了 migration_diff.py 脚本。因为我们没有旧源样本,所以报告是 NOT_COMPARED(没对比),差异值为空: python3 attachments/migration_diff.py --right evidence/daily.normalized.json --out my_migration_report.json 如果没有旧源,退出码是 2;条件没对齐,返回 NOT_COMPARABLE。这只是提醒你补材料,不是供应商出故障了。对比成交量时,千万别忘了核对单位。 即使最后发现了差异,也先查数据对象、调整规则、聚合机制和更新版本。定位原因后,再决定重取、改处理逻辑,还是缩小迁移范围。 下载需求卡、原始结果与完整脚本 常见问题 免费美股数据源够用吗? 看用途。个人研究查日终,免费可能够;做实时看板,必须查清时效、请求量和展示条件。“库免费”、“有免费 Key”、“提供日终数据”,这是三件事。 历史数据越长,越适合回测吗? 先想清楚你要测什么。多年历史涉及退市样本、公司行动和数据版本,一段解释不清的长数据,只会把问题带进研究。先固定研究条件,再检查历史覆盖和处理规则。 AI 查行情必须用 MCP 吗? 不是。AI 也可以直接调 API。关键不在于通道,而在于 AI 有没有真去拿数据、拿到的是什么对象、回答里有没有带数据时间。 最后:把候选名单变成能落地的选择 选美股数据源,最有用的是那张写明用途、底线和证据的需求卡。 搞实时看板:先查价格对象和更新频率。 搞历史回测:先查区间和复权规则。 搞 AI 查询:先查工具结果能不能追溯。 下一次和技术同事开会,别只说“我们要个美股接口”。直接说:“我们先验收 AAPL 的盘前对象,再分别测更新频率、历史范围和免费权限。” 这样拿到的数据,才真正有得比。 TickDB样本采集于2026年10月20日,官方资料复核于10月21日。本文讨论数据源选择与样本核验,不构成投资建议。 参考资料与随文材料 [yfinance 维护者仓库与 README] [Alpha Vantage FAQ及 [API文档] Massive:[股票数据页]、[聚合接口]、[缺少聚合线的解释] [FINRA:Extended-Hours Trading—Know the Risks] TickDB:行情快照、K线查询、交易日历、交易时段、AI工具入口、WebSocket行情
浏览34
评论0
收藏0
用户头像9点半量化
2026-10-23 发布
为什么控制回撤是股市生存的第一要义 炒股这么多年,老王我总结出一条铁律:在股市里真正厉害的人,一定会全力以赴做好一件事——控制回撤。 哪怕是在牛市行情里也是如此。很多人一看到涨势就盲目高位加仓,结果股市一旦出现急跌,短短一两天的暴跌就能彻底毁掉一整个月的辛苦利润。如果你在年初盲目追高过商业航天和有色板块,相信对这种剧烈回撤的痛楚一定深有体会。 对于普通散户而言,只要你建立起控制回撤的思维,就能够直接超越市场中 70% 的股民。接下来,老王就把这十多年亲身踩坑总结出来的避坑指南分享给大家。 认知重塑:正确看待“卖飞”与“胆小” 想要减少回撤,首先要打碎过去的心理误区,完成交易认知的重塑: **●**胆小不是错,卖飞更不是错 ◆在大A股生存,光靠胆子大是绝对行不通的,有勇无谋终究会成为市场炮灰。 卖飞最多只是少赚一点,但如果控制不好回撤,极有可能一把亏光。 ◆卖飞并不是错事,只要这笔操作最终盈利了,它就是一笔正确的交易。没有人能够精准预判一只股票的最高点,只要坚持做正确的交易动作,盈利只是迟早的事。 ◆相反,如果你侥幸卖在了最高点,反而要格外谨慎,千万不要把这次偶然的运气当成必然可以复制的能力。 ◆股市里有一句老话:“不要去赚最后一个同伴的钱。”一旦执着追求卖在最高点,往往极易迎来大幅亏损。 **●**心生疑虑,及时离场 ◆当你预感股价存在风险、心里感觉走势不对时,不必非要等到股价彻底下跌之后再来确认风险,只要心存顾虑,就可以直接离场。 ◆每个人的心态和风险承受能力都不相同。与其后续忍受持股煎熬甚至忍痛割肉,不如在风险到来之前果断离场观望。 执行纪律:控制交易频率,坚守熟悉模式 想要控制好回撤,必须管住手指,控制交易频率,做自己熟悉的交易模式,就算亏损也无怨无悔。坚守交易规则,盈利本就是大概率事件。 在A股市场中,主流的盈利模式不外乎两种: **●**长线持股模式:看重企业的股东回报、分红与净利润; **●**短线博弈模式:追求极致的资金情绪交易。 这两种模式都可以带来不错的收益,但并非每一种风格都适合你: **●**你可以用小仓位去尝试摸索模式之外的机会。 **●**但绝不能手握大盘股时,羡慕小盘股暴涨;持有小盘股时,又眼红大盘股逆势走强。做自己熟悉的交易,才能在市场中站稳脚跟。 终极防御:学会空仓的“四大皆空”法则 学会空仓是控制回撤的终极防御武器。老王建议大家做到以下“四大皆空”: **1.**赚钱效应差时空仓:市场情绪向好时,哪个题材、哪个板块有赚钱效应,我们就做哪个;如果市场没有清晰的机会和主线,那就直接考虑空仓观望。 **2.**交易节奏不对时空仓:当近期操作接连不顺(比如一买入就被套、一卖出股价就拉升、频繁出错)时,切急于回本。优先空仓休息几天调整状态,否则操作变形只会犯下更大的错误。 **3.**大亏之后空仓:遭受大亏之后必须及时空仓让自己冷静下来,避免负面情绪干预后续的交易心态。要明白,短期连续大亏很多时候只是暂时运气不好,及时停下来才能稳住阵脚。 **4.**连续大幅盈利之后空仓:连续大赚之后同样要适时空仓,兑现一部分盈利改善生活,放平心态,守住胜利的果实。 总结与互动:逃离“七亏二平一赚”的宿命 股市终究是亏多盈少的市场,谁都逃不开“七亏二平一赚”的铁律。任何人在交易中都会遇到失败,我们要做的就是:不让单次失败造成毁灭性的亏损。 老王避坑金句提炼: 1.卖飞少赚,回撤亏光:坚持做正确的交易动作,盈利只是迟早的事;切记不要去赚最后一个同伴的钱。 2.疑虑即离场,专注自身模式:长线看分红/净利润,短线看资金情绪;绝不在大盘股与小盘股间盲目摇摆互羡。 3.严守**“四大皆空”**法则:无赚钱效应空仓、节奏不对空仓、大亏后空仓、大赚后空仓;不让单次失败造成毁灭性打击。
浏览38
评论0
收藏0
用户头像sh_***1145dp
2026-10-22 发布
aastock港股如何深入分析?用十档盘口与逐笔成交 摘要: 在 AASTOCKS 看完港股报价,若还想判断买卖盘厚度、观察成交节奏或复盘价格变化,需要把盘口和逐笔记录接入程序。TickDB 的港股盘口支持买卖各最多十档,逐笔查询返回成交价格、数量、方向与时间,并可订阅实时成交。本文用深度失衡和成交样本均价说明这些数据的用途,同时区分最近成交窗口与可按日期回查的历史数据。 搜索 aastock,打开 AASTOCKS(阿思达克)查看港股报价,是观察市场的一个起点。但一个最新价无法回答更细的问题:当前买卖报价之间隔了多远?买一背后的几档还有多少挂单?某次价格跳动是一笔小额成交,还是一段密集成交的结果? 这些问题分别需要盘口深度和逐笔成交。TickDB 对港股应用的具体价值,在于把买卖各最多十档的价格与数量、可查询的逐笔成交明细,以及实时 depth / trade 推送提供给程序,让看盘观察能够继续进入计算、告警和记录复盘。本文围绕这一数据用途展开,不把 AASTOCKS 当作待抓取的数据源,也不暗示两家存在接口合作。 十档盘口让报价从一个数变成价格梯度 最新成交价描述已经发生的成交,盘口描述当前可见的买卖报价。只看买一和卖一,可以计算最优价差;继续看买二至买十、卖二至卖十,才能观察靠近市场价格的挂单分布是否集中、是否存在明显的数量落差。 当前港股 depth 文档标注每侧最高十档,REST 返回 bids 和 asks,每档包含价格与数量;也可以通过 WebSocket depth 持续接收更新。买盘按价格降序、卖盘按价格升序排列。这里的“十档”是每侧上限,不保证每次都有十档;空档、流动性不足或休市时可能返回更少。 这带来两个可计算的观察量。第一个是最优价差,即卖一减买一。第二个是当前可见深度失衡,即“买方档位数量之和减卖方档位数量之和”,再除以两边数量之和。比较时应固定档位范围并核对数量单位;若只有部分档位,要报告实际档数,不能把结果命名为完整十档指标。 图 1:十档盘口支持对多档挂单进行计算。数值为构造示例,数量单位一致,不代表任何股票的实时报价。 例如买方十档数量合计 12,000、卖方合计 8,000,则失衡值为 (12000−8000)/(12000+8000)=0.20。它表示这一可见范围内买方数量较多,可以作为观察盘口变化的输入;它并不意味着价格将上涨 20%,也不能证明大单一定会成交。挂单可以撤销,十档报价也没有提供逐笔委托身份或完整订单队列。 还可以在“当前挂单保持不变”的假设下,按卖一、卖二等逐档累加,估算一个给定买入数量会涉及哪些可见价位。这是静态深度测算,不能当成实际成交价格或滑点保证;超出已返回档位覆盖的数量,应标记无法估算。 逐笔明细补上实际成交的过程 盘口回答“现在挂着什么”,逐笔成交回答“实际成交了什么”。港股逐笔记录包括成交 ID、价格、数量、方向和毫秒时间戳。程序可以据此统计样本内成交笔数、数量分布、成交间隔,以及成交量加权平均价,进一步判断一段价格变化对应怎样的成交活动。 一个简单构造样本包含三笔成交:价格 100.00、数量 100;价格 100.20、数量 200;价格 100.10、数量 100。样本均价为 (100×100+100.20×200+100.10×100)/400=100.125。这个结果只描述这三笔成交,不能称为全天均价。研究时需要同时保留样本最早与最晚时间,避免把“最近若干笔”误读成“最近一分钟”。 方向字段有 buy、sell、neutral 三类。可以分别统计各类数量,但应保留中性成交,也不要把方向标签直接改写为“主力净流入”。成交方向分类本身不提供交易者身份;具体分类方法和数量单位仍需核对。 历史逐笔明细需要分清服务范围。 当前公开 REST 文档支持查询成交记录,默认 100 笔、最多 1000 笔,列出的参数为 symbol、limit、type。已核验材料没有给出按起止日期回查多天成交的参数、分页方式或逐笔保留年限。因此,本文把它用于最近已发生的成交查询,不把它宣传为任意历史日期的全量逐笔下载。 若目标是今后持续复盘,可以订阅 WebSocket trade 并由应用归档。港股推送中的成交位于 data.trades 数组,一条消息可能包含多笔,不能只取第一笔。历史 K 线的可查询范围也不能直接当作历史逐笔的保留范围。 图 2:逐笔查询与实时订阅可进入同一个复盘流程。归档是应用实现的能力,断线缺口仍需检查。 组合盘口与成交才能解释更多现象 假设卖一数量减少了,只看两次盘口无法判断它是被成交消耗,还是被撤走。加入相邻时间段的成交记录后,可以检查该价位附近是否出现相应成交;若同时观察到报价补充,还能研究挂单消耗和补充的节奏。这是多份证据的对照,不能凭一次数量变化断言某个参与者在吸筹或出货。 这里需要防止时间上的误用。盘口与成交来自不同消息或请求,必须保留各自原始时间和本地接收时间。只有确认时间含义可比较后,才能做近似对齐;不要拿成交之后的盘口倒推成交之前的可见流动性。缺少事件序列、消息存在间隔时,也不能把近似对齐包装成精确还原。 对于港股看板、流动性观察工具和成交异常提示,这正是结构化行情接口的价值:应用可以把同一标的的最新价、盘口状态和成交事件分开存储,再按自己的问题计算。它比只在程序里显示一个价格多了实际分析空间;这不等于断言 AASTOCKS 的其他产品没有相应功能。 查询十档盘口并计算成交样本指标 下面的 Python 3 示例分别查询 700.HK 的盘口与最近成交,输出实际档数、价差、可见深度失衡、成交笔数、样本时间范围和样本均价。代码只依赖标准库,保存为 hk_depth_trades.py,在环境中设置 TICKDB_API_KEY 后运行。 当前官方权限表将 depth 和 trades 标为基础版及以上可用、免费版不可用;具体仍取决于账户权益与标的覆盖。程序不是撮合器,也没有实现流式归档。 import json import os from decimal import Decimal from urllib.parse import urlencode from urllib.request import Request, urlopen def fetch(path, **params): url = "https://api.tickdb.ai/v1/market/" + path request = Request(url + "?" + urlencode(params), headers={ "X-API-Key": os.environ["TICKDB_API_KEY"] }) with urlopen(request, timeout=10) as response: body = json.load(response) if body.get("code") != 0: raise ValueError("API business error") return body["data"] def positive(value): number = Decimal(str(value)) if not number.is_finite() or number <= 0: raise ValueError("Invalid price or quantity") return number def summarize(depth, tape): if depth["symbol"] != "700.HK" or tape["symbol"] != "700.HK": raise ValueError("Unexpected symbol") bids = [(positive(p), positive(q)) for p, q in depth["bids"]] asks = [(positive(p), positive(q)) for p, q in depth["asks"]] if not 0 < len(bids) <= 10 or not 0 < len(asks) <= 10: raise ValueError("Empty or unexpected depth") bid_qty = sum(q for p, q in bids) ask_qty = sum(q for p, q in asks) unique = {} for trade in tape["trades"]: key = (trade["id"], trade["timestamp"]) if key in unique and unique[key] != trade: raise ValueError("Conflicting trade records") unique[key] = trade trades = list(unique.values()) amounts = [(positive(t["price"]), positive(t["quantity"])) for t in trades] total = sum(q for p, q in amounts) vwap = sum(p * q for p, q in amounts) / total if total else None times = [t["timestamp"] for t in trades] return { "bid_levels": len(bids), "ask_levels": len(asks), "spread": str(min(p for p, q in asks) - max(p for p, q in bids)), "visible_depth_imbalance": str((bid_qty - ask_qty) / (bid_qty + ask_qty)), "depth_timestamp_ms": depth["timestamp"], "trade_count": len(trades), "trade_window_ms": [min(times), max(times)] if times else None, "sample_vwap": str(vwap) if vwap is not None else None, } if __name__ == "__main__": depth = fetch("depth", symbol="700.HK", type="stock") tape = fetch("trades", symbol="700.HK", type="stock", limit=1000) print(json.dumps(summarize(depth, tape), indent=2)) 这里特意保留两套时间:盘口的 depth_timestamp_ms 和成交样本的 trade_window_ms。两个请求先后执行,不是同一时刻的原子快照,因此代码仅分别统计,不把两者硬拼成因果结论。sample_vwap 是返回记录的成交量加权均价;visible_depth_imbalance 只覆盖实际返回档位。 示例在单次响应内用成交 ID 与时间戳组合处理完全重复记录,冲突记录直接报错。这不是对成交 ID 跨日唯一性的假设。长期归档还应确认 ID 作用域,保存原始记录和来源,并单独处理更正、重复消息与断线区间。数量无效、盘口为空等情况会报错;时间有效性、市场状态、异常价差和账户限流需要在生产应用中进一步处理。 代码和文中计算已用构造样本离线验证,未进行带密钥的在线查询或持续订阅实测。公开文档核对日期为 2026 年 10 月 22 日,示例数值不是真实行情。 接入后的验收要落在分析任务上 选择港股行情服务时,应检查要研究的标的能否返回预期档位、逐笔记录是否含所需字段、订阅后如何保存和重建自己的样本窗口。请求了 1000 笔不代表返回了 1000 笔,更不代表覆盖完整交易日;持续订阅也不自动证明没有漏数。 TickDB 在本文场景中的优势,是把十档报价梯度与逐笔成交过程都变成可计算的数据输入,并提供查询和订阅两种接入方式。对需要从 AASTOCKS 日常看盘走向自主分析的人,这能支撑盘口观察、成交节奏统计和自有记录复盘。实际选用时,再按标的、权限、时效和历史覆盖需求逐项验证。 资料依据:AASTOCKS 官方网站;TickDB 港股行情说明、盘口深度、逐笔成交及 WebSocket depth / trade 文档。核对日期:2026 年 10 月 22 日。
浏览30
评论0
收藏0