Preguntas de los principiantes MQL5 MT5 MetaTrader 5 - página 1011

 
Vitaly Muzichenko:

¿Ha funcionado esto alguna vez, o no?

¿Cómo puedo hacer que cuando se cambie un color en los parámetros de entrada, este color esté en"indicator_color1"? Ahora mismo, no importa cómo lo cambies, es el original

Comment(Buffer1_Color[0]);

¿Qué te parece esto?

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

¿Qué te parece esto?

 
Vitaly Muzichenko:

¿Ha funcionado esto alguna vez, o no?

¿Cómo puedo hacer que cuando se cambie un color en los parámetros de entrada, este color esté en"indicator_color1"? Ahora mismo, no importa cómo lo cambies, es el original.

Algo se puede rastrear así:

//+------------------------------------------------------------------+
//|                                                         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);
  }
//+------------------------------------------------------------------+
Archivos adjuntos:
Test.mq5  5 kb
 
Vladimir Karputov:

Algo se puede rastrear así:

Genial, aquí vamos:PlotIndexGetInteger(0,PLOT_LINE_COLOR,0)

Gracias.

 

¿Cómo obtener datos en el indicador personalizado desde OnCalculate() de series de tiempo de minutos solamente, en cualquier marco de tiempo? Estoy usando CopyRates(sym,PERIOD_M1,...), ¿cuál es la mejor manera, qué me aconsejas?

 
Vladimir M.:

¿Cómo obtener datos en un indicador personalizado desde OnCalculate() de series temporales de minutos solamente, para cualquier marco temporal? Utilizo CopyRates(sym,PERIOD_M1,...), ¿cuál es la mejor manera, cuál es tu consejo?

Si necesitas varias barras a la vez, no encontrarás nada mejor. Y creo que es mejor recibir los valores de una barra por medio de CopyRates

 
Alexey Viktorov:

Si necesitas varias barras a la vez, no encontrarás nada mejor. Y en mi opinión es mejor obtener los valores de una sola barra a través de CopyRates

Por otro lado, no puedo eliminar OnCalculate() del indicador debido a su inutilidad. ¿Resulta que se obtienen los mismos datos dos veces?
 
Vladimir M.:
OnCalculate() no puede ser eliminado del indicador ya que no es necesario. ¿Resulta que se obtienen los mismos datos dos veces?

¿Es posible prescindir de él si OnTick() está presente?

 
Vladimir M.:
Por otro lado, no se puede eliminar OnCalculate() del indicador porque no es necesario. ¿Resulta que se obtienen los mismos datos dos veces?

Bueno, si no lo necesitas, puedes utilizar la segunda variante

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

¿Es posible prescindir de él si OnTick() está presente?

Dudo que sea posible, pero no lo intentaré más. Y la documentación dice:

"...El evento NewTick se genera sólo para los Asesores Expertos cuando se recibe un nuevo tick para un símbolo, al gráfico del cual el Asesor Experto está unido. Es inútil definir la función OnTick() en un indicador o script personalizado, ya que el evento NewTick no se genera para ellos...".

Razón de la queja: