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

 

x64 시스템에서만 가능한 새로운 빌드 버그입니다(특히 Windows 7, 코어 i7 프로세서에서). 이전 빌드에서는 그렇지 않았습니다. 이 버그는 다음과 같습니다.

Expert Advisor의 소스 코드는 크게 변경하지 않고(예: 일부 변수의 값만 변경) 다시 컴파일해도 테스트 결과 는 그대로 유지됩니다.

심지어 다음과 같이 진행되었습니다.

void OnTick() 함수에서 첫 번째 줄 반환을 삽입합니다. :) 컴파일하고 실행해도 결과는 똑같습니다!!!! 일반적으로 라인이 있어야하지만.

상황을 벗어나는 방법은 *.ex5 파일을 삭제하고 다시 컴파일하거나, 컴파일러가 맹세하도록 일부 쓰레기 스레드를 작성한 다음 컴파일하는 것이었습니다.

내일 나는 이것이 x32 비트 OS에서 발생하는지 확인할 것입니다.

나는 또한 x64 새 창에서 차트가 매우 오랫동안 열려 있고 매우 오랫동안 삭제된다는 사실도 알아냈습니다!

또한 단말기는 5초 동안 "응답 없음"이라는 문구와 함께 멈춥니다.

 
bobsley :

x64 시스템에서만 가능한 새로운 빌드 버그입니다(특히 Windows 7, 코어 i7 프로세서에서). 이전 빌드에서는 그렇지 않았습니다. 이 버그는 다음과 같습니다.

Expert Advisor의 소스 코드는 크게 변경하지 않고(예: 일부 변수의 값만 변경) 다시 컴파일해도 테스트 결과는 그대로 유지됩니다.

심지어 다음과 같이 진행되었습니다.

void OnTick() 함수에서 첫 번째 줄 반환을 삽입합니다. :) 컴파일하고 실행해도 결과는 똑같습니다!!!! 일반적으로 라인이 있어야하지만.

상황을 벗어나는 방법은 *.ex5 파일을 삭제하고 다시 컴파일하거나, 컴파일러가 맹세하도록 일부 쓰레기 스레드를 작성한 다음 컴파일하는 것이었습니다.

내일 나는 이것이 x32 비트 OS에서 발생하는지 확인할 것입니다.

나는 또한 x64 새 창에서 차트가 매우 오랫동안 열려 있고 매우 오랫동안 삭제된다는 사실도 알아냈습니다!

또한 단말기는 5초 동안 "응답 없음"이라는 문구와 함께 멈춥니다.

이 폴더(Username\AppData\Roaming\MetaQuotes\Terminal\72CEBD0F7A5518983A10360D0E46A5B6\MQL5)를 확인하십시오.
 
bobsley :

x64 시스템에서만 가능한 새로운 빌드 버그입니다(특히 Windows 7, 코어 i7 프로세서에서). 이전 빌드에서는 그렇지 않았습니다. 이 버그는 다음과 같습니다.

Expert Advisor의 소스 코드는 크게 변경하지 않고(예: 일부 변수의 값만 변경) 다시 컴파일해도 테스트 결과는 그대로 유지됩니다.

심지어 다음과 같이 진행되었습니다.

void OnTick() 함수에서 첫 번째 줄 반환을 삽입합니다. :) 컴파일하고 실행해도 결과는 똑같습니다!!!! 일반적으로 라인이 있어야하지만.

상황을 벗어나는 방법은 *.ex5 파일을 삭제하고 다시 컴파일하거나, 컴파일러가 맹세하도록 일부 쓰레기 스레드를 작성한 다음 컴파일하는 것이었습니다.

내일 나는 이것이 x32 비트 OS에서 발생하는지 확인할 것입니다.

...

이 버그를 특별히 포착하지는 않았지만 비트 32에서 비슷한 동작을 기록했습니다. 세미콜론을 추가하지 않는 등 미완성 표현식을 컴파일하면 제거되는 오류입니다.
 
Im_hungry :
물론 역사가 있지만 모든 웜이 퍼진 역사가 있는 것은 아닙니다!

1. 우리는 모든 것에 대해 이야기하지 않고 개발자 서버인 access.metatrader5.com:443 에 대해서만 이야기할 것입니다.

우리는 내 대본을 "완료되지 않음"으로 가볍게 표현하기에는 서툴지만 여전히 사용합니다. 우리는 TF "1주"에서 그것을 시작하고 막대의 수 는 930입니다.

우리는 다음과 같은 결과를 얻습니다

 2011.02 . 22 11 : 38 : 50      -   1 : 1993.05 . 09 00 : 00 open = 1.2368 , high = 1.2368 , low = 1.2084 , close = 1.219 , volume = 252 , spread = 50
2011.02 . 22 11 : 38 : 50      -   0 : 1993.05 . 02 00 : 00 open = 1.2334 , high = 1.2466 , low = 1.2267 , close = 1.2332 , volume = 0 , spread = 0
2011.02 . 22 11 : 38 : 50      -   Скопировано баров: 930

분명히 1993.05.02 이후 주간 바에 스프레드가 있으며 바의 역사는 훨씬 더 깊습니다. 유로가 1999년부터 공식적으로 존재했다면 데이터는 어디에서 그런 깊이를 얻었습니까(신의 축복이 있기는 하지만 이것은 별도의 질문입니다).

2. 이제 일간 차트에서 스프레드에 대한 정보의 깊이를 명확히 해 봅시다.

1주일에 5거래일이 있다는 사실을 기본으로 하여 일간봉(4630봉의 대략적인 수치를 바로 알려드리겠습니다)에서 스프레드 데이터 히스토리의 시작점을 찾아보도록 하겠습니다.

 2011.02 . 22 11 : 56 : 06      -   2 : 1993.05 . 13 00 : 00 open = 1.2148 , high = 1.2158 , low = 1.2084 , close = 1.2099 , volume = 100 , spread = 50
2011.02 . 22 11 : 56 : 06      -   1 : 1993.05 . 12 00 : 00 open = 1.2138 , high = 1.2171 , low = 1.2105 , close = 1.2152 , volume = 0 , spread = 0
2011.02 . 22 11 : 56 : 06      -   0 : 1993.05 . 11 00 : 00 open = 1.2167 , high = 1.2202 , low = 1.2121 , close = 1.2141 , volume = 0 , spread = 0
2011.02 . 22 11 : 56 : 06      -   Скопировано баров: 4630

따라서 일간봉 스프레드의 역사는 1993.05.13부터 시작됨이 분명하다.

추신

유추로 더 잘 이해할 수 있을 것 같습니다(최소 TF에서 사용 가능한 가장 오래된 날짜는 내가 이해하는 바에 따라 우리가 찾고 있는 장소를 깨웁니다) ...

다음의 스프레드만 표시하겠습니다.

H12는 1993.05.13 이후 사용 가능(하지만 거기에 있는 막대는 내가 알기로는 매일 사용됨) - 대략 7790 막대 깊이

1993.05.13(일봉)부터 H6 사용 가능 - 대략 14100바 깊이

 
sergey1294 :
이 폴더(Username\AppData\Roaming\MetaQuotes\Terminal\72CEBD0F7A5518983A10360D0E46A5B6\MQL5)를 확인하십시오.

나는 물론 거기에 모든 것이 비어 있음을 확인했습니다. 내 전문가가 ..\Experts\Examples\에 있는 이유는 무엇입니까?

거기에 그들의 편집이 나타납니다.

오늘은 x32 OS에서 직장에서 확인했습니다. 규범을 업데이트하기 전에 터미널을 업데이트했고 즉시 동일한 결함이 발생했습니다!

 
 double op, sp;
     
     if ( ObjectGetDouble ( 0,"Open", OBJPROP_PRICE,0,op) &&  ObjectGetDouble ( 0,"Stop", OBJPROP_PRICE,0,sp ) ){
     
        if ( is40x_b0[0] > 0 && Tick.bid > op && Tick.bid < sp ){ <--------------- Дает предупреждение possible use of uninitialized variable 'sp'
         Sell(); 
        }
        
        if ( is40x_b1[0] > 0 && Tick.ask < op && Tick.ask > sp ){
         Buy(); 
        }

     }
 
Academic :


그것은해야한다
 double op=0, sp=0;
 
sergey1294 :
그것은해야한다
왜요 ?
 
Academic :
왜요 ?

사실 여기에는 아무 문제가 없습니다.

변수는 0으로 초기화됩니다.

여기에서 확인할 수 있습니다.

정수 나;

printf ("i=%d",i);

 
bobsley :

사실 여기에는 아무 문제가 없습니다.

변수는 0으로 초기화됩니다.

여기에서 확인할 수 있습니다.

정수 나;

printf("i=%d",i);

참조가 ObjectGetDouble 함수 에 전달되고 if 문에서 두 호출에 의해 반환된 항목의 진실이 확인되므로 두 함수가 모두 true를 반환한 경우에만 이러한 변수에 대한 작업이 수행되므로 이 경고가 주어져서는 안 됩니다. 이 두 변수를 모두 올바른 의미로 설정할 수 없음을 의미합니다.

Документация по MQL5: Графические объекты / ObjectGetDouble
Документация по MQL5: Графические объекты / ObjectGetDouble
  • www.mql5.com
Графические объекты / ObjectGetDouble - Документация по MQL5
사유: