全部
文章&策略
学习干货
问答
官方
用户头像Fxdund
2026-10-31 发布
股票和外汇的数据接口,拉回来就能用。期货不一样——同样是"行情",期货多了一层合约的概念:同一品种有主力合约、连续合约,还分不同到期月份;交易所有好几家,还有夜盘。第一次做期货监控的时候,我以为就是多调几个接口的事,结果被合约体系和换月问题折腾得不轻。这篇把我搭的一套多品种期货数据管道完整记录下来:合约代码怎么认、批量快照怎么拿、实时推送怎么接、主力换月怎么处理。数据源用的 iTick,token 去它官网 itick.org 申请,REST 和 WebSocket 共用一套。 期货合约体系:先认识代码,再谈接入 期货跟股票最大的区别就是"品种"和"合约"是两个概念。股票一个代码就是一个公司,期货一个品种下面有多个合约,接口里用"品种代码"来标识: 品种 代码 市场 region 说明 股指期货(沪深300) IF 中国 CN 中金所 黄金 GC 美国 US COMEX 白银 SI 美国 US COMEX 原油 CL 美国 US NYMEX 大豆 ZS 美国 US CBOT 纳指期货 NQ 美国 US CME 标普期货 ES 美国 US CME 接口统一用 region + code 定位一个品种。认准这几个主流代码,后面调接口就不会发懵。 REST批量快照:一个请求拿全品种 监控面板启动时要初始化所有品种的状态,用批量报价接口一次拉全,别一个个循环调: import requests API_BASE = "https://api.itick.org" headers = {"accept": "application/json", "token": "your_token_here"} def fetch_futures_snapshots(codes="GC,SI,CL,ZS,NQ,ES,IF"): # /future/quotes 批量报价,codes 用英文逗号分隔 # 返回 dict,key 是品种代码 resp = requests.get( f"{API_BASE}/future/quotes", headers=headers, params={"region": "US", "codes": codes}, ) return resp.json()["data"] snap = fetch_futures_snapshots() for symbol, q in snap.items(): print(symbol, q["ld"], q["chp"], q["ts"]) 返回的每个品种都是一个报价对象,字段 s/ld/o/p/h/l/t/v/tu/ts/ch/chp:ld 最新价、p 前日收盘价、ts 交易状态、ch/chp 涨跌。有几个点值得注意: 返回是 dict 不是数组,key 是品种代码,遍历时用 for symbol, q in snap.items() p 前收字段是期货报价特有的,算涨跌额直接用 ld - p 批量接口的参数是 codes(复数),写 code 会报参数错误 ts 交易状态:期货有夜盘,判断行情是否有效前先看这个字段 历史K线:kType 一个编码走所有周期 回测和画图需要历史数据,期货K线接口的参数跟股票一样:region + code + kType + limit。周期用数字编码,1分钟到月线都有: def fetch_future_klines(code, region="US", ktype=8, limit=200): resp = requests.get( f"{API_BASE}/future/kline", headers=headers, params={ "region": region, "code": code, "kType": ktype, # 1=1分钟 2=5分钟 5=1小时 8=日K 9=周K 10=月K "limit": limit, # 单次最大500 }, ) rows = resp.json()["data"] # 返回数组,每条 t/o/h/l/c/v/tu,时间戳毫秒 return rows gold_daily = fetch_future_klines("GC", ktype=8, limit=300) print(gold_daily[-1]["c"]) # 黄金最新一根日K收盘 这里有个期货特有的坑:连续合约和具体月份合约的K线不一样。接口返回的一般是主力/连续合约的标准化数据,做回测时如果自己拼接具体月份合约的数据,换月那天会出现跳空,别把它当成真实的行情波动。 WebSocket实时推送:一条连接盯多个品种 盘中实时监控用 WebSocket,流程还是那四步:连上 → 等鉴权成功 → 订阅 → 心跳。一条连接最多订500个标的,主流品种一条连接全搞定: import json import threading import time import websocket WS_URL = "wss://api.itick.org/future" TOKEN = "your_token_here" authenticated = False heartbeat_alive = True def on_message(ws, message): global authenticated payload = json.loads(message) if payload.get("resAc") == "auth" and payload.get("code") == 1 and not authenticated: authenticated = True ws.send(json.dumps({ "ac": "subscribe", "params": "GC$US,SI$US,CL$US,NQ$US,ES$US,IF$CN", "types": "quote" })) threading.Thread(target=heartbeat, args=(ws,), daemon=True).start() return if payload.get("resAc") == "pong": return data = payload.get("data") or {} if data.get("type") == "quote": # 推送字段与REST一致,s/ld/o/h/l/v/tu print(data["s"], data["ld"], data["t"]) def heartbeat(ws): while heartbeat_alive: time.sleep(30) ws.send(json.dumps({"ac": "ping", "params": str(int(time.time() * 1000))})) ws = websocket.WebSocketApp(WS_URL, header=[f"token: {TOKEN}"], on_message=on_message) ws.run_forever() 订阅格式 GC$US 是"品种代码$市场代码",多品种逗号分隔。这里有个容易忽略的点:IF 是中金所品种,region 是 CN,不是 US——写订阅参数时别想当然全填 US。 主力合约换月:期货监控绕不开的坑 股票没有"换月"概念,期货有。随着临近交割,主力合约会切换到下一个月份,这时候连续合约的K线和报价会出现一个跳变。做多品种监控要注意: 换月跳空不是行情波动:策略判断涨跌时要排除换月带来的价格跳变,不然会误触发信号 别在代码里写死合约月份:用连续合约代码,让数据源帮你处理主力切换 持仓量变化是换月的信号:成交量、持仓量明显转移时,多半是在换月,关注 ts 交易状态和价格是否异常 组合示例:多品种期货监控面板 把快照和实时拼起来,就是一个可用的监控面板骨架: import json, threading, time, requests, websocket API_BASE = "https://api.itick.org" WS_URL = "wss://api.itick.org/future" TOKEN = "your_token_here" headers = {"accept": "application/json", "token": TOKEN} WATCHLIST = "GC,SI,CL,ZS,NQ,ES" # 启动快照 print("=== 期货快照 ===") snap = requests.get(f"{API_BASE}/future/quotes", headers=headers, params={"region": "US", "codes": WATCHLIST}).json()["data"] for symbol, q in snap.items(): sign = "+" if q["chp"] >= 0 else "" print(f" {symbol}: {q['ld']} ({sign}{q['chp']}%)") # 实时推送 authenticated = False def on_message(ws, message): global authenticated payload = json.loads(message) if payload.get("resAc") == "auth" and payload.get("code") == 1 and not authenticated: authenticated = True params = ",".join(f"{c}$US" for c in WATCHLIST.split(",")) ws.send(json.dumps({"ac": "subscribe", "params": params, "types": "quote"})) threading.Thread(target=heartbeat, args=(ws,), daemon=True).start() return if payload.get("resAc") == "pong": return data = payload.get("data") or {} if data.get("type") == "quote": print(f"[实时] {data['s']}: {data['ld']} ({data['chp']}%)") def heartbeat(ws): while True: time.sleep(30) ws.send(json.dumps({"ac": "ping", "params": str(int(time.time() * 1000))})) ws = websocket.WebSocketApp(WS_URL, header=[f"token: {TOKEN}"], on_message=on_message) ws.run_forever() 这个脚本启动时拉一次全品种快照,盘中WebSocket实时更新,做监控或者告警的底座足够用了。 踩坑清单速查 品种代码 ≠ 合约代码:接口用品种代码(GC/CL/IF),别拿具体月份合约号来调 IF 是 CN 市场:中金所品种 region 填 CN,别全填 US 批量接口参数是 codes(复数),返回 dict 以品种代码为 key 期货报价有 p 前收字段,涨跌额 = 最新价 − 前收 连续合约换月有跳空:回测和信号判断时要排除换月跳变 时间戳毫秒,判断夜盘时段先统一时区 WS 先等鉴权成功再订阅,心跳 30 秒一次不能省 小结 多品种期货数据管道,核心就三件事:认识合约体系、快照走批量、实时走推送。合约代码认准 region + code,快照用 /future/quotes 一次拿全,实时用 WebSocket 一条连接盯多个品种,换月的坑提前心里有数,这套管道就能稳定跑起来。接口参数和返回字段的完整说明,写代码时对照官方文档最稳妥。 GitHub:https://github.com/itick-org/
浏览14
评论0
收藏0
用户头像Jacktick
2026-10-31 发布
摘要:用Codex分析A股,怎样把行情、财报数据和估值放在一起看?本文以寒武纪为例,实测通过TickDB MCP获取历史行情、单季财务与PE估值,结合公司公告核对期间和口径,再用Python生成事实卡、整理个股研究笔记。附可复制的任务指令、真实输入和可运行代码,适合个人研究者与AI投研产品团队,减少重复查数和整理。 三季报披露期间,看到一只关注的股票利润增长超过一倍,你最想弄清楚的,往往是增长从哪里来、现金回来了多少,以及市场原先已经期待了多少。把新闻标题交给AI,它很快就能写出一段点评;可一旦把“同比增长”顺手写成“超预期”,后面的判断就可能偏了。 先把数字查全,再把问题问准。让Codex通过TickDB取得同一只股票的行情、财报数据和估值,完成必要计算,最后留下一页写清依据与下一步的研究笔记。TickDB提供AI可调用的结构化数据入口,个人研究者可以少重复查数,投研产品团队也能据此设计研究卡片。 这次选寒武纪688256.SH。2026年10月29日,我们通过已连接的TickDB MCP查询股票信息、历史日线、利润表、现金流和估值,再结合公司季度报告核对。下面按一次个股研究的顺序展开:先看拿到了什么,再看这些数字该怎样读,最后把方法交给你。 图1:AI生成概念示意,展示资料整理的关系;卡片上的曲线和图形不表示寒武纪的实际走势。 一、先看实测结果:数字到手后,研究从哪里继续 这次查询得到的几项信息,足够组成一页研究底稿: 观察项目 本次结果 接下来要弄清楚什么 历史行情 9月22日至10月27日取得20根前复权日线,首末收盘价1121.00元、912.98元,变化−18.56% 这段窗口内发生过哪些信息变化 单季营业收入 2026年第三季度约35.31亿元,同比增长104.47% 增长来自哪些业务或客户变化 单季归母净利润 约14.04亿元,同比增长147.74% 这是相对去年增长,还是也高于此前预期 单季经营现金流 约−0.84亿元;上年同季约−9.40亿元 净流出收窄以后,回款与支出各有什么变化 PE估值 10月29日查询返回146.01,返回未附明确的估值业务时点 盈利分母采用什么口径,比较基准是否一致 财务金额按亿元保留两位。接口整数金额与公告原文有元级差异;接口报告期日期标签为9月29日,公告报告期末为9月30日。本例保留两边原值,季度归属按公告核对。 把这些数字放在一起,最有用的收获是:下一问有了落点。利润增长去查预期和利润构成,现金流去查收付明细,估值去查分母。研究不必停在“公司增长很快”这句话上。 二、利润增长这么快,为什么还要继续查 同比增长,比较的是去年;超预期,要找此前的预期 10月23日晚,IT之家报道了寒武纪第三季度业绩。报道列出的营收、利润数字,可以回到公司报告核对;其“AI解读”还使用了“大幅超出市场预期”的表述。 这正好给我们一个实际的阅读问题:预期基准在哪里? 同比增长147.74%,比较的是本年第三季度和去年第三季度的利润。判断是否超预期,则要找财报披露前、针对同一季度的预测:谁预测的,何时发布,预测的是归母净利润还是其他指标。若采用多家机构的预测,还要交代纳入了哪些机构。 同比增长:本期实际值,与上年同季实际值比较。 是否超预期:本期实际值,与披露前对本期的预测比较。 本篇取回了实际财务数据,没有另行建立机构预测样本,因此笔记保留“同比增长”,把“核查此前预期”列为下一步。读新闻、看AI点评时,也可以用这一问检验它有没有跳过依据。 利润与现金流放在一起看,能问得更具体 本例第三季度单季归母净利润约14.04亿元,经营现金流约−0.84亿元。两者为什么不同?先从账上确认收入与实际收到现金的时间差开始想:有些收入已经确认,款项可能稍后才收;有些经营支出发生在当期,也未必与当期利润一一对应。 江苏证监局的投资者教育资料也解释过,利润表与现金流量表的项目没有简单的一一对应关系,可以借助现金流量补充资料,逐步将净利润调节为经营活动现金流量净额。 因此,查下去的顺序可以很具体: 继续查什么 想回答的问题 需要补哪份资料 销售回款与应收变化 收入增长之后,收款情况怎样 现金流量表、资产负债表及相关说明 采购付款与存货变化 是否有经营支出先于后续销售发生 现金流量表、存货及采购相关说明 其他经营收付与调整项目 利润和现金的差异还有哪些来源 报告说明;有补充资料时再核对调节项 这些是核查方向,本例还没有把差异归因到某个项目。单季现金流为负,也不能直接推导公司经营恶化:它较上年同季的净流出已经明显收窄,仍要结合累计期间、实际明细和业务节奏读。 一个PE数字,离贵或便宜还差几个条件 估值查询返回PE值146.01,同时带有关于“便宜”和区间位置的自动描述。研究笔记先留下数值,继续核查计算条件。 市盈率把股价与盈利联系起来。用哪个时点的股价,盈利采用上年度、滚动期间还是预测值,都会影响比较。换一家公司的PE来对照,也要先把这些条件对齐。 本次返回没有明确的估值业务时间字段,我们只知道10月29日取回了这条结果。因此不能把它与10月27日的收盘价当作同一天的一组数,进一步推导所谓便宜程度。 三、看股价与财报,先把时间放对 本例最容易混淆的地方,是把一份第三季度报告与一个横跨9月、10月的行情窗口,当成了同一段时间。 图2:左侧是数字覆盖的期间,右侧是本次使用的资料记录日期。公告存档页日期为10月24日,10月23日晚已有公开报道;首次披露时点应核对交易所记录。 财报里的单季经营情况属于7月至9月。本文的20根日线覆盖9月22日至10月27日,首末收盘变化为: (912.98 ÷ 1121.00 − 1)× 100% ≈ −18.56% 这段价格窗口包含报告公开报道之前和之后的记录。因此,把−18.56%直接写成“财报公布后的市场反应”,时间上就对不上。若要研究财报发布后的价格表现,应先核对公告首次公开的具体时间,再单独划定观察窗口,并查看同期其他信息。 同样,今天查到一份财报,也不能默认过去某个交易日已经能看到它。做历史研究时,这一步尤其重要。 数字旁边留下日期和期间,读者就能自己判断哪些可以直接比,哪些还缺条件。原本笼统的“股价为什么不跟业绩走”,也就能拆成更容易查证的问题。 四、TickDB在这项研究里,提供了什么价值 如果只研究一只股票,手工翻行情和报告也能完成。但观察名单需要反复更新,或者要把这套过程放进投研产品时,每次重新找入口、抄数字、整理格式,就会成为持续的工作量。 本例通过TickDB MCP,围绕同一个证券对象取得历史行情、财务和估值输入,再交给Codex整理、交给代码计算。几类数据能接着用,是这条路径的主要价值:行情提出价格问题,财务把问题落到经营指标,估值提供进一步比较的线索。TickDB产品入口 这里也可以分清分工:TickDB提供本篇实际取得的数据,代码计算首末变化和同比,研究者核对公告、寻找预期与经营明细。最后生成的研究笔记由这一整条过程完成。 对行情应用和AI投研产品,值得借鉴的是卡片的设计:在每项数字旁保留期间与来源,在观点后面留出“还要查什么”。用户点开现金流观察,应该知道接下来查哪张表;点开估值,应该能看到计算条件,而不只有一句“偏低”。 本文跑的是MCP按需查询。持续盘中更新属于另一项产品任务,要另行验证相应的行情订阅方式。换证券、换市场时,也要核对可用字段、报告期和账户权限。本例发现的日期标签与元级金额差异,都保留在核对记录中。 五、把这套研究方法带走 先在Codex中接好TickDB MCP,并确认当前账户可以调用所需工具。然后把下面的任务交给它: 为寒武纪688256.SH整理一页研究笔记,数据通过TickDB MCP实际查询。 1. 查询股票身份,确认代码、名称和币种。 2. 查询截至2026-10-27的20根日线,interval=1d,adjust=forward。 end_time按Asia/Shanghai当日23:59:59.999转换为Unix毫秒。 按日期升序排列,保留原始返回。 3. 分别查询利润表IS和现金流CF,period_type=q3,n=2。 保留营业收入、净利润、经营现金流的字段名、年份、期间及原值。 对照公司季度报告,核对单季/累计、归母归属、单位; 披露时间查公告记录,不用第三方存档页日期代替。 4. 查询估值;保留数值及可用时间信息,不直接采用自动描述作结论。 5. 将行情首尾记录与两年同季财务整理为下方JSON格式, 保存research_input.json,运行本页make_note.py生成事实卡。 6. 根据事实卡写一页笔记:价格观察、经营观察、估值待查、下一步。 关键事实注明数据或公告来源;缺项就保留问题,不补造数字。 不把价格与业绩同时出现写成已经找到涨跌原因。 这对应了本篇实际执行的数据查询与整理步骤。你可以先保留同一标的和日期,把整条过程跑一遍,再替换自己的研究对象与窗口。 给技术同事的最小实现 下面的输入取自本次真实返回。价格部分只列计算所需的首尾两条;完整查询取得20条。财务保留接口原值,净利润字段在本例结合公告核对归属。 保存为research_input.json: { "symbol": "688256.SH", "currency": "CNY", "queried_at": "2026-10-29", "adjust": "forward", "prices": [["2026-09-22", "1121.00"], ["2026-10-27", "912.98"]], "fiscal_year": 2026, "period": "q3", "financials": [ {"year": 2026, "period": "q3", "metric": "OperatingRevenue", "value": "3530828295"}, {"year": 2025, "period": "q3", "metric": "OperatingRevenue", "value": "1726780893"}, {"year": 2026, "period": "q3", "metric": "NetProfit", "value": "1403610673"}, {"year": 2025, "period": "q3", "metric": "NetProfit", "value": "566563170"}, {"year": 2026, "period": "q3", "metric": "NetOperateCashFlow", "value": "-83677875"}, {"year": 2025, "period": "q3", "metric": "NetOperateCashFlow", "value": "-940455129"} ] } 再保存下面的make_note.py。使用Python 3标准库,无需安装第三方依赖: import json import sys from datetime import date from decimal import Decimal from pathlib import Path def number(value): result = Decimal(str(value)) if not result.is_finite(): raise ValueError("金额或价格必须是有限数值") return result def make_note(data): if data["currency"] != "CNY" or data["adjust"] != "forward": raise ValueError("本例要求人民币、前复权价格") prices = sorted(data["prices"], key=lambda row: date.fromisoformat(row[0])) if len(prices) < 2 or len({row[0] for row in prices}) != len(prices): raise ValueError("至少需要两个不同日期,且不能重复") if any(number(row[1]) <= 0 for row in prices): raise ValueError("价格必须为正数") fields = {} for row in data["financials"]: key = (int(row["year"]), row["period"], row["metric"]) if key in fields: raise ValueError("财务字段重复,请先核对口径") fields[key] = number(row["value"]) year, period = int(data["fiscal_year"]), data["period"] lines = [f'# {data["symbol"]} 研究事实卡', f'取数日期:{data["queried_at"]};币种:CNY;价格:前复权。'] first, last = prices[0], prices[-1] change = (number(last[1]) / number(first[1]) - 1) * 100 lines.append(f'价格:{first[0]} {number(first[1]):.2f}元 → ' f'{last[0]} {number(last[1]):.2f}元;首末收盘变化 {change:+.2f}%。') for metric, label in [("OperatingRevenue", "营业收入"), ("NetProfit", "净利润"), ("NetOperateCashFlow", "经营现金流")]: current = fields[(year, period, metric)] previous = fields[(year - 1, period, metric)] text = f'{label}({year}/{year-1},{period}):' text += f'{current / 100000000:.2f} / {previous / 100000000:.2f}亿元。' if previous > 0: text += f' 同比 {(current / previous - 1) * 100:+.2f}%。' else: text += ' 上期为零或负数,保留金额对照,不计算同比百分比。' lines.append(text) lines.append('待查问题:请结合公告、现金流明细和估值口径补充。') return '\n\n'.join(lines) + '\n' if __name__ == "__main__": source = Path(sys.argv[1] if len(sys.argv) > 1 else "research_input.json") try: data = json.loads(source.read_text(encoding="utf-8")) Path("research_note.md").write_text(make_note(data), encoding="utf-8") print("已生成 research_note.md") except (OSError, ValueError, KeyError, TypeError, ArithmeticError) as error: raise SystemExit(f"输入需核对:{error}") 在这两个文件所在目录运行: python3 make_note.py research_input.json 程序生成research_note.md。本次实际输出中的关键结果为: 首末收盘变化:-18.56% 营业收入:35.31 / 17.27亿元;同比 +104.47% 净利润:14.04 / 5.67亿元;同比 +147.74% 经营现金流:-0.84 / -9.40亿元 上期为零或负数,保留金额对照,不计算同比百分比。 这段代码完成本地计算和事实卡生成;新的数据由前面的MCP查询取得。以后替换输入时,币种、价格口径、财务期间与字段含义也要一起核对。事实卡里保留“净利润”字段名称,是否能在笔记中称为归母净利润,要继续核对对应公告。 不写代码,也可以直接使用这个笔记格式 研究对象与取数日期: 价格观察:选定哪个区间,发生了什么变化? 经营观察:对应哪份报告、哪种期间,有哪些实际变化? 估值待查:拿到了什么数值,还缺哪项比较条件? 下一步:最值得回到公告或明细里查的具体问题是什么? 留下一两个能继续核查的问题,通常比把公司所有信息都塞进一页更有用。 六、留下一页,下次能接着研究 一页有用的笔记,应该让你下次打开时知道接着查什么。本例留下的就很明确:查披露前的利润预期,查经营收付明细,查PE的计算条件。发现新资料以后,再回来更新判断。 英国金融行为监管局FCA在2026年7月更新的AI投资研究指引中,也肯定了AI在整理复杂资料方面的用途,并建议用可信来源复核结果,把AI提供的信息作为继续研究的起点。实际做起来,就是让数字能回查、计算能重跑,问题能继续往下问。 第一次用Codex做股票分析,从哪里开始? 选一只自己熟悉的股票、一个已经结束的行情窗口和一份明确的季度报告。先用上面的任务指令取得数据,做出一页笔记,再逐项补上你真正关心的问题。 查询缺数据,或者笔记里的数字对不上怎么办? 保留错误和缺项,先核对证券代码、权限、单位、报告期间与复权口径。财务回到公告查,计算用保存的输入重跑;缺失值不填零。本例的报告期标签与元级金额差异,也按这个办法分别保留和核对。 TickDB还能支持下一步研究什么? 沿着已验证的行情、财务和估值输入,组织自己的固定观察名单,反复生成研究底稿。新增同业或其他市场前,先确认对应数据是否可用;需要现金流逐项明细时,继续补读公司报告。 从TickDB AI工具入口开始,用自己熟悉的一只股票试一次。值得留下来的,是查数之后,你终于知道该把下一步研究放在哪里。 参考资料 TickDB AI工具页及本篇MCP真实返回:股票信息、历史日线、财务与估值;查询日期2026年10月29日。 中科寒武纪科技股份有限公司《2026年第三季度报告》:主要财务数据、期间说明;新浪财经存档PDF,存档页日期2026年10月24日。 IT之家《寒武纪2026年第三季度归母净利润14.04亿元,同比增长147.74%》:2026年10月23日18时42分;用于对照新闻数据与“AI解读”的判断基准。 江苏证监局《读懂上市公司报告之资产负债表、利润表和现金流量表之间的关系如何?》:2023年10月31日,关于净利润与经营现金流的关系。 FCA《Using AI for investment research》:2025年12月18日首次发布,2026年7月30日更新,关于AI辅助研究与可信来源复核。 OpenAI官方《Model Context Protocol》说明:外部工具与信息的连接方式;查阅于2026年10月29日。 本文展示数据整理与研究方法,寒武纪用于接口与笔记演示,不构成买卖建议。行情、财务与估值按文中所列时间使用。
浏览23
评论0
收藏0
用户头像Jacktick
2026-10-31 发布
摘要:用Codex分析A股,怎样把行情、财报数据和估值放在一起看?本文以寒武纪为例,实测通过TickDB MCP获取历史行情、单季财务与PE估值,结合公司公告核对期间和口径,再用Python生成事实卡、整理个股研究笔记。附可复制的任务指令、真实输入和可运行代码,适合个人研究者与AI投研产品团队,减少重复查数和整理。 三季报披露期间,看到一只关注的股票利润增长超过一倍,你最想弄清楚的,往往是增长从哪里来、现金回来了多少,以及市场原先已经期待了多少。把新闻标题交给AI,它很快就能写出一段点评;可一旦把“同比增长”顺手写成“超预期”,后面的判断就可能偏了。 先把数字查全,再把问题问准。让Codex通过TickDB取得同一只股票的行情、财报数据和估值,完成必要计算,最后留下一页写清依据与下一步的研究笔记。TickDB提供AI可调用的结构化数据入口,个人研究者可以少重复查数,投研产品团队也能据此设计研究卡片。 这次选寒武纪688256.SH。2026年10月29日,我们通过已连接的TickDB MCP查询股票信息、历史日线、利润表、现金流和估值,再结合公司季度报告核对。下面按一次个股研究的顺序展开:先看拿到了什么,再看这些数字该怎样读,最后把方法交给你。 图1:AI生成概念示意,展示资料整理的关系;卡片上的曲线和图形不表示寒武纪的实际走势。 一、先看实测结果:数字到手后,研究从哪里继续 这次查询得到的几项信息,足够组成一页研究底稿: 观察项目 本次结果 接下来要弄清楚什么 历史行情 9月22日至10月27日取得20根前复权日线,首末收盘价1121.00元、912.98元,变化−18.56% 这段窗口内发生过哪些信息变化 单季营业收入 2026年第三季度约35.31亿元,同比增长104.47% 增长来自哪些业务或客户变化 单季归母净利润 约14.04亿元,同比增长147.74% 这是相对去年增长,还是也高于此前预期 单季经营现金流 约−0.84亿元;上年同季约−9.40亿元 净流出收窄以后,回款与支出各有什么变化 PE估值 10月29日查询返回146.01,返回未附明确的估值业务时点 盈利分母采用什么口径,比较基准是否一致 财务金额按亿元保留两位。接口整数金额与公告原文有元级差异;接口报告期日期标签为9月29日,公告报告期末为9月30日。本例保留两边原值,季度归属按公告核对。 把这些数字放在一起,最有用的收获是:下一问有了落点。利润增长去查预期和利润构成,现金流去查收付明细,估值去查分母。研究不必停在“公司增长很快”这句话上。 二、利润增长这么快,为什么还要继续查 同比增长,比较的是去年;超预期,要找此前的预期 10月23日晚,IT之家报道了寒武纪第三季度业绩。报道列出的营收、利润数字,可以回到公司报告核对;其“AI解读”还使用了“大幅超出市场预期”的表述。 这正好给我们一个实际的阅读问题:预期基准在哪里? 同比增长147.74%,比较的是本年第三季度和去年第三季度的利润。判断是否超预期,则要找财报披露前、针对同一季度的预测:谁预测的,何时发布,预测的是归母净利润还是其他指标。若采用多家机构的预测,还要交代纳入了哪些机构。 同比增长:本期实际值,与上年同季实际值比较。 是否超预期:本期实际值,与披露前对本期的预测比较。 本篇取回了实际财务数据,没有另行建立机构预测样本,因此笔记保留“同比增长”,把“核查此前预期”列为下一步。读新闻、看AI点评时,也可以用这一问检验它有没有跳过依据。 利润与现金流放在一起看,能问得更具体 本例第三季度单季归母净利润约14.04亿元,经营现金流约−0.84亿元。两者为什么不同?先从账上确认收入与实际收到现金的时间差开始想:有些收入已经确认,款项可能稍后才收;有些经营支出发生在当期,也未必与当期利润一一对应。 江苏证监局的投资者教育资料也解释过,利润表与现金流量表的项目没有简单的一一对应关系,可以借助现金流量补充资料,逐步将净利润调节为经营活动现金流量净额。 因此,查下去的顺序可以很具体: 继续查什么 想回答的问题 需要补哪份资料 销售回款与应收变化 收入增长之后,收款情况怎样 现金流量表、资产负债表及相关说明 采购付款与存货变化 是否有经营支出先于后续销售发生 现金流量表、存货及采购相关说明 其他经营收付与调整项目 利润和现金的差异还有哪些来源 报告说明;有补充资料时再核对调节项 这些是核查方向,本例还没有把差异归因到某个项目。单季现金流为负,也不能直接推导公司经营恶化:它较上年同季的净流出已经明显收窄,仍要结合累计期间、实际明细和业务节奏读。 一个PE数字,离贵或便宜还差几个条件 估值查询返回PE值146.01,同时带有关于“便宜”和区间位置的自动描述。研究笔记先留下数值,继续核查计算条件。 市盈率把股价与盈利联系起来。用哪个时点的股价,盈利采用上年度、滚动期间还是预测值,都会影响比较。换一家公司的PE来对照,也要先把这些条件对齐。 本次返回没有明确的估值业务时间字段,我们只知道10月29日取回了这条结果。因此不能把它与10月27日的收盘价当作同一天的一组数,进一步推导所谓便宜程度。 三、看股价与财报,先把时间放对 本例最容易混淆的地方,是把一份第三季度报告与一个横跨9月、10月的行情窗口,当成了同一段时间。 图2:左侧是数字覆盖的期间,右侧是本次使用的资料记录日期。公告存档页日期为10月24日,10月23日晚已有公开报道;首次披露时点应核对交易所记录。 财报里的单季经营情况属于7月至9月。本文的20根日线覆盖9月22日至10月27日,首末收盘变化为: (912.98 ÷ 1121.00 − 1)× 100% ≈ −18.56% 这段价格窗口包含报告公开报道之前和之后的记录。因此,把−18.56%直接写成“财报公布后的市场反应”,时间上就对不上。若要研究财报发布后的价格表现,应先核对公告首次公开的具体时间,再单独划定观察窗口,并查看同期其他信息。 同样,今天查到一份财报,也不能默认过去某个交易日已经能看到它。做历史研究时,这一步尤其重要。 数字旁边留下日期和期间,读者就能自己判断哪些可以直接比,哪些还缺条件。原本笼统的“股价为什么不跟业绩走”,也就能拆成更容易查证的问题。 四、TickDB在这项研究里,提供了什么价值 如果只研究一只股票,手工翻行情和报告也能完成。但观察名单需要反复更新,或者要把这套过程放进投研产品时,每次重新找入口、抄数字、整理格式,就会成为持续的工作量。 本例通过TickDB MCP,围绕同一个证券对象取得历史行情、财务和估值输入,再交给Codex整理、交给代码计算。几类数据能接着用,是这条路径的主要价值:行情提出价格问题,财务把问题落到经营指标,估值提供进一步比较的线索。TickDB产品入口 这里也可以分清分工:TickDB提供本篇实际取得的数据,代码计算首末变化和同比,研究者核对公告、寻找预期与经营明细。最后生成的研究笔记由这一整条过程完成。 对行情应用和AI投研产品,值得借鉴的是卡片的设计:在每项数字旁保留期间与来源,在观点后面留出“还要查什么”。用户点开现金流观察,应该知道接下来查哪张表;点开估值,应该能看到计算条件,而不只有一句“偏低”。 本文跑的是MCP按需查询。持续盘中更新属于另一项产品任务,要另行验证相应的行情订阅方式。换证券、换市场时,也要核对可用字段、报告期和账户权限。本例发现的日期标签与元级金额差异,都保留在核对记录中。 五、把这套研究方法带走 先在Codex中接好TickDB MCP,并确认当前账户可以调用所需工具。然后把下面的任务交给它: 为寒武纪688256.SH整理一页研究笔记,数据通过TickDB MCP实际查询。 1. 查询股票身份,确认代码、名称和币种。 2. 查询截至2026-10-27的20根日线,interval=1d,adjust=forward。 end_time按Asia/Shanghai当日23:59:59.999转换为Unix毫秒。 按日期升序排列,保留原始返回。 3. 分别查询利润表IS和现金流CF,period_type=q3,n=2。 保留营业收入、净利润、经营现金流的字段名、年份、期间及原值。 对照公司季度报告,核对单季/累计、归母归属、单位; 披露时间查公告记录,不用第三方存档页日期代替。 4. 查询估值;保留数值及可用时间信息,不直接采用自动描述作结论。 5. 将行情首尾记录与两年同季财务整理为下方JSON格式, 保存research_input.json,运行本页make_note.py生成事实卡。 6. 根据事实卡写一页笔记:价格观察、经营观察、估值待查、下一步。 关键事实注明数据或公告来源;缺项就保留问题,不补造数字。 不把价格与业绩同时出现写成已经找到涨跌原因。 这对应了本篇实际执行的数据查询与整理步骤。你可以先保留同一标的和日期,把整条过程跑一遍,再替换自己的研究对象与窗口。 给技术同事的最小实现 下面的输入取自本次真实返回。价格部分只列计算所需的首尾两条;完整查询取得20条。财务保留接口原值,净利润字段在本例结合公告核对归属。 保存为research_input.json: { "symbol": "688256.SH", "currency": "CNY", "queried_at": "2026-10-29", "adjust": "forward", "prices": [["2026-09-22", "1121.00"], ["2026-10-27", "912.98"]], "fiscal_year": 2026, "period": "q3", "financials": [ {"year": 2026, "period": "q3", "metric": "OperatingRevenue", "value": "3530828295"}, {"year": 2025, "period": "q3", "metric": "OperatingRevenue", "value": "1726780893"}, {"year": 2026, "period": "q3", "metric": "NetProfit", "value": "1403610673"}, {"year": 2025, "period": "q3", "metric": "NetProfit", "value": "566563170"}, {"year": 2026, "period": "q3", "metric": "NetOperateCashFlow", "value": "-83677875"}, {"year": 2025, "period": "q3", "metric": "NetOperateCashFlow", "value": "-940455129"} ] } 再保存下面的make_note.py。使用Python 3标准库,无需安装第三方依赖: import json import sys from datetime import date from decimal import Decimal from pathlib import Path def number(value): result = Decimal(str(value)) if not result.is_finite(): raise ValueError("金额或价格必须是有限数值") return result def make_note(data): if data["currency"] != "CNY" or data["adjust"] != "forward": raise ValueError("本例要求人民币、前复权价格") prices = sorted(data["prices"], key=lambda row: date.fromisoformat(row[0])) if len(prices) < 2 or len({row[0] for row in prices}) != len(prices): raise ValueError("至少需要两个不同日期,且不能重复") if any(number(row[1]) <= 0 for row in prices): raise ValueError("价格必须为正数") fields = {} for row in data["financials"]: key = (int(row["year"]), row["period"], row["metric"]) if key in fields: raise ValueError("财务字段重复,请先核对口径") fields[key] = number(row["value"]) year, period = int(data["fiscal_year"]), data["period"] lines = [f'# {data["symbol"]} 研究事实卡', f'取数日期:{data["queried_at"]};币种:CNY;价格:前复权。'] first, last = prices[0], prices[-1] change = (number(last[1]) / number(first[1]) - 1) * 100 lines.append(f'价格:{first[0]} {number(first[1]):.2f}元 → ' f'{last[0]} {number(last[1]):.2f}元;首末收盘变化 {change:+.2f}%。') for metric, label in [("OperatingRevenue", "营业收入"), ("NetProfit", "净利润"), ("NetOperateCashFlow", "经营现金流")]: current = fields[(year, period, metric)] previous = fields[(year - 1, period, metric)] text = f'{label}({year}/{year-1},{period}):' text += f'{current / 100000000:.2f} / {previous / 100000000:.2f}亿元。' if previous > 0: text += f' 同比 {(current / previous - 1) * 100:+.2f}%。' else: text += ' 上期为零或负数,保留金额对照,不计算同比百分比。' lines.append(text) lines.append('待查问题:请结合公告、现金流明细和估值口径补充。') return '\n\n'.join(lines) + '\n' if __name__ == "__main__": source = Path(sys.argv[1] if len(sys.argv) > 1 else "research_input.json") try: data = json.loads(source.read_text(encoding="utf-8")) Path("research_note.md").write_text(make_note(data), encoding="utf-8") print("已生成 research_note.md") except (OSError, ValueError, KeyError, TypeError, ArithmeticError) as error: raise SystemExit(f"输入需核对:{error}") 在这两个文件所在目录运行: python3 make_note.py research_input.json 程序生成research_note.md。本次实际输出中的关键结果为: 首末收盘变化:-18.56% 营业收入:35.31 / 17.27亿元;同比 +104.47% 净利润:14.04 / 5.67亿元;同比 +147.74% 经营现金流:-0.84 / -9.40亿元 上期为零或负数,保留金额对照,不计算同比百分比。 这段代码完成本地计算和事实卡生成;新的数据由前面的MCP查询取得。以后替换输入时,币种、价格口径、财务期间与字段含义也要一起核对。事实卡里保留“净利润”字段名称,是否能在笔记中称为归母净利润,要继续核对对应公告。 不写代码,也可以直接使用这个笔记格式 研究对象与取数日期: 价格观察:选定哪个区间,发生了什么变化? 经营观察:对应哪份报告、哪种期间,有哪些实际变化? 估值待查:拿到了什么数值,还缺哪项比较条件? 下一步:最值得回到公告或明细里查的具体问题是什么? 留下一两个能继续核查的问题,通常比把公司所有信息都塞进一页更有用。 六、留下一页,下次能接着研究 一页有用的笔记,应该让你下次打开时知道接着查什么。本例留下的就很明确:查披露前的利润预期,查经营收付明细,查PE的计算条件。发现新资料以后,再回来更新判断。 英国金融行为监管局FCA在2026年7月更新的AI投资研究指引中,也肯定了AI在整理复杂资料方面的用途,并建议用可信来源复核结果,把AI提供的信息作为继续研究的起点。实际做起来,就是让数字能回查、计算能重跑,问题能继续往下问。 第一次用Codex做股票分析,从哪里开始? 选一只自己熟悉的股票、一个已经结束的行情窗口和一份明确的季度报告。先用上面的任务指令取得数据,做出一页笔记,再逐项补上你真正关心的问题。 查询缺数据,或者笔记里的数字对不上怎么办? 保留错误和缺项,先核对证券代码、权限、单位、报告期间与复权口径。财务回到公告查,计算用保存的输入重跑;缺失值不填零。本例的报告期标签与元级金额差异,也按这个办法分别保留和核对。 TickDB还能支持下一步研究什么? 沿着已验证的行情、财务和估值输入,组织自己的固定观察名单,反复生成研究底稿。新增同业或其他市场前,先确认对应数据是否可用;需要现金流逐项明细时,继续补读公司报告。 从TickDB AI工具入口开始,用自己熟悉的一只股票试一次。值得留下来的,是查数之后,你终于知道该把下一步研究放在哪里。 参考资料 TickDB AI工具页及本篇MCP真实返回:股票信息、历史日线、财务与估值;查询日期2026年10月29日。 中科寒武纪科技股份有限公司《2026年第三季度报告》:主要财务数据、期间说明;新浪财经存档PDF,存档页日期2026年10月24日。 IT之家《寒武纪2026年第三季度归母净利润14.04亿元,同比增长147.74%》:2026年10月23日18时42分;用于对照新闻数据与“AI解读”的判断基准。 江苏证监局《读懂上市公司报告之资产负债表、利润表和现金流量表之间的关系如何?》:2023年10月31日,关于净利润与经营现金流的关系。 FCA《Using AI for investment research》:2025年12月18日首次发布,2026年7月30日更新,关于AI辅助研究与可信来源复核。 OpenAI官方《Model Context Protocol》说明:外部工具与信息的连接方式;查阅于2026年10月29日。 本文展示数据整理与研究方法,寒武纪用于接口与笔记演示,不构成买卖建议。行情、财务与估值按文中所列时间使用。
浏览21
评论0
收藏0
用户头像mx_****08999
2026-10-31 发布
什么是量化交易 在我看来,由固定的行为准则作为依据,机械式的进行交易的过程,都可成为量化 交易。我朋友当学生的时候用的就是excel,做商品跨期对冲套利,每天收盘后用excel手动更新数据,收益也很可观。一个完整的量化交易策略研究过程应该时这么几个步骤: 在市场的毒打中,发现某种市场规律(金融异象) 在有效市场假说那些人看来,市场的资产应当已经被充分定价了, 比如比较常见的“阻力位”、“支撑位”。比如MACD金叉死叉,比如均线金叉死叉。 当发现这种规律之后,我们可能需要通过准确数学的语言描述出来,比如阻力位就是一个非常抽象的概念,每个人定义的都不同,但是金叉死叉就是一个很容易通过数学准确描述的东西,自然金叉死叉就更好验证。 实证研究 这种异象到底能不能赚钱,不能靠拍脑袋决定,我们需要编写一个策略去验证想法是否正确。这一部分会在接下来的策略开发部分详细介绍。 当获取了策略的收益之后,我们还需要对策略进行绩效分析,以此判断我们的策略到底赚的什么钱,年化多少,最大回撤多少等等,由此才能够在策略产生回测的时候心里有数。这部分会在策略绩效评估部分介绍。 模拟盘 策略开发以及回测都完成后,我们需要按照真实的行情模拟一段时间,以便知道我们的策略是在历史数据上玩数据挖掘游戏还是真的印钞机。 评估策略容量、小资金实盘 模拟盘最大的问题是你的买入行为不会对市场造成冲击,往往我们还需要实盘一段时间才知道是否可行,这部分距离我们比较遥远,以后再说。 可见均线的金叉死叉确实能够筛选出部分行情,进行趋势性的做多或者做空,可以带来不菲的收益。但是我们都知道,市场不是一直处于趋势中的,可能一年中绝大多数时间都是振荡行情,这段时间还是使用金叉死叉做多做空会不会对策略收益造成毁灭性打击呢?商品市场中趋势往往更顺畅,一次就持续好几个月,但是股票市场中,一步三回头,趋势性更弱,以后我们讲因子部分,有很多因子能够定量描述这种趋势,更有助于我们挑选标的。 策略 事件驱动的回测策略中,我们需要通过“回调”的方式,执行买入、卖出操作,我们需要自己计算当前账户中所剩金额,手动指定下单的价格(市价限价)和数量。 一般一个策略,可以分为这几个大的模块 信号产生 负责产生买入和卖出信号,在这个案例中就是MA5>MA20时发出做多信号,相反情况发出做空信号。往往这一部分决定了策略的上限。 交易执行 负责对将信号转化为实际的买入卖出操作,由于信号产生不一定会照顾到实际的市场情况,比如当某个标的涨停时,很可能带着5日线迅速超过20日线,发出买入指令,但是此时已经涨停了,无法买入,这时候交易执行模块需要对这种情况进行过滤,还有一些比如在期货市场中,需要定时调换主力合约,这些都需要在交易执行模块操作。再比一些拆单,买一卖一超价等,这块以后有机会可以分享,但是太细节了不符合今天的主题。 风险控制 负责对交易所合规、策略整体风险控制等。比如交易所不允许自成交,比如报单速度限额等,这里我们基本涉及不到,所以重点分享的是策略的止盈止损等。往往通过简单地多空信号还不能实现及时的退出,有时可能已经跌了非常多了五日线才下穿20日线,这时候开空有可能又会因为跌多了反弹来回打脸,所以我们策略还需要依据价格的波动及时的进行止损或止盈,这一块可以在后续的策略优化部分分享。 策略优化 策略还有几个可以优化的地方 交易多个资产 在市场呆的久了就会发现,趋势性行情可能每年才有一两次,甚至一些商品,可能10年会有那么几个特别大的趋势性行情,但是换到每年,都有那么几个商品在大行情中,比如这几年的原油。我们是否可以找到一批趋势性很强的资产然后合理的分配资金,并捕获这种行情呢?当然可以,所以才有ATR这种用法,推荐一本书《海龟交易法则》,也算量化鼻祖了。 止盈止损 拿到策略的回测图,我们会发现一些比较有意思的时期,比如这段时期,沪深300已经开始连续下跌了5%,才发出死叉信号,那我们是否可以在账户开始发生回撤达到一定幅度时就提前退出?特别是在期货、期权这种杠杆交易中。 优化交易下单 我们策略中经常为了快速成交,直接使用市价单,但是快速的买入卖出很可能导致交易成本过高,有没有可能通过限定在超一档,通过快速挂撤单来降低成本呢? 优化结果 这段时间趋势跟踪策略收益都非常可观。
浏览16
评论0
收藏0
用户头像sh_***174w0d
2026-10-30 发布
引言:市场艰难,如何靠“祖训”逆风翻盘? 最近很多朋友留言说现在的市场太难了,满仓一路发绿,资金回撤让人焦虑得吃不下饭,完全不知道该怎么操作。面对迷茫与波动,唯有沉下心来,遵循老总结的“大A祖训”,掌握其中的底层逻辑与交易心法,才能帮助我们在市场中锁定胜局、摆脱亏损,实现九月份账户的逆风翻盘! 纪律篇:严格止盈,见好就收 在A股市场操作,必须建立严格的止盈纪律,切忌因为贪婪而错失落袋为安的机会。无论手中筹码多好,都要做到见好就收。老总结的止盈铁律如下: ●连红3****天减半仓:当账户连续红了三天、有收益落袋时,不要犹豫,直接先减半仓锁定胜局。 ●连红5****天全清仓:如果账户连续红了五天,毫不纠结,直接全部清仓出局,落袋为安。 **●**克服心理手痒:但凡你盯着账户上的盈利数字开始手痒、恨不得去点开朋友圈晒截图的时候,必须立刻止盈空仓!只要盈利时能果断落袋,你的操作基本上就不会失手。 心态篇:宁可卖飞拍大腿,绝不死扛到割肉 炒股心态决定成败,牢记“赚得少比赔钱强100倍”的道理。面对“卖飞”与“死扛”,投资者需要建立正确的认知对比: **对比维度:**交易心态 **落袋****卖飞:**保住本利,心态平稳,最多看着后续涨幅拍大腿 死扛割肉**:**亏损不断扩大,心理崩溃,半夜躺在床上翻来覆去睡不着觉 ●对比维度**:**最终结局 **落袋****卖飞:**资金安全,手里有现金,随时可以重新布局 死扛割肉**:**深度套牢,死扛到最后难以为继,只能痛苦割肉离场 避坑篇:拒绝反向Buff,切勿与股票“谈恋爱” 散户在日常交易中最容易陷入以下两大心理与操作陷阱: **●****“二选一”**魔咒:当你同时看好两只股票时,千万不要费劲去搞二选一!因为事实往往是,你选完的那一只往往一路发绿,而没选的那一只反而直接拉起来,反向Buff直接拉满。 **●****“恋爱脑”**陷阱:不要跟你持仓的股票搞谈恋爱那一套,对所有的股票都要“渣”一点。亏了死拽着不撒手,赚了又舍不得抛害怕卖飞——你爱信它、死等它,到最后百分之百是深度套牢,套到你动都动不了。 策略篇:学会适当空仓,闷声才能发大财 控制交易节奏是拉开收益差距的关键。 当炒股炒累了、觉得最近市场很难受的时候,逼自己空仓两天。 为什么要强迫自己空仓?因为天天满仓瞎折腾,只会让情绪主导交易,陷入越做越亏的恶性循环。“逼自己空仓”能够帮你切断情绪化交易,及时清空大脑、冷静观察盘面。沉下心来,耐心等待高确定性的买点,“闷声才能发大财”,保持冷静反而更容易吃到大肉。 总结与行动呼吁:否极泰来,并肩作战 大A祖训核心提炼 1.严格止盈:**连红3**天减半仓,连红5天全清仓,手痒想晒截图时必须立刻止盈空仓。 **2.**正确心态:赚少强于赔钱百倍,宁可拍大腿卖飞,绝不死扛到割肉。 **3.**避开魔咒:看好两只股票切勿费劲二选一,防止反向Buff直接拉满。 **4.**拒绝恋爱:对股票要“渣”一点,切忌“爱信它、死等它”导致深度套牢。 5.节奏控制:难受时逼自己空仓两天,打破瞎折腾循环,沉下心闷声发大财。
浏览44
评论0
收藏0
用户头像sh_***312kg3
2026-10-30 发布
做 Python 项目时,如果需要展示黄金、白银的最新价格,单靠手动更新数据显然不太现实。更常见的做法是接入行情 API,让程序定时获取报价,再用于行情展示、价格监控等场景。 这篇文章从实际开发出发,介绍如何使用 Python 请求贵金属行情 API,并处理接口异常和数据校验。示例采用通用 REST API 调用方式,具体请求地址和参数需要以所选服务的官方文档为准。 一、接入前要确认哪些信息? 黄金和白银的行情标识通常与报价市场有关,例如 XAU/USD 代表黄金兑美元,XAG/USD 代表白银兑美元。不同服务商的代码格式可能不同,不能直接假定所有接口都使用相同的标识。 选择接口时,我一般会关注以下几点: 数据类型:是否提供实时报价、Tick 数据或历史行情。 更新频率:接口返回的是最新报价,还是存在一定延迟的数据。 认证方式:API Key 应放在请求头还是其他指定位置。 调用限制:每秒请求次数和每日调用额度是多少。 返回结构:价格、时间戳和交易标的分别对应哪个字段。 这些信息确认清楚后,编写请求代码会简单很多。 二、使用 Python 请求行情接口 Python 可以通过 requests 发送 HTTP 请求。先安装依赖: pip install requests 下面是一个通用的 REST API 请求模板。为了避免把不同服务商的接口格式混为一谈,实际使用时需要根据官方文档配置地址、参数和认证方式。 import os import requests API_URL = os.getenv("DEEPTICK_API_URL") API_KEY = os.getenv("DEEPTICK_API_KEY") def get_quote(symbol):     if not API_URL or not API_KEY:         raise RuntimeError("请配置 API 地址和密钥")     response = requests.get(         API_URL,         params={"symbol": symbol},         headers={"Authorization": f"Bearer {API_KEY}"},         timeout=10     )     response.raise_for_status()     data = response.json()     if not isinstance(data, dict):         raise ValueError("返回数据格式不正确")     return data if __name__ == "__main__":     for symbol in ("XAUUSD", "XAGUSD"):         try:             print(symbol, get_quote(symbol))         except (requests.RequestException,                 ValueError, RuntimeError) as exc:             print(f"{symbol} 请求失败:{exc}") 这里使用环境变量保存接口地址和密钥,避免把敏感信息直接写入代码。需要注意,示例中的参数名、认证头和标的代码都是通用写法,不能直接认定为某个服务的实际规范。 例如,查看 DeepTick API 的 REST Quote 文档时,可以依据其实际接口说明配置请求地址、参数和返回字段,而不是直接套用通用模板。 三、拿到数据后,还需要做什么? 接口返回 JSON,并不代表数据一定可以直接用于业务。实际开发中,我会重点检查三个方面。 价格是否有效。 判断价格字段是否存在、能否转换为数字,并排除明显异常的值。价格字段的具体名称应以接口返回结构为准。 行情是否过期。 如果接口提供时间戳,可以记录数据更新时间,并根据业务要求判断数据是否仍然有效。需要注意秒级与毫秒级时间戳的区别。 请求是否稳定。 设置合理的超时时间,对临时网络错误进行有限次数的重试,同时记录错误日志。遇到认证失败或参数错误时,应优先检查配置,而不是不断重复请求。 四、REST API 和 Tick 数据有什么区别? 如果只是制作一个定时刷新的行情页面,REST API 通常比较容易接入。如果需要观察更密集的价格变化,则需要确认服务是否提供 Tick 数据,以及实际更新频率和数据覆盖范围。 无论选择哪种方式,都建议将数据采集、字段解析和业务逻辑分开。这样在后续增加白银报价、历史行情或价格提醒功能时,不需要反复修改核心代码。 对我来说,贵金属行情接入最值得关注的,并不只是能否获取一个价格,而是数据来源是否明确、更新时间是否可靠,以及异常发生时程序能否正确处理。把这些基础环节做好,后续扩展功能也会更有把握。
浏览39
评论0
收藏0
用户头像9点半量化
2026-10-30 发布
引言:从频频亏损到悟出交易真谛 曾经,我的股票账户亏到只剩下 5000 元。那时候的我焦虑万分,整个人陷入盲目的放空与挣扎中。为了扭转亏损,我把屏幕上的五六条均线、MACD、KDJ 以及布林带全开着,天天盯着日线图看盘到凌晨一两点。可结果呢?该亏还是亏,折腾得一点脾气都没有。 直到后来,我遇到了我们公司的总监——一位以前专门在某代做“涨停板”的高手。他平时话很少,有一次团队聚餐大家都喝得有点多,他坐在我旁边,看我正拿着手机反反复复地翻图复盘,便拍了拍我的肩膀,跟我说了这句让我醍醐灌顶的话: “天天抠这些花里胡哨的东西一点用都没有,看周线!” 当时我心里其实很不服气,反问他:“那到底该看什么?”他只说了三个字:“看周线。”他让我回家把所有翻倍股票的周线图调出来,一张一张仔细看它们在起飞之前到底长什么样。 那天晚上回到家,我真的调出了几十张翻倍股的周线图,一直研究到天亮。越翻到后面,我越觉得后背发凉——因为每一张图在启动前长得都差不多,简直就像是一个师傅教出来的一样! 那一夜之后,我彻底关掉了日线窗口,只留周线。凭着剩下的这 5000 元本金,在半年时间里,账户资金成功突破到了七位数。 你可以不信,也可以不学,但你要知道,市场就是希望的制造,学到了、用到了,就会有所收获。 核心干货:扭亏为盈的“周线四句口诀” 十至今日,我在市场里做交易依然使用的是这套逻辑,从来没有换过方法。我什么也不图,我就是看不惯散户这么憋屈,凭什么散户就要给市场垫底?来,我们开干! 第一句:周线突然放量阳线 —— 识别主力大资金进场 当周线级别突然拉出一条实打实的阳线,且周成交量比前几周翻了数倍时,这就证明“有人来干活了”。这绝不是小打小闹,散户弄不出这个动静,游资也撑不了这一整周的量能,只有大体量的资金才会这么进场。碰上这种信号,你别犹豫,立刻把它扔进你的自选股,给我盯好了! 第二句:周线MACD金差(对比日线金差) —— 锁定大级别趋势 周线级别的 MACD 金差与日线金差压根就不是一个级别的东西。日线金差短了几天就散场了;而周线级别的趋势一旦形成,金差一出来,往少了说能走两三个月,要是遇上顺畅的行情,甚至能走大半年。因为主力进了大资金想掉头没那么容易,必须把空间拉够了才会出货。所以,周线金差一出现,别老想着跑,一定要拿住了! 第三句:回踩20周均线 —— 站在主力成本线买入 股价涨了一段往回踩,踩到 20 周均线附近就差不多了。大资金的建仓成本差不多就在这条线附近,主力不会轻易让让自己亏钱砸穿成本区,砸到成本区附近他就舍不得砸了。所以当股价回落到 20 周均线一代、成交量同步缩小的时候,说明卖的人根本卖不动了。这时候伸手建仓,不敢说买在最低点吧,至少是买在了主力的成本线上。 第四句:周线连三阳温和放量 —— 迎接主升浪加速 当周线连续三周走阳线稳步往上推,成交量没暴量也没缩量、跟着温和放大时,这就说明“大招”要来了!这是主力筹码吃得差不多了、准备开拉的信号。很多人就是在这个节点被颠下去的,一看连续三个星期出阳线,心里就有一些发毛准备跑,结果真正加速暴涨的这一段主升浪,正好让你给错过了。 以上这四句呢,都是我自己实操过的,不敢说是经验之谈,最起码帮各位验证了到底好不好用。 思维转变:为什么周线能击碎日线迷局? 当你用了这套方法,你就会明白为什么以前天天蹲在日线里会频频割肉。天天盯日线,极容易陷入“一涨就追、一跌就割”的恶性循环。而从日线切换到周线后,整个视角和心态将彻底蜕变: **●**日线心态:被短期几天的涨跌牵着鼻子走,天天盯着纷繁复杂的指标,极其容易被主力的洗盘演戏和诱导性走势误导,情绪反复受到折磨。 ●周线视****角:所有的 K 线都慢了下来!周线过滤掉了日线级别的日常噪音,让你能够一眼看清哪些是在演戏洗盘,哪些才是真正的动向,从而在操作中做到心中有数、从容应对。
浏览44
评论0
收藏0
用户头像sh_*219t3e
2026-09-23 发布
亲测最好用的AI编写量化策略工具,可以让 AI 直接生成同花顺Supermind上可运行的策略代码,代码质量远高于直接使用 DeepSeek、GPT等平台。 😃Supermind AI工具入口:https://easyquant.ai/ 大家可以直接向AI描述策略,然后一键生成可运行的完整策略代码,也可以把它当做一个API 查询工具。
浏览724
评论21
收藏0
用户头像sh_***174w0d
2026-10-29 发布
引言:为什么经典指标MACD总让你觉得“不太准”? 在股市实战中,不少散户朋友经常向老谈抱怨:“MACD这个指标太迟钝了,看金叉买入就挨打,看死叉卖出就踏空,到底准不准?” 但与此同时,你会发现绝大多数职业高手和老股民,每天盯盘时依然把MACD放在核心观察位置。 为什么会出现这种反差?答案很简单:大多数人只学会了最皮毛的**“金叉买、死叉卖”,却忽略了MACD****最精髓的隐藏技巧与多空博弈逻辑。** 今天,老谈就结合自己多年的实战盘感,把老手都在暗中使用的3****个核心高胜率技巧一次性拆解透彻。带你扫清技术分析的盲区,建立真正科学、系统的交易思维! 技巧一:追根溯源——MACD参数(12, 26, 9)背后的玄机与调整 天天看MACD,但你知道默认参数 12, 26, 9 是怎么来的吗?这背后藏着一段上世纪70年代美股的“陈年旧事”: ●****美股默认参数逻辑(1970年代):当时美股每周交易 6****天,一个月包含 26****个交易日。因此,指标发明者将 12 设定为两周交易日,26 设定为一个月交易日,而 9 则代表一周半的平滑均线。 ●A股适配调整理论:我国A股市场每周只有 5****个交易日。按照同样的逻辑推导,理论上我们应当将MACD参数微调为 10, 20, 8 来匹配A股的交易节奏。 ●**老手实战视角:虽然在实际实战中,调不调整参数对最终走势的影响差距并不大——因为默认参数 12, 26, 9 已经在全球市场形成了强大的全网共识基准**;但理解这套参数的演变逻辑,能帮你建立严谨的技术分析底层思维,这正是绝大多数散户的知识盲区。 技巧二:看清零轴——“水上”与“水下”的多空博弈与三句口诀 MACD指标由 DIF****线 与 DEA****线(快慢线)、金叉**/死差、红柱/**绿柱 以及 零轴 组成。其中,零轴 是划分多空强弱最关键的分界线: ●****水上(零轴上方):快慢线运行在零轴上方,表明多方力量占据绝对主导。 ●****水下(零轴下方):快慢线运行在零轴下方,表明空方力量占据绝对主导。 分清了“水上”与“水下”,再看信号就会清晰很多。老谈建议大家牢记以下三句实战口诀: 1.水下金叉暂不参与 在零轴下方出现的金叉,本质上只是空头趋势中的短暂超跌反弹,极难形成真正的趋势反转。很多时候,哪怕盘面上连续出现三次水下金叉,其确定性依然非常低,绝大多数都是主力精心布置的诱多陷阱。老手提醒:水下金叉,管住手,暂时不要参与! 2.水上金叉、水下死叉更靠谱 顺势而为才是交易的王道。当金叉出现在水上时,多头能量充沛,往往是一波顺势主升浪行情的起点;反之,当死叉出现在水下时,意味着空头再次发力,后续极易迎来股价的加速下跌。 3.水上死叉要看股价 当双线处于零轴上方(水上)却出现死叉时,盲目看空容易被洗盘出局。这时候要结合股价支撑,按照以下 三步决策树 严密执行: 定位:找到水上死叉发生的那一根K线。 画线:以该K线的 最低价 为基准,画出一条水平支撑线。 决策:若后续股价回调 未跌破 该支撑线,说明仅为主力洗盘,坚定持股不动;若股价 跌破 了该支撑线,说明支撑确认失效,短线必须果断看空离场。 技巧三:识别背离——预判趋势反转的高阶法则 背离,指的是 MACD****指标走势与股价真实走势出现不同步 的现象,这是预判趋势临界点最高效的工具。 顶背离(高位看空预警) 判定要点*:在上涨趋势中,股价创出了阶段新高,但MACD快慢线却没有同步创出新高,且下方的红柱呈递减缩短状态。 ​市场含义​*:动能严重衰竭,属于典型的“量价背离”,预示高位上涨乏力,后续看空概率极高。 底背离(低位看多预警) 判定要点*:在下跌趋势中,股价创出了阶段新低,但MACD快慢线却没有创出新低,且下方的绿柱在逐渐缩小。 ​市场含义​*:杀跌力量衰尽,卖盘抛压枯竭,预示跌势即将止步,极有可能迎来底部反转。 总结与理性交易提示 **●**参数背景:厘清 12, 26, 9 的历史源头,理解A股五天交易日逻辑及市场共识基准的形成。 **●**零轴口诀:以零轴界定多空阵营,恪守“水下金叉不参与(谨防多重诱多陷阱)”、“水上金叉/水下死叉更靠谱”以及“水上死叉找K线最低价做支撑”的操作律条。 **●**背离预警:高位顶背离警惕动能衰竭果断减仓,低位底背离捕捉底部反转蓄势布局。 理性交易提示:必须承认,MACD归根结底是一个基于历史均线平滑处理的滞后指标。在震荡市或剧烈波动的行情中,它同样会产生虚假信号。在实战操作中,大家千万不能单打独斗,必须结合量价关系、K线形态以及当前的板块情绪进行综合研判。 股市投资漫长且艰难,但只要方法对头,就能少走弯路。
浏览91
评论0
收藏0
用户头像9点半量化
2026-10-29 发布
引言:股市迷茫期,如何抓准主力节奏? 近期市场震荡加剧,很多股民朋友纷纷给老几留言,直言当前行情太难做,面对波谲云诡的盘面完全找不准方向,不知道该如何布局与操作。 针对大家的操作痛点,资深投资者“老几”总结出了一套通俗易懂的“独门心法”。这套心法摒弃了复杂的指标堆砌,门槛极低,哪怕只有小学文化水平,也能一听就懂、拿来就用! 量价结合,主力无处遁形。 本篇博文的核心目的,正是通过深入拆解老几心法中“换手率”与“量比”两大核心指标的组合逻辑,带大家看清主力资金的真实意图,准确把握买卖节奏,摆脱被动挨打的局面的。 核心干货:换手率与量比四大组合逻辑拆解 在实战盘口中,换手率(代表筹码换手活跃度与流动性)与量比(代表短线爆量程度与买盘爆发力)的相互配合,是研判主力资金动向最直接的利器。 结合量价背后的逻辑机制,这四大组合的深度实战解析如下: ●换手率 > 5%,量比 2 ~ 3:量比2~3代表当日成交较过去5日温和放大,呈现健康的放量形态;换手率突破5%则表明筹码开始充分流动,交投趋于活跃。两者结合说明主力资金正温和进场点火,拉升轨迹清晰且无异常抛压,是行情刚刚启动的明确信号,投资者应果断跟随入场。 ●换手率 5% ~ 10%,量比 3 ~ 5:换手率提升至5%~10%,意味着市场关注度极高,多头买盘强劲;量比放大到3~5,代表短线资金呈爆发式涌入,主导盘面。这属于主升浪加速行情的典型特征,此时盘面能量充沛,切忌频繁换股或盲目看空,应当拿牢持仓,坐享主升浪收益。 ●换手率 > 10%,量比 > 5:换手率大于10%代表筹码剧烈大换血,量比大于5意味着短线成交呈现极端喷发态势。面对这种极端量能,投资者在实战中必须恪守低吸高撤的原则:若股价处于底部低位,多为主力不计成本强力扫货吸筹,可逢低果断吸筹;若处于连续大涨后的高位,极度放量往往意味着主力趁着热度高位派发出货、诱骗散户接盘,必须快速撤离规避风险。 ●换手率 > 5%,量比 < 2:换手率放大的同时量比却偏低(小于2),说明相较于近期日均水平,短线成交并未出现爆量加速,但全天总换手却不小。这种“高换手+低量比”的偏离形态,多为主力通过对倒对敲制造交投假象的“虚涨诱多”陷阱,缺乏真实买盘支撑,后市极易缩量阴跌,投资者必须及时撤退。 持续提升:每日心法与周末复盘体系 实战技巧的掌握并非一日之功,想要将这些逻辑融会贯通,离不开系统的日常学习与复盘: **●**每日逻辑追踪:老几每天都会将自己最新的盘面研究方向与逻辑融入“独门心法”中,并在每日的“第一条视频”及时更新。朋友们只需关注老几天,就知道老几的实战实力有多牛了,每天花几分钟看第一条视频,就能不断提升盘感。 **●**周末直播复盘:每个周末,老几都会通过直播的方式带领大家集体复盘,细致梳理一周行情脉络,预判下周板块风口。投资的道路漫长且艰难,老几将始终陪着大家并肩作战。 总结与互动结语 看懂主力资金的动态信号,是摆脱盲目跟风、实现稳定收益的关键。只要熟记“换手率与量比”的四大组合口诀,就能在波诡云谲的盘面中清晰识别主力的启动、加速、吸筹与诱多意图。
浏览81
评论0
收藏0