고정 폭 글꼴로 차트 출력을 표시하는 방법은 무엇입니까? - 페이지 6

 
Nikolai Semko :

그러나 MT4에서는 그림이 완전히 다릅니다.
MT5에서 주석과 캔버스의 작동이 거의 같다면 MT4에서 주석은 1000배 더 빠르게 작동합니다. 나는 MT5 Comment에서 내부 BitMap을 통해 구현되는 반면 MT4에서는 어떻게 든 다르다고 결론지었습니다. 그 차이가 인상적입니다. 나는 아마도 이 질문을 버그의 주제로 옮길 것이다.

자세한 설명은 여기: https://www.mql5.com/ru/forum/1111/page2102#comment_6156364

MT4의 주석은 본질적으로 가짜이며 차트를 다시 그리지 않습니다.

 
Renat Fatkhullin :

자세한 설명은 여기: https://www.mql5.com/ru/forum/1111/page2102#comment_6156364

MT4의 주석은 본질적으로 가짜이며 차트를 다시 그리지 않습니다.


이제 우리는 실용적인 결론을 내립니다

1. 테스트 중 성능에 영향을 미치는 일련의 기능을 #define 대응 기능으로 교체하는 것이 좋습니다.

2. 현재 여성/신사 중 90%는 오렌지에 있는 잉크와 같은 결정체입니다.

4. 포럼에 정의 몬스터 fxsaber가 있습니다.

5. 단순한 인간이 프로그램이 작동하는 모드에 대해 생각할 필요가 없도록 유사한 정의의 라이브러리를 만들고 유지하도록 그에게 요청할 수 있습니까?

커뮤니티와 fxsaber는 이 제안에 대해 어떻게 생각합니까?

 

그리고 사람들이 도구를 이해하지 못하고 속도를 테스트하려고 하면 테스트할 수 없는 것을 정의합니다.

그것을 보기 위해 댓글을 불러오는 것은 정상입니다.

초당 1000-10000번 호출하는 것은 논리적으로(당신은 그것을 볼 수 없을 것입니다) 기술적으로 비정상적입니다. 전체 차트를 표시/다시 그리지 않는 데 큰 비용이 발생합니다(라인뿐만 아니라).

당신이하고있는 일을 이해해야합니다. 답변에 자세히 썼던 내용입니다.

 
Renat Fatkhullin :

그리고 사람들이 도구를 이해하지 못하고 속도를 테스트하려고 하면 테스트할 수 없는 것을 정의합니다.

그것을 보기 위해 댓글을 불러오는 것은 정상입니다.

초당 1000-10000번 호출하는 것은 논리적으로(당신은 그것을 볼 수 없을 것입니다) 기술적으로 비정상적입니다. 전체 차트를 표시/다시 그리지 않는 데 큰 비용이 발생합니다(라인뿐만 아니라).

당신이하고있는 일을 이해해야합니다. 답변에 자세히 썼던 내용입니다.

그리고 그 대신에 "더 생각할 필요가 없도록 코드를 제공하라"고 제안하고, 이렇게 하는 것이 잘못된 이유에 대한 설명은 무시합니다.

Renat, 여기 일하는 고문이 있습니다. 나는 바보이고 이 그림들에 대해 전혀 모릅니다. 작동하고 훌륭합니다. 테스트를 위해 운전하고 설명된 문제로 인해 성능이 저하되는 것을 확인했습니다.

우리가 작업하고 있는 모드를 결정하는 정의를 내리는 것이 논리적입니까? 그리고 테스트/최적화 모드에서는 아무 것도 표시되지 않습니까?

 
Alexey Volchanskiy :

Renat, 여기 일하는 고문이 있습니다. 나는 바보이고 이 그림들에 대해 전혀 모릅니다. 작동하고 훌륭합니다. 테스트를 위해 운전하고 설명된 문제로 인해 성능이 저하되는 것을 확인했습니다.

우리가 작업하고 있는 모드를 결정하는 정의를 내리는 것이 논리적입니까? 그리고 테스트/최적화 모드에서는 아무 것도 표시되지 않습니까?


사람들이 이런 식으로 모든 것을 이해하기를 기대하지 마십시오. 여기 OOP 포럼에서 God forbid, 20%가 이해합니다. 이것은 자동차를 아는 것과 비교할 수 있습니다. 모두가 그것을 타지만 소수의 사람들만이 동일한 내연 기관이 어떻게 작동하는지 이해하고 일부만 어떻게든 문제를 해결할 수 있습니다.

그러나 이들은 모두 귀하의 고객입니다)

 
Alexey Volchanskiy :

Renat, 여기 일하는 고문이 있습니다. 나는 바보이고 이 그림들에 대해 전혀 모릅니다. 작동하고 훌륭합니다. 테스트를 위해 운전하고 설명된 문제로 인해 성능이 저하되는 것을 확인했습니다.

우리가 작업하고 있는 모드를 결정하는 정의를 내리는 것이 논리적입니까? 그리고 테스트/최적화 모드에서는 아무 것도 표시되지 않습니까?

그리고 모든 것을 생각하고 근본적으로 개선하는 문제는 무엇입니까?

"작동하고 훌륭함" 모드에는 이미 MQL4-MQL5 라이브러리 유형이 있으므로 머리카락을 뜯어내야 합니다. 모든 진지한 사람들은 그것을 사용하여 두 플랫폼의 속도를 비교합니다.

그래서 이제 당신은 생각하지 않고 "MT5에서는 더 느립니다"라고 선언하면서 서두를 다른 기술을 만들 것을 제안하고 있습니다.

 
Renat Fatkhullin :

"작동하고 훌륭함" 모드에는 이미 MQL4-MQL5 라이브러리 유형이 있으므로 머리카락을 뜯어내야 합니다. 모든 진지한 사람들은 그것을 사용하여 두 플랫폼의 속도를 비교합니다.

근거가 없는 말.

 
Alexey Volchanskiy :

우리가 작업하고 있는 모드를 결정하는 정의를 내리는 것이 논리적입니까? 그리고 테스트/최적화 모드에서는 아무 것도 표시되지 않습니까?

테스터의 코드 성능을 한 줄로 측정할 수 있는 범용 도구가 있습니다. 볼 것이 많았습니다. 특히 단일 실행은 최적화 실행보다 느립니다.

댓글 주제에 개발자 들이 답을 주었습니다 . 그 동안 나 자신 도 한 줄로 최적화 속도를 1.5~2배 높였습니다.

그리고 SD에서 그들은 성능에 중요한 뉘앙스 에 대해 이야기했습니다.


함수 실행의 마이크로초에 대해 걱정하는 것은 최적화 모드에서만 합리적입니다. 실시간으로는 상관없습니다. 그리고 Comment는 10배 느리더라도 실시간으로 Expert Advisor의 성능에 어떤 역할도 하지 않습니다.


그러나 테스터에서 최대한 빨리 실행되도록 Expert Advisors를 작성하는 사람이 거의 없다는 사실은 사실입니다.

 
Renat Fatkhullin :

그리고 사람들이 도구를 이해하지 못하고 속도를 테스트하려고 하면 테스트할 수 없는 것을 정의합니다.

레나트 파트훌린 :

"작동하고 훌륭함" 모드에는 이미 MQL4-MQL5 라이브러리 유형이 있으므로 머리카락을 뜯어내야 합니다. 모든 진지한 사람들은 그것을 사용하여 두 플랫폼의 속도를 비교합니다.


그리고 나는 개인적으로 한 일을 후회하지 않습니다. 이 겉보기에 쓸모 없어 보이는 벤치마크는 결과적으로 전혀 쓸모가 없는 것으로 판명되었습니다. 왜냐하면 자세한 설명 덕분에 유용한 것들이 많이 나왔고, 그 결과 몇 가지 퍼즐이 수렴되기 시작했습니다. 어디에도 쓰여 있지 않으므로 펜치로 모든 것을 잡아 당겨야합니다 :)).

예를 들어 부끄럽지만 캔버스의 Update() 함수가 캔버스의 크기에 관계없이 전체 창을 다시 그립니다. 하지만 이것을 이해하기 위해서는 씨캔버스에서 그녀의 찌꺼기를 보는 것으로 충분했습니다. 그리고 최소한 이 사실에 대한 인식은 작업의 논리를 바꾸고 그래픽과 관련된 일부 구현에서 불필요한 제스처로부터 나를 구할 것입니다. 그리고 댓글은 사실 그것과 아무 관련이 없었고, 그는 "그냥 바닥에 닿기 위해" 행동했다. 다시 한 번 감사합니다!

제가 이해하기 힘든 점은 MT5의 Update(false) 기능이 화면에 아무것도 표시되지 않으면 MT4에서 전체 창이 아니라 Update(true) 비교에서 상당히 빠른 속도로 판단하여 다시 그립니다. 캔버스 자체 만. 저것들. MT5의 ResourceCreate 함수는 ChartRedraw() 없이 화면에 픽셀 배열을 표시하지 않지만 MT4에서는 표시됩니다. MT5에서도 유용할 것 같습니다.

 
Nikolai Semko :

MT5의 ResourceCreate는 ChartRedraw() 없이 화면에 픽셀 배열을 표시하지 않지만 MT4에서는 표시합니다.

그리고 그는 그것을 올바르게 합니다. 이것은 개체의 속성을 변경한 후 ChartRedraw를 수행하지 않는 것만큼 논리적입니다. 용어 사용

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

오류, 버그, 질문

레나트 팻쿨린 , 2017.12.05 02:51

  • MT5에는 차트의 개체를 변경하는 데 더 정확한 시스템이 있으며 읽기/쓰기 명령을 혼합한 결과를 명확하게 이해해야 합니다.
    읽기/쓰기 명령을 혼합하지 말고 대량 읽기 및 대량 쓰기 명령을 별도로 수행하는 것이 좋습니다.

ChartRedraw는 각각의 쓰기가 아니라 대량 쓰기 후에 호출되어야 합니다.