老周 发表于 2017-3-16 15:36:46

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


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

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

//////
void A_Stop() {
   int res;
   bool 判断开关;
   double 账户净值;
   if (低于净值停止 <= 0.0) return;
   if (!开关返回值) {
      if (AccountNumber() == 0 || AccountEquity() == 0.0 || AccountBalance() == 0.0) return;
      判断开关 = FALSE;
      账户净值 = AccountEquity();
      if (账户净值 < 低于净值停止 && 低于净值停止 > 0.0) {
         判断开关 = TRUE;
      }
      if (判断开关) 开关返回值 = TRUE;
   }
   if (开关返回值) {
      for (int l = OrdersTotal() - 1; l >= 0; l--) {
         if (OrderSelect(l, SELECT_BY_POS)) {
             {
               switch (OrderType()) {
               case OP_BUY:
               case OP_SELL:
                  res=OrderClose(OrderTicket(), OrderLots(), OrderClosePrice(), 9999);
                  ExpertRemove();
                  SendMail("帐户低于净值警告","目前净值低于设置最低净值警告,EA已自动关闭!");break;
               default:
                  res=OrderDelete(OrderTicket());
                  ExpertRemove();
                  SendMail("帐户低于净值警告","目前净值低于设置最低净值警告,EA已自动关闭!");break;               
               }
            }
         }
      }
   }
}

qq_Michael_FNk 发表于 2021-7-12 19:50:30

感谢分享

alltime168 发表于 2022-5-12 21:22:24

老师你好,我想问一下,账号净值低于设定值关闭所有订单并退出EA 这段代码如何加到其他人发的ea里面呢?谢谢{:1_180:}
页: [1]
查看完整版本: 账号净值低于设定值关闭所有订单并退出EA