返回列表 发布新帖

量化研究-怎么样编写ptrade量化交易skill

30 0
发表于 昨天 17:21 | 显示全部楼层 阅读模式

风险提示:本内容为量化技术及平台操作的纯知识分享,不构成任何投资建议,不推荐任何具体证券或交易时机。部分内容可能理解包含错误,请自行核实。市场有风险,投资需谨慎文章全部内容设计到的标的,只做策略思路的分析,不做投资参考,

今天在编写回测接口的api,例子,做回测因子的数据挖掘,感觉个人挖掘写代码太麻烦了借助ai平台,把全部系统框架的接口给ai,让ai自动去写代码分析,做研究得到结果,上次写了一个怎么样写skill的教程量化研究--怎么样快速开发量化交易skills

今天就利用具体的例子,怎么样去快速写一个skill,我把skill上线了,明天测试一些让ai自动写代码,测试组合看看结果怎么样

d145b749ebd3f840cbc0b532be3795f0.png

首先是skill.md文件的开头,研报需要定义,版本作者,描述,触发的关键词等方便ai快速的搜索

2332343fc9ec3b9fbd1724d0fac6b9cb.png

---
name: ptrade-strategy
description: |
   PTRADE 量化平台策略生成技能。根据用户需求,生成可在 PTRADE 平台运行的 Python 量化交易策略代码。
    触发关键词:PTRADE、ptrade、量化策略、量化交易、生成策略、写策略代码、双均线、网格交易、因子选股。
version: 1.1.0
metadata:
  openclaw:
    emoji: "📈"
---

基本都是一样的格式开头

910b27a8dbc200b5f64be80df829f521.png

---
name: xg-quant-platform
description: |
  小果量化平台(XG Quant Platform)技能。小果量化是一个专业的量化交易系统,提供完整的回测、模拟交易、社区策略分享等功能。
  
  【核心功能】
  - 📊 历史行情数据获取(股票、ETF、可转债)
  - 📈 多维度因子数据提取(技术指标、Alpha因子、动量因子等)
  - 💰 财务数据分析(资产负债表、利润表、现金流量表等)
  - 🔄 多种策略回测(定投、动量、资产配置、网格、海龟、均值方差等)
  - 🤖 模拟交易和社区策略管理
  - 📉 多标的量化分析(相关性矩阵、协方差矩阵、投资组合优化)
  - 📊 股票组合收益分析(绩效指标、夏普比率、最大回撤等)
  - ⏰ 分钟级K线数据(1/5/15/30/60分钟)
  
  【触发关键词】
  小果量化、xg_quant、量化数据、回测系统、定投回测、动量回测、资产配置、
  网格策略、海龟策略、综合动量、条件因子、排序多因子、均值方差、
  因子数据、财务数据、历史行情、ETF数据、可转债数据、K线数据、
  相关性矩阵、协方差矩阵、投资组合优化、股票分析、绩效分析、
  模拟交易、社区策略、数据API、量化分析、策略生成
  
  【作者】
  小果,微信:xg_quant
  
version: 2.0.0
metadata:
  openclaw:
    emoji: "📈"
  author:
    name: "小果"
    wechat: "xg_quant"
---

第二部分一般都是系统的概括,功能的介绍,和需要特别注意的地方

1259a35b05d49e36bf2ccdc276aa677c.png

# PTRADE 量化策略生成 Skill
## 概述
本 Skill 用于为 PTRADE 量化交易平台生成、修改、检查 Python 策略代码。模型应严格使用本文件中的 PTRADE 官方 API(全局函数形式),**禁止混用 QMT / 迅投 的 `security.` / `trade.` 对象式 API**。
**⚠️ 核心原则:PTRADE 使用全局函数获取行情与下单(如 `get_price()`、`order()`),不是 `security.get_bars()` / `trade.open_long()`。后者属于 QMT 平台,在 PTRADE 中会直接报 "name not defined" 错误。**
---
## 一、策略必备函数(必写)
```python
initialize(context)                          # 初始化(必写)
handle_data(context, data)                   # 行情/交易主函数(必写)
before_trading_start(context, data)          # 盘前运行
after_trading_end(context, data)             # 盘后运行
tick_data(context, data)                     # Tick 级别处理
on_order_response(context, order_list)       # 委托回调
on_trade_response(context, trade_list)       # 成交回调

 handle_data 的第二个参数 data 为当根 K 线数据,可不使用但建议保留签名。




基本都是一样的,写法思路

![图片](https://mmbiz.qpic.cn/sz_mmbiz_png/JicMklBtEZF69sAYH6EN3dtlFRwxibd1E7HRmusiaMr81T8f9c6g7Pibr7Ttsw2MABRZvq75OC3fIuYf2XNwvJBx8NsgzUCO2T8bTY7Zib8X5qg0/640?wx_fmt=png&from=appmsg&tp=wxpic&wxfrom=5&wx_lazy=1&watermark=1#imgIndex=4)

 小果量化平台(XG Quant Platform)

一、平台简介

小果量化数据API是一个基于HTTP的量化数据接口,提供股票历史数据、因子数据、财务数据以及多种量化策略回测功能。

主要功能

功能模块 说明
📊 历史行情数据 获取股票、ETF、可转债的日线历史数据
📈 因子数据提取 数百种技术指标、Alpha因子、动量因子
💰 财务数据查询 资产负债表、利润表、现金流量表、估值数据
🔄 策略回测 定投、动量、资产配置、网格、海龟等9种策略
🤖 模拟交易 个人策略模拟交易和社区策略分享
📉 量化分析 相关性矩阵、协方差矩阵、投资组合优化
📊 组合分析 完整绩效指标(50+项)


后面基本都是写怎么样使用的教程接口什么的,后面没有固定的格式

![图片](https://mmbiz.qpic.cn/mmbiz_png/JicMklBtEZF7iabicqkD6HfFfNabqt2oTOaEdfqRGFVht8AKXgGjAbvXRaMqH4vMbpgt1Wmn7yBdZUZWLOqePARMpYnno9CBhTze5ib3nfBDiaiaA/640?wx_fmt=png&from=appmsg&tp=wxpic&wxfrom=5&wx_lazy=1&watermark=1#imgIndex=5)

一、策略必备函数(必写)

initialize(context)                          # 初始化(必写)
handle_data(context, data)                   # 行情/交易主函数(必写)
before_trading_start(context, data)          # 盘前运行
after_trading_end(context, data)             # 盘后运行
tick_data(context, data)                     # Tick 级别处理
on_order_response(context, order_list)       # 委托回调
on_trade_response(context, trade_list)       # 成交回调

 handle_data 的第二个参数 data 为当根 K 线数据,可不使用但建议保留签名。


二、生成策略工作流(模型必须遵循)

  1. 澄清需求:确认策略类型(择时 / 选股 / 套利 / 事件驱动)、标的范围、周期、风控要求。
  2. 锁定 API:只使用本文件列出的 PTRADE 全局函数;严禁 security.xxx / trade.xxx / get_json() 等 QMT 写法。
  3. 选择 / 套用模板:优先使用下方「策略模板」,或在其基础上修改。
  4. 代码生成:输出完整的 initialize + handle_data,参数用模块级常量定义,便于在 PTRADE 界面调整。
  5. 自检:生成的代码必须通过 scripts/validate_strategy.py 检查(无 QMT API、含 initialize/handle_data)。
  6. 运行说明:附 PTRADE 平台导入 / 回测 / 实盘步骤。

三、PTRADE 关键约定(必读,否则策略无法运行)

  • 全局函数get_priceget_historyget_positionsget_positionget_index_stocksget_fundamentalsorder 等均为全局函数,直接调用,不要当成对象方法。
  • g 全局对象:用 g.xxx = yyy 在 initialize 中保存自定义状态,在 handle_data 中读取。g 在 PTRADE 中已预定义。
  • context 对象context.portfolio.cashcontext.portfolio.total_valuecontext.portfolio.positionscontext.blotter.current_dt
  • 下单 order(security, amount, limit_price=None)amount > 0 买入,amount < 0 卖出;limit_price=None 表示市价。每笔数量须为 100 的整数倍(1 手 = 100 股)。
  • T+1:A 股当日买入不可当日卖出,卖出请用 position.enable_amount(可用持仓)。
  • 行情返回get_price(..., fields=[...], count=N) 返回 pandas DataFrame,列名为字段名;取数组用 df["close"].values
  • 回测撮合:默认以开盘价成交;使用最新价需订阅实时行情。



一般重点是写api的使用教程,注意的地方

![图片](https://mmbiz.qpic.cn/sz_mmbiz_png/JicMklBtEZF5sIuQBxvNPXIaHnyy1m59ibZIEUgJicC8CfgWcJBmjCa2LvicCpnYxOfgmgFnbSJ5HOuMSBt7Yzh6ILiaQpHJ1W9PpIW2GSt9iaibes/640?wx_fmt=png&from=appmsg&tp=wxpic&wxfrom=5&wx_lazy=1&watermark=1#imgIndex=6)

6.3 行情信息

# 获取历史K线(核心API)
get_history(count, frequency, field, security_list, fq=None, include=False, fill='nan', is_dict=False)
get_price(security, start_date=None, end_date=None, frequency='1d', fields=None, fq=None, count=None, is_dict=False)
# 个股委托/成交明细
get_individual_entrust(stocks=None, data_count=50, start_pos=0, search_direction=1, is_dict=False)
get_individual_transaction(stocks=None, data_count=50, start_pos=0, search_direction=1, is_dict=False)
# Tick数据
get_tick_direction(symbols=None, query_date=0, start_pos=0, search_direction=1, data_count=50, is_dict=False)
# 板块排序
get_sort_msg(sort_type_grp=None, sort_field_name=None, sort_type=1, data_count=100)

虽然系统不一样,写法大同小异的

376e439722dbf92a4ee2ce1250e08043.png

# ============================================================
# 完整示例71:读取个人全部模拟策略
# ============================================================
"""
参数说明:
    user: str = '小果'           - 用户名称
返回数据:
    strategies       - 策略列表(包含策略类型、名称、建立时间等)
    total            - 策略总数
"""
print("\n" + "=" * 60)
print("📊 读取个人全部模拟策略")
print("=" * 60)
result = client.get_all_moni_trader_data(
    user='小果'
)
print("模拟策略列表:")
print(f"策略总数: {result.get('total', 0)}")
strategies = result.get('strategies', [])
for i, s in enumerate(strategies, 1):
    print(f"  {i}. {s.get('策略类型')} - {s.get('策略名称')} (建立时间: {s.get('建立时间')})")

4读取个人全部社区策略

from xg_quant_backtrader_data.xg_quant_backtrader_data import xg_quant_backtrader_data
# 初始化客户端
client = xg_quant_backtrader_data(
    url="124.220.32.224",
    port=8888,
    user="小果",
    password="小果",
    auth_code="小果"
)
# ============================================================
# 完整示例72:读取个人全部社区策略
# ============================================================
"""
参数说明:
    user: str = '小果'           - 用户名称
返回数据:
    strategies       - 策略列表(包含策略类型、名称、建立时间等)
    total            - 策略总数
"""
print("\n" + "=" * 60)
print("📊 读取个人全部社区策略")
print("=" * 60)
result = client.get_all_moni_trader_data_sq(
    user='小果'
)
print("社区策略列表:")
print(f"策略总数: {result.get('total', 0)}")
strategies = result.get('strategies', [])
for i, s in enumerate(strategies, 1):
    print(f"  {i}. {s.get('策略类型')} - {s.get('策略名称')} (建立时间: {s.get('建立时间')})")


最后面的结尾基本都是依赖的例子,参数,策略参考等参考内容,官方的教程

![图片](https://mmbiz.qpic.cn/sz_mmbiz_png/JicMklBtEZF7JHKUYXgdLhhful1MSWV10ribAiauqt31UC8mRWeuJWhYGtHHgDibcl4WD5yanS0O55ZWA286icksG79eibjy6qicmB1kCqJrOdnha8/640?wx_fmt=png&from=appmsg&tp=wxpic&wxfrom=5&wx_lazy=1&watermark=1#imgIndex=8)
IDX_A = "000.XSHG"   # 沪深300
IDX_B = "005.XSHG"   # 中证500
LOOKBACK = 20
def initialize(context):
    g.idx = [IDX_A, IDX_B]
    set_universe(g.idx)
def _ret(sym):
    df = get_price(sym, frequency="1d", fields=["close"], count=LOOKBACK)
    c = df["close"].values.astype(float)
    return (c[-1] / c[0]) - 1
def handle_data(context, data):
    ra, rb = _ret(IDX_A), _ret(IDX_B)
    winner = IDX_A if ra >= rb else IDX_B
    for pos in get_positions():
        if pos.security != winner and pos.total_amount > 0:
            order(pos.security, -int(pos.total_amount))
    pos = get_position(winner)
    if (pos is None) or (pos.total_amount == 0):
        order(winner, 100)
        log.info("轮动买入 %s (300收益=%.2f%%, 500收益=%.2f%%)" % (winner, ra*100, rb*100))


基本都是一样的写法

![图片](https://mmbiz.qpic.cn/mmbiz_png/JicMklBtEZF5BZzMnc9typQXWXBvXpBG4oNhTAvrnA76T83CrCibzvibzJEYOicDEtIYy42miaic8ZzTWxgx8w4H9rx9N8PmpEDic6AiciadHJuBb2cg/640?wx_fmt=png&from=appmsg&tp=wxpic&wxfrom=5&wx_lazy=1&watermark=1#imgIndex=9)

skill结尾一般是总结的内容

![图片](https://mmbiz.qpic.cn/sz_mmbiz_png/JicMklBtEZF7TIXtRkPvmzEhfM0Wha2wPmEa76WrvplzNxrc6YdFGkJDg2LCRJncop1SlT5A7LkZWTCia80q3pnAKf46jWo2ibPQyV0HjBzBUs/640?wx_fmt=png&from=appmsg&tp=wxpic&wxfrom=5&wx_lazy=1&watermark=1#imgIndex=10)

十四、风控与最佳实践

必须设置股票池set_universe(...) 决定 handle_data 能拿到的数据范围。 - 数量取整到 100order 的 amount 必须是 100 的整数倍,否则委托会被拒。 - T+1 卖出约束:卖出数量不要超过 position.enable_amount。 - ST / 退市过滤:上线前用 filter_stock_by_status(stocks, filter_type=["ST","HALT","DELISTING"]) 剔除风险标的。 - 先回测再实盘:用 check_strategy(strategy_path=...) 做静态检查;在 PTRADE 回测通过后再开启实盘。 - 日志而非打印:用 log.info(...) 而非 print(...),便于在 PTRADE 日志面板查看。 - 全局函数陷阱:再一次强调 —— PTRADE 没有 security.get_bars / trade.open_long / get_json,误用会直接运行失败。

十五、在 PTRADE 平台运行步骤

  1. 打开 PTRADE → 策略研究 → 新建策略
  2. 粘贴生成的代码 → 保存(Ctrl+S)
  3. 回测:设置时间范围与初始资金,查看收益 / 回撤
  4. 参数优化:调整模块级常量(如 SHORT_WIN / LONG_WIN)
  5. 实盘:订阅实时行情,开启自动执行

十六、离线校验(新增)

仓库附带 scripts/validate_strategy.py,可在本地(非 PTRADE 环境)快速检查生成的策略是否误用了 QMT API:

python scripts/validate_strategy.py your_strategy.py

校验项:是否包含 initialize / handle_data、是否出现 security.get_bars / trade.open_long / get_json 等禁用写法、是否使用 PTRADE 全局函数。



不懂的问我就可以。加我备注入群可以加入量化交流群,需要完整的ptrade 的skill加我要就可以

![图片](https://mmbiz.qpic.cn/mmbiz_jpg/7ZFZK7Ub0cFSkymqVkzZj7QUZCmBO99RfAJ2qRgX3mib12o3umq88Vtq1aOsk83pXGXmsuQ0ic5xeIj5Xaq5ricWg/640?wx_fmt=jpeg&from=appmsg&tp=wxpic&wxfrom=5&wx_lazy=1&watermark=1#imgIndex=11)

找我开户也可以专业的技术支持服务

![图片](https://mmbiz.qpic.cn/mmbiz_png/JicMklBtEZF48lqQBXEWvOySlRiabZeheUiblFg8iaCgG4VBH8yK0jcULP9vSlYXpzsB2rn5TncgZa7BK71bibLyxMMBFXmsNmC9djsv4tU6qhJs/640?wx_fmt=png&from=appmsg&tp=wxpic&wxfrom=5&wx_lazy=1&watermark=1#imgIndex=12)

[#量化交易]() [#skill开发]() [#ptrade]() [#skill]() [#skill开发教程]()

回复

您需要登录后才可以回帖 登录 | 立即注册

客服专线

400-080-8112

用思考的速度交易,用真诚的态度合作,我们是认真的!
  • 关注公众号
  • 添加微信客服
Copyright © 2001-2026 迅投QMT社区 版权所有 All Rights Reserved. 京ICP备2025122616号-3
关灯 快速发帖
扫一扫添加微信客服
QQ客服返回顶部
快速回复 返回顶部 返回列表