포럼을 어지럽히 지 않도록 모든 초보자 질문. 프로, 놓치지 마세요. 너 없이는 아무데도 - 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"라는 경고가 표시됩니다.

두 번째 조건이 충족되지 않으면 "а=1"이라는 경고가 표시됩니다.

세 번째 조건이 충족되지 않으면 "а=0"이라는 경고가 표시됩니다.

흠, 처음에는 전혀 예상치 못한 예상치 못한 일이었습니다))

 
ALXIMIKS :

이 스크립트의 경고도 없습니다. Else는 " if ( 5 > 3 ){ Alert ( "AAAAAAAAAAAAAAAAAAAAA" ); a= 5 ;} " 조건을 나타냅니다.

확인 사항:

경고: "а=0"이 있습니다.

결과적으로 조건 실패 처리는 특정 조건 집합을 열거하는 동안 중괄호 "{"가 사용되지 않는 경우 마지막 조건에 대해서만 가능합니다.

모든 것이 정확하고 논리가 작동하지만 모든 것을 한 행에 넣을 필요는 없습니다.

 int start(){
 int a= 0 ;
 if ( 3 > 3 )
     if ( 5 > 3 )
       if ( 5 > 3 ){ Alert ( "AAAAAAAAAAAAAAAAAAAAAAA" ); a= 5 ;}
       else Alert ( "a=" , a);
}
그러면 더 명확해집니다. if가 true인 경우 중괄호가 필요합니다: {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)이면 행 if (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)이면 행 if (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) выполнено" );

타키가 그랬는데, 설계도가 없고 컴파일러가 ' ';' - 세미콜론 예기치 않은 "

그러나 여전히 경고 "(d> && e>f)가 충족 되면 " >b가 실패하면 발생합니다. (내가 그 작업을 이해했다면).


 
Antonius :

안녕하세요.

결론은 이렇습니다. 이런 저런 날에 양초가 강세라면 매도 = 참이고 약세라면 거짓입니다. 그런 다음, 이런 저런 날에 이런 시간에 우리는 매도=참이면 매도하고 반대이면 매수합니다.

그러나 어떤 이유로 조건이 작동하지 않으면 모든 거래가 판매를 위해 열립니다. M1에서 테스트 중입니다.


제 생각에는 계산이 0 막대의 시작 부분에서 시작되는데, 이때 시가는 여전히 종가와 같으며 물론 차이는 0입니다. 이전 막대를 확인해야 합니다.