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

 
Vitaly Muzichenko:

Isto alguma vez funcionou ou não?

Como posso fazer para que quando uma cor é alterada nos parâmetros de entrada, essa cor esteja em"indicator_color1" ? Neste momento, independentemente da forma como se altere, é o original

Comment(Buffer1_Color[0]);

E que tal isto?

 
Сергей Таболин:

E que tal isto?

 
Vitaly Muzichenko:

Isto alguma vez funcionou ou não?

Como posso fazer para que quando uma cor é alterada nos parâmetros de entrada, essa cor esteja em"indicator_color1" ? Neste momento, independentemente da forma como se altere, é o original.

Algo pode ser rastreado desta forma:

//+------------------------------------------------------------------+
//|                                                         Test.mq5 |
//|                              Copyright © 2019, Vladimir Karputov |
//|                                           http://wmua.ru/slesar/ |
//+------------------------------------------------------------------+
#property copyright "Copyright © 2019, Vladimir Karputov"
#property link      "http://wmua.ru/slesar/"
#property version   "1.00"
#property indicator_chart_window
#property indicator_buffers 1
#property indicator_plots   1
//--- plot Label1
#property indicator_label1  "Label1"
#property indicator_type1   DRAW_LINE
#property indicator_color1  clrDarkGoldenrod
#property indicator_style1  STYLE_SOLID
#property indicator_width1  1
//--- indicator buffers
double         Label1Buffer[];
//+------------------------------------------------------------------+
//| Custom indicator initialization function                         |
//+------------------------------------------------------------------+
int OnInit()
  {
//--- indicator buffers mapping
   SetIndexBuffer(0,Label1Buffer,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[])
  {
//---
   Print(PlotIndexGetInteger(0,PLOT_LINE_COLOR,0));
//--- return value of prev_calculated for next call
   return(rates_total);
  }
//+------------------------------------------------------------------+
Arquivos anexados:
Test.mq5  5 kb
 
Vladimir Karputov:

Algo pode ser rastreado desta forma:

Óptimo, aqui vamos nós:PlotIndexGetInteger(0,PLOT_LINE_COLOR,0)

Obrigado!

 

Como em indicador personalizado para obter dados da OnCalculate() apenas séries horárias de minutos, em qualquer período de tempo? Estou a usar CopyRates(sym,PERÍODO_M1,...), qual é a melhor maneira, o que aconselha?

 
Vladimir M.:

Como obter dados num indicador personalizado da OnCalculate() de séries horárias minúsculas apenas, para qualquer período de tempo? Uso CopyRates(sym,PERÍODO_M1,...), qual é a melhor maneira, quais são os seus conselhos?

Se precisar de várias barras ao mesmo tempo, não encontrará nada melhor. E penso que é melhor receber valores de uma barra por meio de CopyRates

 
Alexey Viktorov:

Se precisar de várias barras ao mesmo tempo, não encontrará nada melhor. E na minha opinião, é melhor obter os valores de uma única barra através de CopyRates

Por outro lado, não posso remover o OnCalculate( ) do indicador devido à sua inutilidade. Acontece que obtém os mesmos dados duas vezes?
 
Vladimir M.:
OnCalculate() não pode ser removido do indicador, uma vez que não é necessário. Acontece que obtém os mesmos dados duas vezes?

É possível passar sem ele se OnTick() estiver presente?

 
Vladimir M.:
Por outro lado, não se pode remover OnCalculate() do indicador porque não é necessário. Acontece que obtém os mesmos dados duas vezes?

Bem, se não precisar dele, pode usar a segunda variante

int OnCalculate (const int rates_total,      // размер массива price[] 
                 const int prev_calculated,  // обработано баров на предыдущем вызове 
                 const int begin,            // откуда начинаются значимые данные 
                 const double& price[]       // массив для расчета 
   );
 
Igor Zakharov:

É possível passar sem ele se OnTick() estiver presente?

Duvido que seja possível, mas não vou tentar mais. E a documentação diz:

"...O evento NewTick é gerado apenas para Consultores Especialistas quando é recebido um novo tick para um símbolo, ao qual o Expert Advisor está anexado. É inútil definir a função OnTick() num indicador ou script personalizado, já que o evento NewTick não é gerado para eles ...".

Razão: