3 分钟快速生成代码
输入想法,AI 即刻生成可运行代码
在PTrade中,融资融券(两融)交易有专门的API接口。与普通买卖不同,两融交易需要区分是“融资买入”还是“融券卖出”。
以下是具体的代码实现方式及说明:
融资买入 (Long/Leveraged Buy)
margincash_open(security, amount, limit_price=None, market_type=None)security: 股票代码(如 '600519.SS')。amount: 买入数量(必须为正整数,通常为100的倍数)。limit_price: (可选) 限价价格。如果不传,默认使用最新价。融券卖出 (Short Sell)
marginsec_open(security, amount, limit_price=None)security: 股票代码。amount: 卖出数量(必须为正整数)。limit_price: (可选) 限价价格。以下代码展示了一个简单的策略:在初始化时设置标的,在盘中检查最大可买/可卖数量,并执行融资买入和融券卖出操作。
def initialize(context):
# 设置要操作的标的,这里以贵州茅台为例
g.security = '600519.SS'
# 设置股票池
set_universe(g.security)
# 设置一个标志位,防止在示例中重复下单
g.traded = False
def handle_data(context, data):
# 如果已经交易过,则不再执行
if g.traded:
return
# ---------------------------------------------------
# 1. 融资买入示例
# ---------------------------------------------------
# 查询该标的当前最大可融资买入数量
# 返回的是一个字典,key是股票代码,value是数量
cash_open_info = get_margincash_open_amount(g.security)
max_cash_buy = cash_open_info.get(g.security, 0)
log.info("最大可融资买入数量: %s" % max_cash_buy)
# 如果额度足够,买入100股
if max_cash_buy >= 100:
# 下单:融资买入 100股
margincash_open(g.security, 100)
log.info("执行融资买入: %s, 数量: 100" % g.security)
else:
log.info("融资额度不足,无法买入")
# ---------------------------------------------------
# 2. 融券卖出示例
# ---------------------------------------------------
# 查询该标的当前最大可融券卖出数量
sec_open_info = get_marginsec_open_amount(g.security)
max_sec_sell = sec_open_info.get(g.security, 0)
log.info("最大可融券卖出数量: %s" % max_sec_sell)
# 如果额度足够,卖出100股
if max_sec_sell >= 100:
# 下单:融券卖出 100股
marginsec_open(g.security, 100)
log.info("执行融券卖出: %s, 数量: 100" % g.security)
else:
log.info("融券券源不足,无法卖出")
# 标记为已交易
g.traded = True
get_margincash_stocks() 获取融资标的列表,使用 get_marginsec_stocks() 获取融券标的列表。get_margincash_open_amount(查询可融资数量)或 get_marginsec_open_amount(查询可融券数量)进行检查。margincash_close(security, amount)。marginsec_close(security, amount)。