3 分钟快速生成代码
输入想法,AI 即刻生成可运行代码
在量化交易中,融资融券(两融)业务的自动化操作是许多进阶交易员的核心需求。国信证券 QMT 平台提供了丰富的两融交易接口,支持信用账户的资产查询、负债合约明细获取、可融券查询以及担保品管理。本文将详细介绍如何通过 QMT Python API 实现两融担保品的查询与划转操作。
在 QMT 中,与担保品直接相关的 API 主要包括以下几个:
get_assure_contract()get_assure_contract(accId)accId (string) 信用账户 ID。StkSubjects 对象的列表,可通过 dir(obj) 查看其属性(如 m_strInstrumentName 担保合约名称、m_dAssureRatio 担保品折算比例等)。passorder() 中的两融操作在进行两融交易时,passorder 提供了专门的信用交易操作类型(opType):
27:融资买入28:融券卖出29:买券还券30:直接还券31:卖券还款32:直接还款33:信用账号股票买入34:信用账号股票卖出在底层接口中,QMT 定义了担保品划转的价格类型(EBrokerPriceType):
BROKER_PRICE_PROP_COLLATERAL_TRANSFER:对应数值为 107,代表担保品划转。在进行划转或交易前,通常需要先查询当前账户的担保品状态:
#coding:gbk
def init(ContextInfo):
# 设定信用交易账号
ContextInfo.accid = '6000000248'
ContextInfo.set_account(ContextInfo.accid)
def handlebar(ContextInfo):
if ContextInfo.is_last_bar():
# 获取信用账户担保标的明细
assure_list = get_assure_contract(ContextInfo.accid)
print(f"--- 信用账户 {ContextInfo.accid} 担保品明细 ---")
for obj in assure_list:
# 打印担保品代码、名称及折算率
print(f"代码: {obj.m_strInstrumentID}, 名称: {obj.m_strInstrumentName}, 折算比例: {obj.m_dAssureRatio}")
在实际交易中,担保品划转通常需要配合券商柜台的划转指令。在 QMT API 中,可以通过 passorder 传入信用账户进行担保品买入或通过底层价格类型 107 尝试触发划转逻辑:
#coding:gbk
def init(ContextInfo):
ContextInfo.accid = '6000000248' # 替换为您的真实信用账号
ContextInfo.set_account(ContextInfo.accid)
def handlebar(ContextInfo):
if not ContextInfo.is_last_bar():
return
# 示例:使用信用账号买入担保品股票(opType=33)
# 参数说明:opType=33 (信用账号股票买入), orderType=1101 (单股单账号普通下单), prType=5 (最新价)
target_stock = '600000.SH'
passorder(33, 1101, ContextInfo.accid, target_stock, 5, -1, 100, ContextInfo)
print(f"已发送信用账户担保品买入委托: {target_stock}")
get_assure_contract)仅在实盘运行模式下生效,模拟运行或历史回测时无法获取真实的柜台负债与担保品数据。init 函数中调用 ContextInfo.set_account() 绑定您的信用账号,否则后续的回调函数(如 account_callback)将无法接收到主推数据。m_dPerAssurescaleValue)。在编写自动化划转策略时,务必先通过 get_trade_detail_data 获取 ACCOUNT 类型的信用账户对象,实时监控维持担保比例,避免触发强制平仓风控。