Perguntas de Iniciantes MQL5 MT5 MetaTrader 5 - página 1129

 
Alexey Viktorov:

Porque é que tem de fazer tanto alarde de si mesmo? Qual é o problema em atribuir os amortecedores a serem exibidos primeiro, e depois os amortecedores auxiliares?

Uma peculiaridade do algoritmo, os amortecedores auxiliares são sempre um número fixo, enquanto que o número de amortecedores a serem exibidos varia. Por favor, responda à pergunta do post anterior sobre como especificar tudo correctamente?


Alexey Viktorov:

Para DRAW_HISTOGRAM2 3 buffers são especificados e a sequência é obrigatória, 2 buffers de valor primeiro seguidos por um buffer de cor. Mas existe uma diferença entre DRAW_HISTOGRAM e DRAW_HISTOGRAM2 na medida em que DRAW_HISTOGRAM é extraído de zero para o valor no tampão, enquanto DRAW_HISTOGRAM2 é extraído do valor de um tampão para o valor de outro tampão.

Da descrição de DRAW_HISTOGRAM2 em https://www.mql5.com/ru/docs/customind/indicators_examples/draw_histogram2 :

"O número de tampões necessários para construir DRAW_HISTOGRAM2 é 2".

De onde viria então o terceiro tampão? E no exemplo na mesma ligação existem apenas dois tampões, mas não está especificado se as cores podem ser intercaladas da mesma forma que com um DRAW_HISTOGRA normal?
 
The_Sheikh:

Uma peculiaridade do algoritmo, os amortecedores auxiliares são sempre um número fixo, enquanto o número de amortecedores cartografados varia. Por favor, responda à pergunta do post anterior sobre como especificar tudo correctamente?


Da descrição de DRAW_HISTOGRAM2 em https://www.mql5.com/ru/docs/customind/indicators_examples/draw_histogram2 :

"O número de tampões necessários para construir DRAW_HISTOGRAM2 é 2".

De onde viria então o terceiro tampão? E no exemplo na mesma ligação existem apenas dois tampões, mas não está especificado se as cores podem ser intercaladas da mesma forma que com um DRAW_HISTOGRA normal?

Sim, desculpem a minha falta de atenção. Referia-me a DRAW_COLOR_HISTOGRAM2 e DRAW_COLOR_HISTOGRAM

 
The_Sheikh:

Uma peculiaridade do algoritmo, os amortecedores auxiliares são sempre um número fixo e os amortecedores apresentados têm números diferentes. Por favor, responda à pergunta do post anterior sobre como especificar tudo isto correctamente?

Nunca tinha feito troça de mim próprio desta maneira. Se o desejar, experimente.

 
Comentários não relacionados com este tópico foram transferidos para "Perguntas dos principiantes do MQL4 MT4 MetaTrader 4".
 

Como posso definir as cores correctamente com PlotIndexSetInteger()?

Quando especifico

#indicador de propriedade_color3 clrRRed,clrGreen

as cores são definidas correctamente, mas quando utilizo o

PlotIndexSetInteger(2,PLOT_LINE_COLOR,0,clrRRed);

PlotIndexSetInteger(2,PLOT_LINE_COLOR,1,clrGreen);

depois a primeira cor da linha é vermelha, mas a segunda (e as subsequentes) é preta (por defeito) em vez de verde, por alguma razão.

 
The_Sheikh:

Como posso definir as cores correctamente com PlotIndexSetInteger()?

Quando especifico

#indicador de propriedade_color3 clrRRed,clrGreen

as cores são definidas correctamente, mas quando utilizo o

PlotIndexSetInteger(2,PLOT_LINE_COLOR,0,clrRRed);

PlotIndexSetInteger(2,PLOT_LINE_COLOR,1,clrGreen);

depois a primeira cor da linha é vermelha, mas a segunda é preta (por defeito) em vez de verde, por alguma razão.

Porquê colocar lá um modificador?

 
Alexey Viktorov:

Porquê colocar lá um modificador?

Qual deles, onde? Olhei para o exemplo na documentação da MQL5 e fiz o mesmo. Escreva-o, como é que está correcto?

 
The_Sheikh:

Qual deles, onde? Olhei para o exemplo na documentação MQL5 e fiz o mesmo. Escreva-o, como é que está correcto?

Mostrar todos os códigos para a inicialização dos amortecedores indicadores.
 
The_Sheikh:

Qual deles, onde? Olhei para o exemplo na documentação da MQL5 e fiz o mesmo. Como fazê-lo correctamente?

Procurei-o

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

e fez isto.

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

E diz na documentação

[em] Modificador de bens especificados. Apenas as propriedades de índice de cor requerem um modificador.


Isto significa que o modificador deve ser se diferentes cores de níveis indicadores de porão, níveis de Fibo ou algo semelhante devem ser atribuídos
 
Artyom Trishkin:
Mostrar todos os códigos para a inicialização dos amortecedores indicadores.

Algo parecido com isto

#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);
}

Alexey Viktorov:

Procurei-o

e fez isto.

E aí, na documentação, diz

Isto significa que o modificador deve ser se forem atribuídas diferentes cores de níveis indicadores de cave, níveis de fibo e algo semelhante

Exactamente o meu caso.

Aqui está um exemplo de DRAW_COLOR_HISTOGRAM2 no manual:

/--- для каждого цветового индекса зададим новый цвет случайным образом
   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]);             //  новый цвет

Aqui plot_colors = 8, cols[] - matriz com cores diferentes. Mas o terminal não percebe nenhuma cor, excepto a primeira.

Razão: