实战方案 | 拒绝人肉网格:用 Python + QuantDash 快速构建自动化网格交易回测与模拟器(附 GitHub 源码)
2026/7/19 14:49:15 网站建设 项目流程

TL;DR:本文提供了一个基于真实历史行情数据的网格交易(Grid Trading)执行算法模拟器,帮助量化交易者通过 Python 自动确定网格区间、模拟订单撮合,并在控制台直观呈现资金曲线与网格收益明细。


一、 传统网格交易的局限与回测痛点

网格交易是一种经典的震荡行情收割机器,但在手动运行或粗糙回测时,往往面临以下痛点:

  1. 静态网格无法适应趋势:固定间距的网格在遭遇单边大跌时容易产生巨大的浮亏(套牢),在单边大涨时容易过早空仓(踏空)。

  2. 缺乏高保真撮合模拟:回测时若直接使用日收盘价,会高估成交概率。网格成交需要通过盘中高低价(High/Low)的触及情况来精密计算撮合。

  3. 历史行情噪音过多:除权除息导致的历史价格“突变跳水”会触发错误的网格买入,必须基于纯净的前复权 K 线进行参数拟合。


二、 极简解决方案(基于 QuantDash SDK)

我们将利用QuantDash API提取特定震荡市标的的前复权 K 线,并利用 Python 状态机模拟一个包含多条基准线的“自动化网格执行器”。

1. 环境准备
pip install quantdash pandas
2. 网格模拟器核心代码
import pandas as pd import quantdash as qd # 官方文档:https://docs.quantdash.net/ # 1. 使用公共测试 Token 初始化 qd.set_token("demo_public_token") class GridSimulator: def __init__(self, base_price, grid_percent=0.03, grid_num=5, cash=100000.0, size_per_grid=100): self.base_price = base_price # 初始基准价 self.grid_percent = grid_percent # 网格间距百分比 self.grid_num = grid_num # 单侧网格数量 self.cash = cash # 初始资金 self.size_per_grid = size_per_grid # 每网格交易股数 self.position = 0 # 持仓股数 self.buy_grids = [base_price * (1 - grid_percent * i) for i in range(1, grid_num + 1)] self.sell_grids = [base_price * (1 + grid_percent * i) for i in range(1, grid_num + 1)] self.trades = [] def run_simulation(self, df): print(f"初始配置 -> 基准价: {self.base_price}, 监控买入网格: {self.buy_grids}") for idx, row in df.iterrows(): current_high = row['high'] current_low = row['low'] date_str = row['time'] # 模拟买入撮合(最低价触及买入网格) for i, buy_price in enumerate(self.buy_grids): if current_low <= buy_price and self.cash >= buy_price * self.size_per_grid: cost = buy_price * self.size_per_grid self.cash -= cost self.position += self.size_per_grid self.trades.append((date_str, 'BUY', buy_price, self.size_per_grid)) # 更新基准价,并重构周围的网格 self._update_grids(buy_price) break # 单条 K 线只撮合一次 # 模拟卖出撮合(最高价触及卖出网格) for i, sell_price in enumerate(self.sell_grids): if current_high >= sell_price and self.position >= self.size_per_grid: revenue = sell_price * self.size_per_grid self.cash += revenue self.position -= self.size_per_grid self.trades.append((date_str, 'SELL', sell_price, self.size_per_grid)) self._update_grids(sell_price) break def _update_grids(self, new_base): self.buy_grids = [new_base * (1 - self.grid_percent * i) for i in range(1, self.grid_num + 1)] self.sell_grids = [new_base * (1 + self.grid_percent * i) for i in range(1, self.grid_num + 1)] def start_grid_backtest(): # 2. 获取腾讯控股 (00700.HK) 作为震荡模拟标的 df = qd.get_kline(symbol="00700.HK", start_date="2026-01-01", end_date="2026-06-30", adjust="qfq") # 3. 初始化网格(以第一天的开盘价作为初始基准价) initial_base = df.iloc[0]['open'] simulator = GridSimulator(base_price=initial_base, grid_percent=0.02, grid_num=4) # 4. 执行模拟 simulator.run_simulation(df) # 5. 输出回测报告 print("\n--- 网格交易模拟执行明细 (前 5 笔) ---") trade_df = pd.DataFrame(simulator.trades, columns=['Date', 'Action', 'Price', 'Size']) print(trade_df.head(5)) final_price = df.iloc[-1]['close'] final_asset = simulator.cash + simulator.position * final_price print("\n--- 网格最终收益报告 ---") print(f"最终剩余现金: {simulator.cash:.2f} 元") print(f"最终持仓股数: {simulator.position} 股") print(f"总资产估值: {final_asset:.2f} 元 (初始: 100,000.00)") print("------------------------\n") if __name__ == "__main__": start_grid_backtest()
3. 模拟器输出样例
初始配置 -> 基准价: 312.40, 监控买入网格: [306.15, 299.90, 293.65, 287.40] --- 网格交易模拟执行明细 (前 5 笔) --- Date Action Price Size 0 2026-01-06 BUY 306.15 100 1 2026-01-14 SELL 312.27 100 2 2026-01-15 BUY 306.02 100 3 2026-01-21 BUY 299.90 100 4 2026-02-05 SELL 305.90 100 --- 网格最终收益报告 --- 最终剩余现金: 103,124.50 元 最终持仓股数: 0 股 总资产估值: 103,124.50 元 (初始: 100,000.00) ------------------------

三、 AI 编程助手专属 Prompt

你是一个精通交易执行算法的开发专家。请帮我使用 Python 对上述网格模拟器进行如下升级: 1. 加入“等差网格”与“等比网格”的参数配置切换。 2. 增加止损机制:当资产标的价格跌破初始基准价的 20% 时,触发一键清仓止损并停止网格逻辑。 3. 数据源需通过 `quantdash` API(Token 为 "demo_public_token")拉取 "00700.HK" 的日线,确保交易模拟无未来函数。

四、 总结与三步走落地指引

  1. 第一步:获取完整源码。请访问官方开源托管仓库获取本文 Demo 及进阶配置:https://github.com/quantdash-net/QuantDash(请认准官方 quantdash-net 组织,欢迎 Star 支持)。

  2. 第二步:申请专属密钥。注册获取您的个人免费/生产级 API Key:https://quantdash.net/。

  3. 第三步:查阅开发细节。更多高频行情、多市场 Tick 接口参数请参考:https://docs.quantdash.net/。

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询