网格交易计算器(A股 / 场内 ETF)
这个技能做什么
对用户自己给的区间、格子、金额做算术:
- 列出每一格:每格的买入价、卖出价(上一格的价)、买多少股、买入花费、卖出到手、每格净利润、每格利润率。
- 算总账:跑满一轮(价格从上限一路跌到下限、每一格都买到)最多要多少钱;跌到下限时最大浮亏多少;跌破下限再跌 10% 浮亏多少;每一格都完整买卖一次合计赚多少。
- 等差 vs 等比:默认两种都算并排对比。等差每格差固定金额,等比每格差固定百分比。
- 模拟一次:用户手输或给 CSV 的历史价格,按先后走一遍,看触发了多少格、买卖各成交几次、累计网格利润、期末还拿着多少、浮盈亏多少、期间最多占用多少钱。
- 会标出扣完费用不赚反亏的格子、钱不够一手的格子,以及佣金被最低 5 元吃掉的情况。
数字一律来自脚本输出,不要心算。
这个技能不做什么
- 不联网,不取任何行情。模拟用的价格必须是用户自己给的。
- 不荐股、不推荐 ETF,不判断区间定得对不对、现在适不适合开网格。用户问「这个区间好不好」「能赚多少」,回答:这个工具只按你给的区间算账,以后怎么走没人知道;然后把数字给他看。
- 不承诺收益。模拟结果只说明这段价格走过来会怎样,不代表以后。每次输出结尾的提示(不适合单边下跌、跌破下限不再买、浮亏自担)原样保留,不删不改。
- 只算 A股股票和场内 ETF 的现货网格。融资融券、可转债、期货期权、场外基金不在范围内。
- 不替用户在券商软件里设置条件单。
现行口径(核对日期 2026-09-30,出处见 references/rules-sources.md)
| 项目 | 股票默认 | ETF 默认 | 能不能改 |
|---|---|---|---|
| 佣金 | 万分之 2.5,单笔不足 5 元按 5 元 | 同左(很多券商 ETF 免五,按合同改) | 能 |
| 印花税 | 只在卖出时收,千分之 0.5 | 不收 | 能 |
| 过户费 | 买卖都收,十万分之 1 | 不收 | 能 |
| 价格最小单位 | 0.01 元 | 0.001 元 | 按品种自动 |
| 买入数量 | 沪深主板、创业板 100 股整数倍;科创板 200 股起按 1 股递增;北交所 100 股起按 1 股递增 | 100 份整数倍 | 按代码自动判断 |
- 每格在买入价挂买单,涨到上一格的价格挂卖单。每格净利润 = 卖出到手(扣佣金、印花税、过户费)减买入花费(含佣金、过户费)。
- 按金额分配时,每格股数 = 这格金额 ÷ 这格买入价,向下取到合规数量,花费不超过这格金额。
- 用间距排格子时,从下限开始往上排,排到不超过上限的最后一格为止,会注明实际停在哪。
- 代码 51、52、56、58、159 开头按场内 ETF 算。
用户说大白话 → 你翻成命令
脚本路径:{baseDir}/scripts/grid_calc.py。不要让用户记参数,由你从对话里取数。
| 用户这样说 | 你跑这个 |
|---|---|
| 「9 块到 11 块做网格,分 4 格,每格 1000 股,每格能赚多少?」 | python {baseDir}/scripts/grid_calc.py plan --low 9 --high 11 --grids 4 --per-shares 1000 |
| 「沪深300ETF 510300,3.5 到 4.5,每格 2%,每格 2 万块」 | python {baseDir}/scripts/grid_calc.py plan --code 510300 --low 3.5 --high 4.5 --step 2% --per-money 20000 |
| 「每格差 0.3 元,9 到 12,每格 5000 块,只看等差」 | python {baseDir}/scripts/grid_calc.py plan --low 9 --high 12 --step 0.3 --per-money 5000 --type arith |
| 「等差和等比哪个每格利润更均匀?10 到 20 分 10 格,每格 1 万」 | python {baseDir}/scripts/grid_calc.py plan --low 10 --high 20 --grids 10 --per-money 10000 |
| 「用这串价格模拟:10.2、9.9、9.4、10.1、10.6、9.3、8.5、9.6,区间 9 到 11,4 格,每格 1000 股」 | python {baseDir}/scripts/grid_calc.py price replay --low 9 --high 11 --grids 4 --per-shares 1000 --prices 10.2,9.9,9.4,10.1,10.6,9.3,8.5,9.6 |
| 「日线导出在 D:\行情.csv,按收盘价模拟,一开始先把底仓买好」 | python {baseDir}/scripts/grid_calc.py price replay --low 9 --high 11 --grids 8 --per-money 10000 --csv "D:\行情.csv" --base |
| 「我 ETF 免五,佣金万 0.5,3.8 到 4.2 分 20 格,每格 100 份」 | python {baseDir}/scripts/grid_calc.py plan --board ETF --low 3.8 --high 4.2 --grids 20 --per-shares 100 --commission-rate 0.00005 --commission-min 0 |
参数速查(给你看的,不念给用户):
| 参数 | 含义 |
|---|---|
plan / price replay |
列出每一格 / 用历史价格模拟 |
--low --high |
网格下限、上限 |
--grids / --step |
分几格 / 每格间距,二选一。--step 2% 是百分比(等比),--step 0.1 是固定金额(等差) |
--type |
arith 等差 / geo 等比 / both 都算(默认) |
--per-money / --per-shares |
每格买多少钱 / 每格买多少股(份),二选一 |
--prices |
模拟价格,按时间先后,逗号隔开 |
--csv --column |
模拟价格文件;自动找「收盘价 / 收盘 / close / 价格」列,找不到就用每行最后一个数字;也可以用 --column 指定列名 |
--base |
模拟开始时,把买入价不低于第一个价格的格子先按第一个价格买好底仓;不加就是空仓起步 |
--code / --board |
6 位代码自动判断;或直接写 主板 / 创业板 / 科创板 / 北交所 / ETF |
--commission-rate --commission-min --stamp-rate --transfer-rate |
改费率(小数写法,万 2.5 写 0.00025) |
--json |
输出结构化结果 |
退出码:0 正常,2 输入有误(错误信息两行:「出错了:…」「下一步:…」,原样转告用户)。
使用流程
- 问清楚:上下限、分几格(或每格间距)、每格买多少钱(或多少股);是股票还是 ETF(有代码最好)。缺哪样问哪样,别猜。费率没说就用默认,并告诉用户用的是默认。
- 跑脚本:按上表翻成命令。模拟时,用户没给价格就请他给,不要自己编、不要去网上找。
- 给用户看:先用一句话说结论(例如「4 格每格净赚 484 到 485 元,跑满一轮要 3.9 万,跌到 9 块浮亏 3020 元」),再附上脚本的表格,最后原样附上提示。
- 用户追问「那分 8 格呢」「换成 ETF 呢」,改参数重跑,不要心算。
说话方式
- 对用户只说「每格」「买入价」「卖出价」「每格赚多少」「最多要多少钱」「浮亏」这类说法,不念参数名。
- 结论只陈述数字,不加「稳赚」「躺赚」「适合」之类的评价。
- 模拟赚了也要同时说期末浮亏和「过去不代表以后」;模拟亏了照实说。
边界
- 券商实际收费各家不同,结果可能差几分钱,以交割单为准。
- 模拟只看用户给的价格点:两个点之间穿过的格子都算按格子价成交;没考虑涨跌停买不到卖不出、当天买入第二天才能卖、挂单排队没成交。
- 模拟浮盈亏按最后一个价格的市值算,没扣卖出费用。
- 格子太密(按最小报价单位取整后两格价格一样)或超过 200 格时,脚本会报错请用户调整。