외부와 입력의 차이점 - 페이지 4

 
Igor Makanu :

enum 유형 의 변수를 선언하면 ?

암시적 열거형 변환 tst1.mq5 24 17


EnumToString()을 확인할 수도 있습니다...


선언된 변수가 없는 유형은 사용되지 않는 것으로 컴파일에서 단순히 던져졌다고 생각합니다.

enum에서 이미 사용하고 있는 같은 이름의 변수를 실수로 선언할 수 있다는 말은 무릎에 총을 쏜 곳과 장소를 찾는 것이 매우 길고 고통스럽습니다.

 
Maksim Neimerik :
그래서 주님의 평결은 무엇입니까?) .mqh(#include)로 .mq5 프로그램을 작성하면 예기치 않은 결과를 두려워하지 않고 extern을 안전하게 처방하거나(mql4에서 했던 것처럼) 여전히 입력을 사용할 수 있습니까?

MT5에서는 외부 변수를 선언하기 위해 입력을 사용합니다. extern은 MT5에서 다른 목적을 가지고 있습니다.

 
Dmitry Fedoseev :

MT5에서는 외부 변수를 선언하기 위해 입력을 사용합니다. extern은 MT5에서 다른 목적을 가지고 있습니다.

extern을 MT5에서 사용할 수 없는 이유는 무엇입니까? - MT5에서 예제를 컴파일했는데 근본적인 차이점이 보이지 않습니다.

 
Igor Makanu :

extern을 MT5에서 사용할 수 없는 이유는 무엇입니까? - MT5에서 예제를 컴파일했는데 근본적인 차이점이 보이지 않습니다.

사람들은 고대 MQL4의 습관에서 벗어나 입력 매개변수로 extern을 사용하려고 하기 때문입니다.

그리고 새로운 MQL4와 MQL5에서는 이러한 목적을 위해 #property strict 및 extern과 함께 입력이 필요합니다.

그래서 extern을 사용하지 말라고 했습니다.

 
Artyom Trishkin :

사람들은 고대 MQL4의 습관에서 벗어나 입력 매개변수로 extern을 사용하려고 하기 때문입니다.

그리고 새로운 MQL4와 MQL5에서는 이러한 목적을 위해 #property strict 및 extern과 함께 입력이 필요합니다.

그래서 extern을 사용하지 말라고 했습니다.

모두가 multibookaff를 작성하려고 노력하고 있으며 결국 MT5에서만 사용되지 않는 것으로 판명되었으며 아무데도 사용되지 않습니다)))


ok, holivar가 시작됩니다. IMHO - 이전 코드에서 extern을 보았습니다. - 입력으로 교체하고 모든 경고를 수정하고 MQL의 힘이 당신과 함께 하기를 !!!!

 
Igor Makanu :

모두가 multibookaff를 작성하려고 노력하고 있으며 결국 MT5에서만 사용되지 않는 것으로 판명되었으며 아무데도 사용되지 않습니다)))


ok, holivar가 시작됩니다. IMHO - 이전 코드에서 extern을 보았습니다. - 입력으로 교체하고 모든 경고를 수정하고 MQL의 힘이 당신과 함께 하기를 !!!!

나는 쓰여진 것을 많이 이해하지 못했다.

그러나 외부 프로그램 매개변수를 선언하기 위해 #property strict와 함께 MQL5 및 MQL4에서 extern을 사용하지 않고 도움말에서 의도한 대로(모호하게) 사용한다는 점을 염두에 두었습니다.

 

여기 내가 생각하고 있는 것이 있습니다. 그냥 생각일 뿐입니다... MQL4에서보다 MQL5에서 iCustom()으로 작업하는 것이 훨씬 더 문제가 있습니까(일반적으로 Expert Advisor에서 표시기를 호출 할 때)? 그렇습니까? 그렇다면 계속하겠습니다...

MQL5를 조금씩 배우기 시작했는데...

아마도 새로운 주제를 만들 것입니다.
 
Maksim Neimerik :
여기 내가 생각하고 있는 것이 있습니다. 그냥 생각일 뿐입니다... MQL4에서보다 MQL5에서 iCustom()으로 작업하는 것이 훨씬 더 문제가 있습니까(일반적으로 Expert Advisor에서 표시기를 호출 할 때)? 그렇습니까? 그렇다면 계속하겠습니다...

더 문제가 되지는 않지만 MQL5에서 iCustom()은 2단계로 작업해야 합니다.

1. 표시기 핸들이 있습니다.

2. CopyBuffer()를 통해 지시자 버퍼의 값을 요청함


MQL4에서 - iCustom()은 매개변수가 있는 함수 호출로 작동합니다. 호출됨, 수신됨

모든 것이 MQL5에서 이와 같이 작동합니다. 어떤 이유로 개발자는 내장 함수의 기능을 의도적으로 잘라내고 시계열 액세스를 불편하게 만들었습니다. 최근에야 MQL5에 iClose(), iHigh()를 추가했습니다. CopyBuffer()와 같은 배열

일반적으로 MT5는 MT4보다 낙서가 더 많습니다.

 
Igor Makanu :

더 문제가 되지는 않지만 MQL5에서 iCustom()은 2단계로 작업해야 합니다.

1. 표시기 핸들이 있습니다.

2. CopyBuffer()를 통해 지시자 버퍼의 값을 요청함


MQL4에서 - iCustom()은 매개변수가 있는 함수 호출로 작동합니다. 호출됨, 수신됨

모든 것이 MQL5에서 이와 같이 작동합니다. 어떤 이유로 개발자는 내장 함수의 기능을 의도적으로 잘라내고 시계열 액세스를 불편하게 만들었습니다. 최근에야 MQL5에 iClose(), iHigh()를 추가했습니다. CopyBuffer()와 같은 배열

일반적으로 MT5는 MT4보다 낙서가 더 많습니다.

https://www.mql5.com/ru/forum/316800

MQL4 & MQL5
MQL4 & MQL5
  • 2019.06.29
  • www.mql5.com
Я тут вот что думаю, просто мысли... В MQL5 ведь намного проблемнее работа с iCustom() чем в MQL4 (да и вообще с вызовом индикаторов в советнике...
 

불행히도 MQL5에서 extern 변수의 구현은 완료되지 않았으므로 사용하지 않는 것이 좋습니다. 문제가 많습니다. 우리는 이러한 변수의 의무적 인 일회성 초기화에 대한 제어 부족에 대해 이야기하고 있습니다.

예를 들어 다음과 같이 작성할 수 있습니다.

 extern int a= 1 ;
extern int a= 2 ;

오류가 없을 것입니다. 이러한 초기화가 다른 포함 파일에서 수행된다고 상상해 보십시오. 그런 다음 최종 결과는 이러한 파일이 포함된 순서에 따라 달라집니다.

또는 다음과 같이(실행 파일):

 extern int a;

void OnStart () { Print (a); }

여기서는 extern 변수를 전혀 초기화하지 않았지만 오류도 없습니다.

따라서 동일한 변수가 다른 파일에 정의되어 있는지 여부에 대한 제어가 없습니다. 실수로 이름을 변경할 수 있지만 다른 파일에는 다른 이름의 변수가 있지만 프로그램은 아무 일도 없었던 것처럼 컴파일됩니다.

일반적으로 이것은 좋지 않습니다. 따라서 extern 변수 대신 함수를 사용하는 것이 좋습니다. 그것들은 더도 말고 덜도 말고 오직 하나의 정의만을 보장합니다.