概述
本篇为V3.1版本软件使用,V2.1版本目前不支持。
为了降低T0策略的开发门槛,看海量化系统 V3.1 版本随源码附带了一个标准的 单一标的日内网格策略模板(策略源码文件:T0.py,配置文件T0.kh)。
本教程将详细解析该模板的代码结构与核心逻辑,帮助用户理解如何构建一个支持日内回转交易的网格策略,并在此基础上进行二次开发。
本策略算法教程对应的软件功能模块的教程在这里,建议先点击了解。
⚠️ 使用前必读:风险提示与专栏定位
在开始使用代码之前,请务必阅读以下说明:
1. 风险规避与标的设置
为了规避荐股风险,当前的 T0.py 策略模板 未设置任何默认股票池。该代码设计为针对 单个ETF标的 进行运行。
- 操作指引:大家在回测前,需要手动在配置界面的“股票池”中填入你想要测试的标的代码。
- 选股建议:强烈建议选择支持T0交易的品种进行测试(如跨境ETF、债券ETF等)。您可以参考同花顺的T0 ETF数据进行选取:
> 点击查看同花顺T0 ETF列表
2. 专栏定位与后续计划
当前的 T0.py 策略是 “T0策略深度实战”专栏的第一篇。
- 当前目的:它的核心目的是为使用看海量化回测系统的用户做一个 基本演示,展示系统如何处理T0交易、如何在高精度模式下运行网格逻辑。
- 未来展望:后续我们还会推出一系列深度文章和策略更新,涵盖更高级的T0功能,敬请期待。
一、 策略设计理念
该策略模板并非简单的功能演示,而是一个结构清晰的实战框架。它将复杂的T0交易解耦为三个核心组件:
- 底仓构建模块:策略启动初期,智能计算并建立底仓(默认50%),为日内T0交易提供“原材料”。
- 网格交易逻辑:基于价格波动触发交易信号。
- 下行承接(Buy):当价格下跌触及下轨(如-0.5%)时,触发买入信号。
- 上行释放(Sell):当价格上涨触及上轨(如+0.5%)时,触发卖出信号。
- 日内回转机制:利用底仓和当日买入的流动性,实现日内多次的“低吸高抛”循环。
二、 快速上手:运行你的第一个T0策略
为了让你尽快跑通策略,这里提供一份从零开始的操作指引:
第一步:加载配置文件
- 启动 看海量化回测系统 主界面。
- 点击顶部菜单栏的 “加载配置” 按钮。
- 在弹出的文件选择窗口中,找到并选择随源码附带的
T0.kh配置文件。- 注:
T0.kh文件通常位于strategies文件夹或项目根目录下。
- 注:
第二步:重置策略路径
由于源码下载到本地后,文件路径可能发生变化,需要手动重新指定策略文件:
1. 在主界面找到 “策略文件路径” 按钮。
2. 找到并选中 T0.py 策略文件。
第三步:设置回测标的
- 在主界面左侧找到 “股票池设置” 区域。
- 点击添加股票,输入你想要回测的 ETF代码。

再次强调:请务必参考前文的同花顺链接选择T0品种,否则系统会降级为T+1模式。
第四步:启动回测
- 确认起止时间、初始资金等其他参数符合预期。
- 点击主界面上方的 “开始运行” 按钮。
- 运行结果中可以查看个股详情,查看每笔买卖点的可视化情况,具体讲解详见:https://khsci.com/khQuant/t0/
三、 核心代码解析
1. 策略参数的随机化设计
为了展示策略的适应性,以及模拟不同风险偏好下的运行效果,本模板在初始化参数时引入了 随机性指标。
这种设计最主要的原因是 避免形成直接的投资建议。作为教学用途的策略,我们不直接指定固定的参数(如具体的网格间距或单笔金额),而是通过随机化,鼓励大家根据自己实际设置的股票池特性(如波动率、价格区间)进行适应性的参数调整。
在 params 字典中,你可以看到以下设计:
import random
params = {
# 初始建仓比例:在 40% 到 60% 之间随机生成
'init_position': random.uniform(0.4, 0.6),
# 网格间距:在 0.5% 到 1.2% 之间随机生成
'grid_gap': random.uniform(0.005, 0.012),
# 单笔交易金额:在 3万 到 5万 之间随机生成
'trade_amount': random.randint(30000, 50000),
}
重要提示:这种随机化设计意味着每次重新加载策略或启动回测时,参数都会发生变化,导致回测结果不一致。
- 调试阶段:建议将
random函数替换为固定的数值,以便进行控制变量法分析。- 参数寻优:可以利用这种随机性进行寻优,测试策略在不同参数组合下的最优解,这点专栏后续内容会讲到。
2. 信号触发逻辑
# 策略主循环函数
def khHandlebar(data):
# ... (前置数据获取与状态检查)
# --- 波动捕捉:触及下轨 ---
if price <= buy_trigger:
# 触发买入指令,注入流动性
# generate_signal 函数负责生成符合系统规范的交易信号
signals.extend(generate_signal(..., action='buy', ...))
# 动态更新价格锚点,网格随价格移动
g_state['anchor_price'] = price
# --- 获利了结:触及上轨 ---
elif price >= sell_trigger:
# 触发卖出指令
# 在T0模式下,系统允许利用当日买入份额或底仓立即变现
signals.extend(generate_signal(..., action='sell', ...))
# 重置价格锚点
g_state['anchor_price'] = price
3. T0模式下的特殊处理
在编写T0策略时,需要特别注意以下几点:
- 持仓可用性:虽然系统在底层处理了T0的持仓冻结逻辑,但在策略层,依然建议通过
get_position()函数实时检查当前可用持仓,避免发出无效的卖出指令。 - 价格精度:在T0模式下,系统会自动将报价精度提升至 0.001。在计算网格间距时,应充分利用这一高精度特性,捕捉微小的价差。
四、 总结
通过本教程,你应该对如何利用看海量化系统编写T0网格策略有了初步的了解。
从下一篇文章开始,我将开启“T0策略深度实战”系列专栏。
我们将跳出理论,深入实战的深水区:
- 指标选股体系:如何量化筛选出最适合做网格的高波动率标的?
- 多标的网格策略:如何构建多只ETF轮动的网格组合,分散单标的风险?
- 单边行情应对:当网格被“击穿”时,如何通过风控逻辑进行止损或锁仓?
- 网格交易变种:探索网格策略的多种形态,寻找最适合当前市场的版本(斩龙团策略试一下)。
- 全方位数据分析:不仅研究策略,更要用数据说话,深入挖掘高频数据背后的规律。
如果你渴望突破传统策略的瓶颈,探索更精细化的交易领域,请务必关注后续的更新!
