设为首页 收藏本站 切换语言

请教各位大牛一个问题,用mql4语言获取到了最近10根k线的最高值double类型a,和

| 发表于 2023-4-19 09:22:37 | 显示全部楼层 |复制链接
请教各位大牛一个问题,用mql4语言获取到了最近10根k线的最高值double类型a,和最低值b,最高值和现价Close[0] 做比较,if(close[0]>a){   执行开仓操作}   ,程序无任何报错,大括号的语句无法执行,有大牛了解问题出在哪吗
举报

评论 使用道具

精彩评论6

mengzaifei6
DD
 楼主 | 发表于 2023-4-19 09:27:00 | 显示全部楼层
      //获取最近20根k线的最高价和最低价
      string symbol = Symbol();
      ENUM_TIMEFRAMES timeframe = Period();
      double highestHigh = iHigh(symbol, timeframe, 0);   //获取最近k线最高价
      double lowestLow = iLow(symbol, timeframe, 0);      //获取最近k线最低价
      for(int i = 1; i < 10; i++) {
          double high = iHigh(symbol, timeframe, i);
          double low = iLow(symbol, timeframe, i);
          if(high > highestHigh) {
              highestHigh = high;
          }  
          if(low < lowestLow) {
              lowestLow = low;
          }
      }


     double shoupan=Close[0];        //获取现价价格
      

    if(shoupan>zuigaojia)      比较两个值的大小
      {
              //无任何报错,这个括号里的语句无法执行

      }
      //如果当前价格小于最近最低价做空
      if(shoupan<zuidijia)
      {
            //shoupan 和 zuidijia  这两个值都可以正常打印出来,就是无法对比
      }

举报

点赞 评论 使用道具

pxyhub
C
| 发表于 2023-4-19 09:39:49 | 显示全部楼层
不必用for循环这么麻烦! 给你个函数:iHighest()
举报

点赞 2 评论 使用道具

My05613828
CCC
| 发表于 2023-4-19 09:43:11 | 显示全部楼层
double 求区间最高价(string 币种,ENUM_TIMEFRAMES 周期,int 最高价类型,int 起始位置,int 计算数量)
  {
   double K线最高价=0;
   int X=iHighest(币种,周期,最高价类型,计算数量,起始位置);
   if(X!=-1)
      K线最高价=iHigh(币种,周期,X);
   return(K线最高价);
  }
//+------------------------------------------------------------------+
举报

点赞 1 评论 使用道具

westwuwei
DDD
| 发表于 2023-4-19 14:48:40 | 显示全部楼层
(暂不考虑double浮点计算小数误差)

收盘价怎么可能大于最高价呢?这类 if 判断永远不会成立。

要得到正确的 a、b 值的循环计算过程中,不能包括 [0] 下标的值。自己看看程序的“逻辑”,任何没有排除 [0] 值的算法都是错误的。
举报

点赞 评论 使用道具

ken138888
B
| 发表于 2023-4-19 17:46:12 | 显示全部楼层
这里高手真多
举报

点赞 评论 使用道具

tmzwmrhr
DDD
| 发表于 2023-6-3 17:38:33 | 显示全部楼层
首先i要等于0才行   然后就是问题最大的一点    你定义了high和low    而下面你用的zuigaojia和zuidijia   正常的话应该会报错    你的不报错就错了
其次最高值 high    =       High[iHighest(NULL,             0,             MODE_HIGH,           10, 0)];
其次最低值  low     =       Low[iLowest (NULL,             0,              MODE_LOW,        10, 0)];
Close[0]的话不用那么麻烦    直接用就行
例:
//获取最近10根k线的最高价和最低价
   double high=High[iHighest(NULL,     0,      MODE_HIGH,      10, 0)]; //获取最近k线最高价
   double low  = Low[iLowest (NULL,      0,      MODE_LOW,   10, 0)];  //获取最近k线最低价
   
    if(Close[0]>high)      比较两个值的大小
      {
              //无任何报错,这个括号里的语句无法执行
      }
      //如果当前价格小于最近最低价做空
      if(Close[0]<low)
      {
            //shoupan 和 zuidijia  这两个值都可以正常打印出来,就是无法对比
      }
举报

点赞 评论 使用道具

发新帖
EA交易
您需要登录后才可以评论 登录 | 立即注册

简体中文
繁體中文
English(英语)
日本語(日语)
Deutsch(德语)
Русский язык(俄语)
بالعربية(阿拉伯语)
Türkçe(土耳其语)
Português(葡萄牙语)
ภาษาไทย(泰国语)
한어(朝鲜语/韩语)
Français(法语)