지표: DRAW_FILLING

 

DRAW_FILLING:

DRAW_FILLING 그리기 스타일을 사용하면 두 지표의 버퍼 값을 사용하여 영역을 나타낼 수 있습니다. 실제로는 두 개의 선을 그리고 그 사이의 영역을 지정된 색상으로 채웁니다.

DRAW_FILLING

작성자: MetaQuotes

 

드로잉 속성 DRAW_FILLING을 사용하여 게시된 코드를 사용하여 나만의 인디케이터를 작성하려고 했습니다.

그러나 빈 값으로 구분 된 인접한 그려진 섹션이 고착되는 문제가 있습니다.

두 개의 그려진 섹션이 하나의 창에 나타나면 EMPTY_VALUE 값을 가진 표시기 섹션으로 구분되어 있음에도 불구하고이 빈 섹션은 여전히 인접한 섹션의 값으로 그려집니다.


세션 표시기에 대한 게시된 코드가 저에게 맞지 않아서 모든 것을 다시 작성하기로 결정했습니다.

다음은 초안입니다.

파일:
Session.mq5  4 kb
 

이 옵션만 제공할 수 있습니다.


파일:
Session.mq5  4 kb
 
Rosh:

이 옵션만 제공할 수 있습니다.


고맙지만 조금은 가지 않고 그래프 개체에서 멈출 것입니다.

 
Urain:

고맙지만 조금은 가지 않을 것입니다, 나는 그래프 개체에서 멈출 것입니다.

드로우_채우기 스타일로 그리는 것은 다각형으로 이루어지기 때문에 안타깝게도 멋진 직사각형을 얻을 수 없습니다.
Документация по MQL5: Стандартные константы, перечисления и структуры / Константы индикаторов / Стили рисования
Документация по MQL5: Стандартные константы, перечисления и структуры / Константы индикаторов / Стили рисования
  • www.mql5.com
Стандартные константы, перечисления и структуры / Константы индикаторов / Стили рисования - Документация по MQL5
 
Rosh:
DRAW_FILLING 스타일 그리기는 다각형으로 이루어지기 때문에 안타깝게도 멋진 직사각형을 얻을 수 없습니다.
이 방법은 이 목적에는 적합하지 않지만 다른 목적에는 나쁘지 않습니다.
 

동일한 문제가 발생했습니다 (빈 값 영역에 고착). 위에서 직사각형을 얻는 것이 불가능하다고 말했지만 이러한 직사각형을 그리는 예제(거래 세션 표시기)가 있기 때문에 주제를 파헤치기로 결정했습니다.

솔직히 말해서 위의 지표에서 직사각형을 얻는 방법을 이해할 수 없었습니다. 따라서 플랫폼 개발자, 저자, 타사 개발자로부터 어떤 설명이라도 감사하겠습니다.

반면에 실험 과정에서 직사각형을 얻는 것이 그렇게 어렵지 않다는 것이 밝혀졌습니다. 빈 값 섹션 다음에 파일링 버퍼를 교체하기 만하면됩니다. 즉, 이 코드

...
//--- 
   for ( int bar = startBar; bar < rates_total && !IsStopped(); bar++ ) {
      if ( prev_calculated != rates_total && bar == rates_total - 1 ) {
         _up = up;
      }
      if ( bar % 4 == 0 ) {
         if ( up ) {
            draw(bar, high[bar], low[bar]);
            up = false;
         } else {
            draw(bar, low[bar], high[bar]);
            up = true;
         }
      }
   }
//--- 다음 호출을 위한 prev_calculated의 반환 값
   return(rates_total);
}
//+------------------------------------------------------------------+
void draw(int bar, double price1, double price2) {
//---
   int start = bar-2;
   
   for ( int i = start; i <= bar; i++ ) {
      FillingBuffer1[i] = price1;
      FillingBuffer2[i] = price2;
   }
//---
}

는 이 결과를 제공합니다:

샘플 채우기


문제가 해결된 것처럼 보입니다. 사용자가 지정한 시간 간격을 매일 할당하는 인디케이터를 작성했는데 새로운 사실을 알게 되었습니다:

시간대

아무리 비틀어도 "부작용"을 제거할 수 없다는 것입니다. 첫 번째 경우(위의 코드와 그림)에서는 이와 같은 현상이 관찰되지 않았습니다.

따라서 질문이 생겼습니다:

  • 거래 세션 표시기(게시물 시작 부분의 링크)가 빈 값 영역에 달라붙는 문제가 없는 이유는 무엇인가요?
  • 왜 어떤 경우에는 직사각형이 정상적으로 그려지고 다른 경우에는 부작용이 발생합니까? 코드는 게시물 끝에 첨부되어 있습니다. (예, 그러한 현상이 항상 발생한다면 다각형에 대한 진술에 동의합니다).

나는 반복한다 : 나는 모든 설명에 감사 할 것이다.

추신 : 나에게 보이는 것처럼 직사각형 문제에 대한 해결책은 물체에 대한 좋은 대안입니다 (어떻게 든 실제로 사용하고 싶지 않은). 결국, 그것은 시간 간격, 선형 반전, 다바스 영역, 다양한 패턴의 선택 등의 동일한 선택입니다.

추신 : 시간대 표시기를 코드베이스에 넣을 생각을했지만 (이 "왼쪽"막대가있는) 그만한 가치가 있습니까?

파일:
 
'왼쪽' 막대 렌더링 오류가 수정되었습니다.
 

범위를 채우지 않는 경우 PlotIndexSetDouble (1,PLOT_EMPTY_VALUE,EMPTY_VALUE); 를 사용합니다.

어떤 때는 효과가 있지만 어떤 때는 효과가 없는 이유는 무엇인가요?


참조 https://www.mql5.com/zh/forum/417956/page4

问题,错误的讨论
问题,错误的讨论
  • 2022.05.05
  • www.mql5.com
那么,让我们开始吧...