任何菜鸟问题,为了不给论坛添乱。专业人士,不要路过。没有你就无处可去 - 6. - 页 236

 
int start(){
 int a=0;
 if (5>3)
 if (5>3)
 if (5>3){Alert ("AAAAAAAAAAAAAAAAAAAAAAA"); a=5;}
 else Alert ("a=", a);
 else Alert ("a=", a+1);
 else Alert ("a=", a+2);
}

如果不满足第一个条件,我们有一个警告:"a=2"

如果不满足第二个条件,我们有一个警告:"a=1"

当第三个条件不满足时,我们有一个警告:"a=0"。

是的,一开始是出乎意料的))。

 
ALXIMIKS:

没有来自这个脚本的警报。Else指的是条件"if (5>3){Alert ("AAAAAAAAAAAAAAA"); a=5;}"

鸣谢 :

有 anAlert: "a=0".

其结果是,当在列举某一系列条件时没有使用大括号"{"时,只有最后一个条件可以进行非条件处理。

这是正确的,这个逻辑是可行的,只是不要把所有东西都放在一行。

int start(){
 int a=0;
 if (3>3)
    if (5>3)
       if (5>3){Alert ("AAAAAAAAAAAAAAAAAAAAAAA"); a=5;}
       else Alert ("a=", a);
}
那么它将变得更加清晰。如果if为真,则需要括号:{operator1;operator2;operatorN}。如果只有一个运算符,大括号可以省略,由于运算符也是一个条件,所以一切都会重复。
 
artmedia70:

也就是说,需要用括号来组织逻辑分支。没有他们,第一个条件是基本的。如果它不真实,其他条件也不会得到满足。

试着去解决这个问题。

在这之后,要弄清楚它还指的是什么。


else指的是 " 如果 (b>c)"
 

你好。

if (DayOfWeek()==DayOfWeekIf
  && TimeCurrent()>=StrToTime(TimeToStr(TimeCurrent(), TIME_DATE)+" "+TimeTradeIf)
  && TimeCurrent()<StrToTime(TimeToStr(TimeCurrent(), TIME_DATE)+" "+TimeTradeIf)+Duration)
   {
    if  (iClose("XAUUSD",PERIOD_H1,0)-iOpen("XAUUSD",PERIOD_H1,0)>=0)
    Sell = true;
    if  (iOpen("XAUUSD",PERIOD_H1,0)-iClose("XAUUSD",PERIOD_H1,0)>0)
    Sell =false;
   }
  if (DayOfWeek()==DayOfWeekOpen
  && TimeCurrent()>=StrToTime(TimeToStr(TimeCurrent(), TIME_DATE)+" "+TimeTradeOpen)
  && TimeCurrent()<StrToTime(TimeToStr(TimeCurrent(), TIME_DATE)+" "+TimeTradeOpen)+Duration)
  {...

这个想法是这样的:如果在这样的日子里,在这样的时间里,蜡烛是看涨的,那么卖出=真,如果看跌,则是假。然后在这样的一天,这样的时间,我们卖出,如果卖出=真实,买入,如果反之亦然。

但由于某些原因,该条件不起作用,所有的交易都是为卖出而开的。我正在M1上测试它。

 
ALXIMIKS:

else指的是 " 如果 (b>c)"。

正确。

if (a>b)
   if (b>c) 
      Alert(" условие if (a>b && b>c) выполнено ");
   else if (d>e) 
      if (e>f) 
         Alert(" условие if (d>e && e>f) выполнено");

现在试着做一下没有大括号的逻辑。

如果(a>b),则执行if (b>c)Alert() 行。

否则,如果(d>e),则执行如果(e>f)Alert()行。

换句话说:让else指的是第一个条件。不使用大括号。

 
Antonius:

你好。

这个想法是这样的:如果在这样的一天,这样的时间,蜡烛是看涨的,那么卖出=真,如果看跌,则是假。然后在这样的一天,这样的时间,我们卖出,如果卖出=真实,买入,如果反之亦然。

但由于某些原因,该条件不起作用,所有的交易都是为卖出而开的。我已经在M1上测试过了。

我确信是代码的这一部分。从你所展示的情况来看,很难得出结论--有很多未知的变量,而且开放本身也不可见。

要想自己找到原因,可以打印或显示带有注释的变量值。然后你可以在任何时候看到他们的价值。

 
Antonius:

你好。

这个想法是这样的:如果在这样的日子里,在这样的时间里,蜡烛是看涨的,那么卖出=真,如果看跌,则是假。然后在这样的一天,这样的时间,我们卖出,如果卖出=真实,买入,如果反之亦然。

但由于某些原因,该条件不起作用,所有的交易都是为卖出而开的。我正在M1上测试它。

有可能像这样进行比较吗? 我不喜欢右边的部分("类型转换那里将把所有东西放在一个字符串中,其值为"yyyy.mm.dd"TimeTradeIf")
 TimeCurrent()>=StrToTime(TimeToStr(TimeCurrent(), TIME_DATE)+" "+TimeTradeIf
 
ALXIMIKS:
我不喜欢右边的部分("yyyy.mm.dd "TimeTradeIf " 值将被转换为字符串

你可以看到,TimeTradeIf值被添加到计算值中。谁告诉你并向你展示了 TimeTradeIf中的确切内容?

这就是我写给那个人的,有很多未知和不清楚的值,要在他的代码中寻找问题。

 
artmedia70:

正确。

现在试着做一下没有大括号的逻辑。

如果(a>b),则执行if (b>c) Alert()行。

否则,如果(d>e),则执行如果(e>f)Alert()行。

换句话说:让else指的是第一个条件。没有大括号。


if (a>b)
   if (b>c) Alert(" условие if (a>b && b>c) выполнено ");
   else; 
else 
   if (d>e) 
      if (e>f)Alert(" условие if (d>e && e>f) выполнено");

Taki做了,对于阅读逻辑来说不是很方便,如果没有大括号,编译器还有点擦 ";'--分号意外"

a>b不满足时, 仍然提醒"条件如果(d>e &&e>f)满足" (如果我是这样理解这个任务的话)。


 
Antonius:

你好。

这个想法是这样的:如果在这样的日子里,在这样的时间里,蜡烛是看涨的,那么卖出=真,如果看跌,则是假。然后在这样的一天,这样的时间,我们卖出,如果卖出=真实,买入,如果反之亦然。

但由于某些原因,该条件不起作用,所有的交易都是为卖出而开的。我正在M1上测试它。


在我看来,计算是从零条的开始,当开盘仍等于收盘时,当然差值为0。