一键将宽度聚合策略转换为Ptrade平台上的MCP服务器
Quant2PTrader-MCP 是基于 模型上下文协议 (MCP) 的技术。该服务器专门设计用于自动将 JoinQuant 宽度聚合策略代码转换为 Ptrade 平台格式。
npm install
npm run build
npm run start:stdio
npm run start:http
# 服务将在 http://localhost:3000/mcp 运行
添加:
macOS/Linux: ~/Library/Application Support/Claude/claude_desktop_config.json
Windows: %APPDATA%\Claude\claude_desktop_config.json
{
"mcpServers": {
"quant2ptrader": {
"command": "npx",
"args": ["-y", "quant2ptrader-mcp"]
}
}
}
{
"mcpServers": {
"quant2ptrader": {
"type": "streamableHttp",
"url": "http://localhost:3000/mcp",
"timeout": 200
}
}
}
使用上述任意方法启动 MCP 服务器。
方法 1: 直接输入代码
在 Claude 或其他支持 MCP 的 AI 助手中:
请帮我把这个聚宽策略转换为Ptrade格式:
from jqdata import *
def initialize(context):
set_benchmark('000300.XSHG')
def handle_data(context, data):
order('000001.XSHE', 100)
方法 2: 传递文件路径(适用于长代码)
请将这个聚宽策略文件转换为Ptrade格式:
文件路径: C:\path\to\your\strategy.py
或者:
转换这个文件: /home/user/my_strategy.txt
支持的文件格式: .py, .txt, .text, .code, .strategy
方法 3: 指定输出目录(可选)
转换这个文件并保存到指定目录:
文件: C:\strategies\my_strategy.py
输出目录: D:\ptrade_strategies\
AI 助手将返回:
文件命名规则:
my_strategy.py → 输出:my_strategy_ptrade.pystrategy.txt → 输出:strategy_ptrade.pystrategy_ptrade.py输出位置:
输入(拥挤策略):
from jqdata import *
def initialize(context):
set_benchmark('000300.XSHG')
set_option('use_real_price', True)
def handle_data(context, data):
stock = '000001.XSHE'
price = data[stock].close
order(stock, 100)
输出(Ptrade 策略):
from ptrade.api import *
def initialize(context):
set_benchmark('000300.XSHG')
set_option('use_real_price', True)
def handle_data(context, data):
stock = '000001.XSHE'
price = data[stock].close
order(stock, 100)
命令:
转换这个策略文件: /path/to/strategy.py
报告包括:
strategy.py查看 test_strategy.py 了解完整的双移动平均策略示例,包括:
转换结果:✅ 完美转换,仅修改 1 行(导入语句)
quant2ptrader-mcp/
├── src/
│ ├── index.ts # stdio模式入口
│ ├── httpServer.ts # HTTP模式入口
│ └── tools/
│ └── convertStrategy.ts # 核心转换逻辑
├── build/ # 编译输出目录
├── package.json
├── tsconfig.json
└── README.md
npm run build # 构建项目
npm run watch # 监听模式编译
npm run start:stdio # 启动stdio模式
npm run start:http # 启动HTTP模式
npm run dev # 开发模式(HTTP)
编辑 src/tools/convertStrategy.ts 中的 apiMappings 数组:
const apiMappings = [
{
pattern: /your_pattern/g,
replacement: 'your_replacement',
reason: '转换原因说明'
},
// ... 更多规则
];
以下宽度聚合 API 在 Ptrade 上完全兼容,无需修改:
initialize(context) - 初始化函数handle_data(context, data) - 数据处理函数order(), order_target(), order_value(), order_target_value() - 订单函数set_benchmark() - 设置基准set_slippage() - 设置滑点get_price() - 获取价格数据get_fundamentals() - 获取财务数据context.portfolio.total_value - 总资产context.portfolio.available_cash - 可用资金context.portfolio.market_value - 持仓市值转换工具将自动处理以下 API 差异:
from jqdata import * → from ptrade.api import *import jqdata → import ptradelog.info() → log()log.debug() → log()log.warn() → log()log.error() → log()context.portfolio.positions → get_positions()context.portfolio.positions[stock] → get_position(stock)attribute_history() → get_history()history() → get_history()get_current_data() → get_snapshot()get_all_securities() → get_market_list()set_order_cost() → set_commission()order_target_percent() → order_target_value() ⚠️ 需要手动计算金额run_weekly() → run_daily() ⚠️ 需要在函数内添加日期判断run_monthly() → run_daily() ⚠️ 需要在函数内添加日期判断order_target_percent() 转换为 order_target_value() 需要手动计算目标金额run_weekly/monthly 转换为 run_daily 后,需要在函数内添加日期判断逻辑get_fundamentals() 在 Ptrade 上可用,但查询语法可能需要微调# 登录 npm
npm login
# 发布
npm publish
Apache 许可证 2.0 - 查看 LICENSE 了解更多详情
陈星宇
如果您有任何问题或建议,请随时:
⭐ 如果这个项目对您有帮助,欢迎点赞!