网格交易策略功能说明
## 一、功能说明
-
在满足特定技术条件时自动开新仓。 -
开仓后围绕持仓自动布置上下双向网格。 -
随着成交和持仓变化,动态重算下一档买价、卖价和目标利润。 -
在实盘环境中自动处理订单偏差、部分成交、碎股、融资账户限制和日结。 -
通过日志和消息推送,让交易过程可跟踪、可解释、可复盘。
## 二、交易策略亮点
1.不是死板网格,而是“先筛选,再网格”
2.网格间距不是固定值,而是按波动率自适应
3.开仓、加仓、减仓是一体化设计
4.利润不是简单落袋,而是部分回注到网格结构
5.不是只会下单,还会检查订单是否“挂对了”
-
当前挂单价格是否仍等于理论买卖价 -
当前挂单数量是否正确 -
没仓位时是否还残留挂单 -
部分成交订单是否需要撤单和修复
6.适合多标的 ETF 轮动式运行
7.自动打新股/新债
## 三、工作原理
### 1. 启动后先做环境准备
-
读取账户、配置、授权信息。 -
读取本地 JSON 状态文件,恢复每个标的的历史网格参数。 -
检查账号是否连通、授权是否有效。 -
过滤掉不合法标的,或融资账户中不允许开仓的标的。 -
建立定时任务:
-
早上更新分红除权影响 -
更新持仓状态 -
补挂网格买卖单 -
根据设置自动申购新股/新债 -
尾盘处理部分成交订单 -
收盘后自动还融资 -
盘后下载历史数据 -
夜间再次检查和补挂订单
### 2. 开新仓的逻辑:先看结构,再做交易
-
中期均线在长期均线下方,说明标的还没有进入过热状态。 -
短期均线上穿中期均线,说明价格结构开始转强。 -
最近一次低点比前一次低点更高。 -
最近一次高点比前一次高点更高。
### 3. 网格步长如何确定
-
取最近约 365 天日线数据。 -
用连续两天的高低价波动估算“平均两日振幅”。 -
再乘以 `price_step_co` 得到实际网格间距。 -
同时限制最小值 `min_price_step` 和最大 10%。
-
波动大的 ETF,不会挂得太密,减少频繁无效成交。 -
波动小的 ETF,不会挂得太宽,避免长期不成交。
### 4. 首次建仓不是一格,而是先搭好初始框架
-
init_vol是后续每次网格买卖的标准单位。 -
init_vol_times决定首次开仓时先铺几格仓位。
-
一开仓就有可卖出的基础筹码。 -
后面可以立即进入“下跌补、上涨卖”的自动网格循环。 -
不需要等第一次补仓后才形成完整结构。
### 5. 持仓后的核心:自动计算下一买、下一卖
-
持仓数量 -
成本价 -
网格步长 -
当前累计目标利润
-
next_buy_price -
next_sell_price
-
即使程序重启,也能从 JSON 和持仓恢复状态。 -
即使部分成交、尾盘补单、碎股处理后,网格还能重新对齐。 -
理论买卖价和实际挂单价不一致时,可以自动识别并撤单重挂。
### 6. 利润如何处理:不是卖完就结束
-
网格系统会随着盈利逐步提高收益要求。 -
已实现利润会部分转化为未来网格的“抬升基础”。 -
长期运行时,网格不是静止的,而是会随累计收益发生结构性变化,也就是说随着时间的增加,最终平仓(每一个交易标的的最后一次卖出)价格是在不断下降的。
### 7. 风控和实盘细节处理
1.最大持仓数限制
2.资金保留比例
3.融资账户适配
4.涨跌停价格检查
5.订单校验与撤单
6.部分成交处理
7.碎股归入底仓
8.ETF 清盘风险提示
9.自动还融资
10.消息通知
## 四、config.py 配置项详细说明
###stock_list
-
定义程序允许监控和交易的标的池。 -
支持 ETF,也包含部分个股。 -
程序启动时会去重,并结合账户类型、可融资状态等进一步过滤。
-
列表越大,可选机会越多。 -
但如果 max_pos较小,最终真正进入交易的标的数量仍受限制。
-
用于放入长期观察、流动性较好、适合网格和波段结构的 ETF。 -
如果加入个股,最好确认其波动特征、涨跌停限制和融资规则都与你的账户匹配。
###stop_open_list
-
这些标的即使仍在 stock_list里,也不会再开新仓。 -
但已有持仓仍会继续按网格逻辑管理。
-
临时停用某些波动异常的标的。 -
对某些不想继续新开仓、但又不想手动接管旧仓的标的做软隔离。
###period
-
周期越短,信号越快,交易更频繁。 -
周期越长,信号更稳,但开仓次数会减少。
-
比 5 分钟更稳,比日线更灵敏,适合 ETF 网格前置筛选。
###max_pos
-
越小越保守,单个标的可分配资金更集中,但整体机会更少。 -
越大越分散,策略覆盖面更广,但也更考验资金规模和管理能力。
###pos_vol_co
-
用于计算单票标准仓位大小。 -
程序中单格买入量 init_vol大致来自:总资产 / pos_vol_co / 当前价格,再按 100 股取整。
-
数值越大,单票单格仓位越小,更保守。 -
数值越小,单票仓位越大,收益弹性更高,但风险也更高。
###init_vol_times
-
值越大,初始建仓更重,后续更容易立即进入网格卖出阶段。 -
值越小,试仓更轻,但网格结构形成更慢。
###reserve
-
防止在连续开仓后把流动资金用得过满。 -
给后续补仓、突发风险和费用留出缓冲。
###price_step_co
-
越大,网格越宽,交易频率下降,但单次利润空间变大。 -
越小,网格越密,交易频率上升,但更容易受到噪音波动干扰。
###min_price_step
###min_vol
###fin_enable_only
###log_level
-
10 = DEBUG -
20 = INFO
-
调试阶段用 DEBUG -
长期稳定运行可考虑改成 INFO
夜雨聆风