金额
MonetaryAmount 表示按金额分配。它关注每个子账户承担的名义金额,而不是直接指定股份数或合约数。
| 场景 | 是否适合 |
|---|---|
| 多个账户希望投入接近固定金额 | 适合。 |
| 股票价格较高,数量需要自动换算 | 适合,但要接受舍入。 |
| 必须精确控制每个账户股数 | 不适合,考虑按股份或合约数。 |
| 期权、期货等有乘数产品 | 需要额外校验合约乘数。 |
def estimate_quantity(target_amount, limit_price, multiplier=1): # 这是下单前估算,最终分配以 TWS 为准。 if limit_price <= 0 or multiplier <= 0: raise ValueError("价格和乘数必须大于 0") return target_amount / (limit_price * multiplier)股票通常可以把 multiplier 理解为 1。期权、期货、指数衍生品不能这样简化,必须从合约详情里读取乘数。
账户 A 目标金额: 1000 USD账户 B 目标金额: 2000 USD限价: 50 USD估算数量: A 约 20 股,B 约 40 股实际结果还会受最小交易单位、价格变化、保证金和账户购买力影响。
order.faGroup = "Group_Amount"order.faMethod = ""order.faPercentage = ""faGroup 必须匹配 TWS 中已有的 FA 组。金额分配的具体账户金额通常来自 FA XML 配置,订单代码不要脱离 XML 单独假设账户顺序。
| 错误 | 后果 |
|---|---|
| 用最新价估算,实际限价不同 | 分配金额偏离目标。 |
| 忽略合约乘数 | 期权或期货数量严重错误。 |
| 订单数量太小 | 舍入后部分账户可能没有分配。 |
| 未检查购买力 | 某个账户可能被拒绝。 |