3 分钟快速生成代码
输入想法,AI 即刻生成可运行代码
在PTrade量化交易平台中,针对融资融券业务(两融),可以使用特定的查询函数来获取当前账户针对某只股票的最大可操作数量。
以下是针对融资买入和卖券还款这两个具体场景的API说明及代码示例。
这两个函数仅支持在PTrade客户端的两融交易模块中使用。
使用 get_margincash_open_amount(security, price=None)。
security: 股票代码(如 '600570.SS')。price: (可选) 限定价格。如果不传,通常按当前最新价计算。{股票代码: 最大数量(int)}。使用 get_margincash_close_amount(security, price=None)。
{股票代码: 最大数量(int)}。以下代码展示了如何在策略中调用这两个接口,并打印结果。
def initialize(context):
# 设置我们要操作的股票,例如恒生电子
g.security = '600570.SS'
set_universe(g.security)
def handle_data(context, data):
# ---------------------------------------------------
# 场景一:查询融资买入最大数量
# ---------------------------------------------------
# 获取字典数据
open_amount_dict = get_margincash_open_amount(g.security)
# 判空处理,确保获取到了数据
if open_amount_dict:
# 从字典中提取具体数量
max_buy_amount = open_amount_dict.get(g.security)
log.info("股票 %s 当前最大可【融资买入】数量为: %s 股" % (g.security, max_buy_amount))
# 示例:如果可买数量大于100股,则进行融资买入
# if max_buy_amount >= 100:
# margincash_open(g.security, 100)
else:
log.info("未查询到 %s 的融资买入额度信息" % g.security)
# ---------------------------------------------------
# 场景二:查询卖券还款最大数量
# ---------------------------------------------------
# 获取字典数据
close_amount_dict = get_margincash_close_amount(g.security)
if close_amount_dict:
# 从字典中提取具体数量
max_sell_amount = close_amount_dict.get(g.security)
log.info("股票 %s 当前最大可【卖券还款】数量为: %s 股" % (g.security, max_sell_amount))
# 示例:如果有可卖额度,则卖出还款
# if max_sell_amount > 0:
# margincash_close(g.security, max_sell_amount)
else:
log.info("未查询到 %s 的卖券还款额度信息" % g.security)
get_margincash_open_amount 和 get_margincash_close_amount)通常仅支持在PTrade客户端(实盘或仿真)的两融交易模块中运行。在普通的回测环境中,如果回测引擎不支持两融柜台的详细模拟,可能会返回空值或报错。.get(security) 来获取具体的数值。price 参数(例如传入涨停价或对手价)来更保守或更精确地计算可买卖数量,防止因价格变动导致资金不足废单。Q: 如果我想查询融券卖出(做空)的最大数量,应该用哪个函数?
A: 融券卖出应使用 get_marginsec_open_amount(security, price=None)。
Q: 如果我想查询买券还券(买入股票还给券商)的最大数量,应该用哪个函数?
A: 买券还券应使用 get_marginsec_close_amount(security, price=None)。
Q: 为什么我在回测中调用这些函数返回 None?
A: 这些函数依赖于柜台的信用资产和授信数据。普通回测环境可能没有模拟完整的信用账户体系,因此这些特定于两融柜台查询的函数可能无法返回数据。建议在仿真或实盘的两融账号中测试。