🚀 AI 一键生成 ptrade 策略代码

PTrade 两融实战:担保品买卖支持的市价委托类型详解

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

问题描述

做担保品买卖时,想用“对手方最优价格”下单,market_type 应该填什么?

解决方案

在 PTrade 中进行担保品买卖(margin_trade)时,若希望使用“对手方最优价格”进行市价委托,market_type 参数应填 0

参数说明

根据 PTrade API 文档中 margin_trade 函数的说明,market_type 参数对应的值如下:

  • 0:对手方最优价格
  • 1:最优五档即时成交剩余转限价
  • 2:本方最优价格
  • 3:即时成交剩余撤销
  • 4:最优五档即时成交剩余撤销
  • 5:全额成交或撤单

注意事项

虽然 market_type=0 代表对手方最优价格,但在实际使用时需注意交易所和板块的支持情况(根据文档描述):

  • 深证股票:支持参数 0。
  • 上证科创板股票:支持参数 0。
  • 上证非科创板股票(主板):文档中仅列出支持参数 1 和 4。如果交易上证主板股票,建议先确认券商柜台是否支持该市价类型,或改用 market_type=1(最优五档即时成交剩余转限价)作为替代。

代码示例

以下是一个在 handle_data 中使用 margin_trade 以“对手方最优价格”买入担保品的示例:

def initialize(context):
    # 设置股票池,例如一只深证股票
    g.security = '000001.SZ'
    set_universe(g.security)

def handle_data(context, data):
    # 获取当前持仓
    position = get_position(g.security)
    
    # 示例:如果没有持仓,则买入 100 股
    if position.amount == 0:
        # 使用 margin_trade 进行担保品买入
        # amount 为正数表示买入
        # market_type=0 表示使用对手方最优价格
        margin_trade(g.security, 100, market_type=0)
        log.info("以对手方最优价格买入担保品: %s" % g.security)

常见问题 (Q&A)

Q: margin_trade 函数支持哪些业务类型?
A: margin_trade 仅用于担保品买卖(即使用自有资金买入股票作为担保品,或卖出持有的担保品股票)。如果是进行融资买入(借钱买股)需使用 margincash_open,融券卖出(借股卖出)需使用 marginsec_open

Q: 如果我不填 market_type 参数会怎样?
A: 如果 limit_price(限价)和 market_type(市价类型)都不传,系统默认取当前行情的最新价进行限价委托。如果传入了 market_type,则以市价委托为准。

Q: 上证主板股票想用市价单,推荐用哪个参数?
A: 对于上证非科创板股票,文档推荐支持的是 1(最优五档即时成交剩余转限价)和 4(最优五档即时成交剩余撤销)。通常 market_type=1 是比较常用的替代方案,因为它能保证在成交不完时转为限价单继续挂单,避免撤单。