Qualquer pergunta de novato, de modo a não desorganizar o fórum. Profissionais, não passem por aqui. Em nenhum lugar sem você - 6. - página 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);
}

Se a primeira condição não for cumprida, temos um alerta: "a=2".

Se a segunda condição não for cumprida, temos um alerta: "a=1".

Quando a terceira condição não é cumprida, temos um alerta: "a=0".

Sim, a princípio foi inesperado de todo))

 
ALXIMIKS:

sem alerta a partir deste roteiro. O contrário se refere à condição " se (5>3){Alerta ("AAAAAAAAAAAAAAAAAAAAAAAA"); a=5;} "

Agradecimentos :

ter umAlerta: "a=0".

O resultado é que o manuseio sem condições só é possível para a última condição quando os colchetes "{" não são usados durante a enumeração de uma determinada série de condições.

Isso mesmo, a lógica funciona, apenas não coloque tudo em uma única fila:

int start(){
 int a=0;
 if (3>3)
    if (5>3)
       if (5>3){Alert ("AAAAAAAAAAAAAAAAAAAAAAA"); a=5;}
       else Alert ("a=", a);
}
então se tornará mais claro. Parênteses são necessários se for verdade: {operator1;operator2;operatorN}. Se houver apenas um operador, os colchetes podem ser omitidos, e como o operador também é uma condição, tudo é repetido.
 
artmedia70:

Ou seja, são necessários parênteses para organizar os ramos lógicos. Sem eles, a primeira condição é básica. Se isso não for verdade, as outras condições não serão preenchidas.

Tente resolver o problema:

E depois disso, descubra a que mais se refere:


caso contrário, refere-se a " se (b>c)".
 

Olá.

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)
  {...

A idéia é a seguinte: se uma vela está em alta em tal dia em tal hora, então vender = verdadeiro, se em baixa, então falso. Então em tal e tal dia em tal e tal hora vendemos, se vendemos=verdadeiro e compramos, se vice-versa.

Mas a condição não funciona por alguma razão, todos os comércios estão abertos para venda. Estou testando na M1.

 
ALXIMIKS:

caso contrário, refere-se a " se (b>c) ".

Correto.

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) выполнено");

Agora tente fazer a lógica sem os parênteses curvos:

Se (a>b), então as linhas se (b>c) Alerta() são executadas;

Caso contrário, se (d>e), então linhas se (e>f) Alerta() são executadas;

Em outras palavras: fazer outra referência à primeira condição. Sem o uso de aparelho encaracolado.

 
Antonius:

Olá.

A idéia é a seguinte: se uma vela está em alta em tal dia em tal hora, então vender = verdadeiro, se em baixa, então falso. Então em tal e tal dia em tal e tal hora vendemos, se vendemos=verdadeiro e compramos, se vice-versa.

Mas a condição não funciona por alguma razão, todos os comércios estão abertos para venda. Eu o testei no M1.

Tenho certeza de que é esta parte do código. Do que você mostrou é difícil tirar conclusões - há muitas variáveis desconhecidas e a própria abertura não é visível.

Para encontrar o motivo, imprima ou exiba os valores das variáveis com comentários. Então você pode ver seus valores a qualquer momento.

 
Antonius:

Olá.

A idéia é a seguinte: se uma vela está em alta em tal dia em tal hora, então vender = verdadeiro, se em baixa, então falso. Então em tal e tal dia em tal e tal hora vendemos, se vendemos=verdadeiro e compramos, se vice-versa.

Mas a condição não funciona por alguma razão, todos os comércios estão abertos para venda. Estou testando na M1.

É possível comparar assim? Não gosto da parte certa ("conversão de tipo lá colocará tudo em um fio com o valor "yyyy.mm.dd "TimeTradeIf")?
 TimeCurrent()>=StrToTime(TimeToStr(TimeCurrent(), TIME_DATE)+" "+TimeTradeIf
 
ALXIMIKS:
Eu não gosto da parte certa ("yyyy.mm.dd " valor doTimeTradeIf" será convertido em um fio)?

Você pode ver que o valor da TimeTradeIf é adicionado ao valor calculado. Quem lhe disse e lhe mostrou exatamente o que está contido em TimeTradeIf ?

Foi o que escrevi para a pessoa que há muitos valores desconhecidos e pouco claros para procurar o problema em seu código.

 
artmedia70:

Correto.

Agora tente fazer a lógica sem os parênteses curvos:

Se (a>b), então as linhas se (b>c) Alerta() são executadas;

Caso contrário, se (d>e), então linhas se (e>f) Alerta() são executadas;

Em outras palavras: fazer outra referência à primeira condição. Sem colchetes.


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 fez isso, não é muito conveniente para ler a lógica, se sem aparelho, e compilar ainda um pouco de " fricção ";' - ponto-e-vírgula inesperado" .

mas ainda alerta "condição se (d>e && e>f) estiver satisfeito" quando a>bnão estiver satisfeito .(se foi assim que eu entendi a tarefa).


 
Antonius:

Olá.

A idéia é a seguinte: se uma vela está em alta em tal dia em tal hora, então vender = verdadeiro, se em baixa, então falso. Então em tal e tal dia em tal e tal hora vendemos, se vendemos=verdadeiro e compramos, se vice-versa.

Mas a condição não funciona por alguma razão, todos os comércios estão abertos para venda. Estou testando na M1.


Na minha opinião, o cálculo começa no início da barra zero, quando a abertura ainda é igual ao fechamento e, claro, a diferença é 0. Tenho que verificar a barra anterior.
Razão: