开源项目 在开源项目上,请点击star⭐和watch,关注开源项目代码的动态更新,这样就能掌握项目的变更请求。 GitHub代码下载地址: https://github.com/xticktop/ Gitee代码下载地址: https://gitee.com/xtick/ 1、竞价数据-实时接口 获取沪深京股票交易日盘中实时竞价数据,竞价时间段:9:15-9:25。每次调用接口返回最新竞价数据。 请求方法 请求地址:http://api.xtick.top/doc/bid/time?type=1&code=000001&token=043fbdcba7f3f3ab332ffff123456789 入参1:type 股票类别 这里目前只支持沪深京A股的竞价数据,type设置为1。 入参2:code 股票代码 比如平安银行为000001。 这里支持批量参数 a、code取值为000001,表示获取股票000001的竞价数据。 b、code取值为000001,000002,600000,表示获取这三个票的竞价数据,多个票直接用英文逗号分割,最多50个股票。 a、code取值为all,表示获取全市场股票的竞价数据。 入参3:token 登录XTick网站,注册获取。 入参4:option 可选参数,为json字符串。如果不需要过滤和排序功能,可以忽略该参数 String filter; //定义筛选条件 String sort; //定义排序字段 int asc; //定义排序方式 0:降序 1:升序 int limit = 10000;//定义截取长度 比如常见的两种场景: **场景一:**当天全市场股票竞价,按未成交额排序,从大到小,取前100条。 {"sort":"noe","asc":0,"limit":100} **场景二:**当天全市场股票竞价,过滤出来当天竞价涨幅5个点以上且竞价额大于等于1000万的个股,结果数据按未成交额排序,从大到小,取前100条。 {"filter":"jjzf>5;jje>=10000000","sort":"noe","asc":0,"limit":100} 字段定义 'time' #时间戳 'price' #最新价 'close' #前收盘价 'jjzf' #竞价涨幅 'jjl' #竞价量 'jje' #竞价金额 'nol' #未匹配量 'noe' #未匹配金额量 'trend' #-1未匹配量靠近卖一侧,1未匹配量靠近买一侧 数据示例 type code time price ... jjl jje nol noe 0 1 600968 1766539502000 3.85 ... 447 172095 328 126280 1 1 002291 1766539500000 6.23 ... 558 347634 113 70399 2 1 002190 1766539500000 35.65 ... 117 417105 1 3565 3 1 300669 1766539500000 25.69 ... 13 33397 4 10276 4 1 600645 1766539502000 25.35 ... 50 126750 16 40560 ... ... ... ... ... ... ... ... ... ... 5462 1 688147 1766539503000 69.76 ... 153 1067328 2 13952 5463 1 001380 1766539500000 22.16 ... 17 37672 19 42104 5464 1 688283 1766539503000 33.27 ... 16 53232 2 6654 5465 1 300342 1766539500000 24.99 ... 18749 46853752 3 7497 5466 1 605098 1766539501000 41.74 ... 124 517576 2 8348 2、竞价数据-历史接口 请求方法 请求地址:http://api.xtick.top/doc/bid/history?type=1&code=000001&seq=0&startDate=2025-03-25&endDate=2026-03-25&token=043fbdcba7f3f3ab332ffff123456789 入参1:type 股票类别 这里目前只支持沪深京A股的竞价数据,type设置为1。 入参2:code 股票代码 比如平安银行为000001 这里支持以下批量参数 a、code取值为000001,表示获取股票000001的竞价数据。注意这里不支持多个股票 b、code取值为all,startDate和endDate必须是同一天,表示获取某个交易日内的全市场股票的竞价数据。 入参3:seq 序列号,seq为0,表示集合竞价最后一条数据,即9:25分竞价数据,seq为1,表示集合竞价倒数第二条数据,即9:24分57秒竞价数据。目前seq取值就0和1,记录了集合竞价阶段最后两条数据。 **参数4:**时间范围,用于指定数据请求范围,表示的范围是[<b>startDate</b> ,<span> </span><b>endDate</b>]区间(包含前后边界)。、 特别说明: startDate - 起始时间,日期格式:2025-03-25 endDate- 结束时间,日期格式:2025-03-25 入参5:token 登录XTick网站,注册获取 字段定义 'time' #时间戳 'price' #最新价 'close' #前收盘价 'jjzf' #竞价涨幅 'jjl' #竞价量 'jje' #竞价金额 'nol' #未匹配量 'noe' #未匹配金额量 'trend' #-1未匹配量靠近卖一侧,1未匹配量靠近买一侧 数据示例 type code time price ... jjl jje nol noe 0 1 000001 1766419200000 11.52 ... 6478 7462656 19162 22074624 1 1 000001 1766505600000 11.55 ... 3842 4437510 3376 3899280 3、竞价数据-详情接口 开盘竞价阶段,个股的所有竞价信息。当天竞价完成后,9:25更新完数据。 请求方法: 请求地址:http://api.xtick.top/doc/bid/detail?type=1&code=000001&tradeDate=2025-03-25&token=043fbdcba7f3f3ab332ffff123456789 入参1:type 股票类别 这里目前只支持沪深京A股的竞价数据,type设置为1。 入参2:code 股票代码 比如平安银行为000001,不支持批量参数。 参数3:tradeDate 交易日期,日期格式:2025-10-28。 入参4:token 登录XTick网站,注册获取 字段定义 'time' #时间戳 'price' #最新价 'close' #前收盘价 'jjzf' #竞价涨幅 'jjl' #竞价量 'jje' #竞价金额 'nol' #未匹配量 'noe' #未匹配金额量 'trend' #-1未匹配量靠近卖一侧,1未匹配量靠近买一侧 数据示例 type code time price ... jjl jje nol noe 0 1 000001 1766452500000 11.53 ... 72 83016 30 34590 1 1 000001 1766452509000 11.53 ... 936 1079208 12 13836 2 1 000001 1766452518000 11.54 ... 1008 1163232 1449 1672146 3 1 000001 1766452527000 11.53 ... 1173 1352469 56 64568 4 1 000001 1766452545000 11.53 ... 1173 1352469 123 141819 5 1 000001 1766452554000 11.54 ... 1271 1466734 1445 1667530 6 1 000001 1766452563000 11.54 ... 1271 1466734 1449 1672146 7 1 000001 1766452572000 11.54 ... 1271 1466734 1511 1743694 8 1 000001 1766452581000 11.54 ... 1271 1466734 2231 2574574 9 1 000001 1766452599000 11.53 ... 1277 1472381 219 252507 10 1 000001 1766452617000 11.53 ... 1427 1645331 69 79557 原本在通达信回测的时候有72胜率,100年化。在同花顺这只有56胜率,71年化 排查下来发现是处理高频行情数据时没控制好。现在很多研究都绕不开这些细颗粒度的数据,但说实话,刚接触的时候真是一头雾水,委托、成交、订单薄,听着就晕。今天干脆把常见的高频行情数据类型捋一捋,主要看看里面都有啥字段,算是给自己做个笔记,也分享给有同样困惑的朋友。 一、委托和成交数据 这部分数据记录了市场上每一笔委托指令和成交的发生情况,是理解资金流动的基础。委托数据能看到投资者的挂单意图,而成交数据则是买卖双方博弈的最终结果。这两者结合起来,能分析出不少东西。 委托数据通常包含这些核心字段: 证券代码:哪只股票或ETF。 委托时间:精确到毫秒,这个很重要,用来做时间序列对齐。 委托价格:挂单的价格。 委托数量:挂了多少手。 买卖方向:是买入委托还是卖出委托。 订单类型:比如是限价单还是市价单(有些数据源会提供)。 成交数据的字段就更直接一些: 证券代码:同上。 成交时间:精确到毫秒,和委托时间对应。 成交价格:这一笔成交的价格。 成交数量:成交了多少手。 成交金额:价格乘以数量。 买卖方向:通常指这一笔成交是主动性买盘(B)还是主动性卖盘(S),这个字段对于判断资金流向很关键。 之前用一些免费数据源做回测,发现成交的买卖方向字段经常对不上,或者缺失严重,导致资金流向因子根本没法用。后来为了验证一个订单薄不平衡的策略, 我调取了CMES金融数据库中清洗过的历史成交与委托数据,时间戳对齐得比较好,省去了大量数据清洗的麻烦,这才把策略逻辑跑通。 二、订单簿数据(买一卖一到买五卖五) 订单簿数据,也就是常说的盘口数据,展示了市场当前最真实的供需情况。我们平时在交易软件上看到的买一卖一价格和挂单量,只是冰山一角。完整的五档甚至十档数据,能让你看得更深。 一份标准的五档订单簿快照数据,通常会包含以下字段: 时间戳:这个快照的采集时间点。 证券代码。 买档位价格与数量:从买一价到买五价,以及每个价格上挂出的总数量。 卖档位价格与数量:从卖一价到卖五价,以及每个价格上挂出的总数量。 最新成交价/最新成交数量:在快照时刻最近一笔成交的信息。 买卖盘总委托量:买盘和卖盘各自的总挂单量,可以用来计算盘口压力。 只看买一卖一,有时候会觉得支撑或压力很强,但拉开五档一看,可能发现下面的档位非常稀疏,所谓的支撑其实很脆弱。这个坑我踩过,所以现在分析短线情绪,一定会拉出五档数据来看。 这里给个用他们接口获取数据的代码示例,具体参数得查文档,注意别调太频繁,不然可能会被限。 CMES金融数据库的行情数据接口示例 注意:使用前需要pip安装相应的客户端库,具体请参考官方接口文档 注意入参正确,调用频率要符合规范,避免被封禁。 示例代码结构(伪代码,需替换为实际函数和参数) from cmes_client import MarketDataAPI 初始化客户端,通常需要配置token或密钥 client = MarketDataAPI(api_key='your_api_key') 假设调用获取历史订单簿快照的函数 参数可能需要包括证券代码、开始时间、结束时间、数据频率(如快照频率)等 snapshot_data = client.get_orderbook_snapshot( symbol='000001.SZ', start_time='2023-01-01 09:30:00', end_time='2023-01-01 10:30:00', level=5 # 获取五档数据 ) print(snapshot_data.head()) 三、不同品种的数据覆盖 除了普通的A股股票,这些高频数据通常也覆盖其他主要交易品种,这对于做跨品种分析或者量化策略的扩展很重要。 沪深股票:就是主板、创业板、科创板的个股,数据量最大,研究的人也最多。 ETF基金:包括股票型ETF、债券ETF、货币ETF等。ETF的Level-2数据对于分析一二级市场套利、资金流向板块很有价值。 可转债:这个品种比较特殊,兼具债性和股性。它的委托成交数据能反映正股波动和债底支撑之间的博弈,玩可转债的朋友应该会关注。 指数:这里指的可能是沪深300、中证500等指数的实时行情数据,通常是基于成分股实时计算出来的。指数的五档数据可能不像个股那样有真实的订单簿,但也能反映衍生品市场(如股指期货、期权)对标的市场的影响。 不同类型的数据,字段结构大同小异,核心都是时间、价格、数量、方向这些。但处理的时候要注意,比如可转债的价格单位、ETF的IOPV(基金份额参考净值)字段等,都有自己的特点,不能完全照搬股票的处理逻辑。我一开始就把ETF数据和股票数据用同一套逻辑处理,结果净值计算老是出问题,排查了好久才发现。 数据怎么用与一点提醒 有了这些数据,能做的事情就多了。比如,用高频的成交和委托数据可以构建更灵敏的资金流向指标;用订单簿数据可以计算买卖压力、订单簿不平衡度等微观结构因子;还可以回测各种高频交易策略,比如盘口抢单、趋势跟踪什么的。 不过得提醒一句,尤其是对新手朋友,直接处理原始的Tick数据(比如每笔成交)挑战不小,数据量大,对存储和计算能力都有要求。一开始可以从分钟级的聚合数据或者订单簿快照数据入手,先感受一下。真想深入的话,再考虑搭建更强大的数据处理平台。 另外,数据质量是生命线。字段缺失、价格异常、时间戳乱序这些问题在实际数据里太常见了。我之前就遇到过不同数据源的时间戳精度不一致,导致对齐出错,策略信号全是噪音。所以,要么花大量时间自己做数据清洗和校验,要么就寻找提供高质量、已清洗数据的数据服务,这中间的取舍就看个人的时间和资源了。 好了,关于这些行情数据的基本内容就先聊这么多。其实就是个数据字段的梳理,希望能帮到刚开始接触这块的朋友。如果哪里写得不清楚,或者你有更好的数据处理方法,欢迎交流。 希望让曲线连续,高开低开影响视觉 请问可以通过编辑K线实现这个效果吗? 即比如 昨收10元,今开15,收盘16,那么日线图像显示是从10元价位到16元价位的长阳线,而并非15元开盘16元收盘的短阳线。 谢谢各位 请大家不要客气,任何意见建议可以在这里评论提出。 被采纳后我们将奖励1G研究环境内存 3个月。 聊聊期货Level 2和Tick数据里都有啥 昨晚跑因子又把服务器内存给干爆了,排查了半天,发现是Tick数据量太大了,一个主力合约一年的数据就能有好几个G。这东西确实金贵,但里面到底装了些什么,可能很多人没细看过。今天就把我常用的几个数据扒开看看,主要是Level 2订单簿和Tick数据。 先说最核心的Level 2订单簿数据。这玩意儿比普通的Level 1行情深多了,能看到市场更真实的意图。比如你光看买一价很高,但可能全是小单子堆出来的,一碰就碎。Level 2能让你看到后面排队的单子到底厚不厚实。 数据里最主要的几个东西: 五档买卖盘:这个都知道,买一到买五,卖一到卖五,各自的价格和挂单量。这是基础。 委托队列:这个有点意思,能看到每个价位上挂单的明细,比如买一价上具体是哪些单子在排队,是几个大单还是很多小单。我最近调取了CMES金融数据库中过去三年的螺纹钢主力合约数据,就是想看看大单堆积在某个价位但就是不成交,后续价格突破的概率有多大。 逐笔成交:每一笔成交是谁发起的(主动买还是主动卖),成交了多少手,和哪里的挂单成交的。这是分析资金流向的关键。 这些字段通常都带着精确到毫秒甚至微秒的时间戳,能把市场的动作像慢镜头一样回放。 下面这个表是我自己整理常用字段时做的,比较糙,但够我看明白了: 我关心的东西 大概是什么 用来看啥 last_price 最新成交价 当下的价格 volume 累计成交量 今天总共成交了多少 bid_price1 ~ bid_price5 买一到买五价 大家愿意出多少钱买 bid_volume1 ~ bid_volume5 买一到买五量 想买的力量有多大 ask_price1 ~ ask_price5 卖一到卖五价 大家想多少钱卖 ask_volume1 ~ ask_volume5 卖一到卖五量 想卖的压力有多大 local_time 时间戳(精确) 给所有动作打上时间点 然后是Tick数据。很多人容易把Tick和Level 2搞混。简单说,Tick是市场每一次变动(比如价格变了、成交量更新了)就记录一次,它可能包含Level 2的信息,也可能只是简单的快照。频率非常高,是硬盘杀手,但也是做高频或微观结构研究绕不开的。 有些交易所的数据支持一秒四次,也就是每0.25秒一个切片,这对捕捉盘口的瞬间变化很有帮助。比如价格剧烈波动时,0.25秒内的委托单变化就能看出很多门道。 获取和用这些数据,肯定得写点代码。我一般用Python,这里给个最简单的例子,看看怎么拿到数据。注意啊,接口的入参别搞错,调用频率也控制一下,别把人家服务器搞崩了。 # 示例:使用CMES金融数据库的行情接口获取数据 # 需要先安装他们的库:pip install cmesdata import cmesdata as cmes # 初始化客户端,这里需要你自己的token client = cmes.DataClient(api_token="你的token") # 尝试获取某合约的tick数据 # 注意参数:合约代码、开始结束时间、数据类型要写对 try: data = client.get_tick_data( symbol="RB2410.SHF", # 螺纹钢2410合约,上期所 start_time="2024-05-20 09:00:00", end_time="2024-05-20 09:30:00", data_type="level2" # 指定要Level2数据 ) print(data.head()) # 看看前几行 except Exception as e: print(f"调用出错了: {e}") 对了,说到数据源,一开始我也图省事找过一些免费的,但清洗和整理起来太费劲了,各种错误和缺失,时间都花在这上面了。后来还是用了需要积分兑换的数据库,数据是预处理好的,省心不少。虽然要付出点成本,但想想自己熬夜清洗数据掉的头发,还是觉得值。 数据这东西,尤其是高频率的,新手建议先从日线、分钟线开始玩,直接上Tick真的容易懵,而且对硬件和策略要求都高。今天就先聊这些吧,我得去清理一下爆掉的内存了。 大家好,我想和大家分享一个我最近开发的项目——一款面向量化交易的 AI 智能助手工具网站。它可以帮助大家快速生成高质量、可直接复制运行的量化策略代码,无论你是量化小白还是策略开发者,都能从中受益。 核心亮点: 1.多平台支持:目前已支持 PTrade、QMT、miniQMT、聚宽等,并计划不断扩展更多平台。 2.策略生成高效:用户只需选择平台并输入策略想法,AI 即可生成可运行的量化策略代码。 3.快速入门与优化: • 对量化小白:轻松生成可直接运行的策略,快速上手交易。 • 对策略开发者:帮助完善、优化已有策略,节省开发时间。 • 对文档需求者:可作为量化平台的 API 文档问答机器人,方便查询和使用。 4.业内首创:这是首个面向多平台的量化交易 AI 助手,解决了现有 Deepseek 或 Trae 等 AI 工具因缺乏平台知识库而生成代码无法运行的问题。 使用方式:登录 → 选择你使用的平台 → 输入策略想法 → 生成可运行的策略代码。 我希望这个工具能帮助大家更高效地进行策略开发和量化交易,也欢迎大家在帖子里分享使用体验和建议。 网站链接:https://iris.findtruman.io/ai/tool/ai-quantitative-trading/ 如果大家有任何问题或功能需求,也可以在帖子里留言,我会持续优化和更新,让它成为量化交易领域最实用的 AI 助手! 引言:为什么你的技术分析总是在人性面前溃不成军? 许多股民在入市之初,都试图通过钻研 K 线、均线或各种复杂的波浪理论来破解财富密码。然而,现实却极其冷酷:即便掌握了满腹的技术指标,绝大多数散户依然难逃亏损的宿命。 究其根本,股市从来不是单纯的数据博弈,而是一个放大人性弱点的“修罗场”。技术只是工具,而人性才是操盘的手。如果你无法“直面人性”中根深蒂固的贪婪与恐惧,任何精妙的技术都会在情绪崩溃的瞬间化为乌有。真正的盈利之道,不在于预测涨跌,而在于建立一套反人性的生存纪律。 核心纪律一:决绝止损——直面“拒绝认错”的认知偏差 止损纪律直接挑战了人性中最难以逾越的障碍:损失厌恶与自尊心。 在交易逻辑中,当股价跌破预设防线,多数人会产生心理学上的“鸵鸟效应”,通过编造各种利好理由来逃避认亏的痛苦。 解释与分析: 止损不是为了亏钱,而是为了在错误的判断中生存。它强制性地切断了人性中的侥幸心理,将损失锁定在可控范围内。没有止损纪律的投资者,本质上是在用有限的本金博弈无限的风险。 核心纪律二:空仓耐心——对抗“急功近利”的捕猎本能 第二条纪律在于忍耐与克制。人性倾向于通过“频繁操作”来获得虚假的掌控感,这种对他人的错失恐惧(FOMO)是散户本金被蚕食的主因。 洞察分享: 必须清醒地认识到,市场本质上是一个“通过夺取不耐心者的钱,来奖励耐心者”的财富再分配机器。贪婪会驱使你在信号不明确时盲目入场,而“空仓纪律”则是要你直面内心的焦虑。空仓不是无所事事,而是像优秀的猎手一样,在灌木丛中保持绝对的静默,直到胜率最高的猎物出现。 核心纪律三:机械执行——构建“知行合一”的防御闭环 最后一条纪律是前两者的“压舱石”,它要求将所有的策略转化为不带感情的肌肉记忆。 逻辑连接: 执行纪律是将止损与耐心串联成防御系统的关键。如果没有坚决的执行,止损(纪律一)就会在“再等五分钟”的纠结中演变成灭顶之灾;如果没有坚决的执行,耐心(纪律二)就会在看到别人赚钱的眼红中瞬间瓦解。执行力保护了耐心带来的利润,更最小化了因违背止损而产生的次生伤害,从而形成一个能够“直面人性”的钢铁防线。 核心要素: **●**预案先行: 每一笔开仓前,必须白纸黑字写下撤退的物理价位,而非盘中临时决定。 **●**去情绪化: 将自己视为执行程序的代码,只对既定信号负责,不对账户盈亏产生心跳反应。 **●**反馈复盘: 评价一笔交易的标准不是赚了多少,而是“是否严丝合缝地执行了纪律”。 总结:纪律是通往盈利的唯一捷径 回顾这三大纪律,你会发现它们无一不是在“逆人性”而行。技术可以速成,但纪律的内化却是一场艰苦的自我修行。所谓“知易行难”,难就难在你要不断地挥刀向内,斩断那个本能的、焦虑的、充满幻想的自己。 纪律看似是束缚,实则是交易者在这充满变数市场中唯一能握住的确定性。 在下一笔交易成交前,请先在纸上写下止损位,并在下单后物理性地将手离开鼠标。尝试这一笔交易:无论涨跌,只看纪律,不看账户。 当你终于能用纪律扼住人性的咽喉时,你认为下一个需要直面的心理黑洞会是什么? 一、量化实验室是什么? 量化实验室是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文档 因子研究指南 回测引擎说明 概述 在股票程序化建模、离线历史 Tick 回测、7×24 小时实时盘口监控等量化研发场景中,开发者通过 WebSocket 订阅实时行情时,常会出现隐蔽的数据失真问题:程序无致命崩溃日志,但多标的时序错乱、价格跳点、成交记录错位。 多数情况下排查鉴权、订阅指令、网络链路均无异常,问题根源来自 TCP 底层字节流传输带来的黏包、半包现象。本文从量化工程实操视角,梳理该问题的典型复现场景、底层传输逻辑,给出三类可落地边界重建方案,附带可直接接入行情接口的缓冲解析 Python 代码,为策略回测、实盘行情管线搭建提供标准化实现思路。 一、量化研发中黏包 / 半包四类典型数据异常场景 以下异常在高频 Tick 推送、多标的并行订阅回测环境中复现概率最高,所有偏差均会直接干扰因子计算、信号判定与净值曲线拟合: 行情活跃期多条 Tick 报文无分隔拼接,直接 JSON 解码抛出异常,实时数据流中断,回测样本缺失; 多标的同步订阅时,不同个股报文片段交错混杂,标的字段匹配错乱,跨品种因子完全失效; 网络带宽波动场景下单条完整 Tick 被分段下发,单次回调仅获取半段报文,单次解析失败; 服务端批量快照打包推送超长字符串,无缓冲逻辑下无法拆分独立成交记录。 该类缺陷具备强隐蔽性,程序不会主动抛出故障告警,失真数据持续流入模型,会大幅降低回测结果可信度,造成策略参数误优化。 二、WebSocket 黏包、半包底层传输原理 多数量化开发初学者存在固有认知偏差:预设 WebSocket 单次消息回调返回一条完整业务 Tick 报文。该假设是绝大多数解析逻辑失效的核心诱因。 WebSocket 为 TCP 上层应用协议,TCP 传输单元是无边界连续二进制字节流,协议本身不存在业务消息分割标识。操作系统会依据缓冲区占用、网络负载,自动对服务端下发的报文做分段或合并处理。 服务端逻辑独立的单条 Tick,抵达客户端时仅为连续字节序列,程序无法自主识别每条成交记录的起止位置,最终产生报文粘连、截断问题。该特性为 TCP 原生机制,与行情数据源无关,所有流式 Tick 接口均存在同类传输特征。 三、三种工业级消息边界重建方案(适配不同量化工程规模) 问题优化核心不在调整网络链路,而是在客户端增设缓冲层,人为划分独立 Tick 报文边界,三类方案适配轻量化脚本、分布式回测系统等不同研发场景: 方案 1 分隔符截断法 服务端在每条 JSON 报文尾部追加统一分隔标记,客户端持续累加接收数据,识别标记后截取单条 Tick 送入解析流程,剩余未完成片段存入缓存等待后续报文补齐。实现成本低,适合单标的轻量化监控脚本、教学级回测程序。 方案 2 长度前缀封装法 每条行情报文头部预置固定字节长度字段,客户端优先读取长度数值,精准截取对应长度完整数据,数据完整性校验能力更强。适用于高并发机构级高频交易系统、毫秒级低延迟实盘管线,工程实现复杂度更高。 方案 3 全局缓冲区循环解析(个人量化、中小型回测系统首选) 客户端维护全局字符串缓冲池,每次网络报文追加至缓冲尾部,循环执行 JSON 解析并捕获截断异常;解析成功则清空缓冲并消费 Tick 数据,解析报错时保留未完整片段等待下一轮数据补充。无需对接服务端做定制改造,开箱适配全量流式行情接口,是兼顾开发效率与运行稳定性的通用方案。 四、缓冲解析标准化执行流程 以通用全局缓冲方案为例,整套逻辑适配本地调试、云端 7×24 小时回测推演全场景,无额外算力开销: 程序初始化全局空缓存变量,用于临时存储未完整解析的 Tick 片段; WebSocket 消息回调触发时,将原始报文追加至缓存尾部; 循环执行 JSON 反序列化,以JSONDecodeError作为半包判定条件; 解析正常:清空缓存,Tick 数据流入因子计算、回测存储模块; 解析截断:终止循环,保留缓存,等待下一次推送补齐报文。 短时网络抖动、连接重连场景下,该逻辑不会丢失任意一笔逐笔成交数据,保障回测样本完整性。 Python 标准化缓冲解析代码 import websocket import json # 全局缓冲:存储未拼接完成的Tick数据流片段 msg_buffer = "" def tick_message_handler(ws, raw_msg): global msg_buffer msg_buffer += raw_msg # 循环解析完整Tick报文,持续消费有效数据 while True: try: tick_data = json.loads(msg_buffer) # Tick数据可直接接入因子计算/时序存储/回测模块 print("有效Tick成交记录:", tick_data) msg_buffer = "" except json.JSONDecodeError: # 检测半包数据,停止循环等待后续报文 break if __name__ == "__main__": ws_connection_url = "wss://api.alltick.co/stock" ws_client = websocket.WebSocketApp(ws_connection_url, on_message=tick_message_handler) ws_client.run_forever() 五、量化研发落地关键结论 不可将单次 WebSocket 回调等价于完整 Tick 报文,该认知偏差是数据失真的首要诱因; 黏包、半包属于 TCP 标准传输特性,不属于接口故障,更换行情数据源无法根除该问题; 轻量化缓冲解析逻辑仅十余行代码,可显著提升回测数据可信度、实盘策略稳定性,为量化工程必备基础模块; 多标的并行高频订阅、长周期离线回测场景中,缓冲层不可省略,能够有效规避时序错乱、样本缺失带来的策略拟合偏差。 若在多线程并发 Tick 解析、海量历史流缓冲性能调优、分布式回测管线对接等方向存在研发疑问,可在评论区交流,后续将补充高并发场景拓展工程代码。