EA Circuit Breaker
- 实用工具
- 版本: 1.0
- 激活: 10
大多数风控工具管的是整个账户:一旦触发上限,账户上所有的 EA 都会一起停下来,包括那些什么都没做错的。EA Circuit Breaker 一次只管一个 EA——自己的一行、自己的四种上限、自己的结果。默认情况下什么都不平、什么都不停,实盘账户上也不会自己下任何一笔单。
= EA Circuit Breaker
Account 75584608 Hedging JPY
Today -242056.00 Open 4 / 0.27 lots
NAME TODAY OPEN LIMIT STATE
Trend bot -19200.00 0/0.00 -22725.48 [#####-] WARN
Range bot -61250.00 0/0.00 -22725.48 [######] LOCKED
Swing EA -98335.00 0/0.00 -22725.48 [######] LOCKED
Gold scalper -2300.00 1/0.05 -5302.61 [###---] OK
Grid v3 -8180.00 2/0.20 -8711.43 [######] WARN
News EA -12540.00 1/0.02 -7953.92 [######] LOCKED
Selected Gold scalper magic 1720
Gold scalper Alert only
Daily Total Max pos lots
0.70 0.70 0 0.00
e.g. Mon-Fri 08:00-17:00 Link chart
Chart --
Unlock Reset total
Selected Grid v3 magic 1721
1.15 2.40 0 0.00
Warning: 94% of the daily limit used
= EA Circuit Breaker 4 LOCKED
Grid v3 这一行的进度条六格全满,状态却是 WARN 而不是 LOCKED:进度条只有六格,越接近上限越会向上取整显示,真正决定状态的是上限本身,警告文字会给出确切用掉的百分比。Today 比下面六行加起来还大:这个账户跑的 EA 比表格一次能显示的多,Today 和折叠标题里的 LOCKED 计数一样,数的是账户上所有的 EA,不只是看得见的几行。最上面三行的上限一样,Gold scalper 的却不同:上面三行还停在默认值,而任何一行的上限除以那一行自己 Today 的结果,得到的都是同一个相对余额的比例——余额本身从不出现在屏幕上。Max pos 和 lots 都显示零,意思是那项上限被关掉了,不是"不许持仓",两者默认都是关的。Chart -- 表示还没有绑定图表,绑定之前用不了 Stop the chart。
启动时会扫一遍持仓和最近 30 天(InpHistoryDays)的成交记录,给每个魔术号建一行,不用设置。行名不是手动输入的,是从那个 EA 自己写在订单里的备注取来的,因为 MetaTrader 并不保存魔术号和名字的对应表。没有魔术号的交易归入 Manual / unknown。
每一行都有自己独立的四种上限——当日亏损、累计亏损、持仓数量、总手数——每一种只要设成零就是关闭。交易时段用 Mon-Fri 08:00-17:00 这样的格式限制某个 EA 什么时候能交易,留空就是全天允许,格式写错了不会被悄悄忽略,而是标红提示。
每个 EA 可选三种应对方式。Alert only 是默认动作(InpDefaultAction):什么都不平,那一行变红,理由写出来。每次会话第一次自动执行动作之前,面板会横跨整个宽度再确认一次,等这一下点击(InpConfirmActions)。Close and lock 会平掉那个 EA 的持仓、撤掉它的挂单,但不能让它停手——它照样会继续开单,这个工具就继续把新开的单平掉,每一个来回都要付一次点差成本,次数和累计成本会显示在面板上并写进日志。Stop the chart 会真正把那个 EA 从终端上拿下来,关闭前先保存图表模板,但前提是先用 Link chart 把它绑定到一张图表——MetaTrader 并不保存魔术号和图表的对应关系。这个动作在 Algo Trading 关闭时依然有效,这一点和 Close and lock 不同。Manual / unknown 只能被观察,选不了应对方式。
Selected News EA magic 1722
News EA Close and lock
1.05 3.70 0 0.00
Mon-Fri 08:00-17:00 Link chart
Chart USDJPY,H1
Daily loss limit reached - this EA is locked
Today -242063.00 Open 3 / 0.25 lots
把 News EA 切换成 Close and lock 之后,Open 正好减少了那一个 EA 原本持有的量,Gold scalper 和 Grid v3 的数字则完全没动——只有被操作的那个 EA 发生变化,其余所有 EA 照常交易。
交易时段一到允许的时间范围就会自动解除。当日亏损、持仓数量和总手数上限会在同一个每日重置时刻自动解除(InpDayResetHour)。累计亏损上限从不会自动解除,必须查看后连按两次 Unlock,这样做也会把累计金额重新从零开始算。Reset total 只对累计金额做同样的事,不会碰任何锁定状态。
要把一个 EA 的交易和另一个区分开,只有在对冲账户上才成立;净额账户会把同一品种的持仓合并成一个。这个工具会在终端同步完成后立刻检查账户类型,之后每秒都重新检查一次;在净额账户上它会退回到只观察的状态,并在面板上一直提示:
Netting account: per-EA actions are disabled
Trades without a magic number are only watched, never stopped
First action of this session - press to allow it
它没办法命令另一个 EA 停止交易——MQL5 里没有这样的调用——能做的只是不断平掉它重新开的单,或者关掉它的图表。净额账户上无法按 EA 分层操作。Algo Trading 关闭时 Close and lock 无法执行,但 Stop the chart 仍然可以。手动交易只会被观察。它占用一张图表,拒绝在第二张图表上启动。共用同一个魔术号的两个 EA 会合并显示成一行。
免费演示在策略测试器里运行,而测试器只给一个 EA——这个工具存在的理由本身在那里根本不会出现。只有在测试器里,它才会自己用别的魔术号开几笔小额练习单来填满表格,同时屏幕上会一直显示 Tester self-test(InpTesterDemo);在实盘账户上它从来不会自己下单。测试器里看不到的是一个 EA 被锁定、其他 EA 照常交易的场景——那需要一个同时跑两三个 EA 的模拟账户来验证。
Detection: InpHistoryDays InpIncludeManual
Default limits: InpLimitBase InpLimitUnit InpDefaultDailyLimit InpDefaultTotalLimit InpDefaultMaxPos InpDefaultMaxLots InpIncludeFloating InpWarnPercent InpDayResetHour
Action: InpDefaultAction InpConfirmActions InpSaveTemplate InpMaxCloseRetries
Alerts: InpAlertPopup InpAlertPush InpAlertSound
Tester: InpTesterDemo InpMagicSelf
Panel: position, width, font and six colours
每一行都从默认上限开始,所以不用设置任何东西,第一分钟起每个 EA 就已经被盯着了。名字、上限、交易时段、选定的动作、图表绑定、锁定状态和累计金额的起算日期,都按账户号保存在一个文件里,换周期或者重启终端都不会丢。面向 MetaTrader 5 和对冲账户设计,占用一张空闲图表,不调用 DLL、不发起外部请求、不读写外部文件。
这个工具把账户上已经在跑的 EA 排好,设好上限和动作之后,就对越线的那个执行,并写清楚原因——它不会说该交易什么,也不对您的交易结果作任何承诺。交易存在亏损风险,建议先在模拟账户上试用。
