Skip to content

模拟交易 ​

模拟交易账户 是由 OpenTraderWorld 自身运行的 broker。发送给它的订单按下单图表的实时价格成交,使用您自己的模拟资金,并按您设定的佣金、滑点和杠杆计算。没有密钥,没有交易场所,没有真钱。

它在图表上的交易方式与真实 broker 完全相同:同样的下单面板、快捷栏、订单线和持仓线、面板标签页和审计日志。这些内容见 从图表交易;本页介绍模拟账户特有的部分。

创建 ​

设置 → Brokers → 添加账户,broker 选 Paper trading。不需要凭据。设置项(应用中以英文显示):

设置默认值含义
Account currencyUSD资金和盈亏的货币,3 到 5 个字母
Starting balance100000记为第一笔存款
Commission per order0每笔成交的固定金额
Commission per unit0每股或每张合约
Commission (% of value)00.1 表示成交金额的 0.1%
Minimum commission0每笔成交的最低费用
Slippage (basis points)05 表示 0.05%,对您不利
Leverage11 表示现金账户
Short sellingyesno 拒绝没有持仓的卖出
Fill onquotequote 按 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),模拟账户在 演示模式 下被禁用。