量化ptrade策略编辑流程步骤详细解答!

PTrade(恒生 PTrade 量化)从登录→建策略→写代码→调试→回测→仿真→实盘超详细、一步到位流程,和 QMT 对比会更清楚差异(PTrade 更像聚宽 / 米筐,API 更标准)。




一、PTrade 整体流程总览(先记大框架)

登录 → 准备数据 → 新建策略 → 写代码(initialize handle_data)→ 编译调试 → 回测 → 仿真(模拟)→ 实盘上线 → 监控日志




二、第一步:登录与环境准备(必须先做)


1. 登录 PTrade 客户端


  • 打开券商版 PTrade(中信、华泰、国泰君安、国金等都有)
  • 资金账号 密码登录
  • 必须开通量化交易权限(联系券商)

2. 确认 Python 环境(PTrade 自带,不用额外装)


  • PTrade 内置 Python3,无需手动安装
  • 编辑器直接写 Python3 代码,默认 UTF-8(中文不乱码)

3. 下载历史数据(回测 / 运行必备)


  • 顶部菜单:数据 → 数据下载
  • 选择:
  • 点击 开始下载,等待完成


三、第二步:新建策略(进入编辑器)


方式 1:代码模式(主流、灵活)


  1. 左侧栏:策略交易 → 我的策略
  2. 右键 → 新建策略
  3. 填写:
  4. 确定 → 自动生成标准模板代码(含 initialize、handle_data)

方式 2:向导式(零代码,新手)


  • 左侧:向导式策略 → 新建
  • 五步:选股 → 买卖条件 → 风控 → 回测 → 导出源码
  • 不用写代码,适合快速验证想法
  • 下面重点讲代码模式(必学)


四、第三步:PTrade 策略代码核心结构(必须背下来)

PTrade 策略只有两个强制函数,和 QMT 很像但名字不同:


1. initialize(context) —— 初始化(只跑 1 次)


  • 策略启动时执行一次
  • 用途:设置股票池、全局参数、手续费、初始资金
  • python
  • 运行
def initialize(context):
    # 设置股票池(单只/多只)
    set_universe(['000001.SZ'])  # 平安银行
    
    # 全局参数
    g.short = 5
    g.long = 20
    
    # 手续费(和实盘一致)
    set_commission(Commission(open=0.0003, close=0.001))



2. handle_data(context, data) —— 主逻辑(每根 K 线跑 1 次)


  • 日线 / 分钟线触发
  • 用途:取数据、算指标、判断信号、下单
  • python
  • 运行
def handle_data(context, data):
    # 1. 获取历史数据(最近20根收盘价)
    hist = context.get_history(
        symbol='000001.SZ',
        bar_count=20,
        frequency='1d',
        fields=['close']
    )
    
    close = hist['close'].values
    
    # 2. 计算均线
    ma5 = close[-5:].mean()
    ma20 = close.mean()
    
    # 3. 交易逻辑:金叉买入、死叉卖出
    if ma5 > ma20 and not context.portfolio.positions['000001.SZ'].total_amount:
        order_value('000001.SZ', context.portfolio.available_cash * 0.8)
        log.info("买入信号触发")
        
    elif ma5 < ma20 and context.portfolio.positions['000001.SZ'].total_amount:
        order_target('000001.SZ', 0)
        log.info("卖出信号触发")



关键对象说明


  • context:全局上下文(账户、持仓、资金、时间)
  • data:当前 K 线数据(open/high/low/close/volume)
  • g:全局变量(跨周期保存参数)
  • log.info():打印日志(调试必备)


五、第四步:策略编写详细步骤(双均线为例)


Step1:新建策略,生成模板


  • 自动有 initializehandle_data不要删

Step2:写 initialize(初始化)


  • 设置股票池、参数、手续费

Step3:写 handle_data(核心逻辑)


  1. 获取历史数据context.get_history()
  2. 计算指标:均线、MACD、RSI 等
  3. 判断买卖条件:金叉 / 死叉、突破、背离
  4. 执行下单

Step4:添加风控(强烈建议)


  • 仓位控制:单票≤80%,总仓位≤90%
  • 止损:个股亏损≥5% 强制平仓
  • 单日最大回撤:≤2%
  • python
  • 运行
# 止损示例
pos = context.portfolio.positions['000001.SZ']
if pos.total_amount > 0 and pos.market_value > 0:
    pnl_ratio = pos.pnl / pos.market_value
    if pnl_ratio < -0.05:
        order_target('000001.SZ', 0)
        log.info("触发止损,全部卖出")





六、第五步:编译与调试(排错关键)


1. 保存 / 编译


  • 编辑器按 Ctrl S 保存
  • PTrade 自动语法检查

2. 运行调试(看日志)


  • 点击编辑器上方 运行 → 选择日线 / 分钟线
  • 底部 日志面板 输出:

3. 常见错误


  • 缩进错误:Python 必须 4 空格,不要用 Tab
  • 数据未下载:提示 “历史数据不足” → 去数据下载
  • 股票代码错误:必须带后缀 .SZ/.SS
  • 变量名写错:如 context.portfolio 写成 context.port


七、第六步:策略回测(验证历史效果)


1. 进入回测界面


  • 编辑器点击 回测(或左侧策略右键→回测)

2. 设置回测参数(关键!)


  • 时间范围:至少3 年(如 2023-2026)
  • 初始资金:如 100000
  • 频率:日线 / 1 分钟
  • 基准:沪深 300(对比用)
  • 滑点:建议 0.1%(模拟实盘冲击成本)
  • 手续费:和实盘一致

3. 开始回测


  • 点击 开始回测
  • 生成回测报告:

4. 回测优化


  • 调整参数(如均线周期 5/20 → 10/30)
  • 优化逻辑(加入过滤条件,如成交量放大)
  • 强化风控(降低回撤)


八、第七步:仿真交易(实盘前必测)


1. 进入仿真


  • 左侧:策略交易 → 我的策略 → 右键 → 仿真运行
  • 或编辑器点击 仿真

2. 运行 1–2 周


  • 观察:


九、第八步:实盘运行(谨慎!)


1. 实盘前检查


  • 仿真运行至少 1 周稳定
  • 确认手续费、滑点、风控和实盘一致
  • 核对股票池、下单数量

2. 启动实盘


  • 策略右键 → 实盘运行
  • 确认资金账号 → 点击 启动

3. 实盘监控


  • 实时看:总资产、可用资金、持仓、交易日志
  • 异常立即停止策略


十、PTrade vs QMT 核心区别(避坑)


  • 函数名:PTrade 是 initialize/handle_data;QMT 是 init/handlebar
  • 数据获取:PTrade 用 context.get_history;QMT 用 ContextInfo.get_bar_data
  • 下单函数:PTrade 更丰富(order_value/order_target);QMT 是 order_buy/order_sell
  • 语法:PTrade 默认 UTF-8;QMT 必须 #coding:gbk


十一、完整流程一句话总结

准备数据 → 新建策略 → 写 initialize 初始化 → 写 handle_data 交易逻辑 → 调试 → 回测 → 仿真 → 实盘


股票开户找我!无门槛国债逆回购一折 (百万分之一)!ETF佣金万0.5!融资利率5%以下!优惠多多!免费量化!ptrade&QMT!



温馨提示:投资有风险,选择需谨慎。

相关文章