Perguntas de principiantes em MQL5. Os profissionais não passam por eles. - página 6

 
_o0O:

Especialmente não qualquer, daí que quaisquer perguntas sejam apenas bem-vindas.

A ajuda não contém esta nuance. DRAW_NONE não funciona nem #property nem em PlotIndexSetInteger(0,PLOT_DRAW_TYPE,DRAW_NONE), PlotIndexSetString(0, PLOT_LABEL, "Buff") também não funciona, portanto qual é a lógica por detrás de especificar clrNONE para atingir este objectivo?

Além disso, nem todos podem ler a documentação linguística.

O código apresentado tem tudo para verificar e compreender.

 
Alexey Viktorov:

Além disso, nem toda a gente sabe como ler a documentação linguística.

O código fornecido tem tudo o que é necessário para o verificar e compreender.

Quer falar?

OK. Por favor, mostre-me o lugar na ajuda onde existe uma solução para o meu problema. E o seu código é uma muleta, uma característica não documentada, como especificando clrNONE para não fazer com que o tampão pareça ilusório.

 
Alexey Viktorov:

Não é necessário colocar DRAV_NONE tipo, mas clr_NONE cor.

Aqui está o código de teste

Explicar:

limit = rates_total-prev_calculated; // Это тупо для примера. В нормальном индикаторе так делать нельзя!

Porque não pode? Porquê em vermelho com uma exclamação?

 
_o0O:

Como posso fazer alguns amortecedores de indicador não serem desenhados no gráfico, mas exibir os seus valores na" Janela deDados" do indicador?

Eu faço-o:


mas ainda assim o indicador desenha um tampão.

Pode ver um exemplo aqui:

3TF_RSI_Average
3TF_RSI_Average
  • www.mql5.com
Индикатор Three timeframes RSI Average - отображает в отдельном окне три индикатора Relative Strength Index с заданных таймфреймов и их среднее значение. Имеет десять настраиваемых параметров: RSI period - период расчёта RSIOverbought - уровень перекупленностиOversold - уровень перепроданностиDrawing mode - режим рисованияFirst RSI timeframe...
 
Artyom Trishkin:

Pode ver um exemplo aqui:

Não, não é isso.

No seu exemplo, 4 buffers são desenhados e 4 estão na janela de dados. o que é necessário é que não sejam desenhados, mas que estejam na janela de dados e tenham um nome próprio.

 
_o0O:

Não, não é isso.

No seu exemplo, 4 buffers são desenhados e 4 estão na janela de dados. O que é necessário é que eles não sejam desenhados, mas estejam na janela de dados e tenham um nome próprio.

E se olhar com atenção? Há uma incapacidade de exibir três de quatro amortecedores - um por um. Mas quando incapacitados na janela de dados, continuam a ser exibidos, e com nomes dados programticamente - tudo como solicitado. Ou será que entendi mal a pergunta?

 
Artyom Trishkin:

Que tal um olhar mais atento? Existe uma opção para desactivar a exibição de três dos quatro amortecedores - um de cada vez. Mas quando desligados, continuam a ser exibidos na janela de dados, e com os nomes programados - tal como pediu. Ou será que entendi mal a pergunta?

Sim, vejo aí

PlotIndexSetInteger(0,PLOT_DRAW_TYPE,InpShowRSI1);

InpShowRSI1 toma valores 0 ou 1, é assim que funciona.

Mas especifiquei PlotIndexSetInteger(0,PLOT_DRAW_TYPE,DRAW_NONE); e não funciona

 
_o0O:

sim, posso ver lá

PlotIndexSetInteger(0,PLOT_DRAW_TYPE,InpShowRSI1);

InpShowRSI1 toma os valores 0 ou 1, é assim que funciona.

Mas especifiquei PlotIndexSetInteger(0,PLOT_DRAW_TYPE, DRAW_NONE); e não funcionou

DRAW_NONE == 0

DRAW_LINE == 1

Por isso, tem outra coisa algures. Em teoria, também deveria funcionar para si.

 
Artyom Trishkin:

Explicar:

Porque não pode? Porquê em vermelho com uma exclamação?

Se o indicador calcular várias barras, tal implementação voará para fora da matriz. Por isso, tem de esticar os músculos da cabeça em cada caso.
 
Alexey Viktorov:
Se o indicador calcular várias barras, tal implementação voará para fora da matriz. Por conseguinte, em cada caso devemos esforçar os músculos da nossa cabeça.

Não, não é necessário. Tudo é feito uma vez no limite>1. Esta é a primeira corrida e o carregamento da história. E se tiver período de alisamento_sm=10, então o limite, neste caso, deve ser inferior em 10. Em conformidade:

if(limit>1)
  {
   limit=rates_total-period_sm-1;
   ArrayInitialize(Buffer,InitValue);
  }

InitValue - valor para inicializar o tampão - 0 ou EMPTY_VALUE - conforme o caso. Ou talvez -100500 ...

Razão: