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

 
The_Sheikh:

Hola, ¿alguien puede explicar en términos claros qué son los"Plots" en MQL5? No están relacionados con los buffers, pero la propiedad indicator_plots crea una lista de propiedades del objeto de dibujo similar a los buffers. Al utilizar las herramientas MQL4, estaba claro que se hacía referencia a un objeto de dibujo específico, y ahora hay una nueva propiedad del preprocesadorindicator_plots que define el número de lo que no está claro.

En MQL4, el número de búferes a mostrar se especificaba mediante la opción

#property indicator_buffers 1

En la función OnInit(), puede añadir varios buffers para los cálculos

IndicatorBuffers(3);

Y en MQL5, lo mismo se escribe en dos directivas

#property indicator_buffers 3
#property indicator_plots   1

Significa que hay 3 búferes en total, mientras que 1 búfer se mostrará en el gráfico. Los otros dos se utilizarán para los cálculos. Y en MQL5, uno de los adicionales se puede utilizar para la visualización del color.

 
fxsaber:

Probablemente sea más claro de entender si se ejecuta este indicador en MT4 y MT5. Al convertir a MT5 tuve que utilizar gráficos

Porque sólo deben dibujarse dos topes.

Ya está más cerca de la verdad. Pero en ese caso, ¿qué pasa si hay que dibujar el segundo y el sexto búfer? ¿No hay manera?

Alexey Viktorov:

Podríamos añadir varios buffers para los cálculos enla función OnInit()

Por cierto, ¿hay alguna alternativa a esta función en MQL5?

 
The_Sheikh:

Esto se acerca más a la verdad. Pero en ese caso, ¿qué pasa si hay que sortear la segunda y la sexta? ¿Nada?

No lo sé.

 
The_Sheikh:

Esto se acerca más a la verdad. Pero en ese caso, ¿qué pasa si hay que sortear el segundo y el sexto? ¿No es posible?

1) "Segundo y sexto" - tú decides la distribución de los números ;)

2) INDICATOR_CALCULATIONS y DRAW_NONE frente a INDICATOR_DATA y no DRAW_NONE (cualquier otro) funciona para cualquier número de secuencia.

 
The_Sheikh:

Esto se acerca más a la verdad. Pero en ese caso, ¿qué pasa si hay que sortear la segunda y la sexta? ¿No es posible?

Sólo tienes que establecer el tipo de búfer, cuál se mostrará, cuál contendrá color y cuál contendrá sólo valores auxiliares.


INDICATOR_DATA

Datos del dibujo

INDICADOR_COLOR_ÍNDICE

Colores de renderización

CÁLCULOS_INDICADORES

Topes adicionales para cálculos intermedios

 
The_Sheikh:

Por cierto, ¿hay alguna alternativa a esta función en MQL5?

En mql5 no es necesaria esta función. Te he dado un ejemplo de cómo escribirlo. La diferencia con mql4 es sólo de secuencia y ortografía.

 
Gracias a todos por responder.
 

Supongamos que el número máximo de barras en el gráfico está fijado en 10000. Luego, en el script y en el indicador, la función Bars() devuelve el número especificado en la configuración + el número de nuevas velas aparecidas.

Entonces, ¿el número de velas mostradas en el gráfico no se limitará a 10000?

¿Cómo puedo saber en MQL exactamente el número especificado en la configuración del terminal?

Si el número de barras alcanza el máximo del tipo int, ¿qué ocurrirá con el número de velas y las posiciones de los elementos del array?

 
The_Sheikh:

¿Cómo puedo saber en MQL exactamente cuántas barras se establecen en la configuración del terminal?

TerminalInfoInteger(TERMINAL_MAXBARS))
El Jeque:

Si el número de barras alcanza el valor máximo de tipo int, entonces qué pasará con el número de velas

el número de barras aumentará, es decir, superará el valorTERMINAL_MAXBARS

Y luego, por algunos algoritmos desconocidos, el terminal "restablece las barras extra" - cuando el número real de barras en el gráfico estará en la const int rates_total, estará en la iBars()https://www.mql5.com/ru/docs/series/ibars

es decir, como se muestra arriba - TERMINAL_MAXBARS son los datos de la ventana del terminal, e iBars() es el valor real de las barras en el gráfico


El Jeque:

y con posiciones de elementos de matrices-series de tiempo?

si se trata de buffers indicadores, el terminal les asigna memoria y el tamaño del array, asociado al buffer indicador, es siempre igual a rates_total elements

indicador para las pruebas:

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[])
  {
//---
   static datetime t=0;
   if(t!=time[rates_total-1])
     {
      Print("rates_total = ",rates_total, ", TERMINAL_MAXBARS = ",TerminalInfoInteger(TERMINAL_MAXBARS));
      t=time[rates_total-1];
     }
//--- return value of prev_calculated for next call
   return(rates_total);
  }

registro de indicadores:

2019.04.30 19:10:12.247 rates (EURUSD,M1) rates_total = 50000, TERMINAL_MAXBARS = 50000

2019.04.30 19:10:29.699 rates (EURUSD,M1) rates_total = 50001, TERMINAL_MAXBARS = 50000

2019.04.30 19:11:29.392 rates (EURUSD,M1) rates_total = 50002, TERMINAL_MAXBARS = 50000

2019.04.30 19:12:30.125 rates (EURUSD,M1) rates_total = 50003, TERMINAL_MAXBARS = 50000


Документация по MQL5: Доступ к таймсериям и индикаторам / iBars
Документация по MQL5: Доступ к таймсериям и индикаторам / iBars
  • www.mql5.com
Количество баров в истории по соответствующему символу и периоду, но не более чем задано в настройках платформы параметром "Макс. баров в окне" ("Max bars in chart")
 

Quiero familiarizarme con el desarrollo de interfaces en MQL5 en EasyAndFastGUI

Hay 10 partes (¿o qué?) de artículos de"Interfaces gráficas" de 2015

Tengo una pregunta, ¿son todos coherentes o no tiene sentido leer los más antiguos?