3 分钟快速生成代码
输入想法,AI 即刻生成可运行代码
在 PTrade 中,要在下单前判断某只股票是否可以进行融资买入(即是否为融资标的),可以使用 get_margincash_stocks() 接口。
该接口会返回当前市场上所有可融资买入的标的列表。您只需要判断目标股票代码是否存在于该列表中即可。
get_margincash_stocks() 获取所有可融资股票代码的列表。in 关键字判断您的目标股票代码是否在该列表中。margincash_open 进行融资买入;否则不操作或打印提示。以下是一个完整的策略示例,展示了如何在每日交易开始前获取融资标的列表,并在盘中判断指定股票是否可融资买入。
def initialize(context):
# 设置我们要操作的股票,例如恒生电子
g.security = '600570.SS'
# 设置股票池
set_universe(g.security)
def before_trading_start(context, data):
# 获取当前市场上所有的融资标的列表
# 建议在盘前获取一次,避免在handle_data中频繁调用接口
g.margin_cash_stocks = get_margincash_stocks()
if g.margin_cash_stocks:
log.info("成功获取融资标的列表,数量:%s" % len(g.margin_cash_stocks))
else:
log.warn("未获取到融资标的列表,请检查账户权限或回测设置")
def handle_data(context, data):
# 获取目标股票代码
target_stock = g.security
# 1. 判断是否为融资标的
# 注意:g.margin_cash_stocks 是一个列表,包含如 ['600570.SS', '000001.SZ', ...]
if target_stock in g.margin_cash_stocks:
log.info("股票 %s 是融资标的,准备进行融资买入" % target_stock)
# 2. 检查是否已持仓(防止重复下单,仅作示例逻辑)
position = get_position(target_stock)
if position.amount == 0:
# 3. 下单:融资买入 100 股
# 注意:融资买入需使用 margincash_open 接口
margincash_open(target_stock, 100)
log.info("融资买入下单成功")
else:
log.info("股票 %s 不是融资标的,无法进行融资买入" % target_stock)
margincash_open。before_trading_start 中每日更新一次列表。.SS 或 .SZ),get_margincash_stocks() 返回的列表也包含后缀,比对时请确保格式一致。Q: get_margincash_stocks() 接口在回测中可以使用吗?
A: 可以。在回测模式下,该接口会返回回测日期当时交易所披露的融资标的列表,避免了使用未来数据。
Q: 如果我想判断股票是否可以“融券卖出”,应该用哪个接口?
A: 判断融券卖出资格,请使用 get_marginsec_stocks() 接口,它返回的是可融券标的列表。
Q: 融资买入下单时,可以使用普通的 order() 函数吗?
A: 不可以。融资买入必须使用 margincash_open() 函数。普通的 order() 函数使用的是自有资金买入(担保品买入)。