3 分钟快速生成代码
输入想法,AI 即刻生成可运行代码
在 ptrade 平台中使用 order_market(按市价进行委托)接口时,limit_price 参数并非对所有上证股票都是必传的。根据 ptrade API 文档,limit_price 是保护限价(仅限科创板代码)。
这是由上海证券交易所的交易规则决定的。为了防范极端行情下的交易风险,保护投资者的利益,上交所规定:科创板股票的市价申报必须包含保护限价。
order_market 的参数说明order_market(security, amount, market_type, limit_price=None)
security: 股票代码。amount: 交易数量,正数表示买入,负数表示卖出。market_type: 市价委托类型(必传参数)。
limit_price: 保护限价。当交易上证科创板股票时,此参数必须传入有效数值。以下是在 ptrade 中对科创板股票使用市价单并传入保护限价的示例:
def initialize(context):
# 设置操作的科创板股票
g.security = '688001.SS'
set_universe(g.security)
def handle_data(context, data):
security = g.security
# 获取当前最新价作为参考
current_price = data[security]['close']
# 假设我们要买入 200 股科创板股票
# 使用 market_type=1 (最优五档即时成交剩余转限价)
# 为了防止买入价格过高,我们设置保护限价为当前价格上浮 2%
protect_price = round(current_price * 1.02, 2)
# 下市价单,必须传入 limit_price
order_market(security, 200, 1, limit_price=protect_price)
log.info(f"已下达科创板市价买入委托,保护限价: {protect_price}")
总结:在使用 ptrade 编写策略时,务必区分主板和科创板的交易规则差异。对于上证科创板股票,调用 order_market 时切记计算并传入合理的 limit_price,否则会导致委托失败。