全部
文章&策略
学习干货
问答
官方
用户头像sh_*2176oo
2026-07-14 发布
每天收盘后 5 分钟,用 Python 扫出A股全市场量价异动 选股最怕什么?漏掉。 5000 多只 A 股,你不可能全看一遍。大部分人只盯着自选股或者涨幅榜,但真正有意义的异动——比如一只长期缩量横盘的票突然放量 3 倍、一只连跌 7 天的票尾盘突然拉起来——往往发生在你根本没关注的票上。 解决思路很直接:每天收盘后跑一遍全市场扫描,把当天有"量价异动"的票自动筛出来。 AlphaFeed 的 Universe 接口可以一次拉到全部 A 股的实时行情快照,配合 batch 接口拉历史 K 线,5 分钟内就能扫完 5000+ 只票。 1. 第一步:一行代码拿到全市场行情快照 from alphafeed import AlphaFeed af = AlphaFeed() # 全部 A 股当日行情 all_cn = af.quotes.get(universes="CN_Stock", to_dataframe=True) print(f"A 股标的总数: {len(all_cn)}") # 计算涨跌幅 all_cn["change_pct"] = (all_cn["last_price"] - all_cn["prev_close"]) / all_cn["prev_close"] universes="CN_Stock" 返回沪深京所有股票的当前价格、昨收、成交量、成交额。这是整个扫描系统的数据底座。 2. 异动规则一:当日放量(成交量突增) 放量是最重要的异动信号之一。一只票如果平时日均成交 5000 万,今天突然做了 2 个亿,说明有大量资金在交易——无论是买还是卖,都值得关注。 但"放量"需要和历史均量对比才有意义。光看当日成交量的绝对值没用——茅台日均成交 30 亿算缩量,一只小盘股做 3 亿就算天量。 import pandas as pd 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"] # 过滤掉成交额太小的(低于 5000 万,流动性不够) active = all_cn[all_cn["amount"] > 5e7].copy() print(f"活跃标的: {len(active)} 只") # 拉这些票最近 20 天的 K 线,计算历史均量 symbols = active["symbol"].tolist() # batch 自动分块并发,几百只票几秒搞定 klines = af.klines.batch( symbols, period="1d", count=20, adjust="forward", to_dataframe=True, show_progress=True, ) # 计算每只票的 20 日均量 avg_volumes = {} for sym, kdf in klines.items(): if kdf is not None and len(kdf) >= 10: avg_volumes[sym] = kdf["volume"].mean() active["avg_vol_20d"] = active["symbol"].map(avg_volumes) active = active.dropna(subset=["avg_vol_20d"]) active["vol_ratio"] = active["volume"] / active["avg_vol_20d"] # 筛选放量票:今日成交量 > 2.5 倍 20 日均量 volume_surge = active[active["vol_ratio"] > 2.5].sort_values("vol_ratio", ascending=False) print(f"\n=== 放量异动(量比 > 2.5x): {len(volume_surge)} 只 ===") print(volume_surge[["symbol", "last_price", "change_pct", "vol_ratio", "amount"]] .head(20).to_string(index=False)) 量比 2.5 倍以上的票一般不会太多(每天几十只到上百只),但里面往往藏着当天市场的"暗线"。 3. 异动规则二:缩量后突然放量(底部放量) 比单纯放量更有价值的信号是:一只票连续多天缩量(没人关注),然后某天突然放量。这可能意味着有新资金开始介入。 # 找"缩量后放量"的票 bottom_volume = [] for sym, kdf in klines.items(): if kdf is None or len(kdf) < 15: continue kdf = kdf.sort_values("trade_date").reset_index(drop=True) # 最近 5 天之前的 10 天均量("缩量期"基准) base_vol = kdf["volume"].iloc[-15:-5].mean() # 最近 5 天均量("缩量期") quiet_vol = kdf["volume"].iloc[-5:-1].mean() # 今天成交量 today_vol = kdf["volume"].iloc[-1] if base_vol == 0 or quiet_vol == 0: continue # 条件:最近 5 天缩量(< 基准的 0.7 倍),今天放量(> 基准的 2 倍) if quiet_vol < base_vol * 0.7 and today_vol > base_vol * 2: bottom_volume.append({ "symbol": sym, "缩量期均量": int(quiet_vol), "今日成交量": int(today_vol), "放量倍数": round(today_vol / quiet_vol, 1), }) bv_df = pd.DataFrame(bottom_volume).sort_values("放量倍数", ascending=False) print(f"\n=== 缩量后突然放量: {len(bv_df)} 只 ===") print(bv_df.head(15).to_string(index=False)) 4. 异动规则三:大涨但不是涨停(有后续空间) 涨停的票你大概率买不到(挂单排不上)。更有实际意义的是那些涨了 5%–9% 但没涨停的票——如果同时放量了,说明有资金在大力买入但还没到极限。 # 大涨 + 放量但未涨停 hot_not_limit = active[ (active["change_pct"] > 0.05) & (active["change_pct"] < 0.095) & (active["vol_ratio"] > 1.5) ].sort_values("change_pct", ascending=False) print(f"\n=== 大涨放量但未涨停(5%–9.5%,量比>1.5x): {len(hot_not_limit)} 只 ===") print(hot_not_limit[["symbol", "last_price", "change_pct", "vol_ratio"]] .head(15).to_string(index=False)) 5. 异动规则四:连续下跌后企稳(可能的底部信号) # 找连跌后企稳的票 reversal_candidates = [] for sym, kdf in klines.items(): if kdf is None or len(kdf) < 10: continue kdf = kdf.sort_values("trade_date").reset_index(drop=True) kdf["ret"] = kdf["close"].pct_change() # 最近 5 天中有 4 天以上下跌 recent_5 = kdf["ret"].tail(6).iloc[:-1] # 倒数第 6 到倒数第 2 天 down_days = (recent_5 < 0).sum() cum_drop = recent_5.sum() # 今天翻红 today_ret = kdf["ret"].iloc[-1] if down_days >= 4 and cum_drop < -0.05 and today_ret > 0.01: reversal_candidates.append({ "symbol": sym, "连跌天数": down_days, "累计跌幅": f"{cum_drop:.1%}", "今日涨幅": f"{today_ret:+.1%}", }) rv_df = pd.DataFrame(reversal_candidates).sort_values("连跌天数", ascending=False) print(f"\n=== 连跌后翻红: {len(rv_df)} 只 ===") print(rv_df.head(15).to_string(index=False)) 6. 异动规则五:突破近期新高 # 突破 20 日新高 breakout = [] for sym, kdf in klines.items(): if kdf is None or len(kdf) < 20: continue kdf = kdf.sort_values("trade_date").reset_index(drop=True) prev_high = kdf["high"].iloc[-20:-1].max() # 之前 19 天最高价 today_high = kdf["high"].iloc[-1] today_close = kdf["close"].iloc[-1] # 今天的最高价突破了之前 19 天的最高,且收盘价在高位(不是冲高回落) if today_high > prev_high and today_close > prev_high * 0.98: breakout.append({ "symbol": sym, "前高": prev_high, "今日最高": today_high, "收盘价": today_close, "突破幅度": f"{(today_close / prev_high - 1):+.1%}", }) bo_df = pd.DataFrame(breakout).sort_values("突破幅度", ascending=False) print(f"\n=== 突破 20 日新高: {len(bo_df)} 只 ===") print(bo_df.head(15).to_string(index=False)) 7. 完整的每日扫描脚本 把上面的规则整合成一个脚本,收盘后一键运行: # daily_scan.py """每日收盘后量价异动扫描""" import pandas as pd from datetime import datetime from alphafeed import AlphaFeed af = AlphaFeed() def daily_scan(): today = datetime.now().strftime("%Y-%m-%d") print(f"{'='*60}") print(f" A 股量价异动扫描 {today}") print(f"{'='*60}\n") # 全市场行情 print("正在拉取全市场行情...") 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"] active = all_cn[all_cn["amount"] > 5e7].copy() print(f"活跃标的: {len(active)} 只\n") # 批量拉 K 线 print("正在拉取历史 K 线(用于对比)...") symbols = active["symbol"].tolist() klines = af.klines.batch( symbols, period="1d", count=20, adjust="forward", to_dataframe=True, show_progress=True, ) # 计算量比 avg_volumes = {} for sym, kdf in klines.items(): if kdf is not None and len(kdf) >= 10: avg_volumes[sym] = kdf["volume"].mean() active["avg_vol_20d"] = active["symbol"].map(avg_volumes) active = active.dropna(subset=["avg_vol_20d"]) active["vol_ratio"] = active["volume"] / active["avg_vol_20d"] # ---- 异动 1: 放量 ---- surge = active[active["vol_ratio"] > 2.5].sort_values("vol_ratio", ascending=False) print(f"\n📊 放量异动(量比 > 2.5x): {len(surge)} 只") if len(surge) > 0: print(surge[["symbol", "change_pct", "vol_ratio"]].head(10).to_string(index=False)) # ---- 异动 2: 大涨未涨停 ---- hot = active[ (active["change_pct"] > 0.05) & (active["change_pct"] < 0.095) & (active["vol_ratio"] > 1.5) ].sort_values("change_pct", ascending=False) print(f"\n🔥 大涨放量未涨停: {len(hot)} 只") if len(hot) > 0: print(hot[["symbol", "change_pct", "vol_ratio"]].head(10).to_string(index=False)) # ---- 异动 3: 突破 20 日新高 ---- breakout_list = [] for sym, kdf in klines.items(): if kdf is None or len(kdf) < 20: continue kdf = kdf.sort_values("trade_date").reset_index(drop=True) prev_high = kdf["high"].iloc[-20:-1].max() today_close = kdf["close"].iloc[-1] if today_close > prev_high: breakout_list.append({"symbol": sym, "突破幅度": today_close / prev_high - 1}) bo_df = pd.DataFrame(breakout_list).sort_values("突破幅度", ascending=False) print(f"\n📈 突破 20 日新高: {len(bo_df)} 只") if len(bo_df) > 0: print(bo_df.head(10).to_string(index=False)) # ---- 异动 4: 连跌后翻红 ---- reversal_list = [] for sym, kdf in klines.items(): if kdf is None or len(kdf) < 10: continue kdf = kdf.sort_values("trade_date").reset_index(drop=True) kdf["ret"] = kdf["close"].pct_change() recent = kdf["ret"].tail(6).iloc[:-1] if (recent < 0).sum() >= 4 and recent.sum() < -0.05 and kdf["ret"].iloc[-1] > 0.01: reversal_list.append({ "symbol": sym, "连跌天数": (recent < 0).sum(), "今日涨幅": kdf["ret"].iloc[-1], }) rv_df = pd.DataFrame(reversal_list).sort_values("今日涨幅", ascending=False) print(f"\n🔄 连跌后翻红: {len(rv_df)} 只") if len(rv_df) > 0: print(rv_df.head(10).to_string(index=False)) # 汇总 total = len(surge) + len(hot) + len(bo_df) + len(rv_df) print(f"\n{'='*60}") print(f" 共发现 {total} 条异动信号(存在重叠)") print(f"{'='*60}") if __name__ == "__main__": daily_scan() 设成每天 15:05 自动运行: # crontab -e 5 15 * * 1-5 cd /path/to/project && uv run python daily_scan.py >> scan.log 2>&1 8. 性能:为什么能在 5 分钟内跑完 整个扫描流程的耗时瓶颈在"拉数据",而不是计算: 步骤 耗时 说明 全市场行情快照 ~2 秒 af.quotes.get(universes="CN_Stock") 一次返回 筛选活跃标的 < 0.1 秒 pandas 过滤 批量拉 K 线 ~30–60 秒 af.klines.batch() 对 2000+ 只票拉 20 天数据 计算所有异动规则 < 1 秒 纯 pandas 运算 总共约 1–2 分钟。如果你的股票池更小(比如只扫成交额 top 500),十几秒就能跑完。 关键在于 AlphaFeed 的两个接口设计: universes 全量查询——不需要你预先维护一个代码列表,一行拿到全市场 batch 批量并发——2000 只票的 K 线,SDK 自动分成 20 个块、5 线程并发、失败自动重试 如果用爬虫接口一只一只拉,2000 只票 × 0.5 秒 sleep = 16 分钟起步。 9. 扫描结果怎么用 扫出来的异动票不是"买入推荐"。它们是"值得你花时间去看一眼的票"。 合理的使用方式: 每天扫描 → 筛出 20–50 只异动票 人工翻一遍 → 挑出 5–10 只有逻辑的(比如行业有利好、技术形态好) 加入观察池 → 持续跟踪几天 确认信号持续 → 决定是否买入 扫描解决的是"从 5000 只里缩小到 50 只"的问题,剩下的判断还是你来做。 AlphaFeed 官网:https://alphafeed.org/ Python SDK 快速开始:https://docs.alphafeed.org/zh-Hans/sdk/python-quickstart
浏览5
评论0
收藏0
用户头像9点半量化
2026-07-14 发布
在每一个交易日的早晨,无数普通股民怀揣着“财务自由”的梦想或“补贴家用”的期待,准时刷开交易软件。然而,在跳动的红绿数字背后,隐藏着一个足以让所有人脊背发凉的真相。 东方财富近期的一份统计报告揭示了资本市场最残酷的过滤系统:在特定的账户区间内,亏损比例竟然高达 99.9%。这意味着,当大多数人满怀希望地入市时,他们其实已经预定了失败者的席位,成为了那 0.1% 顶层玩家的背景板。在账户余额的起伏中,究竟隐藏着怎样的财富收割逻辑?作为投资者,你必须看清这张血淋淋的胜率图谱。 10 万以下的“消遣区”:入场即是捐赠 数据告诉我们,本金规模在 10 万以下的投资者,其生存状况近乎荒诞。 在这个区间内,资产在 1 万以下的账户占比高达 23.15%,但其亏损比例却是令人窒息的 99.9%。换句话说,这一档位的股民几乎全军覆没。而人数最集中的 1 万到 10 万档位,聚集了市场中近一半(48%)的散户,其亏损比例依然维持在 97% 的高位。 这已经不是在博弈,而是在单向“捐赠”。如果你在这个区间且处于持续亏损,必须接受一个冷酷的现实:**“**如果说你不是拿 1 万块钱出来娱乐消遣,那么我建议你尽量不要玩,这不是炒股,这是给股市送钱。” 这个区间的投资者通常受困于极短的眼光和极高的博弈杠杆,试图用微薄的本金博取翻倍的奇迹,结果自然是陷入了“入场即捐赠”的怪圈。 50 万到 100 万:认知的关键分水岭 当资金体量跨入 10 万至 100 万的门槛时,市场的残酷并没有减少,但博弈的性质开始发生微妙的质变。 在 10 万到 50 万这个“心碎期”,尽管投资者开始接触更多的信息渠道,占比 21.65% 的人群中仍有 78.3% 的人在亏钱。究其症结,是因为很多人的认知没有跟上资金的增长。他们手里握着足以改变生活的重金,脑子里装的却还是追涨杀跌、四处打听小道消息的散户思维。他们是在用更大的赌注,重复着旧有的错误。 真正的转折点出现在 50 万到 100 万这一档位。虽然这部分人群仅占 3.75%,但其亏损比例陡然降至 50%。这标志着一个重要的认知分水岭:能站到这个资金量级的人,通常在学历、经验和行业认知上已有所沉淀。他们开始有意识地控制交易频率,放弃直觉导向的盲目杀入,转而重视公司的基本面与账面逻辑。他们开始学会像真正的投资者那样思考,从而将胜率强行拉回了平衡线。 百万账户的降维打击:从生存博弈到方法论变现 当账户金额突破 100 万时,统计数据呈现出一种颠覆性的逆转:统计口径不再讨论“亏损比例”,而是直接统计“盈利比例”。 在 100 万到 500 万之间的账户中,盈利比例竟然高达 90%。这意味着在这一阶层,赚钱变成了大概率事件。这绝非运气使然,而是现实社会赚钱能力在股市的延伸。能在现实中积累百万以上现金流的人,本身就具备严谨的方法论、风险管理能力和极强的逻辑感。 正如业内常说的那句话:**“**这种高认知你放在股市里面,它赚钱会更容易一些。” 他们入市不是为了碰运气,而是为了利用已经成熟的逻辑进行资产增值。这种思维层面的高度,形成了对底层散户的降维打击。 站在阶层的顶端:1% 玩家的“碾压式优势” 越往金字塔尖攀升,盈利的确定性就越接近于某种“必然”。 统计显示,500 万到 1000 万账户的盈利比例为 97%,而 1000 万以上的顶级账户,盈利比例更是达到了惊人的 99.1%。一个残酷的现实是:在这个市场中,不到 2% 的人掌握了 30% 以上的资金。 这些顶层玩家拥有散户完全无法企及的特质:他们不追热点,不频繁交易,更不看那些情绪化的“小作文”。更重要的是,他们拥有资源信息优势和极度的理性。当一个千万级玩家将股票仅仅视为众多资产配置的一种方式时,其心态的稳定性足以消解任何市场波动。这不仅是财富的差距,更是阶层带来的碾压优势。 核心反思:你是在用谁的逻辑炒股? 股市盈利的真相揭示了一个深刻的社会逻辑:炒股能否赚钱,不取决于你此时账户里钱的多少,而取决于你站在哪个阶层思考,在使用谁的逻辑。 散户习惯于“弱联合”,即在社交平台上抱团取暖,结果往往是集体亏损。而顶层玩家讲究的是“强联合”:当一件投资事项摆在面前,会有十个不同领域的专家,从不同的信息渠道去交叉验证,当所有渠道最终聚集成同一个结论时,这笔交易才会启动。 这种严密的验证逻辑,才是靠谱的交易。我们必须承认:股市从来不是一个公平分配的市场,而是一个**“****概率向高认知集中”**的地方。 结语:抛弃散户思维,从改变认知开始 看完这些冰冷的数据,你是感到沮丧,还是感到清醒? 数据的存在不是为了打击信心,而是为了让我们看清博弈的底牌。如果你依然沉溺于情绪化的追涨杀跌,那么你本质上还在为那 1% 的高认知人群持续供血。 改变胜率的第一步,不是增加本金,而是彻底抛弃散户思维。在这个不公平的博弈场中,你是准备继续靠直觉“送钱”,还是开始构建属于你的盈利方法论?
浏览8
评论0
收藏0
用户头像sh_*219t3e
2025-11-06 发布
最近我专门针对 Supermind 平台的AI 量化代码生成平台进行了优化改进,现在效果比市面上的 DS、豆包等工具好很多。 👉 SuperMind AI量化代码生成平台 这个工具最大的特点是直接和 AI 对话就能生成完整可运行的Supermind量化策略代码。你不需要懂 Python、C# 或策略 API,只要用自然语言描述你的交易逻辑,比如:“当5日均线向上突破20日均线时买入,反向时卖出。” AI 就会自动帮你生成完整策略代码,并能直接在平台上运行。 相比于通用大模型的输出,这个平台针对量化交易进行了专门优化生成的代码结构更清晰,逻辑更准确,对策略逻辑的理解更接近量化开发者的思路,并且可用作 API 查询或策略自动生成工具 之前上线后,很多朋友反馈代码质量和可运行性都非常高,几乎不需要再手动修改。现在我们的AI量化代码生成平台已经全面支持 Supermind,你可以直接体验。如果你之前在用 DS、豆包等平台,不妨试试看这个版本,可能会刷新你对AI 写量化策略的想象。
浏览4947
评论75
收藏7

回测超过1年收益都为千倍

用户头像mx_***212o7g
2026-07-14 发布
==================== 大盘阴跌个股疯涨策略 候选池:中证1000成分股 手续费:请在平台界面设置 0.3% 双边,最低5元 滑点:0.2% 已设 风控:硬止损 -4%,硬止盈 +30% 账户总资产 < 10万元,禁止买入科创板(688开头)个股
浏览14
评论1
收藏0

四年150倍跟做梦一样内含策略代码

用户头像她要5个小目标
2025-03-01 发布
浏览3484
评论27
收藏24
策略回测收益图
用户头像sh_**729dg0
2026-07-13 发布
搞量化,这些高频数据源你了解吗? 最近在研究,发现很多策略想跑得精细,光靠日K线、分钟线完全不够看。有时候盘口一个微小的变化可能就是信号。但找数据真是个体力活,免费的要么不全,要么要自己清洗到怀疑人生。 今天不聊策略,就单纯聊聊我最近在用的几个数据源,主要是港股和美股的高频数据。如果你也在找这类数据,可以参考一下。 数据源概览 我主要关注的是逐笔成交和十档订单簿数据。简单理解: 逐笔成交:市场每一笔成交都记录下来,时间精确到毫秒甚至微秒。你能看到是谁(买方/卖方)主动发起的交易,成交价和量是多少。 十档订单簿:也就是常说的Level-2数据。不光看买一卖一,能看到买一到买十、卖一到卖十的全部挂单情况。对于理解盘口压力和支撑特别有用。 很多人问,平时量化也是,数据源:CMES金融数据库 港股数据有什么? 港股的数据分了几个大类,我主要用下面两种: 港股逐笔成交数据 这个数据最细。每一行就是市场的一笔真实成交。字段大概有这些: 字段名 说明 symbol 股票代码 trade_time 成交时间(毫秒级) price 成交价格 volume 成交数量(股数) turnover 成交金额 trade_type 成交类型(比如是自动对盘还是碎股交易) bid_order_id 买方订单号 ask_order_id 卖方订单号 direction 方向(通常指主动成交方向:买盘B/卖盘S) 看这个数据,你能还原出市场上所有资金的流动痕迹。比如大单是主动买入还是被动卖出,盘中有没有出现密集的扫单。 港股十档订单簿数据 这个数据是快照,一般每3秒(或者更短)记录一次整个市场的订单簿状态。 主要字段包括: symbol:股票代码。 snapshot_time:快照时间点。 买盘1-10档的 bid_price_1 到 bid_price_10,以及对应的 bid_volume_1 到 bid_volume_10。 卖盘1-10档的 ask_price_1 到 ask_price_10,以及对应的 ask_volume_1 到 ask_volume_10。 通常还会有这一时刻的总委买量、总委卖量。 用这个数据,可以算很多指标,比如订单簿不平衡度、买卖价差、盘口深度。我之前想复现一个价量冲击的因子,就是靠这个数据算的。 美股数据有什么? 美股的交易机制和港股不同,数据字段也有点区别,但逻辑类似。 美股逐笔成交数据 同样记录了每一笔成交,但美股的交易场所多(NYSE, NASDAQ等),字段上会体现出来。 关键字段: symbol:股票代码。 exchange:交易市场。 trade_time:纳秒级时间戳(美股精度更高)。 price, size:成交价和量。 conditions:成交条件,这个字段很重要,能区分是常规交易还是开盘价、收盘价交易等。 同样会有标识主动买卖方向的字段,比如 tape。 美股订单簿数据(NBBO) 美股有个核心概念叫NBBO(全国最佳买卖报价)。这个数据可以理解为全市场最优的订单簿快照。 主要看: symbol:代码。 quote_time:报价时间。 bid_price, bid_size:全国最佳买价和量。 ask_price, ask_size:全国最佳卖价和量。 有时还会包含各个交易所的报价情况。 对于做美股日内或者高频策略,NBBO数据是基础。 怎么获取和使用? 网站上提供了下载,但数据量非常大,动辄几十G。直接下下来用Python的pandas读可能会卡死。建议按股票代码或者日期范围分批处理。 他们也有API接口,用Python调用会方便一些。我自己试过,写个简单的脚本就能把指定日期的数据拉下来。 # 示例:调用CMES金融数据库的行情接口 # 注意入参正确,调用频率正常,别把人家服务器搞挂了。 import cmesdata # 初始化客户端,需要你自己的token client = cmes_data.Client(api_token='your_token_here') # 获取某只股票某天的逐笔数据 # 以港股腾讯(00700)为例 tick_data = client.get_hk_tick_data(symbol='00700', date='2023-10-27') # 数据返回通常是DataFrame,可以直接用 print(tick_data.head()) 安装的话,一般就是用pip: pip install cmes-data-sdk 具体参数和更详细的用法,最好还是去翻他们的接口文档,这里只是举个例子。 一些实际的感受 数据是好数据,但坑也不少。最大的问题就是数据量。一天一个市场的逐笔数据可能就几十个G,没有好的服务器和存储方案,根本玩不转。我一开始用自己笔记本跑,直接卡到蓝屏。 清洗也是个麻烦事,比如除权除息、合约调整,免费数据很多要自己处理。后来为了省时间,我直接用了CMES金融数据库已经清洗好的版本,虽然要花点积分,但不用自己折腾数据对齐和复权了,算下来还是划算的。 另外,不建议新手一上来就怼着Tick数据搞。先从日线、分钟线把策略逻辑跑通,再考虑用高频数据做增强或者验证。不然很容易在数据处理的泥潭里出不来。 好了,大概就这些。数据是死的,怎么用它产生价值才是关键。希望这点信息对你有用。如果你知道怎么高效压缩存储这些Tick数据,求分享!私信交流也行。
浏览18
评论0
收藏0
用户头像mo_***841m63
2026-07-13 发布
最好用的AI助手https://iris.findtruman.io/ai/tool/ai-quantitative-trading/?invite_code=YNVVDGAD可以转换主流的量化平台代码,小白也可以玩转量化
浏览23
评论1
收藏0
用户头像sh_*219t3e
2025-09-26 发布
大家好,我想和大家分享一个我最近开发的项目——一款面向量化交易的 AI 智能助手工具网站。它可以帮助大家快速生成高质量、可直接复制运行的量化策略代码,无论你是量化小白还是策略开发者,都能从中受益。 核心亮点: 1.多平台支持:目前已支持 PTrade、QMT、miniQMT、聚宽等,并计划不断扩展更多平台。 2.策略生成高效:用户只需选择平台并输入策略想法,AI 即可生成可运行的量化策略代码。 3.快速入门与优化: • 对量化小白:轻松生成可直接运行的策略,快速上手交易。 • 对策略开发者:帮助完善、优化已有策略,节省开发时间。 • 对文档需求者:可作为量化平台的 API 文档问答机器人,方便查询和使用。 4.业内首创:这是首个面向多平台的量化交易 AI 助手,解决了现有 Deepseek 或 Trae 等 AI 工具因缺乏平台知识库而生成代码无法运行的问题。 使用方式:登录 → 选择你使用的平台 → 输入策略想法 → 生成可运行的策略代码。 我希望这个工具能帮助大家更高效地进行策略开发和量化交易,也欢迎大家在帖子里分享使用体验和建议。 网站链接:https://iris.findtruman.io/ai/tool/ai-quantitative-trading/ 如果大家有任何问题或功能需求,也可以在帖子里留言,我会持续优化和更新,让它成为量化交易领域最实用的 AI 助手!
浏览5205
评论84
收藏3
用户头像9点半量化
2026-07-13 发布
在股市搏杀,最理想的境界不是抓到涨停板,而是达到一种“无敌”状态:无论大盘如何剧烈波动,哪怕股价遭遇跌停,你的账户依然稳稳飘红。 这并非天方夜谭,而是通过精准的仓位管理与交易降本,将持仓成本摊薄至“负数”。当你的成本变为负值时,市场的一切震荡都只是在为你贡献利润。作为一名在市场摸爬滚打多年的老兵,我今天就把这套“负数成本”的实操秘籍彻底拆解给你。 核心秘籍 1:精准选股——不是所有票都能做“负数成本” 想要实现负数成本,第一步不是盲目买入,而是看懂主力“画的线”。你必须筛选出符合特定技术形态的标的。 **●**铁律:寻找低位横盘筑底的个股。 股票必须在一个区间内反复震荡,这是主力在底部偷偷吸筹的痕迹。 ●核心信号:“3D点策略”。观察股价走势,你必须识别出三个不断抬高的低点: 第一个低点出现后,股价反弹。 第二个低点必须高于第一个低点,这代表主力不愿让股价再创新低。 第三个抬高的低点是最佳契机。 当这个点出现时,说明主力的建仓成本已经整体上移,这正是你入场布局的“安全垫”。 **●**看透逻辑: 我们不去预测主力,我们只是通过“读线”来确认主力的意图。底部不断抬高,说明主力正在锁定筹码。 核心秘籍 2:实操两步走——买新卖老,强行降本 选对票后,具体操作绝不能拖泥带水。你必须掌握“做T”的核心武器:1:1****等额对冲,卖老留新。 第一步:入场(买新)。 在确认第三个抬高的低点出现时,果断出手,买入与底仓金额完全相等的股票(1:1比例)。例如:你原本持有1000股,此时必须再加仓1000股。 第二步:离场(卖老)。 当股价拉升至上方压力位时,必须果断卖掉手中成本最高的那批老仓。 资深策略师解析: 为什么要“卖老留新”?这背后的会计逻辑是:你通过卖掉高价的老筹码,实现了账面盈利或亏损的对冲,而手里留下的全是低位买入的新筹码。这种“一进一出”,利用高低位的交易差价(Spread),能强行将整体持仓均价大幅下拉。 核心秘籍 3:循环复利——让股票变成你的“ATM机” 负数成本不是一蹴而就的,它需要机械化的重复。 **●**循环逻辑: 回落到抬高的低点 -> 买入(1:1)-> 拉升到压力位 -> 卖出老仓。 ●**关键前提: 每一笔“做T”的交易差价必须足够高**。如果差价过小,手续费就会吞掉你的利润。只有足够大的波动空间,才能有效摊薄成本。 通过多次成功的交易积累,你的成本会无限接近地平线,最终击穿零值,变成负数。 “无论后面怎么洗盘,怎么震荡,你都是赚的。为什么?因为你没有成本,你手里剩下的全都是纯利润。” 当你死磕一支票,不断通过这种方式“薅主力羊毛”时,这支股票就成了你取之不尽的ATM机。 制胜心态:散户赢过主力的唯一武器 技术只是外壳,执行力才是内核。散户在信息和资金上处于劣势,唯一的胜机在于心理素质。 “散户唯一赢主力的方法,就是比他更冷静,更有耐心,更不要脸。” 这里的“不要脸”不是贬义,而是一种战术上的 “死磕”: **●**死磕目标: 认准一支好票就死磕到底,不要被外界杂音干扰。 **●**冷酷执行: 符合“3D点”条件就买,不符合就等,这就是给你自己立下的 “军令状”。 **●**克制本能: 绝大多数人亏钱是因为冲动。当你能像机器人一样执行“买新卖老”时,财富自然会向你低头。 结语:从“送钱”到“翻身”的思维转变 在股市这个没有硝烟的战场上,掌握“做T”降本的技巧是你生存的必备武器。如果你不懂如何把成本做低,就相当于没带刀枪就上了战场,你永远只是主力的猎物。 掌握这项“负数成本”的武器,本质上是思维的翻身。 当你不再关注一天的涨跌,而是开始计算持仓成本离负值还有多远时,你的投资心态会发生翻天覆地的变化。 到了那一刻,你会发现,盈利不再是运气的博弈,而是规律的必然。
浏览41
评论0
收藏1
用户头像me_361829775857
2026-07-13 发布
搞量化,这些行情数据你用过吗? 做量化研究,数据是地基,地基不稳,策略再好也白搭。今天不聊复杂的策略,就单纯聊聊市面上能搞到的一些核心行情数据,特别是Level2和Tick,里面到底装了啥,用的时候又得注意些什么。 首先得区分一下行情数据的几个层级。最基础的就是我们平时在软件上看到的日K线、分钟K线,这个属于Level 1数据,信息量有限。真正能挖到东西的,是Level 2数据,它把市场订单的“底裤”都给你看清楚了。 Level 2行情数据:不只是五档买卖盘 很多人以为Level 2就是买卖五档,其实远不止。它包含了交易所发布的全部订单簿快照信息,是高频和微观结构研究的基础。 核心的字段有哪些呢? 时间戳:这个最重要,精确到毫秒甚至纳秒级别,决定了你事件序列的准确性。 买卖盘口:买一价到买五价,卖一价到卖五价,以及对应的挂单数量(手数)。这是最基本的。 委托队列:这是Level 2的精华。它告诉你每个价位上,当前有多少笔委托单在排队。比如买一价10.00元,挂单总量1000手,但这1000手可能是由50笔不同大小的委托单组成的。这个信息对于判断支撑压力位的“真假”特别有用。有时候一个大单挂在买一,你以为支撑很强,结果一看委托队列,全是小单凑起来的,一砸就穿。 逐笔成交明细:每一笔成交是怎么发生的,是主动买还是主动卖,成交了多少钱,多少量。这个数据量巨大,但分析资金流向、计算主动性买卖盘(俗称“内盘外盘”的升级版)离不开它。 总委托笔数/总委托量:反映了市场参与者的活跃度和情绪。 我以前也只看K线,后来才发现这些细节里的魔鬼。为了验证一个关于“委托队列”的规律,我调取了数据源:CMES金融数据库中过去三年的主力合约数据做回测,发现用这个特征来过滤市场噪音,效果比单纯看挂单总量要好得多。 逐笔Tick数据:市场的每一次心跳 如果说Level 2快照是“照片”,那逐笔Tick数据就是“录像”。它记录了市场每一次报价和成交的变化,是最高频的数据源。 它的字段更细,主要包括: Tick时间(精确到毫秒) 最新价 成交量(这一Tick的成交量) 成交额(这一Tick的成交额) 买一价/卖一价 买一量/卖一量 Tick和分钟线的区别,用个不恰当的比喻: Tick数据就像个碎碎念的监控器,市场动一下它就叫一声,数据量巨大,是硬盘和内存的杀手。 分钟线数据则像个沉稳的秘书,每分钟给你整理一份简报,数据规整,适合做中低频的回测。新手真不建议一上来就碰Tick,清洗和存储都是大坑,会怀疑人生的。 数据怎么用?举个简单的代码例子 拿到数据后,总得读出来看看吧。现在很多数据平台都提供了Python接口,用起来比较方便。比如,如果你有相应的数据接口(这里只是举例格式,具体参数要看文档),可能会这样调用: # 示例:调用CMES金融数据库行情数据接口 # 具体API密钥、参数需参考对应数据平台的官方文档 # 以某个数据接口为例,获取某股票某日的Level2快照数据 import cmes_data_api # 假设的库名,请以实际为准 # 初始化客户端,需要你的API Key和Secret(请从正规数据平台获取) client = cmes_data_api.Client(api_key='你的key', api_secret='你的secret') try: # 请求数据,参数示例:标的代码、开始时间、结束时间、数据类型 # CMES金融数据库的行情接口,注意入参正确,调用频率要遵守平台限制。 data = client.get_market_data( symbol='000001.SZ', start_time='2023-11-01 09:30:00', end_time='2023-11-01 15:00:00', data_type='level2_snapshot' # 指定获取Level2快照 ) print(data.head()) # 查看前几行 except Exception as e: print(f"获取数据失败: {e}") # 安装通常是用pip # pip install cmes-data-api (假设的包名,请以实际数据平台提供的为准) 重点提醒:用任何接口前,一定要仔细读它的官方文档!搞清楚频率限制、数据字段含义、时间格式,不然很容易报错或者拿不到数据。我之前就因为时间格式没传对,白等了半天。 数据对比与选择 这么多数据,到底用哪个?简单列个对比,带点个人偏见哈: 数据类别 特点 数据量 适合做什么 个人感受 Level 2快照 3秒/笔(沪深),有深度订单簿 很大 盘口分析、高频策略、交易成本估算 研究市场微观结构的核心,但存储处理麻烦。 逐笔成交 每笔成交都记录,有买卖方向 巨大 资金流分析、订单流分析、超高频率策略 数据量爆炸,一般电脑扛不住,通常是专业机构在用。 1分钟K线 由Tick合成,包含OHLCV 小 技术指标回测、中低频策略 最常用,数据规整好处理,新手友好。 日K线 每日开盘、收盘等 极小 长期趋势分析、基本面量化 基础中的基础,但信息量太少。 说实话,整理这些数据说明写得手都酸了。选数据关键看你的策略频率和研究目的。别贪多,够用就行。处理Tick数据的时候,记得做好数据压缩和存储方案,不然硬盘真的会哭。 最后,数据质量是命根子。自己从原始数据清洗,会遇到各种坑,比如停牌、除权除息、合约换月。之前为了省点钱用免费数据,结果在数据清洗上花的时间比写策略还多,到头来还是用了清洗好的成品数据库,虽然花点积分,但省心啊。时间也是成本。 好了,关于数据就先聊这么多。这些都是做量化实实在在要面对的东西。如果有大佬知道更好的Tick数据压缩或读取技巧,求教!评论区或私信都可以。
浏览17
评论0
收藏0