3 分钟快速生成代码
输入想法,AI 即刻生成可运行代码
在PTrade量化交易平台中,针对融资融券(两融)业务,查询某只股票的最大可融资买入数量和最大可融券卖出数量,分别使用以下两个专用接口:
get_margincash_open_amountget_marginsec_open_amount这两个函数仅支持在Ptrade客户端的两融交易模块中使用。
函数名:get_margincash_open_amount(security, price=None)
security:股票代码(字符串,如 '600570.SS')。price:限定价格(浮点数,可选)。如果不传,通常按当前最新价计算。dict,key为股票代码,value为最大可买数量(int)。函数名:get_marginsec_open_amount(security, price=None)
security:股票代码(字符串)。price:限定价格(浮点数,可选)。dict,key为股票代码,value为最大可卖数量(int)。以下是一个完整的策略示例,展示了如何在盘中获取指定股票的融资买入和融券卖出额度,并打印到日志中。
def initialize(context):
# 设置我们要操作的股票,例如恒生电子
g.security = '600570.SS'
# 设置股票池
set_universe(g.security)
def handle_data(context, data):
# 1. 查询融资买入最大数量
# 注意:该函数返回的是字典,如 {'600570.SS': 10000}
cash_amount_dict = get_margincash_open_amount(g.security)
if cash_amount_dict:
max_cash_buy = cash_amount_dict.get(g.security)
log.info("股票 %s 最大可融资买入数量: %s" % (g.security, max_cash_buy))
else:
log.info("股票 %s 获取融资买入数量失败或非融资标的" % g.security)
# 2. 查询融券卖出最大数量
sec_amount_dict = get_marginsec_open_amount(g.security)
if sec_amount_dict:
max_sec_sell = sec_amount_dict.get(g.security)
log.info("股票 %s 最大可融券卖出数量: %s" % (g.security, max_sec_sell))
else:
log.info("股票 %s 获取融券卖出数量失败或非融券标的" % g.security)
# 示例:如果融资可买数量大于1000股,则进行融资买入(仅作演示,请谨慎下单)
# if cash_amount_dict and cash_amount_dict.get(g.security, 0) > 1000:
# margincash_open(g.security, 100)
.get(security) 来获取具体的数量。price 参数会影响最大数量的计算。因为融资融券涉及保证金比例,价格越高,消耗的保证金越多,可买/可卖数量可能会减少。如果不传 price,系统通常使用当前最新成交价或昨收价进行估算。Q1: 为什么调用 get_marginsec_open_amount 返回的字典是空的或者数量为0?
A1: 这通常有几种原因:
Q2: get_margincash_open_amount 计算出的数量是基于什么计算的?
A2: 它是基于您账户当前的可用保证金、该股票的融资保证金比例以及当前的委托价格综合计算得出的。公式大致为:最大可买数量 = 可用保证金 / (价格 * 融资保证金比例)(具体计算需考虑券商的折算率和手续费设置)。
Q3: 如果我想查询卖券还款或买券还券的最大数量怎么办?
A3: PTrade提供了另外两个对应的接口:
get_margincash_close_amount(security)get_marginsec_close_amount(security)