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

 

이 형식에 대한 질문이 있습니다. 이러한 코드가 있습니다.

정수 = 3;

if(P==5){그러면 라이브러리에 들어가서 무언가를 계산해야 합니다}

이 상황에서 P=3, 즉 조건이 false인 경우 문제는 컴파일러가 라이브러리 및 유휴 코드로 올라갈 것인지 아니면 컴파일러가 현재 파일 의 코드를 읽을 것인지 여부입니다. 제가 왜 이런 질문을 했는지 설명드리겠습니다. 이 형식의 조건을 작성한다고 가정해 보겠습니다.

정수 = 4;

if(Y==4){무언가를 하세요} else{다른 일을 하세요}. 이 상황에서 우리는 다음 그림을 얻습니다 Y == 4, 첫 번째 것은 우선 순위 연산자라고 할 수 있지만 else {do something else} 블록에 쓰여진 내용도 확인됩니다 - 계산됩니다( 항상 계산됨), 우선 순위가 표현식 if(Y==4)이기 때문에 실행되지 않습니다. 즉, 진실 결과에 관계없이 기계는 모든 계산을 수행합니다. 보조 명령문이 실행되는지 여부에 관계없이 계산에 전력을 소비합니다. 큰 프로그램과 라이브러리를 사용하고 컴파일러가 매번 라이브러리의 코드를 파헤친다면 결국 그러한 프로그램의 작업 속도가 느려질 것입니다. 이 경우 라이브러리 사용이 얼마나 효과적인지, 사용할 가치가 있습니다. 로봇의 성능이 높도록 mql4 자체의 가능한 가장 짧은 코드? 누가 이것에 대해 어떤 생각이 있습니까?

 
Pavel Soin :

안녕하세요.

2개의 표시기가 있고 첫 번째는 4개의 버퍼, 두 번째는 2개의 표시기가 있다고 가정해 보겠습니다. 차트에 던지고 데이터 창 을 열면(CTRL + D) 목록에 0에서 5까지 6개의 버퍼가 있습니다. 이 목록에서 MQL의 값(예: 버퍼 5개)을 읽을 수 있습니까? 원하는 표시기에서 iCustom을 통해 매우 편리하지 않습니다. 이 목록에서 더 편리합니다. 나는 그들이 그것을 하는 것을 알고 있다. 그러나 어떻게?

누구든지 도울 수 있습니까?

 
Seric29 :

이 형식에 대한 질문이 있습니다. 이러한 코드가 있습니다.

정수=3;

if(P==5){그러면 라이브러리에 들어가서 무언가를 계산해야 합니다}

이 상황에서 P=3, 즉 조건이 false인 경우 문제는 컴파일러가 라이브러리 및 유휴 코드로 올라갈 것인지 아니면 컴파일러가 현재 파일 의 코드를 읽을 것인지 여부입니다. 제가 왜 이런 질문을 했는지 설명드리겠습니다. 이 형식의 조건을 작성한다고 가정해 보겠습니다.

정수 = 4;

if(Y==4){무언가를 하세요} else{다른 일을 하세요}. 이 상황에서 우리는 다음 그림을 얻습니다 Y == 4, 첫 번째 것은 우선 순위 연산자라고 할 수 있지만 else {do something else} 블록에 쓰여진 내용도 확인됩니다 - 계산됩니다( 항상 계산됨), 우선 순위가 표현식 if(Y==4)이기 때문에 실행되지 않습니다. 즉, 진실 결과에 관계없이 기계는 모든 계산을 수행합니다. 보조 명령문이 실행되는지 여부에 관계없이 계산에 전력을 소비합니다. 큰 프로그램과 라이브러리를 사용하고 컴파일러가 매번 라이브러리의 코드를 파헤친다면 결국 그러한 프로그램의 작업 속도가 느려질 것입니다. 이 경우 라이브러리 사용이 얼마나 효과적인지, 사용할 가치가 있습니다. 로봇의 성능이 높도록 mql4 자체의 가능한 가장 짧은 코드? 누가 이것에 대해 어떤 생각이 있습니까?

MetaEditor에 내장된 디버거는 이러한 질문에 매우 잘 답합니다. 유사한 조건의 스크립트를 작성하고 디버거에서 단계별로 실행하십시오. 실제로, 당신은 프로그램이 아무 일도 하지 않는 곳으로 가지 않는 방법을 보게 될 것입니다. 더욱이 그러한 조건

 int P = 3 , Y = 4 ;
if (P == 5 && Y == 4 )

P != 3인지 확인한 후에는 더 이상 확인할 사항이 없습니다.

 
안녕하세요. 주말 동안 모든 그래픽 요소 가 차트에 남아 있게 하려면 어떻게 해야 하는지 알려주세요.
 
Lomonosov1991 :
안녕하세요. 주말 동안 차트에 모든 그래픽 요소가 남아 있도록 하려면 어떻게 해야 하는지 알려주세요.
삭제하지 마세요
 
Alexey Viktorov :

MetaEditor에 내장된 디버거는 이러한 질문에 매우 잘 답합니다. 유사한 조건의 스크립트를 작성하고 디버거에서 단계별로 실행하십시오. 실제로, 당신은 프로그램이 아무 일도 하지 않는 곳으로 가지 않는 방법을 보게 될 것입니다. 더욱이 그러한 조건

P != 3인지 확인한 후에는 더 이상 확인할 사항이 없습니다.

다음은 당신을 위한 예입니다

int pp=8;if(pp==8){pp=3;}else{pp=34000000000000000000000000000;}

이 경우 pp는 8과 같지만 컴파일러는 내가 변수에 밀어넣고 싶다고 많은 수로 맹세하지만 pp=8이 정확하기 때문에 이 숫자를 변수에 밀어넣지 않겠지만 어떤 이유로 컴파일러가 시작됩니다 거기에 내가 쓴 것을 파헤쳐 보면 동일한 컴파일러가 모든 것을 검사하고 고려한다는 결론을 내릴 수 있는지 확인할 수 있습니다. 물론 이것은 심각한 실수입니다. 덜 심각한 실수를 할 수 있지만 컴파일러는 여전히 이것이 가능한지 여부를 확인하십시오. 따라서 라이브러리에 어떤 일이 일어날 것인지도 좋은 질문입니다. 물론 거기에 그런 내용을 쓰지는 않겠지만 요점은 컴파일러가 거기에 들어가서 수행하도록 제안된 작업을 확인하기 시작하지만 그렇지는 않다는 것입니다. 하지만 계산됩니다. 다음으로, MQL4 디버거로 작업을 시도하고 https://www.metatrader5.com/ru/metaeditor/help/development/debug 에서 지침을 읽으십시오. "기록 확인" 탭이 활성화되어 있지도 않습니다. , 지침에서 활성화되어야하지만 실제 데이터에 대한 옵션을 선택하려고 시도했지만이 경우 변수 값이 표시되지 않고 모든 것이 비어 있고 아무 것도 기록되지 않습니다. 어떻게 되는지 흥미롭습니다. 이다.

 
Seric29 :

다음은 당신을 위한 예입니다

int pp=8;if(pp==8){pp=3;}else{pp=340000000000000000000000000000;}

이 경우 pp는 8과 같지만 컴파일러는 내가 변수에 밀어넣고 싶다고 많은 수로 맹세하지만 pp=8이 정확하기 때문에 이 숫자를 변수에 밀어넣지 않겠지만 어떤 이유로 컴파일러가 시작됩니다 거기에 내가 쓴 것을 파헤쳐 보면 동일한 컴파일러가 모든 것을 검사하고 고려한다는 결론을 내릴 수 있는지 확인할 수 있습니다. 물론 이것은 심각한 실수입니다. 덜 심각한 실수를 할 수 있지만 컴파일러는 여전히 이것이 가능한지 여부를 확인하십시오. 따라서 라이브러리에 어떤 일이 일어날 것인지도 좋은 질문입니다. 물론 거기에 그런 내용을 쓰지는 않겠지만 요점은 컴파일러가 거기에 들어가서 수행하도록 제안된 작업을 확인하기 시작하지만 그렇지는 않다는 것입니다. 하지만 계산됩니다. 다음으로, MQL4 디버거로 작업을 시도하고 https://www.metatrader5.com/ru/metaeditor/help/development/debug 에서 지침을 읽으십시오. "기록 확인" 탭이 활성화되어 있지도 않습니다. , 지침에서 활성화되어야하지만 실제 데이터에 대한 옵션을 선택하려고 시도했지만이 경우 변수 값이 표시되지 않고 모든 것이 비어 있고 아무 것도 기록되지 않습니다. 어떻게 되는지 흥미롭습니다. 이다.

컴파일러는 컴파일 시간에 유효한 값을 확인하지만 프로그램 실행 시간에는 확인하지 않습니다. 이러한 변수의 값이 허용되는 범위에서 변수 유형에 대해 읽으십시오. 컴파일러가 이러한 검사를 수행하지 않으면 코드 실행 시 값이 손실되어 잘못된 계산 결과를 얻을 수 있습니다. 따라서 이 동작은 프로그래머에게 좋습니다. 컴파일러는 가능한 정밀도 손실에 대해 항상 경고합니다.

그리고 MT4 디버거는 기록 데이터에서 작동하지 않습니다. 이것은 MT5 테스터의 특권입니다. 하지만 어쨌든 히스토리에 스크립트를 디버깅하는 것은 의미가 없으며 내가 제안한 것은 MT4 테스터에서 관찰할 수 있습니다. 코드 시작 부분에 중단점을 넣은 다음 실행 순서와 변수 값을 단계별로 관찰하기만 하면 됩니다.

 
디컴파일된 코드 조각에 대해 논의하는 것이 정상적이라고 생각하십니까?
변수의 이름만 변경된 경우. 그리고 그것은 상당히 무례한 일입니다 ...
 
Artyom Trishkin :
디컴파일된 코드 조각에 대해 논의하는 것이 정상적이라고 생각하십니까?

변수 이름만 변경된 경우. 그리고 그것은 상당히 무례한 일입니다 ...

이 Expert Advisor는 MQL4 형식으로 온라인에서 사용할 수 있습니다. 트리오 댄서. 그냥 내가 직접 리메이크한다

 
Lomonosov1991 :

이 고문은 온라인 상태입니다. 트리오 댄서. 그냥 내가 직접 리메이크한다

그래서 무엇? 훔친 물건을 사고 파는 곳이 있습니다.
이 포럼은 해당 카테고리에 없습니다.
Expert Advisor는 누군가(작가에게서 훔친)에 의해 해킹을 당했지만 이제는 스스로 만들 수 있습니다. 이 리소스를 사용하지 마십시오. 우리는 여기에서 윤리적입니다.