다이렉트X - 페이지 7

 
Aleksey Vyazmikin :

멋진. 그리고 Si에 유리를 놓으면 거래소가 열릴 때 프로세서 로드는 어떻습니까?

오더북에 미결 포지션 의 그래픽 디스플레이가 있습니까? 나는 표준 유리에서 이것을 정말로 그리워합니다.

프로세서가 잘로드됩니다. 이전 그림에서 열린 위치를 볼 수 있습니다. 가격 주변의 프레임은 마젠타 색이며 위치는 빨간색으로, 위치는 아래 그림에서 검은 색입니다.


 

하나의 캔버스에 모두

 
Rafil Nurmukhametov :

프로세서가 잘로드됩니다. 이전 그림에서 열린 위치를 볼 수 있습니다. 가격 주변의 프레임은 마젠타 색이며 위치는 빨간색으로, 위치는 아래 그림에서 검은 색입니다.


그리고 새로 고침 빈도를 제한하면 초당 10번을 넘지 않습니까? 브레이크는 트레이딩 패널의 프리즈로 이어질 것입니다 - 아니요?

나는 위치 상태 표시에 대해 본다 - 그것은 편리해 보인다!

 
Aleksey Vyazmikin :

그리고 새로 고침 빈도를 제한하면 초당 10번을 넘지 않습니까? 브레이크는 트레이딩 패널의 프리즈로 이어질 것입니다 - 아니요?

...

Rafil이 어떻게 구현했는지는 정확히 모르겠지만 전체 캔버스와 별도로 셀을 다시 그리면 로드 문제가 해결됩니다.

이를 위해:

1. 각 셀은 상단에 텍스트가 있는 독립적인 직사각형 레이블이어야 하며 배열에 고유한 좌표와 크기가 있어야 합니다.

2. 값 변경 이벤트에서 사각형(배경)이 먼저 다시 그려진 다음 텍스트가 다시 그려집니다. 다시 그리기 영역은 전체 캔버스 영역보다 수십 배 작기 때문에 부하가 수십 퍼센트 떨어집니다.

 
Реter Konow :

Rafil이 어떻게 구현했는지는 정확히 모르겠지만 전체 캔버스와 별도로 셀을 다시 그리면 로드 문제가 해결됩니다.

이를 위해:

1. 각 셀은 상단에 텍스트가 있는 독립적인 직사각형 레이블이어야 하며 배열에 고유한 좌표와 크기가 있어야 합니다.

2. 값 변경 이벤트에서 사각형(배경)이 먼저 다시 그려진 다음 텍스트가 다시 그려집니다. 다시 그리기 영역은 전체 캔버스 영역보다 수십 배 작기 때문에 부하가 수십 퍼센트 떨어집니다.

오더북의 요지는 가격이 오르면 아예 다시 그려야 하는데 시각화의 왼쪽 부분 - 네, 옵션이 있을 수 있지만 따로 클러스터 개체(촛불?)가 있는 것 같아요. 새로운 정보가 도착할 때만 다시 그려집니다.

 
Aleksey Vyazmikin :

오더북의 요지는 가격이 오르면 eo를 통째로 다시 그려야 하지만 시각화의 왼쪽 부분 - 네, 옵션이 있을 수 있지만 별도의 클러스터 개체(촛불?)가 있는 것 같아요. 새로운 정보가 도착할 때만 다시 그려집니다.

전혀 필요하지 않습니다. 유리의 가격은 한 번에 변경되지 않으며 일부 셀은 주기적으로 유휴 상태입니다. 캔버스 전체를 다시 그리는 것은 의미가 없습니다.

왼쪽도 마찬가지입니다. 그러나 심각한 부하가 없습니다. 차트 스크롤 및 현재 막대에만 있는 경우. 하지만, 많지 않습니다.

 
Реter Konow :

전혀 필요하지 않습니다. 유리의 가격은 한 번에 변경되지 않으며 일부 셀은 주기적으로 유휴 상태입니다. 캔버스 전체를 다시 그리는 것은 의미가 없습니다.

선택 사항이지만 가격이 움직이고 있으므로 셀의 값이 변경됩니다. 다른 방법은 무엇입니까? 또 다른 것은 가격에 따라 사각형의 좌표를 변경하는 경우인데 이것도 캔버스 내에서 그리는 것이라고 생각합니다.

 
Aleksey Vyazmikin :

선택 사항이지만 가격이 움직이고 있으므로 셀의 값이 변경됩니다. 다른 방법은 무엇입니까? 또 다른 것은 가격에 따라 사각형의 좌표를 변경하는 경우인데 이것도 캔버스 내에서 그리는 것이라고 생각합니다.

가격은 움직이고 주문장은 중앙 집중화 되며 다시 그리기가 필요합니다. 아무도 주장하지 않습니다. 다시 그리는 영역에 관한 것입니다.

많은 셀이 유휴 상태이며 각 DOM 이벤트에서 값을 변경하지 않습니다. 예를 들어 지정가 주문의 볼륨은 때때로 몇 개의 셀에서만 변경되고 나머지 셀의 가격과 볼륨은 변경되지 않은 상태로 유지됩니다. 이 경우 전체 캔버스를 다시 그리는 것은 리소스 낭비입니다. 셀의 변경 사항을 제어하고 새로운 값이 도래하는 경우 별도로 그려야 합니다.

이 간단한 접근 방식은 부하를 크게 줄입니다.

또한 셀에 값을 표시하는 빈도를 줄일 수 있습니다.

Документация по MQL5: Константы, перечисления и структуры / Торговые константы / Виды заявок в стакане цен
Документация по MQL5: Константы, перечисления и структуры / Торговые константы / Виды заявок в стакане цен
  • www.mql5.com
Для биржевых инструментов доступно окно "Стакан цен", в котором можно посмотреть текущие заявки на покупку и продажу. Для каждой заявки указано желаемое направление торговой операции, требуемый объем и запрашиваемая цена. Для получения информации...
 
Реter Konow :

가격이 이동하고 오더북이 중앙 집중화 되고 다시 그리기가 필요합니다. 아무도 주장하지 않습니다. 다시 그리는 영역에 관한 것입니다.

많은 셀이 유휴 상태이며 각 DOM 이벤트에서 값을 변경하지 않습니다. 예를 들어 지정가 주문의 볼륨은 때때로 몇 개의 셀에서만 변경되고 나머지 셀의 가격과 볼륨은 변경되지 않은 상태로 유지됩니다. 이 경우 전체 캔버스를 다시 그리는 것은 리소스 낭비입니다. 셀의 변경 사항을 제어하고 새로운 값이 도래하는 경우 별도로 그려야 합니다.

이 간단한 접근 방식은 부하를 크게 줄입니다.

또한 셀에 값을 표시하는 빈도를 줄일 수 있습니다.

예, 귀하의 생각을 이해합니다. 그러나 가격 및 거래량 변경에 대한 정보는 종종 시장 개장과 동시에 (추측) 나올 수 있습니다.

나만의 유리잔을 만들고 싶었던 기억이 납니다. 결과가 있나요?

 
Aleksey Vyazmikin :

예, 귀하의 생각을 이해합니다. 그러나 가격 및 거래량 변경에 대한 정보는 종종 시장 개장과 동시에 (추측) 나올 수 있습니다.

나만의 유리잔을 만들고 싶었던 기억이 납니다. 결과가 있나요?

여기에서 어제 유리의 예를 만들었습니다. 그 셀은 전체 창의 캔버스에 관계없이 다시 그려집니다. https://www.mql5.com/ru/forum/333652/page4

별도의 셀 다시 그리기는 셀이 모두 다시 그려지는 경우에도 40fps에서 로드를 20% 이내로 유지하는 것으로 나타났습니다(비디오 녹화로 인해 비디오에서 더 많음). 이 접근 방식을 사용하는 유리의 일반적인 역학은 대략 5-10% 정도 배송됩니다.

큰 영역(~ 500 * 500 px)을 일시 중지(~ 40+ fps) 없이 높은 빈도로 다시 그리는 경우에만 부하가 높습니다. 다시 그리기 영역이 지연되거나 감소하면 로드가 몇 배 감소합니다.

DirectX
DirectX
  • 2020.03.13
  • www.mql5.com
Привет, кто-нибудь уже разобрался с directx, там есть DirectCompute...