🚀 AI 一键生成 ptrade 策略代码
立即体验

PTrade 期货策略开发:如何使用 buy_open 与 sell_close 正确处理平今仓?

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

问题描述

请根据以下 SEO 主题生成完整页面内容:

Title: PTrade 期货策略开发:buy_open 与 sell_close 函数及平今逻辑详解

Question: 如何在 PTrade 中编写期货开仓与平仓逻辑,并正确处理上期所平今仓?

解决方案

PTrade 期货策略开发:buy_open 与 sell_close 函数及平今逻辑详解

在 PTrade 量化交易平台中进行期货策略开发时,交易下单与股票接口(如 order)有所不同。期货区分多空方向以及历史持仓(昨仓)与当日持仓(今仓)。针对上海期货交易所(XSGE)等特殊规则,正确处理平今仓(close_today)是规避手续费惩罚与委托失败的关键。


一、PTrade 期货交易基础 API

PTrade 为期货交易提供了专用的下单接口,分别对应多头/空头的开仓与平仓:

  1. 买入开仓(多开)buy_open(contract, amount, limit_price=None)
  2. 卖出平仓(多平)sell_close(contract, amount, limit_price=None, close_today=False)
  3. 卖出开仓(空开)sell_open(contract, amount, limit_price=None)
  4. 买入平仓(空平)buy_close(contract, amount, limit_price=None, close_today=False)

参数说明:

  • contract (str):期货合约代码,例如 'CU2112.XSGE''IF1712.CCFX'
  • amount (int):交易数量,必须为正整数(手)。
  • limit_price (float):限价,若不传则默认以行情快照最新价或回测周期最新价报单。
  • close_today (bool):平仓方式,默认为 False

二、深入理解 close_today 平今仓逻辑

1. 上海期货交易所(XSGE)与其他交易所的差异

  • 上海期货交易所(XSGE):严格区分平今仓(close_today=True)与平昨仓(close_today=False)。如果手中有今仓而直接调用默认平仓(优先平昨),且昨仓不足时,会导致平仓失败或产生高额平今手续费(视品种规则而定)。
  • 其他交易所(中金所 CCFX、大商所 DCE、郑商所 CZCE 等):无需指定 close_today=True。若设置为 True,PTrade 系统会提示警告并自动强行转换为 close_today=False(系统默认优先平昨仓,不足部分再平今仓)。

2. close_today 的具体行为

  • close_today=False优先平昨仓,昨仓不足部分再平今仓。
  • close_today=True仅平今仓。若委托数量大于当前今仓数量,系统会自动调整委托数量为当前今仓数量。

三、代码示例:期货双均线策略(含平今仓逻辑)

以下是一个完整且可以直接运行的 PTrade 期货策略示例,展示了如何设置保证金、手续费以及在盘中正确平仓: