期货开仓前保证金够吗:get_account 可用与占用字段对照

前言

国内期货是保证金交易:开 1 手螺纹钢需要的不是全额合约价值,而是按交易所和期货公司标准冻结的保证金。程序化里信号算出要开 3 手,若不在下单前核对资金,常见结果是报单被拒(last_msg 里出现资金相关字样),或成交后 available 耗尽触发更高 risk_ratio,后续加仓全部失败。

天勤 api.get_account() 返回资金账户对象(Account),在每次 api.wait_update() 后随柜台回报更新。字段定义见 SDK 的 objs.py,带中文注释。下面说明开仓前应读哪些字段、各自表示什么、为何不能把手算保证金当唯一依据,以及如何与 TargetPosTask.set_target_volume 配合在资金不足时减仓或跳过。

一、为什么每次准备开仓都要读 account

保证金随价格和持仓变化;夜盘波动后,日盘开盘时 available 可能与昨日收盘不同。策略若只在启动时读一次 account,盘中加仓仍按旧数判断,容易拒单。

更稳妥:在 K 线 datetime 触发且准备 set_target_volume 之前,先 wait_update,再读最新 get_account()get_position(symbol)

二、常见字段对照(通俗含义)

字段 含义(通俗) 开仓前关注什么
available 可用资金,还能用于新开仓的部分 够不够下一笔保证金
balance 账户权益,含浮盈浮亏 当日回撤、风控线
margin 当前持仓占用的保证金 已用多少额度
frozen_margin 冻结保证金,在途单占用 挂单也会占额度
float_profit / position_profit 浮动盈亏 是否接近止损线
risk_ratio 风险度,文档为保证金除以权益 接近 1 时谨慎加仓
ctp_available / ctp_balance 期货公司 CTP 回报口径 可与上面交叉验证

CTP 是国内期货常用的交易接口名称;天勤用 TqAccount 连柜台时,部分字段与 CTP 回报对应,模拟盘 TqSim/TqKq 大体一致但上线前仍要实测是否及时更新。

具体可用金额以期货公司为准;不同公司优惠、锁仓规则会影响占用,手算系数只能辅助。

三、粗算一手保证金 + 用 available 决策

可用 quote.volume_multiple(合约乘数)、last_price 粗算一手占用,但决策应看 available

python 复制代码
quote = api.get_quote(symbol)

def rough_margin_per_lot(price):
    # 系数按品种与期货公司标准改,此处 0.10 仅示意
    return price * quote.volume_multiple * 0.10

def max_lots_to_open(want):
    acc = api.get_account()
    per = rough_margin_per_lot(quote.last_price)
    if per <= 0:
        return 0
    can = int(acc.available // per)
    return min(want, can)

want 来自信号目标手数;若 can < want,应 set_target_volume(can) 或跳过并打日志 insufficient_margin,不要硬 set 满额等拒单。

四、与 TargetPosTask、拒单的关系

set_target_volume 不会替你检查资金是否足够;资金不足时单可能 FINISHEDvolume_left 等于原始量,结合 last_msg 判断。主动在信号层限制手数,比依赖拒单更省报单额度,也少一次"以为已开仓其实没有"的状态偏差。

拒单后要把策略 target_volget_position().pos 对齐,见拒单与部分成交专题。

五、多合约组合开仓

组合同时加多腿时,应对每腿检查 available 是否够,或估算组合总新增保证金。risk_ratio 是账户级的,单腿都看 available 仍可能组合总和超限。

六、与风控、emergency 衔接

risk_ratio 超阈值可先禁止新开仓只允许平;emergency 触发后不应再 set 正目标。资金字段与组合风控、夜盘监控共用同一套 get_account() 读取时机。

总结

开仓前的资金检查看起来是一步小动作,却决定了后续报单链路是顺畅推进还是连锁拒单。把 availablemarginfrozen_marginrisk_ratio 放进统一判断逻辑:在准备 set_target_volume 之前先读最新 account,确保你的新增仓位确实在预算内,而不是把风险留到柜台用拒单来提醒。与此同时,粗算保证金只是双保险,最终仍要以柜台口径为准,并在不足时明确是减仓、跳过还是停机。把"资金不足时的动作策略"写进配置并在日志里落地,交易系统就会从被动纠错升级为主动自保。

FAQ

1)available 与 ctp_available 差很多?

查冻结保证金、期权市值等,对照字段注释与期货公司说明。

2)锁仓保证金优惠?

品种规则不同,粗算系数要按公司标准调。

3)TqKq 与 TqAccount 字段一样吗?

大体一致,实盘前用真实账户实测更新频率。

4)回测 TqSim 要算资金吗?

模拟有资金模型,逻辑仍应检查,避免回测满仓实盘却开不出。

风险提示

以上内容用于资金字段说明,不构成投资建议。

相关推荐
开源量化GO1 小时前
夜盘白盘衔接几分钟误下单:天勤交易时段与行情过滤
python·区块链
辣椒思密达2 小时前
Python公开数据采集实战:如何解决请求高频拦截与Session会话中断问题
开发语言·python
Albart5752 小时前
Python 实战教程:用 30 分钟学会解决真实问题
开发语言·python
2301_773643622 小时前
ceph池
开发语言·ceph·python
极客笔记Jack3 小时前
Scanpy AnnData 对象深度解析:高效操作数据结构的10个技巧
python
颜酱3 小时前
LangChain调用向量模型,存入向量数据库
python·langchain
2501_928945523 小时前
七本性全面签名体系:从互递归类型到∞-范畴生成语法
python
2601_961194024 小时前
考研资料电子版|去哪找|网盘
java·c语言·c++·python·考研·php
veminhe4 小时前
关于下载pip install faiss-cpu失败的问题
python·pip·faiss