기고글 토론 "시각화! R 언어의 'plot'과 유사한 MQL5 그래픽 라이브러리" - 페이지 6

 
Nikolai Semko #:
저는 실제로 여러 개의 캔버스를 사용합니다(보통 4개 이하).
항상 황금률은 존재합니다. 한 가지 극단적인 방법은 하나의 캔버스에 모든 정적 요소와 동적 요소를 모두 그리는 것이고, 다른 극단적인 방법은 모든 개체를 별도의 캔버스로 그리는 것입니다.
투명도가 서로 겹치는 두 개의 캔버스가 있는 경우 CPU(Win10-11 GPU일 수도 있지만 여전히 CPU라고 생각합니다)가 균일한(투명도가 0이 아닌) 배경의 모든 픽셀을 혼합한다는 사실을 잊지 않는 것이 중요합니다.
여기서 JS에서 캔버스 또는 그 일부를 캐싱하여 성능을 향상시키는 방법을 빌릴 수 있습니다.
앤티 앨리어싱 원에 관해서는 이미 반경이 ~ 5 픽셀 미만인 원에 이상적인 (성능 측면에서) 이러한 원의 변형을 게시했습니다. 이 함수는 iDot()이라고 불렸고 3DStars 코드에 있었던 것 같습니다. 매우 원시적이고 짧습니다(약 10줄의 코드). 반경이 큰 원의 경우 성능 측면에서 최적과는 거리가 멀다. 더 큰 반경의 경우 고성능 함수는 이미 100줄이 넘는 코드입니다.
네, 수년간 캔버스에서 뇌의 새로운 신경 연결을 구축한 끝에 이제 캔버스에서 어떤 수준에서든 라이브러리를 만들 수 있습니다. 시간과 동기만 있다면 말이죠.
Wu 알고리즘은 구식으로 간주됩니다.

코드를 보기 위해 iDot() 또는 3DStars를 검색할 수 없습니다.

차트 자체(배경색)와 요소의 색상(막대, 매도/매수선 등)을 포함해 캔버스 아래의 모든 것을 고려해야 했습니다.

반투명 요소가 그려진 투명한 배경의 캔버스를 이동하는 동안 모든 픽셀이 올바르게 그려져야 합니다.

지금은 그렇지 않습니다:


 
Nikolai Semko #:

아르템, 이것은 새로운 신경 연결이 필요한 사소한 작업이 아닙니다. 예를 들어 SVG에는 viewBox와 같은 개념이 있습니다. 저는 이미 작동 방식에 대한 많은 비디오를 보았고, 많은 문서를 읽고, 많은 코드를 작성했지만 여전히 때때로 당황합니다. 여러 번 모든 것을 알아낸 것 같았지만 여전히 필요한 신경 연결이 없습니다.

그래도 저희는 여전히 여러분을 믿습니다 ;)
 

트레이딩, 자동매매 시스템 및 트레이딩 전략 테스트 포럼

"시각화하세요! R의 아날로그로서 MQL5의 그래픽 라이브러리"

아나톨리 카자르스키, 2023.07.31 17:39

...

차트 자체(배경색)와 요소의 색상(막대, 매도/매수선 등)을 포함하여 캔버스 아래에있는 모든 것을 고려해야 한다는 뜻이었습니다.

반투명 요소가 그려진 투명한 배경의 캔버스를 이동하는 동안 모든 픽셀이 올바르게 그려져야 합니다.

지금은 그렇지 않습니다:


다음은 한 캔버스(파란색 원)가 다른 캔버스(그림이 있는 파란색 사각형) 위에 있는 예시이며, 여기에서도 아래 캔버스에 그려진 내용이 고려되지 않습니다:


 
Anatoli Kazharski #:

코드를 볼 수 있는 iDot() 또는 3DStars 검색을 찾을 수 없습니다.

차트 자체(배경색)와 차트 요소(막대, 매도/매수선 등)의 색상을 포함하여 캔버스 아래의 모든 것을 고려해야 했습니다.

반투명 요소가 그려진 투명한 배경의 캔버스를 이동하는 동안 모든 픽셀이 올바르게 그려져야 합니다.

지금은 그렇지 않습니다:


https://www.mql5.com/ru/forum/227736/page72#comment_25130501

여기에서도 색상이 배경과 혼합되어 있습니다.
https://www.mql5.com/ru/forum/451355/page5#comment_48450810
 
Nikolai Semko #:
h ttps://www.mql5.com/ru/forum/227736/page72#comment_25130501

여기에서도 색상이 배경과 혼합되어 있습니다.
https://www.mql5.com/ru/forum/451355/page5#comment_48450810

감사합니다! 아주 멋진 예시입니다! 제가 틀렸군요.

아직 코드를 자세히 살펴보지는 않았지만 기본 CCanvas에서 투명도가 예상대로 그려지지 않는 이유는 무엇인가요?

 
Anatoli Kazharski #:

감사합니다! 정말 멋진 예시들이네요! 제가 틀렸군요.

아직 코드를 자세히 살펴보지는 않았지만 기본 CCanvas에서 투명도가 예상대로 그려지지 않는 이유는 무엇인가요?

여기에는 여러 가지 문제가 있습니다.
작업하던 프로그래머가 해고되어서 완성하지 못한 것 같습니다. 제가 틀렸을 수도 있습니다.
 
Nikolai Semko #:
문제가 많은 것 같습니다.
담당 프로그래머가 해고되어서 완성하지 못한 것 같다는 느낌이 듭니다. 제가 틀릴 수도 있습니다.

니콜라이, 표준 CCanvas에서 무엇을 어떻게 변경하는 것이 바람직한지 목록을 만들어 주시겠어요? 귀하의 의견으로. 지금과 마찬가지로 그리고 그래야합니다. 그리고 그 이유.

 
Artyom Trishkin #:

Nicholas, 표준 CCanvas에서 무엇을 어떻게 변경하는 것이 바람직한지 목록을 만들어 주시겠어요? 여러분의 의견입니다. 지금처럼, 그리고 그래야만 합니다. 그리고 그 이유도요.

CCanvas보다 기능이 적은 새 클래스가 필요합니다. 전체 IT가 웹으로 이동하고 있기 때문에 학습 및 채택의 용이성을 위해 본질적으로 많은 기능이없는 JS 캔버스에 최대한 가깝게 만드는 것이 좋습니다.
하지만 이것이 이상적입니다.
아마 이런 것을 직접 쓸 수 있지만 적어도 반년이 걸릴 것입니다 풀 타임
개인적으로 JS Canvas의 모든 것을 좋아하지는 않지만 표준화를 위해 문자열 구문 분석없이 수행 할 수있는 작은 변경으로 이와 같은 것을 구현하는 것이 옳을 것입니다.

하지만 정상적인 작업을 위해서는 MT5 이벤트 모델을 다시 실행해야 합니다.

MT5의 캔버스는 JS 캔버스보다 두 배 빠르게 작동해야 합니다. 그러나 이를 위해서는 (지연이 없는 인터페이스를 위해) MT5 내부에서 많은 것을 변경해야 하는데, Renat은 절대 그렇게 하지 않습니다.

HTML Canvas Reference
HTML Canvas Reference
  • www.w3schools.com
W3Schools offers free online tutorials, references and exercises in all the major languages of the web. Covering popular subjects like HTML, CSS, JavaScript, Python, SQL, Java, and many, many more.
 
Nikolai Semko #:

CCanvas보다 기능이 적은 새로운 클래스가 필요합니다. 전체 IT가 웹으로 이동하고 있기 때문에 학습 및 채택의 용이성을 위해 본질적으로 많은 기능이 없는 JS 캔버스에 최대한 가깝게 만드는 것이 좋습니다.
하지만 이것이 이상적입니다.
아마 이런 것을 직접 작성할 수 있지만 풀타임으로 최소 반년이 걸릴 것입니다.
개인적으로 JS 캔버스의 모든 것을 좋아하지는 않지만 표준화를 위해 문자열 파싱없이 수행하기 위해 약간의 변경으로 비슷한 것을 구현하는 것이 옳을 것입니다.

그러나 정상적인 작업을 위해서는 MT5 이벤트 모델을 다시 실행해야 합니다.

모든 것이 "칼 밑"에 있다는 것은 분명하지만 여전히 질문은 약간 달랐습니다. 기존 클래스에서 변경 / 개선하는 것이 바람직한 것은 ...

 
Artyom Trishkin #:

모든 것이 "칼 밑"에 있다는 것은 분명하지만 여전히 질문은 약간 달랐습니다. 기존 수업에서 변경 / 개선하는 것이 바람직한 것은 무엇입니까?

그것을 실현할 수 있는 매끄러운 방법. 이제 CCanvas에는 문서화되지 않은 기능도 있다고 생각합니다.