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

PTrade 平台如何通过 Python 实现自动化融资买入与两融额度查询?

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

问题描述

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

Title: PTrade 两融交易指南:使用 margincash_open 进行自动化融资买入

Question: 请教在 PTrade 中如何通过代码实现融资买入与两融额度查询?

解决方案

在 PTrade 量化交易平台中,进行融资融券(两融)交易需要使用专门的两融交易类函数与查询类函数。以下是实现自动化融资买入及额度查询的详细步骤与代码示例:

一、核心 API 接口解析

  1. 信用资产查询:get_margin_assert()

    • 功能:获取信用账户的资产及额度信息,如可用保证金、融资已用/可用额度等。
    • 返回值:字典结构,包含 fin_enable_quota(融资可用额度)、fin_compact_balance(融资合约金额)等属性。
  2. 最大可融资买入数量查询:get_margincash_open_amount(security, price=None)

    • 功能:查询指定融资标的股票在当前账户资金/额度下的最大可买数量。
    • 返回值:字典,如 {'600570.SS': 10000}
  3. 融资买入委托:margincash_open(security, amount, limit_price=None, market_type=None)

    • 参数说明
      • security:股票代码(如 '600570.SS')。
      • amount:买入数量(正整数)。
      • limit_price:委托限价(可选)。
      • market_type:市价委托类型(可选,如 0-对手方最优,1-最优五档即时成交剩余转限价等)。

二、完整 Python 策略示例

以下策略展示了如何在盘中判断指标后,先查询信用账户额度与股票可买数量,再执行 margincash_open 融资买入:

def initialize(context):
    # 设置两融标的股票
    g.security = '600570.SS'
    set_universe(g.security)
    g.flag = False

def handle_data(context, data):
    if not g.flag:
        # 1. 检查股票是否在最新的融资标的列表中
        margin_stocks = get_margincash_stocks()
        if g.security not in margin_stocks:
            log.info("%s 不在融资标的列表中" % g.security)
            return
        
        # 2. 查询信用账户资产与融资可用额度
        margin_assert = get_margin_assert()
        fin_enable_quota = margin_assert.get('fin_enable_quota', 0)
        log.info("当前融资可用额度: %s" % fin_enable_quota)
        
        # 3. 查询目标股票最大可融资买入数量
        open_amount_dict = get_margincash_open_amount(g.security)
        if open_amount_dict:
            max_amount = open_amount_dict.get(g.security, 0)
            log.info("%s 最大可融资买入数量: %s" % (g.security, max_amount))
            
            # 4. 执行融资买入(以买入 100 股为例,或根据 max_amount 按需下单)
            if max_amount >= 100:
                # 限价下单示例
                current_price = data[g.security]['close']
                order_id = margincash_open(g.security, 100, limit_price=current_price)
                log.info("提交融资买入订单,订单ID: %s" % order_id)
                g.flag = True

三、注意事项与最佳实践

  1. 运行环境限制:两融交易相关函数仅支持 PTrade 客户端环境,且必须在两融实盘/模拟盘交易模块中运行。
  2. 价格精度限制:股票交易价格传参时需注意保留 2 位小数,若未传 limit_pricemarket_type,系统将默认采用行情快照最新价报单。
  3. 风控管理:在下单前建议通过 get_margin_assert() 确认 fin_enable_quota(可用额度)和 enable_bail_balance(可用保证金),避免因风控不足导致柜台废单。