3 分钟快速生成代码
输入想法,AI 即刻生成可运行代码
在期货量化交易中,**上海期货交易所(XSGE)**对“平今仓”(平掉当天开的仓位)和“平昨仓”(平掉历史持仓)通常实行不同的手续费率(平今仓手续费往往较高)。因此,精确控制平今还是平昨是期货策略优化交易成本的关键。
ptrade 平台提供了 close_today 参数来帮助开发者解决这一问题。本文将详细解析其运行逻辑、API 接口及避坑指南。
在 ptrade 中,多头平仓使用 sell_close,空头平仓使用 buy_close。这两个接口均支持 close_today 参数:
sell_close(contract, amount, limit_price=None, close_today=False)
buy_close(contract, amount, limit_price=None, close_today=False)
close_today 参数逻辑close_today=False(默认值):close_today=True:close_today=True 的平今控制仅对上海期货交易所(XSGE)生效。对于其他交易所(如中金所 CCFX、大商所 XDCE、郑商所 XZCE 等):
close_today 字段。True,ptrade 系统会发出警告,并强行将参数转换为 False(即按照优先平昨、不足平今的逻辑执行)。以下是一个在 ptrade 中针对上期所沪铜(CU)合约进行开仓并精确平今仓的策略示例:
def initialize(context):
# 设置操作的期货合约(上海期货交易所沪铜合约)
g.security = 'CU1806.XSGE'
set_universe(g.security)
def handle_data(context, data):
# 1. 买入开仓(多开)1手
buy_open(g.security, 1, limit_price=52220)
# 2. 针对上期所品种,若需要当天平仓,必须指定 close_today=True
# 此时将严格执行“平今仓”逻辑
sell_close(g.security, 1, limit_price=52250, close_today=True)
limit_price 时,务必确保价格符合该品种的精度要求,否则会导致报单失败。close_today=True 时,若你指令平仓 5 手,但实际今仓只有 3 手,ptrade 引擎不会报错废单,而是会自动将你的报单数量缩减为 3 手进行委托。close_today=False 即可,避免因系统强转参数产生不必要的警告日志。