MQL4 및 MQL5에 대한 초보자 질문, 알고리즘 및 코드에 대한 도움말 및 토론 - 페이지 927

 
Artyom Trishkin :

파일 저장 폴더: 파일 --> 데이터 디렉토리 열기 --> MQL4\Experts\Here.ex4

모든 것이 그렇습니다. 그러나 어드바이저가 네비게이터에 표시되지 않으면 ... 축하합니다. 네비게이터에서 가능한 프로그램 수를 다 쓴 것입니다. 제거해야 할 것이 있습니다. 불행히도 MetaTrader4는 Navigator가 볼 수 있는 프로그램 수에 제한이 있습니다. 나는 많은 지표를 만들 때 이것을 발견했습니다. 내가 필요한 많은 것들을 삭제하지 않기 위해 나는 테스트 파일에 코드를 복사하고 컴파일하고 항상 실행했습니다. 이런 식으로 나는 항상 한 파일에서 필요한 지표를 테스트했습니다. 파일의 내용을 삭제하고 삽입했습니다. 새로운 코드, 컴파일, 테스트 완료. 그런 다음 다음 파일 - 파일 내용을 지우고 새 코드를 삽입한 다음 .. 원 안에 ...

감사합니다 한번 보겠습니다...여기서 구독취소할게요...원칙적으로 프로그가 많지않습니다...
 
Artyom Trishkin :

파일 저장 폴더: 파일 --> 데이터 디렉토리 열기 --> MQL4\Experts\Here.ex4

모든 것이 그렇습니다. 그러나 어드바이저가 네비게이터에 표시되지 않으면 ... 축하합니다. 네비게이터에서 가능한 프로그램 수를 다 쓴 것입니다. 제거해야 할 것이 있습니다. 불행히도 MetaTrader4는 Navigator가 볼 수 있는 프로그램 수에 제한이 있습니다. 나는 많은 지표를 만들 때 이것을 발견했습니다. 내가 필요한 많은 것들을 삭제하지 않기 위해 나는 테스트 파일에 코드를 복사하고 컴파일하고 항상 실행했습니다. 이런 식으로 나는 항상 한 파일에서 필요한 지표를 테스트했습니다. 파일의 내용을 삭제하고 삽입했습니다. 새로운 코드, 컴파일, 테스트 완료. 그런 다음 다음 파일 - 파일 내용을 지우고 새 코드를 삽입한 다음 .. 원 안에 ...

데이터 디렉토리에 복사 - exp 프로그램, 표시기, 스크립트 - 충분하지 않습니다. 네비게이터에서 ... 7 월 - 아니요.

폴더에 - 바로 가기에서 터미널을 실행하는 곳 - 또한 있습니다. 네비게이터에서 - 아니요.




아르템 - 감사합니다. 터미널을 다시 시작했습니다. 사용 가능합니다.



 

그런 질문에 배열을 생성하고 생성된 배열에 바로 값을 넣고 싶은데 함수 변수 등을 통해 값을 제출하고 싶습니다. 예.

정수 q=8, w=9;

int mas[2]={q,w}. 그렇게 하면 오류가 발생합니다. 이 mas[0]=q,mas[1]=w를 수행해야 합니다. 어떤 식으로든 배열을 생성할 때 이미 필요한 계산을 저장하고 있는 변수를 즉시 대체하고 이것을 배열에 넣을 수 있습니까? C ++는 이것을 지원하지만 mql은 지원하지 않습니다. 이것이 가능합니까, 할 수 있습니까? 매크로 사용?

 
Seric29 :

그런 질문에 배열을 생성하고 생성된 배열에 바로 값을 넣고 싶은데 함수 변수 등을 통해 값을 제출하고 싶습니다. 예.

정수 q=8, w=9;

int mas[2]={q,w}. 그렇게 하면 오류가 발생합니다. 이 mas[0]=q,mas[1]=w를 수행해야 합니다. 어떤 식으로든 배열을 생성할 때 이미 필요한 계산을 저장하고 있는 변수를 즉시 대체하고 이것을 배열에 넣을 수 있습니까? C ++는 이것을 지원하지만 mql은 지원하지 않습니다. 이것이 가능합니까, 할 수 있습니까? 매크로 사용?

그것은 불가능합니다. "오류, 버그, 질문" 주제에서 누군가가 이것을 논의했습니다. 결과는 불가능합니다.

 
Igor Makanu :

그것은 불가능합니다. "오류, 버그, 질문" 주제에서 누군가가 이것을 논의했습니다. 결과는 불가능합니다.

분명한. mql에서는 변수를 통해 배열을 초기화할 때 열이나 행의 값을 전달하는 것이 금지되어 있지만 누군가는 매크로를 통해 배열을 선언할 때 매크로를 통해 열 수를 할당하는 것을 보았습니다. 다음은 주제 https://www.mql5.com/ru/forum/95351 입니다.

#ODD 5 정의

이중 Max_D1[ODD];

이중 Low_D1[ODD];

 
Seric29 :

분명한. mql에서는 변수를 통해 배열을 초기화할 때 열이나 행의 값을 전달하는 것이 금지되어 있지만 누군가는 매크로를 통해 배열을 선언할 때 매크로를 통해 열 수를 할당하는 것을 보았습니다. 다음은 주제 https://www.mql5.com/ru/forum/95351 입니다.

#ODD 5 정의

이중 Max_D1[ODD];

이중 Low_D1[ODD];

그리고 이 행동의 의미는 무엇입니까? 질문은 어떻게 하셨나요? : 상수가 아닌 변수로 배열을 초기화할 수 있습니까? - 대답은 '아니오

매크로는 배열의 각 요소에 변수 값을 할당하는 수동 작업을 수행하지만 이것의 본질은 변경되지 않습니다.

 
Igor Makanu :

그리고 이 행동의 의미는 무엇입니까? 질문은 어떻게 하셨나요? : 상수가 아닌 변수로 배열을 초기화할 수 있습니까? - 대답은 '아니오

매크로는 배열의 각 요소에 변수 값을 할당하는 수동 작업을 수행하지만 이것의 본질은 변경되지 않습니다.

글쎄, 나는 당신이 뭔가를 감쌀 수 있다고 생각했습니다.

 
Igor Makanu :

그리고 이 행동의 의미는 무엇입니까? 질문은 어떻게 하셨나요? : 상수가 아닌 변수로 배열을 초기화할 수 있습니까? - 대답은 '아니오

매크로는 배열의 각 요소에 변수 값을 할당하는 수동 작업을 수행하지만 이것의 본질은 변경되지 않습니다.

이 문제를 해결하기 위해 상수 값을 반환하는 함수를 만들 수 있습니까?

 
Seric29 :

이 문제를 해결하기 위해 상수 값을 반환하는 함수를 만들 수 있습니까?

아니요

초기화와 값 할당의 개념을 혼동합니다. 본질은 동일하지만 사용 순간(때)이 다르며 초기화는 배열이 설명된 줄에 있습니다. 거기에는 상수로 초기화되고 할당은 할당된 후 배열 설명, 배열에 임의의 위치에 임의의 값을 할당합니다( 배열 요소 )

질문하신 내용과 불가능하다고 쓰는 이유를 어떻게 설명해야 할지 모르겠습니다

배열을 사용할 때 배열을 사용하지 않으려는 코드 작성의 맨 처음부터 제기한 문제는 없습니다. 이제 코드를 다시 작성하거나 각 요소에 수동으로 변수 값을 할당합니다. 정렬

때로는 변수를 "생성"하지 않기 위해 배열을 사용할 수 있습니다. 배열이 3-4개 요소 이상인 경우 프로그램을 작성하는 동안 배열 요소 번호를 혼동할 위험이 높으므로 상수 값을 사용합니다. \u200b\u200b이를 위해 #define을 통해 지정됨 - 코드를 읽을 수 있는 것으로 판명되었으며 단순히 다음과 같이 실수를 하는 것은 불가능합니다.

 #define open   0
#define take   1
#define loss   2
#define profit 3
void OnStart ()
  {
   double order[ 4 ];
  order[open] =  OrderOpenPrice();
  order[take] =  OrderTakeProfit();
  order[loss] =  OrderStopLoss();
  order[profit]= OrderProfit();
  }

아마도 질문의 명확성을 이해하지 못할 수 있습니다.
Seric29 :

그런 질문에 배열을 생성하고 생성된 배열에 바로 값을 넣고 싶은데 함수 변수 등을 통해 값을 제출하고 싶습니다. 예.

정수 q=8, w=9;

int mas[2]={q,w}. 그렇게 하면 오류가 발생합니다. mas[0]=q,mas[1]=w를 수행해야 합니다. 어떤 식으로든 배열을 생성할 때 이미 필요한 계산을 저장하고 있는 변수를 즉시 대체하고 이것을 배열에 넣을 수 있습니까? C ++는 이것을 지원하지만 mql은 지원하지 않습니다. 이것이 가능합니까, 할 수 있습니까? 매크로 사용?

배열을 설명할 때? - 변수로 초기화해야 합니까? - 위의 2번 답변

또는 배열에 여러 변수 값을 할당하시겠습니까? - 대답도 불가능하지만 잘못된 구문으로 인해:

중괄호 안에 변수를 사용할 수 없습니다. {1,2,3} - 컴파일러는 이것을 건너뛰고 {a,b,c} - 이것은 불가능합니다. 왜냐하면 변수 이름을 감지하는 컴파일러는 산술(논리) 연산 또는 연산자 = (lvalue, rvalue) ... 즉, 언어의 구문을 연구해야 하지만 요점은 언어의 능력에 있지 않을 수 있습니다.

 
Igor Makanu :

아니요

초기화와 값 할당의 개념을 혼동합니다. 본질은 동일하지만 사용 순간(때)이 다르며 초기화는 배열이 설명된 줄에 있습니다. 거기에는 상수로 초기화되고 할당은 할당된 후 배열 설명, 배열에 임의의 위치에 임의의 값을 할당합니다( 배열 요소 )

질문하신 내용과 불가능하다고 쓰는 이유를 어떻게 설명해야 할지 모르겠습니다

배열을 사용할 때 배열을 사용하지 않으려는 코드 작성의 맨 처음부터 제기한 문제는 없습니다. 이제 코드를 다시 작성하거나 각 요소에 수동으로 변수 값을 할당합니다. 정렬

때로는 변수를 "생성"하지 않기 위해 배열을 사용할 수 있습니다. 배열이 3-4개 요소 이상인 경우 프로그램을 작성하는 동안 배열 요소 번호를 혼동할 위험이 높으므로 상수 값을 사용합니다. \u200b\u200b이를 위해 #define을 통해 지정됨 - 코드를 읽을 수 있는 것으로 판명되었으며 단순히 다음과 같이 실수를 하는 것은 불가능합니다.

음, 말하자면, 여기서 우리는 프로그램에서 선언된 요소의 하이브리드 사용을 얻습니다. 예를 들어, 입력 매개변수를 선언하고 이 매개변수에서 전역 변수를 가져와서 볼 필요가 있지만 입력 매개변수가 배열이 될 수 없다는 문제가 발생합니다. 두 번째 예제는 함수를 작성하고 루프를 통해 처리하는 것도 사용하는 것이 좋습니다. 여기에서 배열, 나는 배열에 인수를 전송하기 시작하고 다시 변수로 배열을 초기화하는 것은 불가능하고 위에서 쓴 것처럼 각 셀에 하나의 값을 써야 합니다. 세 번째 예제는 배열을 함수 인수로 사용하고(여기서는 인수가 다르기 때문에 구조적일 것입니다) 다시 문제는 배열을 함수 인수로 사용하는 것도 허용되지 않는다는 것입니다. 그리고 변수 대신 배열을 사용하는 것에 관해서는 그렇습니다. 그것은 프로그램을 간결하게 만들고 저도 그렇게 합니다. C++에서는 12번째 버전에서는 초기화 시 변수를 입력할 수 있는데 아래에서는 불가능할 수도 있지만 여기서는 이 모든 것의 가격을 낮추어 결과를 낳았습니다. 그건 그렇고, 답변 주셔서 감사합니다.

사유: