问题描述
/
解决方案
在 ptrade 量化交易平台中,以指定价格下单(即下限价单)非常简单。平台提供了一系列下单函数,这些函数通常都包含一个 limit_price 参数,专门用于设置买卖的限价。
以下是几种常见的指定价格下单方法及代码示例:
1. 基础限价单:使用 limit_price 参数
ptrade 中最常用的下单函数如 order、order_target、order_value 等,均支持通过传入 limit_price 参数来实现限价委托。
按数量限价买卖 (order)
order(security, amount, limit_price=None) 函数用于买卖指定数量的标的。
def initialize(context):
g.security = '600570.SS'
set_universe(g.security)
def handle_data(context, data):
# 以 39.00 元的价格,限价买入 100 股恒生电子
order(g.security, 100, limit_price=39.00)
# 以 45.00 元的价格,限价卖出 100 股恒生电子
order(g.security, -100, limit_price=45.00)
指定目标数量限价买卖 (order_target)
order_target(security, amount, limit_price=None) 用于买卖股票,直到持仓数量达到指定的 amount。
def handle_data(context, data):
# 以 39.00 元的限价,买入/卖出股票,使最终持仓达到 1000 股
order_target('600570.SS', 1000, limit_price=39.00)
指定目标价值限价买卖 (order_value / order_target_value)
order_value(security, value, limit_price=None):买卖指定价值的股票。order_target_value(security, value, limit_price=None):调整持仓市值到指定价值。
def handle_data(context, data):
# 以 39.00 元的限价,买入价值 10000 元的股票
order_value('600570.SS', 10000, limit_price=39.00)
2. Tick 级别的高频限价单
如果你在编写 Tick 级别的策略(使用 tick_data 函数),需要使用专门的 order_tick 函数。
order_tick(sid, amount, priceGear='1', limit_price=None) 允许你指定盘口档位或具体价格。
def tick_data(context, data):
security = '600570.SS'
# 以 56.5 元的指定价格下买单,买入 100 股
# 注意:当传入 limit_price 时,下单价格以 limit_price 为准,忽略 priceGear
order_tick(security, 100, limit_price=56.5)
3. 盘后固定价委托
对于科创板或创业板等支持盘后固定价交易的标的,可以使用 after_trading_order 函数。
after_trading_order(security, amount, entrust_price)
def handle_data(context, data):
# 在盘后交易时段,以 40.00 元的固定价格委托买入 200 股
after_trading_order('300001.SZ', 200, 40.00)
⚠️ 重要注意事项
- 价格精度:股票的价格精度通常为小数点后两位(如
39.00),而可转债、ETF、LOF 的价格精度为小数点后三位。传入limit_price时务必注意小数位数,否则可能导致柜台拒单。 - 默认行为:在交易场景中,如果调用
order等函数时不传入limit_price,系统会默认使用行情快照的最新价进行报单(市价单模拟)。 - 价格笼子:在实盘交易中,限价单的价格必须符合交易所的“价格笼子”规定(如科创板/创业板的 2% 限制),超出限制的限价单可能会被直接作为废单处理。