3 分钟快速生成代码
输入想法,AI 即刻生成可运行代码
get_debt_contract 查询负债合约明细在融资融券(两融)自动化交易与风控管理中,实时获取信用账户的负债详情至关重要。通过 QMT 平台提供的 get_debt_contract API,开发者可以精准查询账户当前的融资融券负债合约、未还本金、未还利息以及归还截止日等关键数据,从而实现自动还款、风险预警与动态调仓策略。
get_debt_contract(accId)accId (str):信用资金账号。StkCompacts(负债合约对象)的 list。可以通过 dir(obj) 查看对象的全部属性。StkCompacts)核心属性| 属性名 | 类型 | 说明 |
|---|---|---|
m_strInstrumentID |
str | 证券代码(如 '600000.SH') |
m_strInstrumentName |
str | 股票名称 |
m_strCompactId |
str | 合约编号 |
m_eCompactType |
enum | 合约类型(融资 / 融券) |
m_eCompactStatus |
enum | 合约状态(未归还 / 部分归还等) |
m_dRealCompactBalance |
float | 未还合约金额(本金) |
m_dRealCompactInterest |
float | 未还合约利息 |
m_dRealCompactFare |
float | 未还合约费用 |
m_dCompactInterest |
float | 合约总利息 |
m_nOpenDate |
int | 合约开仓日期 |
m_nRetEndDate |
int | 归还截止日期 |
以下示例展示了如何在 QMT 的 handlebar 驱动函数中,查询信用账户的所有未还负债合约,并打印详细的负债与利息信息:
#coding:gbk
def init(ContextInfo):
# 设定信用账号
ContextInfo.accid = '6000000248'
ContextInfo.set_account(ContextInfo.accid)
def handlebar(ContextInfo):
# 仅在最后一根 Bar 执行,避免重复刷屏
if not ContextInfo.is_last_bar():
return
# 获取信用账户负债合约明细
debt_contracts = get_debt_contract(ContextInfo.accid)
if not debt_contracts:
print("当前账户无负债合约信息")
return
print(f"=== 账号 {ContextInfo.accid} 负债合约明细 ===")
total_balance = 0.0
total_interest = 0.0
for contract in debt_contracts:
code = contract.m_strInstrumentID
name = contract.m_strInstrumentName
compact_id = contract.m_strCompactId
unrepaid_bal = contract.m_dRealCompactBalance
unrepaid_int = contract.m_dRealCompactInterest
ret_date = contract.m_nRetEndDate
total_balance += unrepaid_bal
total_interest += unrepaid_int
print(f"合约编号: {compact_id} | 标的: {code} {name}")
print(f" ├─ 未还本金: {unrepaid_bal:.2f} 元")
print(f" ├─ 未还利息: {unrepaid_int:.2f} 元")
print(f" └─ 到期截止日: {ret_date}")
print("-" * 40)
print(f"汇总: 累计未还本金: {total_balance:.2f} 元 | 累计未还利息: {total_interest:.2f} 元")
passorder 中的直接还款(opType 32)或卖券还款(opType 31),优先清偿高利息或即到期的负债。m_nRetEndDate,在合约即将到期(例如距 180 天上线仅剩 5 天)时触发自动平仓或提醒。get_debt_contract 仅在实盘运行模式下生效,回测模式下无真实柜台负债数据。