3 分钟快速生成代码
输入想法,AI 即刻生成可运行代码
在 ptrade 量化交易平台中,关于“可转债委托时取整10张”的规则,主要体现在目标数量或目标价值类的下单函数中,以及回测环境的最小下单量校验上。以下是该规则的详细解析:
当您使用 order_target(指定目标数量买卖)、order_value(指定目标价值买卖)或 order_target_value(指定持仓市值买卖)这三个函数时,系统会根据当前价格和目标价值计算出需要买卖的数量。为了符合交易所的交易规则,ptrade 引擎在委托可转债时,会自动将计算出的数量取整为 10 张的整数倍(委托股票时则取整为 100 股)。
order 函数时,系统会进行最小下单数量校验。可转债的最小下单量为 10 张(股票、ETF、LOF 为 100 股)。如果计算出的买入数量不足 10 张,可能会导致委托失败或被忽略。全部卖出时不受限制:当您需要清仓卖出所有可转债时(例如使用 order_target(security, 0)),系统会卖出您当前持有的所有可用数量,此时不受取整 10 张的限制。这主要是为了处理因分红、转股或其他历史原因产生的零股/零张持仓。
以下是一个在 ptrade 中交易可转债的示例,展示了取整规则的应用:
def initialize(context):
# 设置操作的可转债代码(例如:国贸转债)
g.security = '110033.SS'
set_universe(g.security)
def handle_data(context, data):
# 1. 使用 order_value 买入价值 10000 元的可转债
# 假设当前价格为 110 元,理论数量为 10000 / 110 = 90.90 张
# 系统会自动取整为 10 的倍数,即实际委托买入 90 张
order_value(g.security, 10000)
# 2. 使用 order_target 调整仓位到 150 张
# 如果当前持仓 90 张,系统会计算需要买入 60 张,符合 10 张整数倍规则
order_target(g.security, 150)
# 3. 清仓卖出
# 假设当前持仓 155 张(包含历史零张),卖出所有持仓时不受 10 张取整限制,直接卖出 155 张
if data[g.security]['close'] > 120:
order_target(g.security, 0)
总结:在编写 ptrade 可转债策略时,建议开发者在自定义计算下单数量时,主动使用 int(amount / 10) * 10 进行向下取整,以避免在实盘中因数量不合规而产生废单。