오류, 버그, 질문 - 페이지 2888

 
Denis Diakonov :

말해주세요!

새 틱이 도착할 때 서버 시간이 업데이트되지 않는 이유는 무엇입니까?

어드바이저를 실행하는 순간 모든 것이 정상적으로 작동하지만 시간이 지남에 따라 현재 분의 새로운 값이 변수에 입력되지 않습니다.

저것들. 내 조언자는 변수 int M = TimeMinute(TimeCurrent())에 의해 수신된 숫자에 따라 작동합니다.

실제로 코드 라인은 참고서에서 가져온 것이며 작동하지도 않습니다.

예를 들어, 12분에 시작했습니다. 서버에서 반환된현재 시간 은 변수의 시간에 해당하며, 시계에서는 이미 15-20분이지만 변수는 12로 유지됩니다.

TimeMinute()는 MQL5에 존재하지 않습니다.

MetaTrader 4의 해당 스레드에서 MQL4에 대해 질문하는 것이 좋습니다.

플랫폼 간 솔루션이 필요한 경우 MqlDateTime 을 사용하십시오.

Документация по MQL5: Константы, перечисления и структуры / Структуры данных / Структура даты
Документация по MQL5: Константы, перечисления и структуры / Структуры данных / Структура даты
  • www.mql5.com
Порядковый номер в году day_of_year в високосном году, начиная с марта, будет отличаться от порядкового номера соответствующего дня в невисокосном году.
 
몇 가지 의심스러운 경고:
 void OnStart()
{
     for ( int i = 0 , j; i < 10 ; i = j ) //(1) Warning: possible use of uninitialized variable 'j'
    {
        j = i+ 1 ;
    }
}

좋아요:

 void OnStart ()
{
     for ( int i = 0 , j; i < 10 ;       ) //(2) нормально
    {
        j = i+ 1 ;
                                i = j ;
    }
}

근본적인 차이점은 무엇입니까?

 
A100 :
몇 가지 의심스러운 경고:

좋아요:

근본적인 차이점은 무엇입니까?

올바른 경고입니다. j 변수는 i에 값 j가 할당될 때 처음 사용하기 전에 초기화되지 않습니다.

그리고 두 번째 변형에서는 값 i + 1이 변수 j에 할당되고 그 다음에야 i = j가 할당됩니다.

이것은 경고없이 있어야하지만 테스트되지 않은 방법입니다 ...

 void OnStart ()
{
     for ( int i = 0 , j = 0 ; i < 10 ; i = j )
    {
        j = i+ 1 ;
    }
}
 
Alexey Viktorov :

올바른 경고입니다.

대안 영재의 경우 - 이들은 동일한 주기입니다.
 
TheXpert :
대안 영재의 경우 - 이들은 동일한 주기입니다.

그래서 무엇? 이 루프 ID는 미확인 변수를 허용합니까?

 
Alexey Viktorov :

그래서 무엇? 이 루프 ID는 미확인 변수를 허용합니까?

루프가 동일하면 컴파일러의 동작은 동일해야 하지만 다릅니다. 여기에 오류가 있습니다. (1)의 경우 경고가 표시되는 이유를 설명하고, (2)의 경우에는 표시되지 않는 이유를 설명했습니까? 근본적으로 달라진 점은 무엇입니까? 그런 다음 초기화되지 않은 변수를 사용하면 실행 시 최종 결과가 올바른 이유가 무엇입니까? 이 경우 난수가 있어야 합니다.

그러한 과학 논리가 있습니다. A와 B가 동일하고 A가 빨간색이면 B도 녹색 이 아니라 빨간색 이어야 합니다.

 
A100 :

루프가 동일하면 컴파일러의 동작은 동일해야 하지만 다릅니다. 여기에 오류가 있습니다. (1)의 경우 경고가 표시되는 이유를 설명하고, (2)의 경우에는 표시되지 않는 이유를 설명했습니까? 근본적으로 달라진 점은 무엇입니까? 그런 다음 초기화되지 않은 변수를 사용하는 경우 실행했을 때 최종 결과가 올바른 이유는 무엇입니까? 이 경우 난수가 같은 위치에 있어야 합니다 .

그러한 과학 논리가 있습니다. A와 B가 동일하고 A가 빨간색이면 B도 녹색 이 아니라 빨간색 이어야 합니다.

난수는 없습니다. 거기 제로.
MQ 및 이것은 고정됨))

 void OnStart ()
{
   int val;
   
   Print (val);
   Print ( IntegerToString (val));
}
 
Roman :

난수는 없습니다 . 거기 제로.
MQ 및 이것은 고정됨))

먼저 확인해야합니다. 그런 다음 이미 "눈보라를 운반하십시오"

 void OnStart ()
{
         for ( int i = 0 , j; i < 10 ; i++ )
        {
                 Print ( j );
                 break ;
        }
}

결과: -2052256859


 
A100 :

먼저 확인해야합니다. 그런 다음 이미 "눈보라를 운반하십시오"

결과: -2052256859


 void OnStart ()
{
   for ( int i = 0 , j; i < 10 ; i++ )
   {
       Print ( j );                
   }
}
 2020.10 . 27 17 : 14 : 46.623 TestScript (NZDUSD,M1)   0
2020.10 . 27 17 : 14 : 46.623 TestScript (NZDUSD,M1)   0
2020.10 . 27 17 : 14 : 46.623 TestScript (NZDUSD,M1)   0
2020.10 . 27 17 : 14 : 46.623 TestScript (NZDUSD,M1)   0
2020.10 . 27 17 : 14 : 46.623 TestScript (NZDUSD,M1)   0
2020.10 . 27 17 : 14 : 46.623 TestScript (NZDUSD,M1)   0
2020.10 . 27 17 : 14 : 46.623 TestScript (NZDUSD,M1)   0
2020.10 . 27 17 : 14 : 46.623 TestScript (NZDUSD,M1)   0
2020.10 . 27 17 : 14 : 46.623 TestScript (NZDUSD,M1)   0
2020.10 . 27 17 : 14 : 46.623 TestScript (NZDUSD,M1)   0

아마도 VirtualBox에 테스트 터미널이 설치되어 있기 때문일 것입니다.
또한 컴파일러는 변수가 초기화되지 않았다고 경고하지 않습니다.

그리고 이렇게 경고합니다

 void OnStart ()
{
   for ( int i = 0 , j; i < 10 ; i++ )
   {
       Print ( IntegerToString (j) );                
   }
}
 
Roman :
아마도 VirtualBox에 테스트 터미널이 설치되어 있기 때문일 것입니다.

당신의 난수는 0이고 내 난수는 540016640입니다.

 2020.10 . 27 17 : 24 : 25.244 0011 (EURUSD,H4)         540016640
2020.10 . 27 17 : 24 : 25.244 0011 (EURUSD,H4)         540016640
2020.10 . 27 17 : 24 : 25.244 0011 (EURUSD,H4)         540016640
2020.10 . 27 17 : 24 : 25.244 0011 (EURUSD,H4)         540016640
2020.10 . 27 17 : 24 : 25.244 0011 (EURUSD,H4)         540016640
2020.10 . 27 17 : 24 : 25.244 0011 (EURUSD,H4)         540016640
2020.10 . 27 17 : 24 : 25.244 0011 (EURUSD,H4)         540016640
2020.10 . 27 17 : 24 : 25.244 0011 (EURUSD,H4)         540016640
2020.10 . 27 17 : 24 : 25.244 0011 (EURUSD,H4)         540016640
2020.10 . 27 17 : 24 : 25.244 0011 (EURUSD,H4)         540016640

그러나 그것은 여전히 임의입니다