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

 

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:

#property indicator_label1  "Buff"
#property indicator_type1   DRAW_NONE

int OnInit ()
{
  PlotIndexSetInteger(0,PLOT_DRAW_TYPE,DRAW_NONE);
}


mas ainda assim o indicador desenha um tampã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.

já o tem, faz isto:

#property indicator_label1  "Buff"
#property indicator_type1   DRAW_NONE

não precisam de fazer isto.

E curiosamente, este amortecedor deve ser especificado em #property indicator_plots... Embora logicamente não o deva fazer, porque está especificado em #property indicator_buffers e não requer desenho.


HOWEVER, o nome do buffer na janela de dados não aparece correctamente agora....specifying it with PlotIndexSetString(0, PLOT_LABEL, "Buff") não ajuda... Seja como for, ajude, por favor.

 

Boa tarde.

Estou a dar os meus primeiros passos em mql5. Gerei uma EA baseada nos indicadores RSI M5 e RSI M15. Pode, por favor, aconselhar como fazer um acordo ser executado accionando os dois sinais ao mesmo tempo? O peso para ambos é 1. Se eu fixar 0,5 então nenhuma negociação será executada. Parâmetro Valor limiar do sinal a abrir = 90.

 
_o0O:

afinal, é isso mesmo:

não precisam de o fazer.

Curiosamente, este amortecedor deve ser especificado em #plots_indicadores de propriedade... Mas logicamente não deve, porque está especificado em #property indicator_buffers e desenho não é necessário.


HOWEVER, o nome do buffer na janela de dados é apresentado incorrectamente agora....specifying it with PlotIndexSetString(0, PLOT_LABEL, "Buff") não ajuda... Seja como for, ajude por favor.

ajuda? que tipo de ajuda...?

bem, tudo o que tem de fazer é especificar

#property indicator_label1  "Buff"

e tudo, o buffer será nomeado na janela de dados, mostrará os valores e permitirá obter estes valores da EA, e não desenhar os valores (muito conveniente para armazenar informação adicional e não desorganizar o gráfico com linhas de buffer).

 
_o0O:

afinal, é isso mesmo:

não precisam de o fazer.

Curiosamente, este amortecedor deve ser especificado em #plots_indicadores de propriedade... Embora logicamente não o deva fazer, porque está especificado em #property indicator_buffers e desenho não é necessário.


SZY mas agora o nome errado do buffer é exibido na janela de dados, especificar o nome com PlotIndexSetString(0, PLOT_LABEL, "Buff") não ajuda... Seja como for, ajude por favor.

A cor clr_NONE deve ser utilizada em vez do tipo DRAV_NONE.

Aqui está o código de teste

#property indicator_separate_window

#property indicator_buffers 2
#property indicator_plots   2
#property indicator_type1   DRAW_HISTOGRAM
#property indicator_color1  clrRed
#property indicator_width1  2
#property indicator_label1  "clrRed"
#property indicator_type2   DRAW_HISTOGRAM
#property indicator_color2  clrNONE
#property indicator_width2  2
#property indicator_label2  "clrNONE"

/****************indicator buffers****************/
double buf1[], buf2[];
/**************Custom indicator initialization function**************/
int OnInit()
{
    SetIndexBuffer(0, buf1, INDICATOR_DATA);
    SetIndexBuffer(1, buf2, INDICATOR_DATA);
   return(INIT_SUCCEEDED);
}/*******************************************************************/

/****************Custom indicator iteration function*****************/
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[])
{
 int i, limit = rates_total-prev_calculated; // Это тупо для примера. В нормальном индикаторе так делать нельзя!
 for(i = 0; i < limit; i++)
  {
   if(i%2 > 0)
    buf1[i] = 1;
   else
    buf2[i] = 1;
  }
 
   return(rates_total);
}/*******************************************************************/
 
Alexey Viktorov:

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

Aqui está o código de teste

tudo isto é desnecessário, basta especificar o rótulo

#property indicator_label1  "Buff"
 
_o0O:

é tudo supérfluo, basta especificar o rótulo

Se é tão inteligente, porque fez a pergunta?

 
Alexey Viktorov:

Se é tão inteligente, porque fez a pergunta?

o inteligente não é aquele que não faz perguntas....

Qualquer frequentador do fórum pode chegar às respostas às suas perguntas, mas qual é a finalidade deste fórum se não encontrar respostas o mais rapidamente possível?

O meu caminho é mais simples e mais conciso, utilize-o.

ZS Pare de "cutucar" estranhos, seu espertalhão.

 
_o0O:

o inteligente não é aquele que não faz perguntas....

Qualquer frequentador do fórum pode chegar às respostas às suas perguntas, mas qual é a finalidade deste fórum se não encontrar respostas o mais rapidamente possível?

O meu caminho é mais simples e mais sucinto, use-o.

Está tão enganado. Longe, longe disso.

 
Alexey Viktorov:

Está tão enganado. Longe, longe disso.

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

Não existe tal nuance na ajuda. 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 é exactamente a lógica por detrás da especificação do clrNONE para atingir o objectivo?

Razão: