模拟交易
模拟交易账户 是由 OpenTraderWorld 自身运行的 broker。发送给它的订单按下单图表的实时价格成交,使用您自己的模拟资金,并按您设定的佣金、滑点和杠杆计算。没有密钥,没有交易场所,没有真钱。
它在图表上的交易方式与真实 broker 完全相同:同样的下单面板、快捷栏、订单线和持仓线、面板标签页和审计日志。这些内容见 从图表交易;本页介绍模拟账户特有的部分。
创建
设置 → Brokers → 添加账户,broker 选 Paper trading。不需要凭据。设置项(应用中以英文显示):
| 设置 | 默认值 | 含义 |
|---|---|---|
| Account currency | USD | 资金和盈亏的货币,3 到 5 个字母 |
| Starting balance | 100000 | 记为第一笔存款 |
| Commission per order | 0 | 每笔成交的固定金额 |
| Commission per unit | 0 | 每股或每张合约 |
| Commission (% of value) | 0 | 0.1 表示成交金额的 0.1% |
| Minimum commission | 0 | 每笔成交的最低费用 |
| Slippage (basis points) | 0 | 5 表示 0.05%,对您不利 |
| Leverage | 1 | 1 表示现金账户 |
| Short selling | yes | no 拒绝没有持仓的卖出 |
| Fill on | quote | quote 按 bid 和 ask 成交,last 按最新价成交 |
数字必须大于或等于零,杠杆至少为 1。每次成交都会重新读取设置,因此修改从下一笔成交起生效。
新建的模拟账户默认打开 所有模块 和 Trading。模拟账户的交易不需要密码,也从不受 交易锁 限制。
测试连接 会返回账户的 equity、资金、未平仓持仓和挂单。
资金
在 设置 → Brokers 中账户下方的 模拟账户 面板,有一个 金额 字段和三个按钮:
- 存入 把金额加到资金中。
- 取出 取走金额,上限为持有的资金(不是 equity)。
- 重置账户 删除所有订单、成交和资金变动,然后以一笔存款重新开始:输入的金额,或字段为空时的初始资金。设置保留,已导入 journal 的交易也保留。
面板还显示累计存入金额,以及最近 50 笔已不再有效的订单及其状态(已成交、已撤销、被拒、已过期)和原因。被拒的原因就在这个列表中说明。
订单如何成交
按哪个价格
订单按 图表数据连接器的实时行情 成交:即订单来源的连接器,或授权给图表的该数据商连接器。引擎在服务器上运行,因此 图表关闭时订单照样成交,应用停止时则暂停。
- 没有实时行情的品种在下单时被拒绝。指数也会被拒绝:没有可交易的市场。
- 引擎跟踪数据商最细的实时 K 线(有则为 1 分钟),以及行情发布的报价。只有订单生效之后出现的价格才算数。
- 使用 Fill on: quote 时,只要报价不超过 15 秒,买单按 ask 成交,卖单按 bid 成交。否则,以及使用 last 时,双方都按最新价成交。
- 超过 2 分钟的 K 线不会被使用。休市时发出的市价单会等待第一个新价格,而不是被拒绝。
- 如果行情中断,每 10 秒重试一次,订单继续等待。如果数据连接器被删除,其订单将无法再成交。
按订单类型
| 类型 | 何时成交 | 成交价 |
|---|---|---|
| Market | 下一个价格 | 该价格,加滑点 |
| Limit | 市场触及限价 | 限价,若市场已越过则更优。无滑点 |
| Stop | 市场触及止损价 | 触及时为止损价,跳空时为市价,加滑点 |
| Stop limit | 先触及止损价,再触及限价 | 按限价单处理,可能在同一价格 |
| Trailing stop | 市场从 stop 开始以来的最优价(卖出之后为最高价,买入之后为最低价)回撤达到跟随距离 | 按 stop 处理 |
| MIT | 市场从 limit 一侧到达触发价 | 市价,加滑点 |
| LIT | 先触及触发价,再触及限价 | 按限价单处理 |
- 没有部分成交:订单整笔成交,不检查成交量或流动性。
- 带起始价的 trailing stop 会等待市场到达该价格(卖出之后为上涨至该价,买入之后为下跌至该价),然后从该价格开始跟随。其最优价在重启后仍保留。
- Reduce only:单独下单时会被拒绝,除非账户在另一侧持有仓位。成交时它被限制为届时所持的数量,没有可减少的内容时则被撤销。
- Post only:若会立即与当前 bid 或 ask(无报价时为最新价)成交,则在下单时被拒绝的 limit。
- 没有 iceberg、触发价选择、常规时段外、close-position 或 algo:只有实时价格而没有深度、时段或 mark,就无从模拟它们,因此 Ticket 不提供这些。
- 已知 tick 时,成交价会按品种的 tick 取整。
- 每笔成交的 佣金 = 每单 + 每单位 × 数量 + % × 成交金额,不足最低值时按最低值。以品种货币收取。
有效期
- Day(默认)在下一个 UTC 午夜 过期,而不是交易所收盘时。
- GTC 永不过期。GTD 在指定的日期和时间过期。
- IOC 和 FOK 如果遇到的第一个价格不能使其成交就会被撤销。休市时,它们会等待这第一个价格。Paper 整笔成交,因此两者结果相同。
大约每 10 秒检查一次过期;之后订单显示为已过期。
括号订单与 OCO
- take profit 或 stop loss 会等待其入场单成交后才生效。如果入场单被撤销、被拒或过期,其出场单也会被撤销。
- 在 OCO 中,一笔成交会撤销同组的另一笔订单及其出场单。
- 挂单的价格、数量和有效期可以修改。平仓 发送一笔 GTC 市价单,然后撤销该持仓的出场单。
资金与杠杆
一个持仓占用其价值 ÷ 杠杆。期货则占用每张合约的保证金(见下文),不考虑杠杆。
开仓或加仓的订单在下单时检查一次,在成交价时再检查一次,包括佣金。如果账户占用的资金将超过其 equity,订单被拒绝:
not enough funds: the positions would tie up X USD and the account's equity is Y USD
减仓订单始终允许。
Short selling 为
no时,会导致做空的卖出被拒绝。没有追加保证金通知,也没有强制平仓:equity 可以低于已用保证金。
期货
期货需要在图表的 品种设置 中填写合约信息:
- 最小变动价位、点值和货币。 为空时,会从开源的 QuantConnect Lean 合约规格中填充,这些规格内置于应用并每周更新。对话框会列出已填充的字段;保存即保留,或输入您自己的值。您保存的值始终优先。
- 每张合约保证金(模拟),以品种货币计:使用您 broker 的初始保证金。或勾选 改为按合约全额价值计算:数量 × 价格 × 点值。
没有保证金的期货订单会被拒绝,图表会提供 设置保证金(打开品种设置)或 使用全额价值。任选其一都会重新发送订单。
代码会被还原为合约根代码(MNQZ6、ESZ25、@ES、ES=F、/ES)。在多个交易所上市但未指定交易所的根代码会报错并列出候选:绝不猜测市场。没有点值的期货或期权会被拒绝,没有货币的品种也会被拒绝,外汇货币对除外,其货币从名称读取(EURUSD 以 USD 计)。
账户数字
订单面板的 Account 标签页和设置面板显示:
| 数字 | 计算方式 |
|---|---|
| 现金 | 存款 − 取款 + 已实现 − 佣金 |
| 浮动盈亏 | Σ(现价 − 平均价)× 数量 × 点值 |
| Equity | 现金 + 浮动盈亏 |
| 已实现 | 自上次重置以来,扣佣金前,按平均成本法 |
| 佣金 | 费用总额 |
| 初始保证金 | 期货每张合约保证金 + 其他持仓价值 ÷ 杠杆 |
| 可用资金 | equity − 初始保证金,最低为零 |
| 持仓价值 | 总敞口,多空合计 |
标签页打开时每 5 秒刷新一次。
其他货币
账户只有一种货币。其他货币的品种按 journal 的当日汇率 换算:已实现盈亏和费用按成交当日的汇率,浮动盈亏和保证金按今日汇率。
- 没有汇率时订单被拒绝:
no EUR to USD rate: add one in the journal's FX settings, or trade in USD。 - 之后汇率缺失的持仓会被列为未计入总额。
导入 journal
模拟成交的导入方式与任何 broker 相同:Journal → 导入 → 从 broker 拉取,选择模拟账户、账簿和期间,预览,导入。见 将交易导入 journal。自动同步 同样可用。
须知
- 金额按精确的小数保存,就像交易所记账一样:0.1 买三次再卖 0.3,不会留下任何未平仓位,价格也必须恰好落在品种的 tick 上。
- 资金、订单和成交保存在数据库中,重启后仍在。实时价格不保存:重启后,持仓按平均价估值,直到下一个价格出现。
- 删除账户会删除其资金、订单和成交。
- 每次订单调用都记录在 审计日志 中。
- 未模拟:排队位置、流动性、部分成交、利息、借券费用、资金费率、股息。
- 模拟订单和资金变动不开放给 AI 代理(MCP),模拟账户在 演示模式 下被禁用。