3评论

6收藏

给MT4指标和ea加账户限制的方法

avatar hao5719 | 165 人阅读 | 3 人评论 | 2024-12-10

假设你想要限制某个指标只在特定的账户上运行,下面是一个简单的示例代码:

  1. // 设置允许的账户号(可以根据实际情况修改)
  2. #define ALLOWED_ACCOUNT 12345678

  3. // 在指标初始化时进行检查
  4. int OnInit()
  5. {
  6.    // 获取当前交易账户的号码
  7.    int accountNumber = AccountInfoInteger(ACCOUNT_LOGIN);
  8.    
  9.    // 检查当前账户是否符合要求
  10.    if(accountNumber != ALLOWED_ACCOUNT)
  11.    {
  12.       Print("该账户不允许使用此指标。");
  13.       // 禁用指标
  14.       return INIT_FAILED;
  15.    }
  16.    
  17.    // 如果账户合法,继续执行初始化
  18.    return INIT_SUCCEEDED;
  19. }
复制代码



假如你希望限制指标只在模拟账户中运行,你可以这样做:

  1. // 在初始化时检查账户类型
  2. int OnInit()
  3. {
  4.    int accountType = AccountInfoInteger(ACCOUNT_TYPE);

  5.    // 如果是模拟账户,则继续运行,否则停止
  6.    if(accountType != ACCOUNT_DEMO)
  7.    {
  8.       Print("此指标仅限于模拟账户使用。");
  9.       return INIT_FAILED;
  10.    }

  11.    return INIT_SUCCEEDED;
  12. }
复制代码




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

评论|共 3 个

山沟里的葫芦娃

发表于 2024-12-11 02:01:39 来自手机 | 显示全部楼层

来几段ea限制时间开单的代码呢

hao5719

发表于 2024-12-11 10:16:20 | 显示全部楼层

// 定义到期时间 (例如:2024年12月31日)
datetime expiry_time = D'2024.12.31 23:59:59';

// 指标初始化函数
int OnInit()
{
   // 获取当前时间
   datetime current_time = TimeCurrent();
   
   // 如果当前时间超过了到期时间
   if (current_time > expiry_time) {
      // 输出提示消息
      Print("该指标已过期,无法使用!");
      
      // 在图表上显示过期消息
      ObjectCreate(0, "ExpiryText", OBJ_LABEL, 0, 0, 0);
      ObjectSetInteger(0, "ExpiryText", OBJPROP_XSIZE, 300);
      ObjectSetInteger(0, "ExpiryText", OBJPROP_YSIZE, 30);
      ObjectSetInteger(0, "ExpiryText", OBJPROP_XDISTANCE, 10);
      ObjectSetInteger(0, "ExpiryText", OBJPROP_YDISTANCE, 10);
      ObjectSetString(0, "ExpiryText", OBJPROP_BGCOLOR, clrRed);
      ObjectSetString(0, "ExpiryText", OBJPROP_COLOR, clrWhite);
      ObjectSetString(0, "ExpiryText", OBJPROP_TEXT, "指标已过期,无法使用!");
      
      // 禁用指标
      return(INIT_FAILED);
   }
   
   // 如果未过期,继续初始化
   return(INIT_SUCCEEDED);
}

// 指标计算函数
void OnTick()
{
   // 获取当前时间
   datetime current_time = TimeCurrent();
   
   // 如果当前时间超过到期时间
   if (current_time > expiry_time) {
      // 输出提示消息
      Print("该指标已过期,无法使用!");
      
      // 显示图表上的过期提示
      ObjectSetString(0, "ExpiryText", OBJPROP_TEXT, "指标已过期,无法使用!");
   } else {
      // 执行正常的指标计算逻辑
      // 例如,计算移动平均线等
   }
}


WA263222

发表于 2024-12-11 10:52:26 | 显示全部楼层

嗯,感谢大佬

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

EA之家评论守则