2评论

4收藏

账号净值低于设定值关闭所有订单并退出EA

avatar 老周 | 2932 人阅读 | 2 人评论 | 2017-03-16


该函数模块能够有效的控制风险。在账号净值小于某个数值的时候平仓所有订单并停止EA交易。

  1. extern string 关闭EA并发邮件   = "账户低于净值,关闭所有订单并退出EA";
  2. extern double 低于净值停止     = 0.0;
  3. ////
  4. bool 开关返回值 = FALSE;
  5. ////
  6. int start()
  7. {
  8. A_Stop();////
  9. return(0);
  10. }

  11. //////
  12. void A_Stop() {
  13.    int res;
  14.    bool 判断开关;
  15.    double 账户净值;
  16.    if (低于净值停止 <= 0.0) return;
  17.    if (!开关返回值) {
  18.       if (AccountNumber() == 0 || AccountEquity() == 0.0 || AccountBalance() == 0.0) return;
  19.       判断开关 = FALSE;
  20.       账户净值 = AccountEquity();
  21.       if (账户净值 < 低于净值停止 && 低于净值停止 > 0.0) {
  22.          判断开关 = TRUE;
  23.       }
  24.       if (判断开关) 开关返回值 = TRUE;
  25.    }
  26.    if (开关返回值) {
  27.       for (int l = OrdersTotal() - 1; l >= 0; l--) {
  28.          if (OrderSelect(l, SELECT_BY_POS)) {
  29.              {
  30.                switch (OrderType()) {
  31.                case OP_BUY:
  32.                case OP_SELL:
  33.                   res=OrderClose(OrderTicket(), OrderLots(), OrderClosePrice(), 9999);
  34.                   ExpertRemove();
  35.                   SendMail("帐户低于净值警告","目前净值低于设置最低净值警告,EA已自动关闭!");break;
  36.                default:
  37.                   res=OrderDelete(OrderTicket());
  38.                   ExpertRemove();
  39.                   SendMail("帐户低于净值警告","目前净值低于设置最低净值警告,EA已自动关闭!");break;                 
  40.                }
  41.             }
  42.          }
  43.       }
  44.    }
  45. }
复制代码


""
还没有人打赏,支持一下

评论|共 2 个

qq_Michael_FNk

发表于 2021-7-12 19:50:30 来自手机 | 显示全部楼层

感谢分享

alltime168

发表于 2022-5-12 21:22:24 | 显示全部楼层

老师你好,我想问一下,账号净值低于设定值关闭所有订单并退出EA 这段代码如何加到其他人发的ea里面呢?谢谢

您需要登录后才可以回帖 登录 | 注册 微信登录

EA之家评论守则