🚀 AI 一键生成 ptrade 策略代码

如何在 ptrade 平台编写 Python 自定义量化策略?

ptrade | 发布时间: 2026/5/20
以下内容由 EasyQuant 生成。

问题描述

东莞证券ptrade的编程功能模块被移除了

东莞证券支持ptrade和qmt,miniQMT , 本来门槛不太高,作为备用也是不错的.

也不知道上面领导怎么想的. 把编程模块移走了.

目前就剩ptrade上内置的一些基础功能
无法通过python编程实现自己的自定义策略.

有点可惜.

解决方案

虽然部分券商(如东莞证券)可能在特定版本中调整或隐藏了 ptrade 的 Python 编程模块,但对于开通了完整 ptrade 权限的投资者来说,使用 Python 编写自定义策略依然是其最核心的优势。

一、 ptrade 策略基础框架

ptrade 的策略代码主要由几个核心事件函数构成:

  1. initialize(context):初始化函数(必选)。仅在策略启动时运行一次,用于设置股票池、基准、滑点、手续费及全局变量。
  2. handle_data(context, data):盘中运行函数(必选)。根据策略频率(日线或分钟线)周期性触发,是编写交易逻辑的主要模块。
  3. before_trading_start(context, data):盘前运行函数(可选)。每天交易开始前调用,用于初始化当日信息。

二、 核心 API 概览

  • set_universe(security_list):设置策略操作的股票池。
  • get_history(...):获取历史 K 线数据,支持多股票、多字段查询。
  • order(security, amount):按数量买卖标的,正数买入,负数卖出。
  • order_target(security, amount):买卖股票,直到持仓达到指定数量。

三、 实战案例:双均线交易策略

以下是一个经典的双均线策略源码。逻辑:当5日均线上穿10日均线时全仓买入;当5日均线下穿10日均线时清仓。

def initialize(context):
    # 设置我们要操作的股票池:恒生电子
    g.security = '600570.SS'
    set_universe(g.security)

def handle_data(context, data):
    security = g.security
    # 获取过去10天的历史收盘价
    df = get_history(10, '1d', 'close', security, fq=None, include=False)
    
    # 计算5日和10日均线
    ma5 = round(df['close'][-5:].mean(), 3)
    ma10 = round(df['close'][-10:].mean(), 3)
    
    # 获取当前资金余额
    cash = context.portfolio.cash
    
    # 金叉:5日均线大于10日均线,全仓买入
    if ma5 > ma10:
        order_value(security, cash)
        log.info('Buying %s' % security)
        
    # 死叉:5日均线小于10日均线,且有持仓,全仓卖出
    elif ma5 < ma10 and get_position(security).amount > 0:
        order_target(security, 0)
        log.info('Selling %s' % security)

四、 注意事项

如果您在客户端中未找到编程模块,建议联系所属券商的客户经理,确认是否需要满足特定资金门槛或签署相关协议才能开通 ptrade 的完整量化编程(Python)权限。