接收市场规则
请求市场规则后,TWS 会通过 marketRule() 回调返回一组价格区间。
def marketRule(self, marketRuleId, priceIncrements): for item in priceIncrements: print(item.lowEdge, item.increment)| 字段 | 中文意思 |
|---|---|
marketRuleId | 市场规则编号。 |
lowEdge | 该价格区间的起始价格。 |
increment | 该区间允许的最小价格跳动。 |
如果返回多行,表示不同价格区间有不同最小跳动。例如低价区间可能按 0.0001 跳,高价区间按 0.01 或更大跳。
AAPL 返回示例
Section titled “AAPL 返回示例”MARKET_RULE=marketRuleId=4563;lowEdge=0.0;increment=0.01这表示 AAPL 在该规则下,从 0.0 价格区间开始,合法价格应按 0.01 递增。100.00、100.01 合法;100.005 不合法。
多区间规则怎么用
Section titled “多区间规则怎么用”如果返回多条价格区间,应该选择“最后一个 lowEdge <= price 的规则”。例如:
def find_increment(price: float, rows: list[tuple[float, float]]) -> float: selected_increment = rows[0][1] for low_edge, increment in rows: if price >= low_edge: selected_increment = increment else: break return selected_increment实际项目里建议用 Decimal 保存和比较价格,避免浮点误差影响合法价格判断。