前言区间震荡行情用网格思路是跌一格加仓、涨一格减仓或反向做均值回归网格。用天勤时若每个格子都直接insert_order容易手续费爆炸、部分成交乱仓。我更喜欢用TargetPosTask表达「目标净仓」格子信号只改目标手数由任务层去拆单。天勤TqSdk的TargetPosTask适合这类频繁调仓但必须把「价格档位 → 目标 volume」映射写清楚并做手续费敏感检查。下面给映射思路和主循环结构不是完整盈利策略。一、网格在程序里是什么抽象成中心价或均线锚定上下各 N 格每格宽度step元或 tick当前价落在哪一格对应目标净仓target_volume整数手例如做多网格价每下移一格目标仓 1每上移一格目标仓 -1或减至 0。做空网格方向相反。团队要先纸面画表再写代码。档位相对中心目标净仓示例201102-13-24表内容仅示意实际档位与风控上限自定。二、用 TargetPosTask 承接目标仓fromtqsdkimportTqApi,TqAuth,TqSim,TargetPosTask apiTqApi(TqSim(),authTqAuth(账户,密码))symbolSHFE.rb2510quoteapi.get_quote(symbol)klapi.get_kline_serial(symbol,60,data_length50)taskTargetPosTask(api,symbol)centerNonestep20# 元示意max_pos4defprice_to_target(price,center,step,max_pos):ifcenterisNone:return0kint(round((center-price)/step))# 定义方向与团队表一致kmax(-max_pos,min(max_pos,k))returnk# 或查表whileTrue:api.wait_update()ifapi.is_changing(kl.iloc[-1],datetime):centerkl.close.iloc[-2]ifcenterisNoneelsecenter tgtprice_to_target(quote.last_price,center,step,max_pos)task.set_target_volume(tgt)center是否每根 K 线重置、是否用均线锚定决定网格性格需回测验证。三、手续费与调仓频率网格最怕「价格来回扫、每秒调一次目标仓」。应只在 K 线收盘或档位跨格时set_target_volume设最小调仓间隔或 hysteresis跨半格才动回测里把手续费调高做敏感性测试若调仓后毛利小于手续费网格在该品种上可能不成立。四、风控上限max_pos必须硬编码或配置化available资金不足时TargetPosTask可能部分成交要读position核对。突破区间后要有「停止网格、只平仓」规则避免单边趋势满仓逆势。五、模拟与实盘网格在TqSim里先跑至少一周统计日均成交笔数。笔数过高则加大step或减少档位数。切实盘前检查平今手续费上期所等。总结网格在程序里应是「价格档位 → 目标净仓」映射表由TargetPosTask负责把目标仓拆成报单而不是每个格子手写insert_order。中心价或均线锚定、step宽度、max_pos上限要先在纸面画表再编码做多网格与做空网格方向要在表里写死避免盘中临时改定义。调仓频率要克制宜在 K 线收盘或档位跨格时set_target_volume必要时加 hysteresis避免价格在边界来回扫导致手续费吞噬毛利。回测与模拟里用上调手续费、统计日均成交笔数做敏感性测试突破区间要有停止网格、只平仓或限制逆势加仓的规则。上期所等平今手续费在实盘前单独核对。建议档位表存 CSV参数变更只改表对比粗网格与细网格的笔数、净利与回撤在TqSim或TqKq跑满一周再考虑加大资金或手数。FAQ1双合约网格近远月各一个 taskspread 档位单独定义。2中心价每天重置吗策略选择要写进说明。3TargetPosScheduler需要渐变调仓时用与瞬间跳变不同。4网格适合趋势品种趋势市要有限制逆势加仓规则。风险提示本文用于策略结构讨论不构成投资建议。