跳转到正文

撮合与交易约束 ​

撮合决定普通订单何时、以什么价格成交。股票基金的公司行为和期货系统移仓使用各自的资产规则;它们不等同于策略普通订单。

撮合价格 ​

配置位置:mod.sys_simulation。以下价格表描述 handle_bar 中的普通订单:

matching_type可用频率撮合方式
None,默认日线、分钟自动选择 current_bar
current_bar日线、分钟提交时尝试按当前 bar 收盘价撮合
vwap日线、分钟股票基金为成交额 / 成交量;期货再除以合约乘数
next_bar分钟下一根可用 bar 按开盘价尝试撮合;期货等待目标真实合约的下一根 bar

股票基金在竞价回调中提交的普通订单同步尝试按当日开盘价成交,不额外加滑点;matching_type 决定后续普通 BAR 的撮合口径。因此分钟 next_bar 可同时用于竞价开盘执行和盘中下一分钟开盘执行。日线配置 next_bar 会警告并按 current_bar 运行;股票基金需要次日开盘执行时,在下一交易日的 open_auction 提交。期货连续系列只能在 handle_bar 提交,期货分钟不产生竞价回调。

撮合价模型不保证订单成功。当前 bar 信号若使用了收盘数据,current_bar 表示同一收盘价成交的回测假设;需要先观察完整 bar、再执行订单时使用分钟 next_bar。VWAP 是整根 bar 的平均价模型,不是模拟在该分钟内逐笔拆单。

键默认作用
price_limitTrue限制涨停买入、跌停卖出;数据缺口见 数据限制
volume_limitTrue限制同一 bar、同一标的累计可成交数量
volume_percent0.25成交量限制占市场 bar 成交量的比例
inactive_limitTrue当前 bar 成交量为零时取消订单
slippage_modelPriceRatioSlippage比例滑点;也可选择 TickSizeSlippage
slippage0比例滑点值,或最小价位跳数
signalFalse直接生成成交的信号模式;常规回测保持关闭

比例滑点按成交基价乘比例,跳数滑点按合约最小价位乘跳数;买入向上、卖出向下调整。滑点后的价格裁剪到已知有效涨跌停价内,再检查委托限价;超出买入上限或卖出下限时本轮不成交,限价单继续等待,不通过压缩滑点满足委托价格。price_limit=False 只解除基价触及涨跌停时的方向禁入,不使滑点成交价突破已知价带。竞价不加滑点。

成交量额度由同一真实合约上的订单共享,不是每张订单各获得一份额度。关闭限制会改变交易可行性假设,应在运行参数中记录。订单结果与剩余委托处理见下单与成交;期货的系统移仓单独采用结算价模型。

seeddata 的竞价成交量限制以当日全天日线成交量为代理,不是真实集合竞价成交量;该口径包含开盘后才发生的成交量,不能用于验证真实竞价容量。

资金不足 ​

base.partial_fill_on_insufficient_cash=False 为默认值。开启后,开仓单不在提交阶段做前端资金校验或冻结资金,撮合时按实际价格、费用和申报单位缩量;连最小申报量也负担不起时拒单。因资金缩量未成交的剩余部分会取消。

mod.sys_accounts.auto_switch_order_value=False 为默认值。开启后,适用的股票下单 API 在提交前发现资金不足时,改按全部可用现金估算下单数量。它与撮合时缩量不是同一机制,不能用来保证订单足额成交。

策略是否启用缩量取决于执行假设;排查时比较下单量、实际成交量和可用现金,不把缩量当成仓位计算正确的证明。无需为缩量关闭 sys_risk.validate_cash。

股票基金佣金 ​

配置位置为 mod.sys_transaction_cost。股票和场内基金共用佣金参数:

键框架默认值含义
stock_commission_multiplier1实际佣金比例为 0.0008 × 倍率,万一对应 0.125
stock_min_commission5每张订单最低佣金,单位元;部分成交沿用该订单的最低收费累计规则

例如成交额 10,000 元、万一佣金、最低 5 元,佣金为 5 元;不是每次部分成交另收一次最低佣金。股票卖出印花税见股票费用,基金免该税。期货不使用这组佣金参数,见期货手续费。

localquant documentation