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

 
Slava :

아래 게시물에서 내 인용문을주의 깊게 읽으셨습니까?

이 동작은 " 차트당 최대 막대" 설정이 도입된 이후, 즉 MT4가 시작된 이후로 항상 있었습니다. 그리고 우리는 이 설정에 따라 매번 막대의 수를 줄이지 않는 이유를 이 15년 동안 여러 번 설명했습니다. 그리고 이제 우리는 매번 자르지 않습니다.

아무도 문서를 읽지 않습니다. 그러나 그것은 역설입니다. 여전히 그들이 읽지 않는 문서에서 다른 것을 작성하라고 우리에게 요구합니다.

슬라바, 나는 불만이 없습니다. 나는 당신의 인용문과 이것뿐만 아니라

거래, 자동 거래 시스템 및 거래 전략 테스트에 관한 포럼

오류, 버그, 질문

슬라바 , 2019.06.29 18:25

rate_total은 항상 현재 차트에서 사용할 수 있는 막대 의 수를 표시합니다.

나는 당신의 말의 의미를 이해하지 못했습니다

거래, 자동 거래 시스템 및 거래 전략 테스트에 관한 포럼

오류, 버그, 질문

슬라바 , 2019.06.29 18:42

지금 당장은 도움을 요청할 수 있는 클라이언트 터미널이 없습니다. 두 번의 클릭으로 모바일 장치에서 https://www.metatrader5.com/ru/terminal/help/startworking/settings#max_bars

전용 단락

보다 경제적인 계산을 위해 지표는 "창당 최대 막대" 매개변수에 지정된 것보다 더 많은 막대를 사용할 수 있습니다. 새 막대가 도착 하면 이전 막대가 데이터 캐시에서 즉시 제거되지 않습니다. 이렇게 하면 새 막대마다 표시기를 완전히 다시 계산할 수 없고 새 막대에 대한 값만 계산할 수 있습니다.

문서를 여러 번 읽으십시오. 하지만 새로 출시된 터미널에서 사진을 찍었습니다. 창에는 5000개의 막대만 있었고 새 막대는 아직 로드할 시간이 없었습니다.

물론 제가 잘못 이해한 부분이 있어서 다시 한번 이해를 부탁드립니다. 그리고 나는 어떤 변화도 없을 것이라고 생각합니다. 제 의견을 불만으로 받아들이지 마십시오.

 
Igor Makanu :

도움말이 정확하지 않고 오해의 소지가 있습니다. 여기에 그는 https://www.mql5.com/ru/forum/304239/page57#comment_11519307 을 썼습니다.

MQL5의 버퍼는 일반적으로 일반 배열처럼 작동하지만 MT4의 버퍼는 터미널에서 어떻게든 처리되었습니다.

MT5에서는 모든 작업을 직접 수행합니다. 버퍼를 지워야 합니다. 일반 배열처럼 지워지고 터미널은 버퍼 배열 자체의 크기만 설정합니다.

Igor, 간단한 러시아어로 설명할 수 있습니다. 표시기 버퍼의 각 구멍이 거기에 포함된 쓰레기를 대체할 일부 값으로 채워져 있으면 필요한 값으로 채우기 전에 이러한 구멍을 강제로 지우는 목적이 무엇입니까? 실행 속도의 손실을 위해?

 
Alexey Viktorov :

Igor, 간단한 러시아어로 설명할 수 있습니다. 표시기 버퍼의 각 구멍이 거기에 포함된 쓰레기를 대체할 일부 값으로 채워져 있으면 필요한 값으로 채우기 전에 이러한 구멍을 강제로 지우는 목적이 무엇입니까? 실행 속도의 손실을 위해?

"구멍"을 채우는 것은 "화살표"가 있는 표시기에서만 중요합니다. MT4에서는 표시기가 초기화될 때 이러한 "구멍"이 자동으로 EMPTY_VALUE 값으로 채워집니다.

MT5에서 프로그래머는 이 작업을 수행해야 합니다.

또는 MT5에서 프로그래머는 if() else 구문을 통해 표시기 버퍼 를 채워야 합니다.

저것들. MT4에서는 다음과 같이 작동합니다.

 if (...) Buf[i] = high[i];

MT5에서는 다음을 작성해야 합니다.

 if (...) Buf[i] = high[i]; else Buf[i] = EMPTY_VALUE ;

또는 MT5에서 표시기 버퍼를 지워야 합니다. 그렇지 않으면 표시기가 TF를 전환할 때 표시기 버퍼에 의해 바인딩된 배열에서 "쓰레기"를 그립니다.... 일반적으로 쓰는 방법과 내용은 취향의 문제입니다. 고려하다


추신: 속도? 음, 속도를 측정하십시오. 99%의 경우 내장 함수가 더 빠르지만 일반적으로 성능 불일치, EMPTY_VALUE 루프의 각 막대를 채울 항목, ArrayInitialize(Buf)를 통해 한 번 초기화할 항목을 찾을 수 있는 방법이 없습니다. ,EMPTY_VALUE)

 
Igor Makanu :

"구멍"을 채우는 것은 "화살표"가 있는 표시기에서만 중요합니다. MT4에서는 표시기가 초기화될 때 이러한 "구멍"이 자동으로 EMPTY_VALUE 값으로 채워집니다.

MT5에서 프로그래머는 이 작업을 수행해야 합니다.

또는 MT5에서 프로그래머는 if() else 구문을 통해 표시기 버퍼 를 채워야 합니다.

저것들. MT4에서는 다음과 같이 작동합니다.

MT5에서는 다음을 작성해야 합니다.

또는 MT5에서 표시기 버퍼를 지워야 합니다. 그렇지 않으면 표시기가 TF를 전환할 때 표시기 버퍼에 의해 바인딩된 배열에서 "쓰레기"를 그립니다.... 일반적으로 쓰는 방법과 내용은 취향의 문제입니다. 고려하다


추신: 속도? 음, 속도를 측정하십시오. 99%의 경우 내장 함수가 더 빠르지만 일반적으로 성능 불일치, EMPTY_VALUE 루프의 각 막대를 채울 항목, ArrayInitialize(Buf)를 통해 한 번 초기화할 항목을 찾을 수 있는 방법이 없습니다. ,EMPTY_VALUE)

이 모든 것은 그저 떠들썩할 뿐입니다. 그렇구나 하고 싶은 게 너무 많아서 습관을 고치기 힘들다 등등.

if else 구문은 다음으로 쉽게 대체될 수 있습니다.

Buf[i] = условие ? high[i] : EMPTY_VALUE ;
 
Alexey Viktorov :

이 모든 것은 그저 떠들썩할 뿐입니다. 그렇구나 하고 싶은 게 너무 많아서 습관을 고치기 힘들다 등등.

if else 구문은 다음으로 쉽게 대체될 수 있습니다.

음, 까다롭게 말하면 C ++ 또는 C #의 성능 향상을 위한 팁에서 "조건 연산자 ? : "를 사용하지 않는 것이 좋습니다. 한 번 Habré에 대한 기사를 읽은 것 같습니다(테스트하지 않았지만 더 편해서 제가 직접 씁니다)

;)

 
Igor Makanu :

음, 까다롭게 말하면 C ++ 또는 C #의 성능 향상을 위한 팁에서 "조건 연산자 ? : "를 사용하지 않는 것이 좋습니다. 한 번 Habré에 대한 기사를 읽은 것 같습니다(테스트하지 않았지만 더 편해서 제가 직접 씁니다)

;)

글쎄, 여기서 컴파일러는 바보가 아니며 Habré의 "전문가"보다 더 잘 최적화됩니다.
 
Artyom Trishkin :
글쎄, 여기서 컴파일러는 바보가 아니며 Habré의 "전문가"보다 더 잘 최적화됩니다.

그런 경우에 나는 항상 "해가 아침에 뜨고 저녁에 진다..."를 반복합니다. - 여기 논리가 보이십니까? - 예, 이것은 논리적이지만 내 문구에 정보가 있습니까? - 그녀는 아니다

내가 테스트하지 않을거야? : , 컴파일러 기계 .... Habr, 좋은 ...

 
Igor Makanu :

내가 테스트하지 않을거야? :

테스트된 MT5:

2019.06.30 13:37:04.230 tst (EURUSD,H1) if() 루프 테스트 = 9999999999 시간 = 10859ms

2019.06.30 13:37:15.116 tst (EURUSD,H1) 테스트? : 주기=9999999999 시간=10891ms

2019.06.30 13:38:05.348 tst (EURUSD,H1) if() 루프 테스트 = 9999999999 시간 = 10843ms

2019.06.30 13:38:16.190 tst (EURUSD,H1) 테스트? : 주기=9999999999 시간=10844ms

2019.06.30 13:38:32.111 tst (EURUSD,H1) if() 루프 테스트 = 9999999999 시간 = 10860ms

2019.06.30 13:38:42.955 tst (EURUSD,H1) 테스트? : 주기=9999999999 시간=10843ms

테스트된 MT4:

2019.06.30 13:46:09.087 tst EURUSD, H1: 테스트 중? : 주기=9999999999 시간=33234ms

2019.06.30 13:45:35.854 tst EURUSD,H1: if() 주기 테스트 = 9999999999 시간 = 32953ms

2019.06.30 13:44:43.421 tst EURUSD, H1: 테스트 중? : 주기=9999999999 시간=33328ms

2019.06.30 13:44:10.094 tst EURUSD,H1: if() 주기 테스트 = 9999999999 시간 = 33016ms

2019.06.30 13:42:56.925 tst EURUSD, H1: 테스트 중? : 주기=9999999999 시간=33344ms

2019.06.30 13:42:23.584 tst EURUSD,H1: if() 주기 테스트 = 9999999999 시간 = 32953ms

언제나처럼 MT 개발자!
 
대규모 프로젝트 에서 사용자 지정 매크로의 이름을 강조 표시하는 것이 항상 작동하지 않는다는 것을 오랫동안 알아차렸습니다. 다른 파일에 정의된 많은 매크로는 어떤 이유로 강조 표시되지 않습니다. 지금까지는 패턴을 알 수 없습니다. 내가 볼 수있는 것은 특정 줄 이후에 특정 파일에 정의된 모든 매크로가 더 이상 다른 파일에서 강조 표시되지 않는다는 것입니다. 비슷한 것을 본 다른 사람이 있습니까?
 
Alexey Navoykov :
대규모 프로젝트에서 사용자 지정 매크로의 이름을 강조 표시하는 것이 항상 작동하지 않는다는 것을 오랫동안 알아차렸습니다. 다른 파일에 정의된 많은 매크로는 어떤 이유로 강조 표시되지 않습니다. 지금까지는 패턴을 알 수 없습니다. 특정 라인 이후에 특정 파일에 정의된 모든 매크로가 더 이상 다른 파일에서 강조 표시되지 않는 것만 볼 수 있습니다. 비슷한 것을 본 다른 사람이 있습니까?

어떤 함수의 매개변수로 작성하면 강조 표시되지 않는다는 것을 알았습니다. 나는 이것이 완전한 일치 유형이 아니라고 생각합니다. 또는 더 정확하게 부르는 방법을 모르겠습니다.

사유: