新人对MQL4和MQL5的任何问题,对算法和代码的帮助和讨论 - 页 886

 
Sergey Voytsekhovsky:

是的,的确,我没有注意到这一点。它看起来更好,字母更少。

难道没有办法三个版本(我不知道怎么说才对) 放在一个运营商下吗

只有大括号--它们限制了条件。

 
int a,b,c,d,e,f,g,j;
a=10;
b=5;
d=3;
f=4;
j=1;
a>b?{c=d;e=f;g=j}:{c=0;e=0;g=0};
Print("c=",c," e=",e," g=",g);

我试图画一个这样的结构,而编译器向我吐出了一些难闻的东西。错在哪里?

 
Sergey Voytsekhovsky:

UURRAA,而灵魂已经唱起。阿列克谢,非常感谢你!!!!!

这一切都成功了,我不太明白没有阵列怎么可能做到

因为其描述已被删除。所以你完全可以不在这里做额外的阵列?


#property indicator_color3  clrGreen,clrRed

这就是阵列。

 
Sergey Voytsekhovsky:

是的,的确,我没有注意到这一点。它看起来更好,字母更少。

难道没有办法三个版本(我不知道怎么说才对) 放在一个运营商下吗

是的,我们可以。创建两个用户定义的函数并调用它们。

int m = 5;//0;//
m = m == 0 ? f1 : f2;

int f1()
 {
  return(1);
 }
int f2()
 {
  return(2);
 }
 
Konstantin Nikitin:

这就是我所说的。好了,我们结束了。只要他知道发生了什么事...

我知道了,谢谢。
我只是感到困惑。这对我来说都是新鲜事。

 
Alexey Viktorov:

你可以。创建两个自定义函数并调用它们。

我对你的理解正确吗?

ColorHistogram_2Colors[i]=ExtMainBuffer[i]>=50?ColorUp(i):ColorDown(i);
//+------------------------------------------------------------------+ 
int ColorUp(int i)
 {
   ColorHistogram_2Buffer1[i]=50;
   ColorHistogram_2Buffer2[i]=ExtMainBuffer[i];
  return(0);
 }
int ColorDown(int i)
 {
   ColorHistogram_2Buffer1[i]=ExtMainBuffer[i];
   ColorHistogram_2Buffer2[i]=50;
  return(1);
 }

我在指标中这样做了--它是有效的。

 
Sergey Voytsekhovsky:

我对你的理解正确吗?

我在指标中如此规定--它是有效的。

如果它起作用,它就是正确的。但我不会这样做。

首先,我不会对缓冲区进行修改。始终在其中一个地方无条件地写上50就足够了。

并在第二个缓冲区中放入大于或小于50的数值。那么在条件<=>下,应该只指定颜色。而且没有单独的功能。

 
Alexey Viktorov:

如果它起作用,它就是正确的。但这不是我的做法。

首先,我不会对=50的缓冲区进行花哨的改变。始终在其中一个地方无条件地写上50就足够了。

并在第二个缓冲区设置大于或小于50的值。然后在条件<=>下,你只需分配颜色。而且没有单独的功能。

如果<>50的条件只定义颜色,我同意你的看法,但它也是直方图蜡烛的开始/结束。因此,我不会争论,我将尝试检查,尽管可能你是对的。

 
Alexey Viktorov:

如果它起作用,它就是正确的。但这不是我的做法。

是的,的确,定义蜡烛开始/结束的两个DRAW_COLOR_HISTOGRAM2缓冲区中的任何一个都可以是开始或结束。现在一切都简单多了。

   ColorHistogram_2Buffer1[i]=50;
   ColorHistogram_2Buffer2[i]=ExtMainBuffer[i];
   ColorHistogram_2Colors [i]=ExtMainBuffer[i]>=50?0:1;

谢谢你的科学。

 

切换模式时如何重置 INDICATOR_MAXIMUM 和 INDICATOR_MINIMUM 值?

关键是这些值在一种模式中使用,而在另一种模式中不使用。当切换到不需要这些最大值和最小值的模式时,由于某种原因,它们被保存下来。这个问题在MQL4和MQL5中都存在。

例如,当在第一种模式下运行指标时,边界是不必要的,一切都能正常工作

第二种模式设定指标窗口的 最大和最小 边界。从第一模式切换到第二模式时,一切工作正常


但是,当从第二种模式切换到第一种模式时(第一种模式中不使用边界),这些最大值和最小值被保存,用户无法看到真实的指标值。


MQL4中的代码在附件文件中

有人遇到过这个问题吗?有没有人知道如何解决这个问题?

附加的文件:
test.mq4  4 kb
原因: