3 分钟快速生成代码
输入想法,AI 即刻生成可运行代码
market_type 是必传字段?在 ptrade 量化交易平台中,order_market 函数用于按市价进行委托下单。其函数签名如下:
order_market(security, amount, market_type, limit_price=None)
从 API 设计上可以看出,market_type 没有默认值,因此在 Python 语法层面它是一个位置参数(必传参数)。如果不传入该参数,Python 解释器会直接抛出 TypeError 报错。
从业务逻辑层面来看,market_type 必须指定的原因在于:中国 A 股市场的不同交易所(上交所、深交所)以及不同板块(主板、科创板、创业板)对市价委托的支持类型是完全不同的。交易引擎无法为你默认选择一个“通用”的市价单类型,必须由策略开发者明确指定具体的市价撮合方式。
market_type 支持的参数枚举根据 ptrade API 文档,market_type 接受整型(int)参数,具体代表的市价委托类型如下:
market_type 规则在传入 market_type 时,必须严格遵守标的股票所属市场的规则,否则即使传入了参数,也会因为交易所不支持该市价类型而导致委托失败(废单):
limit_price 保护限价使用)。为了避免报错,调用 order_market 时请务必传入第三个参数。以下是一个正确的调用示例:
def initialize(context):
# 设置操作的股票池:恒生电子(沪市主板)
g.security = '600570.SS'
set_universe(g.security)
def handle_data(context, data):
security = g.security
# 错误写法:未传入 market_type,会导致 TypeError 报错
# order_market(security, 100)
# 正确写法:买入 100 股,使用 market_type=1(最优五档即时成交剩余转限价)
# 因为 600570.SS 是沪市主板股票,支持 1 和 4
order_market(security, 100, 1)
log.info(f"已使用市价单委托买入 {security}")
总结:在编写 ptrade 策略时,务必根据交易标的所属的市场,显式地为 order_market 传入合法的 market_type 参数,这样才能确保市价单被柜台正确接收和执行。