초보자의 질문 MQL5 MT5 MetaTrader 5 - 페이지 1129

 
Alexey Viktorov :

왜 그렇게 자신을 놀려? 디스플레이 버퍼를 먼저 할당한 다음 보조 버퍼를 할당하는 데 문제가 있습니까?

알고리즘의 특징은 항상 고정된 수의 보조 버퍼 가 있고 다른 수의 표시된 버퍼가 있다는 것입니다. 이 모든 것이 얼마나 정확하게 표시되었는지에 대한 이전 메시지의 질문에 답하십시오.


알렉세이 빅토로프 :

DRAW_HISTOGRAM2에는 3개의 버퍼와 필수 시퀀스가 제공됩니다. 처음 2개의 값 버퍼와 그 뒤에 컬러 버퍼가 있습니다. 그러나 DRAW_HISTOGRAM과 DRAW_HISTOGRAM2 사이에는 DRAW_HISTOGRAM이 0에서 버퍼의 값으로 그려지고 DRAW_HISTOGRAM2가 1의 값에서 그려지는 것과 같은 차이가 있습니다. 버퍼를 다른 버퍼의 값으로 변경합니다.

https://www.mql5.com/en/docs/customind/indicators_examples/draw_histogram2의 DRAW_HISTOGRAM2 설명에서 :

" DRAW_HISTOGRAM2를 빌드하는 데 필요한 버퍼 수는 2입니다. "

그러면 세 번째 버퍼는 어디로 가져갈까요? 그리고 같은 링크의 예에서는 버퍼가 2개뿐인데 일반 DRAW_HISTOGRAM과 동일한 방식으로 색상을 대체할 수 있는지 여부는 표시되지 않습니다.
 
The_Sheikh :

알고리즘의 특징은 항상 고정된 수의 보조 버퍼 가 있고 다른 수의 표시된 버퍼가 있다는 것입니다. 이 모든 것이 얼마나 정확하게 표시되었는지에 대한 이전 메시지의 질문에 답하십시오.


https://www.mql5.com/en/docs/customind/indicators_examples/draw_histogram2의 DRAW_HISTOGRAM2 설명에서 :

" DRAW_HISTOGRAM2를 빌드하는 데 필요한 버퍼 수는 2입니다. "

그러면 세 번째 버퍼는 어디로 가져갈까요? 그리고 같은 링크의 예에서는 버퍼가 2개뿐인데 일반 DRAW_HISTOGRAM과 동일한 방식으로 색상을 대체할 수 있는지 여부는 표시되지 않습니다.

네, 배려가 부족해서 죄송합니다. DRAW_COLOR_HISTOGRAM2 및 DRAW_COLOR_HISTOGRAM을 의미했습니다.

 
The_Sheikh :

알고리즘의 특징은 항상 고정된 수의 보조 버퍼 가 있고 다른 수의 표시된 버퍼가 있다는 것입니다. 이 모든 것이 얼마나 정확하게 표시되었는지에 대한 이전 메시지의 질문에 답하십시오.

저는 제 자신을 이렇게 괴롭힌 적이 없습니다. 원한다면 실험하십시오.

 
이 주제와 관련이 없는 댓글은 " MQL4 MT4 MetaTrader 4 초보자의 질문 "으로 이동되었습니다.
 

PlotIndexSetInteger() 함수 로 색상을 올바르게 설정하는 방법은 무엇입니까?

내가 가리킬 때

#property indicator_color3 clrRed,clrGreen

그런 다음 색상이 정상적으로 설정되고 기능을 통해 설정하면

PlotIndexSetInteger(2,PLOT_LINE_COLOR,0,clrRed);

PlotIndexSetInteger(2,PLOT_LINE_COLOR,1,clrGreen);

그런 다음 선의 첫 번째 색상은 빨간색이고 두 번째(및 후속)는 어떤 이유로 녹색 대신 검정색(기본값)입니다.

 
The_Sheikh :

PlotIndexSetInteger() 함수 로 색상을 올바르게 설정하는 방법은 무엇입니까?

내가 가리킬 때

#property indicator_color3 clrRed,clrGreen

그런 다음 색상이 정상적으로 설정되고 기능을 통해 설정하면

PlotIndexSetInteger(2,PLOT_LINE_COLOR,0,clrRed);

PlotIndexSetInteger(2,PLOT_LINE_COLOR,1,clrGreen);

그런 다음 선의 첫 번째 색상은 빨간색이고 두 번째 색상은 어떤 이유로 녹색 대신 검정색(기본값)입니다.

왜 거기에 수정자가 있습니까?

 
Alexey Viktorov :

왜 거기에 수정자가 있습니까?

어느 쪽, 어디? MQL5 문서 의 예제를 보고 동일한 작업을 수행했습니다. 쓰는거 맞지?

 
The_Sheikh :

어느 쪽, 어디? MQL5 문서 의 예제를 보고 동일한 작업을 수행했습니다. 쓰는거 맞지?

표시기 버퍼를 초기화하기 위한 전체 코드를 표시합니다.
 
The_Sheikh :

어느 것, 어디? MQL5 문서 의 예제를 보고 동일한 작업을 수행했습니다. 쓰기 맞나요?

그것을 보았다

 bool    PlotIndexSetInteger ( 
   int   plot_index,         // индекс графического стиля 
   int   prop_id,           // идентификатор свойства 
   int   prop_value         // устанавливаемое значение 
   );

그랬다

 bool    PlotIndexSetInteger ( 
   int   2,                 // индекс графического стиля 
   int   PLOT_LINE_COLOR,   // идентификатор свойства 
   int   0,                 // модификатор свойства 
   int   clrGreen           // устанавливаемое значение 
   )

그리고 거기에 문서에는 다음과 같이 나와 있습니다.

【인】 지정된 속성의 수정자입니다. 색상 인덱스 속성에만 수정자가 필요합니다.


이것은 지하 표시기 레벨, fibo 레벨 및 유사한 것이 다른 색상으로 할당된 경우 수정자가 되어야 함을 의미합니다.
 
Artyom Trishkin :
표시기 버퍼를 초기화하기 위한 전체 코드를 표시합니다.

이 같은

 #property indicator_chart_window
//#property indicator_separate_window
#property indicator_buffers 4
#property indicator_plots 2

#define GreenC 0x00FF00
#define RedC 0x0000FF
#property indicator_type1 DRAW_NONE
#property indicator_type2 DRAW_COLOR_HISTOGRAM2
//#property indicator_color2 GreenC,RedC

double
Arr11[],
Arr21[],
Arr22[],
Arr23[];

void OnInit ()
{
SetIndexBuffer ( 0 ,Arr11, INDICATOR_CALCULATIONS );
SetIndexBuffer ( 1 ,Arr21, INDICATOR_DATA );
SetIndexBuffer ( 2 ,Arr22, INDICATOR_DATA );
SetIndexBuffer ( 3 ,Arr23, INDICATOR_COLOR_INDEX );
IndicatorSetInteger ( INDICATOR_DIGITS , Digits ());
PlotIndexSetInteger ( 1 , PLOT_LINE_WIDTH , 4 );
PlotIndexSetInteger ( 1 , PLOT_LINE_COLOR , 0 ,GreenC);
PlotIndexSetInteger ( 1 , PLOT_LINE_COLOR , 1 ,RedC);
//PlotIndexSetDouble(1,PLOT_EMPTY_VALUE,0.0);
}

int OnCalculate ( const int rates_total,
                 const int prev_calculated,
                 const datetime &time[],
                 const double &open[],
                 const double &high[],
                 const double &low[],
                 const double &close[],
                 const long &tick_volume[],
                 const long &volume[],
                 const int &spread[]
)
{
ArraySetAsSeries (open, 0 );
ArraySetAsSeries (close, 0 );
ArraySetAsSeries (low, 0 );
ArraySetAsSeries (high, 0 );
ArrayInitialize (Arr11, 0.0 );
ArrayInitialize (Arr21, 0.0 );
ArrayInitialize (Arr22, 0.0 );
ArrayInitialize (Arr23, 0.0 );

for ( int I= 0 ;I<rates_total;I++)
{
Arr22[I]=low[I];
Arr23[I]= 0.0 ;
//Arr23[I]=1.0;
}

return (rates_total);
}

알렉세이 빅토로프 :

그것을 보았다

그랬다

그리고 거기에 문서에는 다음과 같이 나와 있습니다.

이것은 지하 표시기 레벨, fibo 레벨 및 유사한 것이 다른 색상으로 할당된 경우 수정자가 되어야 함을 의미합니다.

그냥 내 경우.

다음은 참조에서 DRAW_COLOR_HISTOGRAM2에 대한 예의 스니펫입니다.

/--- для каждого цветового индекса зададим новый цвет случайным образом
   for ( int plot_color_ind= 0 ;plot_color_ind<plot_colors;plot_color_ind++)
     {
       //--- получим случайное число
       int number= MathRand ();
       //--- получим индекс в массиве col[] как остаток от целочисленного деления
       int i=number%size;
       //--- установим цвет для каждого индекса как свойство PLOT_LINE_COLOR
       PlotIndexSetInteger ( 0 ,                     //  номер графического стиля
                           PLOT_LINE_COLOR ,       //  идентификатор свойства
                          plot_color_ind,       //  индекс цвета, куда запишем цвет
                          cols[i]);             //  новый цвет

여기서 plot_colors = 8, cols[]는 색상이 다른 배열입니다. 그러나 터미널은 첫 번째 색상을 제외하고는 어떤 색상도 인식하지 못합니다.