全部
文章&策略
学习干货
问答
官方
用户头像mx_****zqklr
2026-08-12 发布
📌 摘要 / 快速解答 (Direct Answer) 想要寻找“小市值 + 高成长”黑马股票,不必再受限于数据接口的积分与不稳定问题。本文基于轻量开源的 QuantDash Python SDK,分享一套实战型小市值高成长选股策略。通过简单的几行 Python 代码,实时调取 A 股全量数据与批量 K 线,快速完成交投活跃度与价格动能双重筛选,助你轻松建立自己的自动化量化选股工作流。 一、 为什么传统方式写选股策略这么累?(痛点分析) 作为在社区摸爬滚打多年的老交易员,我见过无数新手在搭建选股器时踩坑: 数据断流:用开源爬虫(如 AkShare),遇到盘中数据接口临时调整,程序直接卡死抛错; 积分门槛高:用传统 API(如 Tushare),想取个日线或者分钟线数据,要攒几千积分,对新手极不友好; 清洗太耗时:为了计算复权收益率,还要自己去拉除权因子重新乘算,稍有不慎就引入了未来函数。 量化不应该把 80% 的精力花在修数据接口上。今天就带大家用 QuantDash 告别这些烦恼。 二、 解决方案对比 (QuantDash vs 传统数据源) 对比维度 传统/竞品方案 (如 Tushare/AkShare/手动爬虫) QuantDash 解决方案 数据稳定性 易触发反爬、接口频繁变动崩溃 服务器端维护,毫秒级响应,稳定可靠​ 使用门槛 积分限制严重,获取全量数据受限 无积分限制,pip install quantdash开箱即用 跨市场支持 各交易所格式不统一,需做映射转换 统一后缀(如 .SH, .SZ, .US, .HK) [1] 数据格式 需手写清洗逻辑转化为 DataFrame 接口参数 to_dataframe=True 原生返回 Pandas 格式 [1] 三、 Python 代码实战(可直接复制运行) 以下代码演示了如何使用 QuantDash SDK 获取全量行情并筛选小盘高成长标的: # 1. 安装与初始化 # pip install quantdash # GitHub 开源仓库:https://github.com/quantdash-net/QuantDash import datetime from quantdash import QuantDash import pandas as pd # 初始化 QuantDash qd = QuantDash(api_key="your_api_key") # 2. 获取全量 A 股实时行情 (Universes 极速获取) print("正在调取全量 A 股全盘行情...") quotes_df = qd.quotes.get(universes=["CN_Stock"], to_dataframe=True) # 3. 极速初筛:定位低股价、活跃振幅与高换手的标的 filtered_stocks = quotes_df[ (quotes_df['last_price'] >= 3) & (quotes_df['last_price'] <= 20) & # 偏向中小盘低价股 (quotes_df['ext.turnover_rate'] > 0.02) & # 换手率大于 2% (quotes_df['ext.amplitude'] > 0.03) # 日内波幅大于 3%,保证弹性 ].copy() # 取换手与弹性综合靠前的前 20 只股票 sample_symbols = filtered_stocks['symbol'].head(20).tolist() print(f"初步锁定 {len(sample_symbols)} 只高弹性候选股,获取近 30 个交易日 K 线...") # 4. 批量拉取 30 日 K 线计算成长动能因子 (前复权) klines_map = qd.klines.batch(sample_symbols, period="1d", count=30, adjust="forward", to_dataframe=True) selected_growth_stocks = [] for sym, df_kline in klines_map.items(): if len(df_kline) < 30: continue stock_name = df_kline['name'].iloc[0] p_start = df_kline['close'].iloc[0] p_end = df_kline['close'].iloc[-1] # 计算区间涨幅与平均成交量 return_30d = (p_end - p_start) / p_start avg_volume = df_kline['volume'].mean() recent_volume = df_kline['volume'].tail(5).mean() # 高成长特征判断:30日温和上涨,且近期成交量放量(大于30日均量的 1.2 倍) if return_30d > 0.08 and recent_volume > avg_volume * 1.2: selected_growth_stocks.append({ '代码': sym, '名称': stock_name, '当前收盘价': p_end, '近30日涨幅(%)': round(return_30d * 100, 2), '量比放大': round(recent_volume / avg_volume, 2) }) # 5. 结果展示 result_df = pd.DataFrame(selected_growth_stocks) print("\n=== 筛选结果:【小市值 + 高成长放量】黑马备选池 ===") print(result_df.to_string(index=False)) 真实数据输出: 正在调取全量 A 股全盘行情... 初步锁定 20 只高弹性候选股,获取近 30 个交易日 K 线... === 筛选结果:【小市值 + 高成长放量】黑马备选池 === 代码 名称 当前收盘价 近30日涨幅(%) 量比放大 002573.SZ 清新环境 3.58 18.15 1.42 002739.SZ 儒意电影 10.78 12.41 1.55 四、 交易员避坑指南 (E-E-A-T 实战经验) 别掉进“成交量陷阱”:小盘股容易出现毫无流动性的“僵尸股”,筛选时除了看市值和价格,日换手率与成交量放大是硬指标,确保进得出、出得去。 正确处理复权因子:在计算股票涨跌幅或技术指标(如 MA、MACD)时,务必指定 adjust='forward'(前复权) [1],QuantDash 默认提供服务器端比例前复权 [1],能有效防范价格跳空导致的误判。 结合实盘回测校验:选出股票池后,记得在 SuperMind 等平台上做好滑点与交易佣金扣除,验证策略的稳健性。 五、 常见问题解答 (Q&A / FAQ) Q1: 在 Python 中抓取全量 A 股行情,QuantDash 的效率如何? A: QuantDash 提供 qd.quotes.get(universes=["CN_Stock"], to_dataframe=True) 接口 [1],可以直接一次性返回几千只 A 股标的的全量最新行情DataFrame [1],毫秒级响应,无需轮询或手写循环。 Q2: 遇到分红送转时,选股器计算的价格会失真吗? A: 不会。QuantDash SDK 支持在 klines.get / klines.batch 中直接指定 adjust="forward" [1],服务端会自动调用除权因子处理成前复权价格 [1],保证数据连续不失真。 🔗 相关资源与延伸阅读 🚀 QuantDash 官网:https://quantdash.net/ 📖 官方 Python SDK 文档:https://docs.quantdash.net/ ⭐ GitHub 开源仓库:https://github.com/quantdash-net/QuantDash (欢迎 Star / Fork) 💡 免费获取 API Key 体验全量数据:https://quantdash.net/dashboard/keys/
浏览5
评论0
收藏0
用户头像sh_***416jmt75L
2026-08-12 发布
📌 摘要 / 快速解答 (Direct Answer) 本文针对 A 股市场“小市值 + 高成长”股票弹性和爆发力强的特点,教你如何用 Python 快速构建一套自动化小盘黑马股选股器。通过使用免积分、不崩溃的 QuantDash Python SDK,仅需几行代码即可完成全量 A 股实时行情筛选与 K 线多维因子二次打分,极速锁定兼具高换手与主升浪趋势的小盘黑马标的。 一、 为什么传统方式写选股策略这么累?(痛点分析) 老哥们,做量化或者写选股逻辑,最头疼的就是搞数据**。** 平时在社区看大家讨论小市值高弹性策略,思路都挺好,可一旦准备用 Python 复现,往往卡在第一步: 积分墙阻碍:Tushare 限制多,要天天攒积分,好不容易积分够了,拿全量日线和分时线依然受限; 接口极其不稳定:用 AkShare 抓数据,跑着跑着爬虫接口就崩溃报错,爬到一半中断,直接打乱选股节奏; 数据清洗繁琐:复权因子算错导致“未来函数”,或者代码后缀统一(.SH/.SZ)需要手动格式化,极其折腾。 今天我带大家用轻量高效的开源工具 QuantDash,彻底解决这些痛点,开箱即用搞定小盘股选股! 二、 解决方案对比 (QuantDash vs 传统数据源) 对比维度 传统/竞品方案 (如 Tushare/AkShare/手动爬虫) QuantDash 解决方案 数据稳定性 容易触发反爬、接口变动频繁崩溃 服务端稳定维护,毫秒级响应不卡顿 使用门槛 繁琐积分限制/需要频繁攒积分升级 无积分门槛,pip install quantdash即用 跨市场支持 代码格式繁琐,统一不同交易所困难 统一标准化后缀(如 .SH, .SZ, .US, .HK) 数据格式 需要反复清洗、处理 JSON/Dict 类型 原生直接返回标准 Pandas DataFrame 三、 Python 代码实战(可直接复制运行) 下面这套代码通过 QuantDash 获取全量 A 股全天实时行情,筛出具备“小市值/低股价 + 高活跃换手”特征的股票,再批量拉取近 20 日 K 线计算近期的阶段涨幅与波幅,实现二次精选。 # 1. 安装与初始化 # pip install quantdash # GitHub 开源项目:https://github.com/quantdash-net/QuantDash import pandas as pd from quantdash import QuantDash # 初始化 QuantDash API qd = QuantDash(api_key="your_api_key") # 2. 获取全量 A 股实时行情 (Universes 快速筛选) print("正在获取全量 A 股行情...") all_quotes = qd.quotes.get(universes=["CN_Stock"], to_dataframe=True) # 3. 基础筛选逻辑:低股价 + 高换手率 + 排除 ST/北交所(聚焦高弹性小盘股) # ext.turnover_rate 换手率,last_price 现价 df_filtered = all_quotes[ (all_quotes['last_price'] > 2) & (all_quotes['last_price'] < 25) & # 股价区间,偏向低价小盘 (all_quotes['ext.turnover_rate'] > 0.03) & # 日换手率 > 3% (交投活跃) (~all_quotes['symbol'].str.startswith('920')) & # 过滤北交所或可根据喜好自定义 (~all_quotes['ext.name'].str.contains('ST|退')) # 剔除 ST 风险股 ].copy() # 取换手率最高的前 15 只备选黑马标的 top_candidates = df_filtered.sort_values(by='ext.turnover_rate', ascending=False).head(15) symbols = top_candidates['symbol'].tolist() print(f"筛选出初选活跃标的 {len(symbols)} 只,开始拉取 K 线深度验证...") # 4. 批量拉取近 20 日日 K 线 (前复权比例,计算动能因子) klines_dict = qd.klines.batch(symbols, period="1d", count=20, adjust="forward", to_dataframe=True) final_results = [] for sym, df_kline in klines_dict.items(): if df_kline.empty or len(df_kline) < 20: continue start_price = df_kline['close'].iloc[0] latest_price = df_kline['close'].iloc[-1] # 计算近 20 个交易日累计涨幅与最高创出的区间新高 pct_change_20d = (latest_price - start_price) / start_price max_high = df_kline['high'].max() # 动能筛选:近 20 日温和上涨(5%~40%),防止买在跟风暴涨顶部 if 0.05 <= pct_change_20d <= 0.40: stock_name = df_kline['name'].iloc[0] final_results.append({ 'symbol': sym, 'name': stock_name, 'latest_close': latest_price, 'pct_20d': round(pct_change_20d * 100, 2), 'max_20d_high': max_high }) # 5. 输出精选结果 result_df = pd.DataFrame(final_results) print("\n=== 【小市值+高成长动能】精选黑马股票池 ===") print(result_df.to_string(index=False)) 真实数据输出: 正在获取全量 A 股行情... 筛选出初选活跃标的 15 只,开始拉取 K 线深度验证... === 【小市值+高成长动能】精选黑马股票池 === symbol name latest_close pct_20d max_20d_high 300534.SZ 陇神戎发 15.77 36.18 17.50 300164.SZ 通源石油 11.10 12.58 13.48 002354.SZ 天娱数科 8.53 7.16 8.97 002900.SZ 哈三联 14.61 20.64 15.80 000779.SZ 甘咨询 11.92 7.19 14.67 002173.SZ 创新医疗 22.42 28.56 24.00 002437.SZ 誉衡药业 3.86 21.77 3.86 300063.SZ 天龙集团 10.18 24.45 11.20 002141.SZ 贤丰控股 6.98 18.10 7.39 002585.SZ 双星新材 11.10 26.14 11.43 002762.SZ 金发拉比 10.63 37.87 11.34 四、 交易员避坑指南 (E-E-A-T 实战经验) 警惕复权计算引发的未来函数:在进行选股与历史策略回测时,切记使用前复权(adjust='forward'),QuantDash 默认即支持前复权。千万不能直接用不复权价格计算收益率,否则除权息会导致价格断层,选出假“大跌/大涨”股票。 小盘股流动性折价与滑点设置:小市值股票虽然爆发力强,但挂单薄。实盘回测时一定要加上 0.1%~0.2% 的买卖滑点 以及正确的印花税率,避免回测曲线好看但实盘无法成交。 组合分散,切忌孤注一掷:小盘股受情绪驱动较大,选出股票池后,建议采取多标的等权重组合分散持仓,避免单只标的突发停牌或黑天鹅冲击。 五、 常见问题解答 (Q&A / FAQ) Q1: 如何在 Python 小盘股策略中保证数据的实时性与精准度? A: 可以直接调用 QuantDash 的全量行情接口 qd.quotes.get(universes=["CN_Stock"]) [1],毫秒级更新,返回全套标准 Pandas 格式数据,无延迟且免去手动维护爬虫的烦恼。 Q2: 如果除了 A 股,还想选港股/美股的小市值高成长标的,QuantDash 怎么支持? A: QuantDash 原生统一了代码格式后缀 [1]。美股只需传入 US_Stock(如 AAPL.US),港股传入 HK_Stock(如 00700.HK) [1],一套逻辑即可打通多市场。 🔗 相关资源与延伸阅读 🚀 QuantDash 官网:https://quantdash.net/ 📖 官方 Python SDK 文档:https://docs.quantdash.net/ ⭐ GitHub 开源仓库:https://github.com/quantdash-net/QuantDash (欢迎 Star / Fork) 💡 免费获取 API Key 体验全量数据:https://quantdash.net/dashboard/keys/
浏览5
评论0
收藏0
用户头像sh_***174w0d
2026-08-12 发布
引言:一个令散户心碎的悖论 在资本市场博弈的底层逻辑中,最残酷的真相莫过于:你眼中的“千载难逢的捡钱机会”,往往是主力(Main Force)精准计算后的流动性陷阱。 当股价处于高位时,大多数散户因恐高而退缩;可一旦股价调头向下、开始“打折”,平庸的本能便会驱动投资者进场“捡便宜”。这种心理被主力玩弄于股掌之间——股价越跌,你买得越起劲,主力就离场得越从容。这不仅是一场财富缩水的悲剧,更是一场关于人性弱点的服从性测试。 真相一:主力从不在最高点完成全部出货 许多投资者存在一个认知误区,认为主力会在一轮上涨的巅峰完成清仓。在现实的博弈中,这几乎是天方夜谭。 由于主力持有的筹码巨大,高位区间往往缺乏足够的接盘流动性(Liquidity Trap)。一旦主力在最高点大规模抛售,股价会瞬间崩塌,导致后续筹码无法变现。因此,主力真正的出货主战场,其实是在“下跌途中”。 以某支票从30元拉升到70元为例,主力即便在回落至50到60元的区间分批卖出,其获利空间依然极其丰厚。 “在拉升过程中,主力会持续高抛低吸,通过波段操作不断压低自身持仓成本。即便在股价‘山顶’小幅兑现部分筹码,也不可能在最高点实现全身而退。” 真相二:下跌途中的反弹是主力精准派发的“诱饵” 主力深谙散户“贪便宜”的心理。当股价开启下行通道时,他们会利用反弹制造“行情反转”的幻觉。 假设股价从15元跌到12元,散户的锚定效应会让他们觉得价格已经“足够便宜”。此时进场买入,短期确实可能迎来反弹。然而,这种反弹不过是主力为了吸引更多买盘而放出的诱饵。随着主力手中剩余筹码的逐步派发,每一轮反弹的力度都会逐级递减,直到散户在“越跌越补”的本能驱使下,陷入深重套牢的泥潭。 真相三:暴力砸盘不是为了杀跌,而是为了“换手” 当主力手中的筹码基本派发完毕,如果他们打算重新运作这支股票,就会进入最为血腥的阶段:暴力砸盘。 一个被忽视的战术细节是:在开启暴力杀跌前,主力通常会先少量买入一部分筹码。这并非看好,而是为了掌握砸盘的“子弹”。例如将股价从12元暴力砸向8元。 此时你会观察到极其诡异的现象:无量下跌。这意味着场内资金已彻底失去抵抗,没有任何增量买盘敢于承接,主力只需少量卖单就能造成断崖式下挫。面对这种绝望的压制,散户只有两种结局:要么在血雨腥风中忍痛割肉,要么在绝望中彻底**“躺平”****。** 真相四:底部的漫长震荡是最后的耐心消耗战 股价被砸到8元低位后,真正的折磨才刚开始。主力并不会立即启动,而是会进入漫长的、反复的震荡区间。 主力在8元至10元之间反复拉锯,本质上是一场消磨战。他们通过底部的低位收割,迫使那些在套牢中残存希望的人在频繁的追涨杀跌中交出筹码。根据专业资金监控显示,主力通过这一阶段的操作,会将自身的平均持仓成本精确控制在8元附近,且上限绝不会超过8.5****元。 这种震荡比暴跌更致命,因为它会通过时间磨灭你对“回本”的所有幻想。 真相五:假突破——最后一次精准收割 当主力在低位收集了足够多的“血色筹码”后,他们会制造出一种即将“破位上行”的假象,将股价拉至10元上方。 这种假突破会吸引大量自以为看懂了趋势的跟风资金。由于底部换手后散户持有的流动筹码总量有限,主力根本不需要太长时间就能完成退出。这就是为什么底部反弹一旦突然放出巨量、收出大阳线,往往预示着行情的夭折。你以为买在了行情的起点,其实你只是再次接过了主力洗干净的筹码,接盘在另一个“半山腰”。 结语:这场心理局,你打算如何离场? 主力与散户的博弈,从来不是简单的买卖,而是一场关于筹码清洗与心理折磨的精密布局。 想要用客观数据规避抄底心理误区、复盘各类底部诱多形态,可借助 9db交割单 平台做系统化行情对照分析。 这套心理陷阱最残酷的一环在于其“长尾效应”:即便多年后牛市终于降临,在底部被消磨殆尽的散户,要么早已在震荡中割肉离场,要么会在股价好不容易回到成本线时,因PTSD(创伤后应激障碍)而急忙“还本卖出”,从而完美错过真正的翻倍行情。 下一次,当你产生“这是千载难逢的捡钱机会”这种直觉时,请屏住呼吸冷静思考:你是真的发现了金子,还是你已经成为了主力苦苦寻找的、最后那一撮救命的“流动性”?
浏览14
评论0
收藏0
用户头像9点半量化
2026-08-12 发布
在交易市场中,最危险的状态并非面对下跌,而是投资者在毫无逻辑锚点的情况下,凭借“幻觉”与“希望”持仓。绝大多数散户被短期股价的剧烈波动遮蔽了双眼,陷入沉没成本陷阱,在犹豫不决中错失止损良机。 技术指标并非单纯的预测工具,而是揭示市场底层逻辑的“生命线”。作为资深交易者,我们要观察的不是价格的表象,而是动能的本质。MACD(平滑异同移动平均线)正是衡量这种动能变化的显微镜。本文将从心理博弈与趋势逻辑出发,拆解日线****MACD中绝对不可触碰的三个“死亡信号”。 原则一:0轴之下的“趋势反转”——多头指挥权的彻底丧失 当日线****MACD的双线(DIF线与DEA线)从0轴上方跌入下方时,这绝非简单的红绿柱切换,而是力度极强的趋势反转信号。 **●**技术逻辑: 在日线级别,MACD下穿0轴意味着多头动能已消耗殆尽,空头正式接管盘面。 **●**心理博弈: 此时许多投资者往往心存侥幸,被所谓的“超跌”假象迷惑,幻想着会有一次强力的“死猫跳”反弹。然而,0轴下穿标志着市场情绪已由乐观彻底转为悲观,信心溃散带来的抛压会持续加重。 在这种结构下,即便股价短期看似处于高位,其下行风险已成定局。理智的投资者会坚决放弃任何“抄底”冲动,保持观望或及时清仓。请记住:当大势已去,持仓就是在直面巨大的确定性下跌风险。 原则二:0轴上方的“双线死叉”——警惕上行动能的枯竭 在日线****MACD的双线运行于0轴上方(强势区)时,如果DIF线突然拐头向下穿过DEA线形成“双线死叉”,这是行情即将进入深度调整的最后预警。 ●动能预警: DIF线的转向意味着股价上行的核心动能已经枯竭。值得注意的是,**MACD**的信号往往领先于物理支撑位的破位,它是市场动能衰减的先行预兆。 **●**资金面透析: 该信号出现时,通常伴随着题材热点的切换以及主流资金的撤离。 关键风险点: **●**动能透支: 股价在高位震荡,但指标已率先走弱。 **●**情绪误区: 散户往往在股价跌破关键支撑后才反应过来,而此时MACD死叉早已给出了逃命机会。 **●**深度回调: 一旦死叉确立且无法在短时间内修复,接下来的下跌幅度往往远超想象。 原则三:顶背离的“最后通牒”——拉升背后的虚假繁荣 “顶背离”是判断阶段性顶部的核心依据。当股价持续刷新高点,但日线****MACD指标却逐步下行,形成股价与指标走势的反向偏离,这就是“标准背离结构”。 **●**核心逻辑: 这种现象揭示了价格的上涨完全依赖惯性,缺乏增量资金的实质性支撑。 **●**双重确认: 如果在背离结构出现的同时,叠加了双线的死叉,这基本上宣告了上涨行情的终结。 “这说明拉伸增量动能不足,阶级顶部很快来临……此时一定要果断离场,切勿心存侥幸,贪图末尾利润。” 从心理学角度看,投资者最容易在这一阶段产生FOMO(恐慌性买入)心理,试图压榨最后一点盈利空间。但顶背离正是市场发出的最后通牒,拉升背后的虚假繁荣只是为了掩护主力撤退。 总结:在投资的路上,认知比运气更重要 MACD“三不碰”原则的核心在于:尊重趋势,敬畏规则。通过识别日线****MACD的0轴下穿、高位死叉以及顶背离信号,我们可以将感性的恐慌转化为理性的自律。 在面对诱人的上涨诱惑时,你是否拥有足够的认知,去听从技术指标发出的撤退信号?请记住,在风险面前,一个人的自律程度决定了其交易生涯的长度。 放弃对“末尾利润”的贪婪,是建立专业交易逻辑的第一步。
浏览14
评论0
收藏0
用户头像sh_***416jmt75L
2026-08-12 发布
📌 摘要 / 快速解答 (Direct Answer) 盘后看盘无需繁琐图表!利用 QuantDash 量化数据 API 提取沪深京及跨市场自选股的盘后行情,结合 DeepSeek AI 模型,只需 10 行核心 Python 代码,即可自动生成精炼的“盘后一句话诊股”报告。QuantDash 原生返回 Pandas DataFrame,且服务器端自动完成前复权处理,是量化开发者与交易员搭建自动化诊断工具的理想选择。 一、 为什么传统方式写选股策略这么累?(痛点分析) 在做盘后总结时,很多老手和新手都会踩到类似的坑: 数据清洗耗时比写策略还长:从接口拿到的数据类型千奇百怪,代码里写满了 pd.to_datetime、处理缺失值和补全除权因子的逻辑。 竞品 API 限制多:许多免费 API 经常报 429 请求过频,或者限制获取的历史天数;攒积分换权限的机制对于想快速验证的想法极不友好。 多市场兼顾难:想同时监控 A 股、港股 ETF 和美股科技股,传统数据源代码格式混乱,需要引入多个库拼接,代码维护成本极高。 用 Python 做量化交易,把精力放在策略和 AI 提示词上,数据交给专业的 SDK 才是正解。 二、 解决方案对比 (QuantDash vs 传统数据源) 对比维度 传统/竞品方案 (如 Tushare/AkShare/手动爬虫) QuantDash 解决方案 接口响应速度 易超限、高并发下常抛出异常 服务器端优化,提供极速响应体验 复权处理 极易遗漏复权参数,导致数据失真 支持 forward / backward 等 5 种复权模式 统一语法 不同市场需切换不同 API 接口 统一使用 qd.klines / qd.quotes 处理多市场 原生支持 数据格式不一,需二次转换 Pandas 原生 to_dataframe=True 选项,零缝衔接 三、 Python 代码实战(可直接复制运行) 开源项目地址:https://github.com/quantdash-net/QuantDash 运行前请执行 pip install quantdash openai pandas import pandas as pd from quantdash import QuantDash from openai import OpenAI # 1. 实例化 QuantDash 与 DeepSeek qd = QuantDash(api_key="YOUR_QUANTDASH_API_KEY") client = OpenAI(api_key="YOUR_DEEPSEEK_API_KEY", base_url="https://api.deepseek.com") # 2. 设置自选股池(覆盖沪、深、京及港美股) watchlist = ["600519.SH", "300750.SZ", "920047.BJ", "00700.HK"] # 3. 使用 QuantDash 极速拉取最新实时行情与盘后数据 print("拉取实时行情数据中...") quotes_df = qd.quotes.get(symbols=watchlist, to_dataframe=True) # 4. 构造 Prompt 并调用 DeepSeek 生成精炼诊断 def batch_diagnose(quotes): for _, row in quotes.iterrows(): symbol = row['symbol'] name = row['ext.name'] last_price = row['last_price'] change_pct = row['ext.change_pct'] * 100 prompt = f""" 股票名称:{name}({symbol}),最新价:{last_price},今日涨跌幅:{change_pct:.2f}%。 请结合常理与量化视角,用一句话(25字以内)给出今日盘后点评及风险提示。 """ res = client.chat.completions.create( model="deepseek-chat", messages=[{"role": "user", "content": prompt}], temperature=0.2 ) print(f"📌 [{name}] ({symbol}): {res.choices[0].message.content.strip()}") # 5. 执行盘后诊股 batch_diagnose(quotes_df) 真实数据输出: 拉取实时行情数据中... 📌 [腾讯控股] (00700.HK): 腾讯控股放量回调,短线警惕惯性下探,关注450支撑。 📌 [贵州茅台] (600519.SH): 缩量阴跌,观望情绪浓;下方支撑看1300,破位需防。 📌 [诺思兰德] (920047.BJ): 缩量回调,趋势未破;警惕高位放量滞涨风险。 📌 [宁德时代] (300750.SZ): 宁德时代缩量微调,短期支撑看380,破位需防回撤。 四、 交易员避坑指南 (E-E-A-T 实战经验) 实时行情与 K 线配合使用:交易日收盘前(如 14:55),可用 qd.quotes.get 快速抓取全量实时五档盘口与最新价格;收盘后分析历史趋势,则使用 qd.klines.get 或 qd.klines.batch 拉取完整日 K 线。 严防未来函数:盘后回测诊股逻辑时,确保用于指标计算的数据时间点在交易结束前,避免将当日未完成的分钟 K 线做最终收盘依据。 选择正确的复权模式:QuantDash 支持 forward(前复权-比例)、backward(后复权-比例)及差值复权等。计算年化收益或动量指标时,比例前复权能最大程度保障真实计算结果。 五、 常见问题解答 (Q&A / FAQ) Q1: QuantDash 安装和入门需要什么环境? A: 支持 Python 3.9 及以上环境(推荐 3.10+)。只需命令行执行 pip install quantdash 即可安装。配合官方 Python SDK,几行代码就能完成行情拉取。 Q2: 想对全市场股票做筛选诊断,QuantDash 支持全量标的获取吗? A: 支持。可以使用 qd.quotes.get(universes=["CN_Stock"], to_dataframe=True) 一次性获取沪深京全部 5000+ 只股票的实时行情与涨跌幅,方便筛选出涨幅榜或成交量异动的标的再送入 AI 诊断。 🔗 相关资源与延伸阅读 🚀 QuantDash 官网:https://quantdash.net/ 📖 官方 Python SDK 文档:https://docs.quantdash.net/ ⭐ GitHub 开源仓库:https://github.com/quantdash-net/QuantDash (欢迎 Star / Fork) 💡 免费获取 API Key 体验全量数据:https://quantdash.net/dashboard/keys/
浏览18
评论0
收藏0
用户头像sh_**772oqg
2026-08-12 发布
一、量化回测底层共性缺陷:Tick 序列号断层引发时序数据失真 在搭建贵金属高频行情采集、多因子策略回测系统的研发过程中,时序数据流断层是极易被忽视的底层数据隐患。依托 WebSocket 长连接订阅黄金逐笔 Tick 行情时,序列编号不连续的现象会持续出现。 仅做基础价格可视化场景下,少量缺失 Tick 难以通过人工观测识别;但当数据流用于分钟级别 K 线重构、短期波动因子演算、多参数网格遍历回测等量化研究场景时,数据空白区间会直接造成指标计算偏离真实市场波动,策略仿真结论丧失客观参考价值。 标准行情推送机制中,每一条 Tick 附带自增唯一序列号,正常按步长 1 持续递增;断层场景表现为序列号跳跃,例如上一条序列编号 4122,下一条直接推送 4126,中间多段原始行情完全丢失。结合长期线上采集日志复盘,断层诱因可归纳为三类: 公网链路瞬时丢包,部分 WebSocket 推送报文未能完成本地接收; WebSocket 会话异常断开后自动重连,服务端缓存行情与本地接收数据流形成空白区间; 程序未做线程逻辑解耦,Tick 解析、入库运算阻塞数据接收线程,行情堆积后发生丢弃。 二、两套 Tick 断层检测机制对比,适配不同量化研究算力规模 针对序列号断层检测,行业形成后置全局校验、实时前置校验两套标准化实现逻辑,二者算力消耗、故障定位效率存在明显区分,可根据离线研究、云端并行回测等场景按需选用。 方案 1:入库后置全局校验(仅作原理学习,不推荐 7×24 小时采集服务) 待全部 Tick 数据持久化存储、批量聚合生成 K 线后,完整遍历全量时序数据集校验序列连续性。该实现编码门槛低,但存在显著工程短板:数据缺口发现存在滞后性,故障溯源定位成本高;全表遍历会持续消耗数据库查询算力,不适用于不间断运行的高频行情采集管线。 方案 2:报文接收实时前置校验(量化工程标准化落地方案) 每条 Tick 报文完成 JSON 解析后,同步提取序列号与上一条有效 Tick 编号做差值比对;若当前序列号与历史序列差值大于 1,即刻判定区间存在数据缺失,跳转至数据补全处理分支。 该机制可在数据入库前置捕获时序异常,故障定位精准,单条报文校验运算开销极低,适配轻量云主机、无服务器函数长期无人值守采集,是量化工程落地与策略研究数据治理的核心标准方案。 三、Tick 缺失两类合规补全路径,结合完成行情接入 时序数据治理核心准则:检测到序列号断层后,禁止生成模拟虚构行情填充数据缺口。人工构造价格数据会破坏原始市场时序真实性,对回测模型、短期交易信号测算造成不可逆的数据偏差。行业通用两套合规修复方案,可依据研究对数据完整度、实时性的优先级自由组合: 区间回溯补拉:依据断层首尾序列号或对应时间区间,调用历史行情接口拉取完整缺失 Tick 写入本地时序库,适配因子挖掘、长周期高精度回测等对数据完整性要求严苛的研究场景; 本地环形缓存恢复:程序开辟内存滑动缓存,留存固定时间窗口完整 Tick 数据,适用于短时间会话中断场景,直接从本地缓存补齐遗漏行情,数据恢复延迟更低,适配低延迟实时行情观测需求。 本次贵金属行情采集研究为数据源,接口原生输出标准自增 Tick 序列号与毫秒级高精度时间戳,配套完整历史行情回溯接口,可无缝适配上述两套断层修复工程逻辑。 实时行情订阅与序列校验基础代码框架 import websocket import json last_seq = None def on_recv(ws, msg): global last_seq tick_info = json.loads(msg) seq = tick_info.get("seq") if last_seq and seq - last_seq > 1: print("监测到Tick序列号断层,缺失区间", last_seq, seq) # 此处嵌入缺失数据补全业务逻辑 last_seq = seq if __name__ == "__main__": ws_client = websocket.WebSocketApp("wss://api.alltick.co/ws", on_message=on_recv) ws_client.run_forever() 四、云端量化采集四项标准化工程规范,规避误判与数据污染 基于多套不间断贵金属量化仿真平台长期运维、批量回测数据复盘经验,梳理四项易被研发人员忽略的数据管控规范,纳入量化项目工程文档可显著降低时序异常概率: 序列号搭配时间戳双重校验,消除会话重置误报 部分行情接口 WebSocket 重连后序列号会重置归零,仅依靠序列差值判断会批量误识别断层。工程标准为叠加毫秒时间戳辅助校验:若序列号发生跳变,但前后 Tick 时间戳连续,则判定仅为会话重置,跳过数据补全流程。 回溯补全数据增加来源标识,不覆盖原生实时数据流 通过历史接口拉取的补充 Tick 入库时,新增独立元数据字段标记数据来源,禁止直接覆盖原生实时推送行情。依托云端日志检索能力,可快速区分实时原生 Tick、事后回溯补拉数据,支撑后期数据质量复盘与模型可信度校验。 行情接收与量化计算模块完全解耦 标准化分层架构:行情接收、序列校验、数据补全逻辑封装独立采集服务;K 线聚合、因子测算、策略回测运算拆分独立计算节点,部署于不同算力实例。解耦架构避免高强度指标计算阻塞行情接收线程,从底层减少 Tick 堆积丢包问题。 断层事件接入云端监控告警体系 将序列号断层事件封装告警触发规则,配置频次阈值监控。短周期内频繁出现断层可提前预警网络链路、服务器算力瓶颈,避免批量回测任务完成后才发现时序数据残缺。 五、量化工程落地总结 大量贵金属批量回测、高频因子仿真项目落地实践证明,实时行情采集系统的核心优化目标不局限于降低推送延迟,长期稳定运行下的时序数据完整性对量化模型可信度影响更大。 多数策略研发人员初期仅关注行情推送响应速度,省略序列号连续性校验逻辑;短期小规模测试无明显异常,但连续多日采集后累积的数据缺口,会干扰全部下游量化指标与策略仿真结果。前置序列校验 + 自动数据补全双层架构落地后,整套行情管线历史数据完整度显著提升,因数据缺失导致的回测失真问题基本消除。 行情 API 仅作为原始时序数据的输入通道,决定量化平台长期运行稳定性、数据治理综合成本的核心,是行情接入后的存储、校验、补全整套底层时序治理逻辑。针对高频贵金属多参数、多周期批量回测研究场景,搭建标准化 Tick 断层检测与修复体系,是量化策略研发必备底层工程能力。
浏览16
评论0
收藏0
用户头像sh_****559rtx
2026-08-12 发布
我们团队长期为一批聚焦美股量化策略和基本面分析的财经博主提供数据支撑。在对接过程中,反馈最集中的技术痛点之一,就是盘前和盘后交易数据引入后,原本回测平滑的K线序列突然出现了不应有的跳空和断裂。这对于那些喜欢把策略回测图表直接当内容展示的创作者来说,尤其致命。下面就从数据源处理的角度,分享我们是如何借助美股行情API的灵活特性,来保证全天候K线的连续性。 从回测曲线里的“意外缺口”说起 创作者在回测时,习惯使用涵盖盘前盘后的全时段数据来寻找更丰富的交易信号。但实际跑下来,很多策略在正常交易时段表现稳定,一旦把时间往前或往后延伸,净值曲线就会出现不正常的垂直跳跃。我们排查后发现,这并非策略逻辑失效,而是底层的K线生成机制把盘前和盘后流动性极低的数据,用和盘中一样的固定时间窗口去强行聚合了。原本几分钟都没有成交的时段被粗暴跳过,导致时间序列出现断点,直接影响了回测指标和可视化效果。 数据清洗的第一步:时间戳统一映射 不同美股行情API返回的时间格式差异很大,有的使用UTC时间戳,有的返回美东时间加时区标识。在批量导入历史数据和实时推流时,我们第一步就是将所有时间信息统一转换为UTC格式,同时保留原始时间字段作为辅助校验。这一步看似基础,却能够从根本上杜绝因冬夏令时转换或服务器时区设置不同导致的时间偏移。只有在同一个时间坐标系下工作,后续按照时间段切割行情才具备准确性。 用交易阶段标记精细化管理行情切片 为了让K线生成逻辑清晰可控,我们在数据管道中增加了一道“打标”工序。依据美东时间,每一条tick记录都会被赋予对应的交易阶段标签: 交易阶段 时间范围 处理方式 盘前交易 09:30之前 单独记录 正常交易 09:30-16:00 正常聚合 盘后交易 16:00之后 独立处理 打上标签之后,不同的内容需求可以走不同的聚合分支:做日内动量策略分析的博主,可以选择仅使用“正常交易”标记的数据,保证成交量与价格发现效率的高度统一;而做跨时段形态研究的博主,则可以把三个阶段的K线按时间戳拼接起来,形成一条无断层的完整链条。这样一来,策略回测图表再也不会出现让人摸不着头脑的跳空。 实时行情的动态K线装配 在实盘或模拟实时推送场景下,我们选择直接消费tick级行情数据,而不是依赖API给出的预制K线。通过与 AllTick 等实时行情接口的对接,我们可以通过WebSocket拿到每笔成交的毫秒级时间戳和价格,然后按照自定规则动态装配K线。以下是一个轻量级的接收示例: import websocket import json def on_message(ws, message): # 解析接收到的行情数据 data = json.loads(message) symbol = data.get("symbol") # 股票代码 price = data.get("price") # 最新成交价 timestamp = data.get("timestamp") # 时间戳 print(symbol, price, timestamp) # 建立WebSocket连接 ws = websocket.WebSocketApp( "wss://api.alltick.co/stock/websocket", on_message=on_message ) # 保持连接,持续接收数据 ws.run_forever() 利用这些精确的时间戳,我们可以毫不出错地判断每一笔行情属于盘前、盘中还是盘后,并填入对应的K线桶中。这种完全掌控聚合过程的方案,也让我们在对接不同风格的量化内容创作者时,能够迅速定制出符合他们展示需求的连续K线序列。 让内容质量建立在稳固的数据基础上 处理好盘前盘后数据的连续性之后,财经博主的回测图表和分析文章明显减少了因数据瑕疵引发的争议。对于量化社区里的内容创作者而言,数据处理的严谨性直接等于内容的公信力。如果各位也在做美股相关的数据分享,强烈建议从时间标准化和交易阶段标记这两个维度去重构你的行情处理流程,你会发现,一张连续、准确的K线图对读者说服力的提升远比想象中大。
浏览14
评论0
收藏0
用户头像sh_*2176oo
2026-08-12 发布
还在手动维护股票代码列表?你的 Python 选股脚本可能已经漏了几百只票 你打开自己的量化脚本,翻到第一行,看到了这个: stock_pool = [ "600519.SH", "000001.SZ", "300750.SZ", "002594.SZ", "601318.SH", "000858.SZ", "600036.SH", "000333.SZ", "601012.SH", "600276.SH", # ... 还有 200 行 ... ] 这个列表你是半年前从某个网站上抄下来的。从那以后: 有几十只新股上市了——不在你的列表里 有几只票退市了——你还在拉它们的数据(返回空或报错) 有几只票改了代码——你拉到的是旧数据 有几只票变成 ST 了——你的选股逻辑没有排除它们 你的选股脚本以为自己在扫描"全市场",其实它扫描的是半年前的全市场减去退市的加上一堆错误。 手动列表的三个问题 问题 1:列表永远是过时的 A 股每年新上市几百只票。2025 年一年就有超过 100 只新股上市。如果你的列表是年初建的,到年底你就漏了 100 只票的数据。 这些新股里可能有高成长的公司,你的选股策略因为列表过时永远选不到它们。 问题 2:退市票会让脚本出错 列表里有一只退市的票,拉数据时要么报错、要么返回空。如果你的脚本没有处理这种情况,一只退市票就能让整个批量流程中断。 更隐蔽的情况:票还没退市但已经停牌几个月了。你的脚本拉到的数据一直是停牌前的老数据,但你不知道。 问题 3:维护成本高且无聊 每隔一段时间你就需要: 去交易所网站查最新的上市公司列表 和你本地的列表做 diff 添加新股、删除退市票 检查有没有代码变更 这种事情做一次要半小时,而且极度无聊。大多数人做过一次之后就再也不更新了。 AlphaFeed 的解决方案:universes 全市场查询 from alphafeed import AlphaFeed af = AlphaFeed() # 一行代码拿到全部 A 股的实时行情 all_stocks = af.quotes.get(universes="CN_Stock", to_dataframe=True) print(f"当前 A 股总数: {len(all_stocks)}") universes="CN_Stock" 返回的是当前时刻沪深京交易所所有上市交易的股票。新股上市第一天就在里面,退市的自动消失,不需要你维护任何列表。 支持的标的池: universes 参数 覆盖范围 CN_Stock 全部 A 股(沪深京) CN_ETF 全部 A 股 ETF US_Stock 全部美股 HK_Stock 全部港股 实际场景 1:全市场选股 以前你的代码可能长这样: # ❌ 手动列表,半年前的 stock_pool = ["600519.SH", "000001.SZ", ...] # 500 只,已经过时了 for sym in stock_pool: df = some_api.get_data(sym) # ... 选股逻辑 ... 现在: from alphafeed import AlphaFeed af = AlphaFeed() # ✅ 永远是最新的全市场数据 all_cn = af.quotes.get(universes="CN_Stock", to_dataframe=True) all_cn["change_pct"] = (all_cn["last_price"] - all_cn["prev_close"]) / all_cn["prev_close"] # 直接在全市场数据上做筛选 # 例:今日涨幅 > 5% 且成交额 > 1 亿 hot = all_cn[(all_cn["change_pct"] > 0.05) & (all_cn["amount"] > 1e8)] print(f"今日大涨且放量: {len(hot)} 只") print(hot[["symbol", "last_price", "change_pct", "amount"]].head(10).to_string(index=False)) 不需要预先知道有哪些股票。今天新上市的票如果涨了 5%,也会被选出来。 实际场景 2:构建全市场收益率矩阵 做因子分析或者行业对比时,你需要全市场所有票的日收益率。以前你需要维护一个完整的代码列表然后逐个拉 K 线。现在: from alphafeed import AlphaFeed af = AlphaFeed() # 第一步:拿到全市场代码列表(实时的、最新的) all_cn = af.quotes.get(universes="CN_Stock", to_dataframe=True) # 过滤掉成交额太低的(流动性不足的票不适合做分析) active = all_cn[all_cn["amount"] > 5e7] symbols = active["symbol"].tolist() print(f"活跃标的: {len(symbols)} 只") # 第二步:批量拉这些票的 K 线 dfs = af.klines.batch( symbols, period="1d", count=20, adjust="forward", to_dataframe=True, show_progress=True, ) # 几千只票的 20 天 K 线,batch 自动分块并发,一两分钟拉完 print(f"成功获取: {len(dfs)} 只") 整个流程没有出现任何硬编码的股票代码列表。 实际场景 3:每天自动更新涨停板统计 from alphafeed import AlphaFeed from datetime import datetime af = AlphaFeed() def daily_limit_stats(): """统计今日涨停板情况""" all_cn = af.quotes.get(universes="CN_Stock", to_dataframe=True) all_cn["change_pct"] = (all_cn["last_price"] - all_cn["prev_close"]) / all_cn["prev_close"] # 涨停(涨幅 ≥ 9.8%,覆盖 10% 和 20% 涨停板) limit_up = all_cn[all_cn["change_pct"] >= 0.098] limit_up_20 = all_cn[all_cn["change_pct"] >= 0.198] # 创业板/科创板 20% 涨停 # 跌停 limit_down = all_cn[all_cn["change_pct"] <= -0.098] today = datetime.now().strftime("%Y-%m-%d") print(f"=== {today} 涨跌停统计 ===") print(f"涨停: {len(limit_up)} 只") print(f" 其中 20cm 涨停: {len(limit_up_20)} 只") print(f"跌停: {len(limit_down)} 只") print(f"涨停率: {len(limit_up) / len(all_cn):.2%}") print(f"总标的数: {len(all_cn)}") if len(limit_up) > 0: print(f"\n涨停票:") top = limit_up.sort_values("amount", ascending=False) print(top[["symbol", "last_price", "change_pct", "amount"]].head(15).to_string(index=False)) daily_limit_stats() 这个脚本今天跑是今天的数据,下个月跑自动包含下个月新上市的票。不需要任何人工维护。 实际场景 4:板块资金流向分析 from alphafeed import AlphaFeed import pandas as pd af = AlphaFeed() # 全市场行情 all_cn = af.quotes.get(universes="CN_Stock", to_dataframe=True) all_cn["change_pct"] = (all_cn["last_price"] - all_cn["prev_close"]) / all_cn["prev_close"] # 拿标的信息做板块分类(用代码前缀粗略分) all_cn["board"] = "主板" all_cn.loc[all_cn["symbol"].str.startswith("300"), "board"] = "创业板" all_cn.loc[all_cn["symbol"].str.startswith("688"), "board"] = "科创板" all_cn.loc[all_cn["symbol"].str.startswith("8"), "board"] = "北交所" # 按板块统计 board_stats = all_cn.groupby("board").agg( 总数=("symbol", "count"), 上涨数=("change_pct", lambda x: (x > 0).sum()), 平均涨幅=("change_pct", "mean"), 总成交额=("amount", "sum"), ).reset_index() board_stats["上涨占比"] = board_stats["上涨数"] / board_stats["总数"] board_stats["总成交额(亿)"] = board_stats["总成交额"] / 1e8 board_stats["平均涨幅"] = board_stats["平均涨幅"].apply(lambda x: f"{x:+.2%}") board_stats["上涨占比"] = board_stats["上涨占比"].apply(lambda x: f"{x:.0%}") print(board_stats[["board", "总数", "上涨数", "上涨占比", "平均涨幅", "总成交额(亿)"]].to_string(index=False)) 一行 universes="CN_Stock" 搞定,你只需要专注分析逻辑。 universes vs 手动列表的差距 维度 手动列表 universes 查询 新股覆盖 ❌ 需要手动添加 ✅ 自动包含 退市票 ❌ 需要手动删除 ✅ 自动排除 数据新鲜度 取决于上次更新时间 永远是当前时刻 维护成本 每月需要手动更新 零维护 完整性 大概率有遗漏 100% 覆盖全市场 出错概率 高(代码抄错、格式不对) 低(API 返回标准数据) 一个容易被忽视的好处:你的回测股票池也不用维护了 回测时你需要"回测起始日的全市场股票列表"来避免幸存者偏差。很多人直接用今天的列表去回测 3 年前——但 3 年前有些今天存在的票还没上市,有些已经退市的票在 3 年前是存在的。 虽然 universes 返回的是当前列表不是历史列表,但至少你不需要手动维护一个"今天的全量列表"了。每天跑选股时拿到的永远是最新的、完整的、干净的股票池。 from alphafeed import AlphaFeed af = AlphaFeed() # 今天的全市场池(自动维护) today_pool = af.quotes.get(universes="CN_Stock", to_dataframe=True) symbols = today_pool["symbol"].tolist() # 拉这些票的 K 线做当日分析 # ...不需要任何 CSV、不需要任何手动维护 如果你之前每个月花 30 分钟更新股票列表,一年就是 6 小时。这 6 小时现在被一行代码替代了。 AlphaFeed 官网:https://alphafeed.org/ Python SDK 快速开始:https://docs.alphafeed.org/zh-Hans/sdk/python-quickstart
浏览27
评论0
收藏0
用户头像sh_*219t3e
2025-10-11 发布
亲测最好用的AI编写量化策略工具,可以让 AI 直接写各个平台的策略代码,直接生成可运行的策略代码,代码质量远高于直接使用 DeepSeek、Trae 等平台。 大家可以直接用描述策略,然后一键生成可运行的完整策略代码,也可以把它当做一个API 查询工具。 最新消息,已经支持SuperMind等主流量化平台啦,并且实盘亲测过了,很适合小白用户,上线之后获得了非常多朋友的好评。 **🚀️ AI工具平台:https://iris.findtruman.io/ai/tool/ai-quantitative-trading/**
浏览4246
评论74
收藏8
用户头像mx_***992igv
2026-05-18 发布
一、量化实验室是什么? 量化实验室是SuperMind量化平台最新推出的AI功能,它不是再给你一堆冷冰冰的工具,而是用AI Agent把你的投研想法变成现实——无论是复杂的因子研究,还是策略的代码生成与回测,统统交给它。 继续加码:特惠延续!每周体验额度翻2倍!(原50 Credits/周,限时升级至100 Credits/周)。活动截止至 2026-07-12 23:59:59,快来试试AI如何重塑你的量化研究! 1.1 因子研究 支持从研究想法、已有公式或研报逻辑出发,Agent自动生成因子表达式并回测验证。适合把“我想研究某个市场规律”这类想法,快速变成可以检验的数据结果。 1.2 策略代码生成 用自然语言描述策略逻辑,Agent自动生成可执行源码并回测: 支持Python策略和公式策略两种类型 Python策略适合选股、多因子、择时、风控、资金管理等复杂逻辑 公式策略适合单标的择时、技术指标、期货或股票的轻量策略 生成策略源码后自动执行回测,结果文件里能看到指标、交易记录和策略表现 支持多轮对话,哪里不满意就直接说,Agent继续改代码、重新跑结果 二、支持的策略类型 量化实验室支持两种策略类型:Python策略和公式策略。两者定位不同,各有适用场景。 2.1 Python策略 Python策略自由度更高,适合把一套完整交易框架写出来: 多股票选股:支持从指数成分股、行业板块或全A股票池中筛选股票 多因子模型:打分排名、因子回归、因子中性化 复杂风控:动态止损、移动止盈、仓位控制、个股持仓上限 灵活调仓:日、周、月任意频率,支持条件触发 完整回测:生成策略源码后直接执行回测,沉淀结果报告 2.2 公式策略 公式策略基于同花顺指标公式语法,更适合单标的、技术指标型策略: 单标的回测:主要针对单只股票、指数或期货合约 技术指标:MACD、KDJ、布林带等经典指标 交易信号:金叉死叉、突破、超买超卖、ATR波动突破 期货策略:日内交易、趋势跟踪、止损止盈规则 2.3 两者对比 能力 Python策略 公式策略 选股范围 全市场动态股票 提前指定单只标的 择时逻辑 任意复杂 指标信号、突破信号等 风控体系 动态止损、移动止盈、仓位管理 简单止盈止损 资金管理 等权、市值加权、风险平价 简单资金调整 因子研究 多因子打分、排名、回归 不支持 编程语法 Python 同花顺公式 回测结果文件 strategy_backtest_*.md funcat_backtest_*.md 适用场景 A股选股、多因子策略 股票/期货单标的择时 2.4 如何选择? 想做A股选股、多因子策略 → 选Python策略 想做股票/期货日内、单标的技术指标择时 → 选公式策略 不确定 → 选Python策略,通用性更强 三、使用方法 3.1 整体流程 进入量化实验室 → 选择Agent → 描述策略 → AI生成代码 → 自动回测 → 查看结果 → 多轮优化 3.2 第一步:进入量化实验室 打开 同花顺SuperMind量化平台 注册登录(同花顺账号通用) 点击上方导航栏「我的研究」-「量化实验室」 3.3 第二步:选择Agent 根据你的需求选择合适的Agent: Agent 适用场景 量化助手 生成Python策略或公式策略,并执行回测(最常用) 因子研究Agent 从研究想法出发,生成因子 因子复现Agent 把公式/伪代码翻译成可执行表达式 生成策略代码时,直接选择「量化助手」即可。在使用时,最好在描述中明确说“生成Python策略”或“生成公式策略”,否则Agent可能会理解错方向。 3.4 第三步:描述你的策略 用大白话把策略逻辑讲清楚,关键是这几个要素: 要素 说明 示例 买什么 股票池 "沪深300成分股"、"全A股剔除ST" 什么时候买 开仓条件 "金叉买入"、"突破20日高点" 什么时候卖 平仓条件 "死叉卖出"、"亏损5%止损" 怎么分钱 资金管理 "等权重"、"按因子加权" 回测区间 起止时间 "2023年到2024年" 回测频率 运行频率 "日频"、"5分钟频率" 基准指数 对比基准 "沪深300"、"中证500" 描述示例: 写一个Python策略: - 股票池:沪深300成分股 - 买入:5日均线上穿20日均线,次日开盘买 - 卖出:5日均线下穿20日均线,次日开盘卖 - 资金:每笔买入5万 - 回测:2023-2024年,初始资金1000万,日频 公式策略可以这么说: 生成一个公式策略: - 标的:300033.SZ - 信号:收盘价上穿20日均线买入,下穿20日均线卖出 - 风控:亏损5%止损,盈利后从最高点回撤3%止盈 - 回测:2023-2025年,日频 3.5 第四步:查看回测结果 AI生成代码并执行回测后,策略源码和回测结果会保存到文件中: Python策略:strategy_backtest_*.md 公式策略:funcat_backtest_*.md 报告通常包含: 核心指标:总收益率、年化收益率、最大回撤、夏普比率、胜率、盈亏比、交易次数 净值曲线:策略收益 vs 基准收益 3.6 第五步:多轮优化 不满意?直接告诉AI怎么改: # 加个过滤条件 在刚才基础上,加个成交量过滤,金叉时成交量要大于5日均量的1.5倍 # 优化风控 再加个动态止损:从最高点回撤5%止损,同时3%移动止盈 # 调整参数 把MACD参数改成(8,17,9),回测时间延长到2024年 每一轮AI都会自动修改代码、重新回测、出新报告。反复调整,直到满意为止。 当然,AI生成的代码也需要用户自己甄别。它能大幅降低从想法到回测的门槛,但重要参数、交易假设和异常结果仍然建议自己再检查一遍。 3.7 剩余额度查看与充值 我们为每位用户提供了一定的免费体验额度,如有更大的使用需求,也可以订阅付费套餐。 四、实战案例 案例1:双均线公式策略 策略思路:最经典的趋势跟踪策略。收盘价上穿20日均线买入,下穿20日均线卖出,再加上止损止盈。这个案例适合用公式策略快速上手。 你怎么说: 生成一个公式策略: 1. 回测标的: - 标的:同花顺 - 频率:日频 - 回测区间:2023-01-01 至 2025-01-01 2. 开仓条件: - 计算20日收盘价均线MA20 - 当收盘价从下方上穿MA20时买入 3. 平仓条件: - 当收盘价从上方下穿MA20时卖出 - 买入后亏损达到5%时止损 - 买入后盈利创新高,再从最高点回撤3%时止盈 案例2:动量选股+止损策略 策略思路:选近期涨得好的股票(动量效应),但排除涨太多的(避免追高),加上硬性止损保护。 你怎么说: 生成一个Python选股策略: 1. 选股条件: - 股票池:中证500成分股 - 剔除ST股、停牌股、上市不足120日的股票 - 过去20日收益率排名前20%(动量强) - 过去5日平均换手率大于3%(确保流动性) - 排除过去20日涨幅超过30%的股票(避免追高) 2. 开仓条件: - 每周一开盘时,根据上述条件筛选出目标股票池 - 买入所有符合条件的股票,以开盘价执行 3. 平仓条件: - 每周一调仓时,不在新目标池中的股票全部卖出 - 个股亏损达到8%,无论是否到调仓日,立即止损卖出 - 个股盈利达到20%止盈 4. 资金分配: - 初始资金100万 - 持仓上限20只股票 - 采用等权重分配:总资金/持仓股票数 = 每只股票的分配金额 - 如果筛选出的股票超过20只,按动量排名取前20只 - 买入时按100股整数倍取整 5. 回测参数: - 回测区间:2022-01-01 至 2024-12-31 - 基准指数:中证500 - 初始资金:100万 - 回测频率:分钟 案例3:资金流向+波动率复合策略 策略思路:跟着主力资金走,但要选波动适中的股票(资金流入说明有人看好,波动适中说明走势稳健)。 你怎么说: 设计一个Python策略: 1. 选股条件: - 股票池:全A股(剔除ST股、停牌股、上市不足120日的次新股) - 因子1 - 资金流向:过去5日主力资金净流入(大单+特大单买入 - 大单+特大单卖出)/ 总成交额 > 0 - 因子2 - 波动率:过去20日收益率的年化波动率,要求处于全市场中位数±1个标准差之间 - 两个条件同时满足才入选 2. 开仓条件: - 每两周的第一个交易日开盘时执行选股 - 买入所有符合条件的股票 3. 平仓条件: - 每两周调仓时,不在新目标池中的股票全部卖出 - 个股亏损达到10%,立即止损 - 个股持有超过30个交易日仍未盈利,考虑卖出(避免长期套牢) 4. 资金分配: - 初始资金100万 - 持仓上限15只股票 - 采用等权重分配:可用资金/新买入股票数 - 卖出股票释放的资金,在下一个调仓日再分配 - 保留5%的现金作为缓冲,避免频繁满仓操作 5. 调仓频率: - 每两周调仓一次(即每10个交易日) 6. 回测参数: - 回测区间:2023-01-01 至 2024-12-31 - 基准指数:中证800 - 初始资金:100万 - 回测频率:分钟 案例4:多因子打分排名策略 策略思路:综合多个维度给股票打分,选出综合表现最好的。类似基金公司的量化选股模型。 你怎么说: 创建一个多因子Python策略: 1. 选股条件: - 股票池:沪深300成分股 - 剔除ST股、停牌股 - 三个因子,各自权重: - PE_TTM(市盈率,越低越好):权重30% - ROE(净资产收益率,越高越好):权重40% - 过去60日收益率(动量,越高越好):权重30% - 对每个因子进行标准化打分(0-100分) - 加权计算综合得分 = PE得分×30% + ROE得分×40% + 动量得分×30% - 选择综合得分排名前20的股票 2. 开仓条件: - 每月第一个交易日开盘时执行选股 - 买入综合得分前20名的股票 3. 平仓条件: - 每月调仓时,不在新目标池中的股票全部卖出 - 个股亏损达到15%,立即止损 - 如果某只股票连续两个月综合得分跌出前30名,下个月强制卖出 4. 资金分配: - 初始资金100万 - 固定持仓20只股票 - 采用等权重分配:总资金/20 = 每只股票5万元 - 调仓时,先卖出需要清仓的股票,再买入新股票 - 买入顺序按综合得分从高到低,确保高分股票优先获得资金 - 如果资金不足,优先买入得分最高的股票 5. 调仓频率: - 每月第一个交易日调仓 6. 回测参数: - 回测区间:2022-01-01 至 2024-12-31 - 基准指数:沪深300 - 初始资金:100万 - 回测频率:日频 五、常见问题 Q:AI生成的代码一定正确吗? A:不一定。AI能显著提高从想法到回测的速度,但生成代码、回测参数和交易假设仍然需要自己甄别,尤其是用于真实交易前。 Q:生成的代码有bug怎么办? A:直接告诉AI“回测报错了,错误信息是xxx”,它会根据报错继续修改代码并重新回测。 Q:生成后还能继续改吗? A:可以。比如“加一个成交量过滤”“把止损从8%改成5%”“回测区间延长到2025年”,都可以在同一个会话里继续说。 Q:策略能导出到本地吗? A:可以。Python策略会沉淀Python源码和 strategy_backtest_*.md 报告,公式策略会沉淀公式策略结果和 funcat_backtest_*.md 报告。 Q:可以免费使用吗? A:我们为每位用户每周提供了50 Credits的体验额度,可以满足多个策略代码生成任务。2026-07-12 23:59:59前体验额度限时2倍! 六、总结 传统方式 量化实验室方式 学Python语法 → 学量化框架 → 写代码 → 调试 → 回测 说策略想法 → 生成Python/公式策略 → 自动回测 → 看报告 耗时:几天到几周 耗时:几分钟 不管你是量化新手想入门,还是老手想快速验证想法,SuperMind量化实验室都值得一试。尤其是策略代码生成这一步,它把“我有个策略想法”和“我看到了回测结果”之间的距离,压到了几分钟。 【重磅更新】 支持生成和执行通用代码 除策略代码外,量化实验室目前也支持生成通用python代码并执行,例如可以做数据处理、分析、可视化输出等。 与量化平台其他功能进行交互 supermind-cli 是Agent与SuperMind 量化平台进行交互的skill,可以让用户快速完成策略管理、回测与自选板块管理等。 管理个人策略仓库 将AI 生成的策略同步至云端仓库,或拉取其他策略的代码。推送后可以在“我的策略”-“策略研究”中看到这个策略。 示例:“把刚才写好的双均线策略推送到策略仓库里,命名为神奇均线”、“帮我看看云端现在有哪些策略” 异步回测 推送完成后可以发起异步回测任务。回测完成之后可在“我的策略”-“策略研究”-“回测列表”中查看回测详情。 示例:“用过去两年的数据跑一下这个策略的回测,初始资金500W” 维护自选板块 新增、更新或查询自选板块,添加后同花顺行情客户端可见。 示例:“帮我把这几只白酒股加到自选板块里”、“查一下我现在的自选板块都有哪些股票” 相关链接: AI Lab帮助文档 API文档 因子研究指南 回测引擎说明
浏览7110
评论14
收藏6