3 分钟快速生成代码
输入想法,AI 即刻生成可运行代码
在 PTrade 交易系统中,在科创板(股票代码 688 开头)使用市价委托(order_market)时,limit_price 参数是必须的。
order_market 函数的 limit_price 参数默认值为 None,但对于科创板股票,如果不传入该参数,委托将会失败(通常表现为废单或直接报错),因为系统无法向柜台提交没有保护限价的科创板市价单。在调用 order_market 函数交易科创板股票时:
'688001.SS')。以下代码展示了如何在科创板进行市价买入,并计算保护限价(例如以卖一价上浮 2% 作为保护限价):
def initialize(context):
# 设置科创板股票
g.security = '688001.SS'
set_universe(g.security)
def handle_data(context, data):
# 获取当前行情快照
snapshot = get_snapshot(g.security)
if snapshot:
# 获取卖一价(作为参考基准)
# 注意:实际策略中应根据具体需求选择基准价格(如最新价、卖五价等)
current_ask_price = snapshot[g.security]['offer_grp'][1][0]
# 如果获取到的价格有效
if current_ask_price > 0:
# 设定保护限价:例如在卖一价基础上上浮 2%
# 注意:科创板有2%的价格笼子限制,保护限价不应超过基准价的102%
protect_price = current_ask_price * 1.02
# 对价格进行修约,保留2位小数(科创板价格最小变动单位为0.01)
protect_price = round(protect_price, 2)
# 下单:市价买入 200 股
# market_type=4 代表 "最优五档即时成交剩余撤销"
# limit_price 必须传入
order_market(g.security, 200, market_type=4, limit_price=protect_price)
log.info("科创板市价委托已发送,保护限价: %s" % protect_price)
limit_price 超出有效申报范围,可能会导致废单。order_market 时通常不需要传入 limit_price(传入了也可能被忽略,视券商柜台实现而定),但科创板必须传入。Q: 如果我在科创板市价委托时不填 limit_price 会发生什么?
A: 委托会失败。PTrade 系统或柜台会校验该参数,对于科创板代码,缺少保护限价将被视为无效申报,状态通常会变为“废单”或直接抛出异常。
Q: limit_price 的值应该如何设置?
A: limit_price 应根据您的策略对滑点的容忍度来设置。
Q: order_market 支持哪些市价委托类型?
A: