Vladimir Fionov : 죄송합니다. 코드를 삽입하는 방법을 몰랐지만 코드 자체에 대해 #property strict를 삽입하고 이 코드 없이는 모든 것이 작동할 때 왜 이런 일이 발생합니까?
MetaEditor'에서 도움말을 보셨습니까?
함수 작업, 변수 범위 및 로컬 배열의 메모리 해제도 변경되었습니다. 많은 변경 사항이 있었기 때문에 MQL4 프로그램 작성에 대한 이전 접근 방식과의 최대 호환성을 보장하기 위해 새로운 #property strict 속성을 도입하기로 결정했습니다. MQL4 마법사를 사용하여 새 MQL4 프로그램을 생성할 때 이 속성은 항상 템플릿에 추가됩니다.
그리고 더:
컴파일러 간의 차이점 표:
이전 MQL4 컴파일러
새로운 MQL4 컴파일러
#property strict가 있는 새로운 MQL4 컴파일러
진입점 init(), start(), deinit()는 모든 매개변수와 반환 유형을 가질 수 있습니다.
통화쌍의 경우 한도를 설정하면 모든 것이 작동하지만 어떤 이유로 시간 프레임이 작동하지 않는 경우 h1을 넣어도 표시기가 작동하지 않습니다
https://docs.mql4.com/en/chart_operations/periodwindow
https://docs.mql4.com/en/constants/chartconstants/enum_timeframes
반환 값 현재 차트의 기간(분)입니다.
시도해 보세요. 효과가 있을 수 있습니다.
또는 따옴표를 제거하십시오.
https://docs.mql4.com/en/chart_operations/periodwindow
https://docs.mql4.com/ru/constants/chartconstants/enum_timeframes
반환 값 현재 차트의 기간(분)입니다.
시도해 보세요. 효과가 있을 수 있습니다.
또 다른 질문은 #property strict 표시자가 'Indicator name'(100,41)에서 범위를 벗어난 오류 배열을 제공할 때 처음에 추가할 때 처리하는 방법입니다.
그리고 여기에 무엇이 잘못 되었습니까?
죄송합니다. 코드를 삽입하는 방법을 몰랐지만 코드 자체에 대해 #property strict를 삽입하고 이 코드 없이는 모든 것이 작동할 때 왜 이런 일이 발생합니까?
MetaEditor'에서 도움말을 보셨습니까?
함수 작업, 변수 범위 및 로컬 배열의 메모리 해제도 변경되었습니다. 많은 변경 사항이 있었기 때문에 MQL4 프로그램 작성에 대한 이전 접근 방식과의 최대 호환성을 보장하기 위해 새로운 #property strict 속성을 도입하기로 결정했습니다. MQL4 마법사를 사용하여 새 MQL4 프로그램을 생성할 때 이 속성은 항상 템플릿에 추가됩니다.
그리고 더:
컴파일러 간의 차이점 표:
이전 MQL4 컴파일러
새로운 MQL4 컴파일러
#property strict가 있는 새로운 MQL4 컴파일러
진입점 init(), start(), deinit()는 모든 매개변수와 반환 유형을 가질 수 있습니다.
init(), start(), deinit(), 호환성을 위해 왼쪽,
그리고 new OnInit() , OnStart() , OnCalculate() , OnTick() , OnTimer() , OnChartEvent() , OnTester() , OnDeinit() 는 서명과 정확히 일치해야 합니다.
같은
init() 함수의 반환 결과는 실행 하위 시스템에서 어떤 식으로든 구문 분석되지 않습니다.
init() 및 OnInit() 함수의 반환 결과는 실행 하위 시스템에서 어떤 식으로든 분석되지 않습니다.
OnInit()에서 0이 아닌 값이 반환되면 Expert Advisor 또는 표시기의 실행이 종료되고 프로그램이 언로드됩니다.
특수 문자 및 점을 포함한 거의 모든 변수 이름(예약어 제외)
변수 이름에는 특수 문자나 점을 사용할 수 없습니다.
예약어 목록이 확장되어 short, long, const 등과 같은 일반적인 단어는 이름이 될 수 없습니다.
같은
변수 범위 - 선언(중첩 블록에서도)에서 함수 끝까지
같은
변수의 범위는 선언에서 변수가 선언된 블록 끝까지입니다.
0으로 모든 변수(글로벌 및 로컬 모두)의 암시적 초기화
같은
전역 변수만 초기화합니다. 지역 변수 중 문자열만 암시적으로 초기화됩니다.
함수를 종료할 때 로컬 배열이 해제되지 않습니다.
함수가 종료되면 로컬 배열이 해제됩니다.
{} 블록을 종료하면 로컬 배열이 해제됩니다.
"Array out of range" 오류 로 인해 치명적인 오류가 발생하지 않음*
같은. 이 오류가 중요한 구조체 및 클래스 배열 제외
"Array out of range" 는 심각한 오류이며 프로그램을 중지시킵니다.
구조 또는 클래스 없음
구조체와 클래스 가 있습니다. 추가 데이터 유형 추가
같은
문자열은 단일 바이트입니다.
날짜 시간 - 32비트 정수
사전 정의된 변수 Volume은 double 유형입니다.
문자열은 유니코드입니다.
날짜 시간 - 64비트 정수
사전 정의된 변수 Volume 은 유형이 long입니다.
같은
ArrayCopyRates() 는 배열 double[][6]에 가상 복사를 수행합니다.
ArrayCopyRates() 는 MqlRates[] 배열로 가상 복사를 수행합니다. 호환성을 위해 double[][6] 배열로 복사하는 것은 유지되지만 이 복사는 가상이 아니라 실제입니다.
같은
함수는 유형이 있더라도 값을 반환하지 않을 수 있습니다. 이렇게 하려면 함수 끝에 컴파일러가 자동으로 return(0)을 넣습니다.
같은
모든 유형의 함수는 항상 값을 반환해야 합니다.
동시에 열린 파일 수 - 32
동시에 열린 파일 수 - 64
같은
파일은 항상 공유 모드로 열립니다**
공유 모드는 FILE_SHARE_READ 및/또는 FILE_SHARE_WRITE로 명시적으로 지정해야 합니다.
같은
스크립트의 경우 extern 변수의 이름이 입력 매개변수 창에 표시됩니다.
show_inputs 모드의 스크립트의 경우 extern 및 입력 변수의 이름이 입력 매개변수 창에 표시됩니다.
show_inputs 모드의 스크립트의 경우 입력 매개변수 창에 extern 및 입력 변수 이름 대신 줄 주석이 표시됩니다.
* "Array out of range" 오류에 특별한 주의를 기울여야 합니다. 차트에서 실행할 때 많은 오래된 사용자 지정 표시기가 엄격 모드의 새 컴파일러에서 이 오류를 발생시킵니다. 원인을 찾아 제거하는 것이 좋습니다.
** 새 MQL4 및 MQL5에서는 이전 MQL4에 없었던 FILE_SHARE_READ 및 FILE_SHARE_WRITE 플래그가 파일 공유 모드를 담당합니다.
말해봐 여기 뭐가 잘못됐어?
내가 당신을 얻었다면 미안하지만 지금은이 오류가 발생합니다
39위
동일한 오류, 배열이 범위를 벗어났습니까?