3 分钟快速生成代码
输入想法,AI 即刻生成可运行代码
在进行两融(融资融券)量化交易时,严格的风控措施至关重要。QMT(迅投 QMT)提供了丰富的信用交易 API,让投资者能够在策略运行过程中实时获取信用账户的个人维持担保比例、可用保证金、融资可用额度等核心风控指标,从而预防触发强制平仓风险。
在 QMT 中,查询信用账户风控指标主要依赖 get_trade_detail_data 函数。通过将数据类型指定为 'account'(或直接读取信用账户特有属性),返回的对象为 CCreditAccountDetail,其中包含了完整的两融风控字段。
CCreditAccountDetail)| 属性名称 | 类型 | 说明 | 应用场景 |
|---|---|---|---|
m_dPerAssurescaleValue |
double | 个人维持担保比例 | 监控平仓风险(如低于 130% 预警) |
m_dEnableBailBalance |
double | 可用保证金 | 评估当前可开仓的最大担保能力 |
m_dFinEnableQuota |
double | 融资可用额度 | 评估可继续融资买入的限额 |
m_dSloEnableQuota |
double | 融券可用额度 | 评估可继续融券卖出的限额 |
m_dTotalDebit |
double | 总负债 | 统计账户负债情况 |
m_dAssureAsset |
double | 净资产 | 账户实际资产总额 |
以下示例展示了如何在 QMT 策略的 handlebar 函数中实时获取并输出信用账户的风控数据:
#encoding:gbk
import time
def init(ContextInfo):
# 设定信用交易账号
ContextInfo.accID = '6000000248' # 替换为您的信用账号
ContextInfo.set_account(ContextInfo.accID)
print("=== QMT 两融风控策略初始化完成 ===")
def handlebar(ContextInfo):
# 仅在最新 Bar 运行,避免历史回测频繁输出
if not ContextInfo.is_last_bar():
return
# 获取信用账户交易明细
account_type = 'CREDIT' # 账号类型:信用
acct_info_list = get_trade_detail_data(ContextInfo.accID, account_type, 'account')
if not acct_info_list:
print("未能获取到信用账户信息,请检查账号是否登录或拼写正确!")
return
for acc_detail in acct_info_list:
# 1. 实时维持担保比例
maintain_ratio = getattr(acc_detail, 'm_dPerAssurescaleValue', 0.0)
# 2. 融资可用额度
fin_enable_quota = getattr(acc_detail, 'm_dFinEnableQuota', 0.0)
# 3. 可用保证金
enable_bail = getattr(acc_detail, 'm_dEnableBailBalance', 0.0)
# 4. 总负债
total_debit = getattr(acc_detail, 'm_dTotalDebit', 0.0)
print(f"【两融风控指标】")
print(f"账号: {acc_detail.m_strAccountID}")
print(f"维持担保比例: {maintain_ratio:.2f}%")
print(f"融资可用额度: {fin_enable_quota:.2f} 元")
print(f"可用保证金: {enable_bail:.2f} 元")
print(f"总负债: {total_debit:.2f} 元")
# 预警逻辑示例
if maintain_ratio > 0 and maintain_ratio < 140.0:
print(f"[警告] 当前维持担保比例低于 140%!预警触发,暂停融资买入!")
else:
print("[正常] 维持担保比例处于安全区间。")
passorder 进行融资买入(操作类型 27)或融资卖出(操作类型 28)前,应先校验 m_dFinEnableQuota(融资可用额度)与 m_dEnableBailBalance(可用保证金),确保订单不会因额度不足被柜台拒绝。query_credit_opvolume() 异步回调接口。