Discusión sobre el artículo "Cómo llamar a los indicadores en MQL5"

 

Artículo publicado Cómo llamar a los indicadores en MQL5:

Con la nueva versión del lenguaje de programación MQL no solo ha cambiado la forma de trabajar con los indicadores, sino que también hay nuevas formas de crearlos. Además, dispone de mayor flexibilidad al trabajar con buffers de indicadores, ya que ahora es posible indicar la dirección de indexado y obtener exactamente el número de indicadores que desee. Este artículo explica los métodos básicos para llamar a los indicadores y obtener los datos a partir del buffer de cada indicador.

En MQL5 existen varias formas de llamar a los indicadores y la mayoría de ellas usan las funciones IndicatorCreate() y iCustom(). Además, estas funciones solo devuelven el controlador (handle) del indicador para, posteriormente, realizar sobre él las demás operaciones. ¿Qué es un controlador (handle)? ¿Cómo utilizar las funciones IndicatorCreate() y iCustom()? Y ¿cómo puede su experto obtener los datos de su indicador? Todas estas cuestiones se tratan en este artículo.

Autor: KlimMalgin

 
útil artículo. muchas gracias.
 

Bien ++

Gracias.

 

Por favor, explíquelo.

En "Obtención del manejador del indicador utilizando IndicatorCreate()"

Crear un array

MqlParam params[];      // Matriz para almacenar los parámetros del indicador

sin especificar el tipo, luego cambia el tipo del array según sea necesario.

¿Cómo funciona? ¿Se puede utilizar para cualquier estructura o sólo para ésta? ¿Es posible simplemente cambiar el tipo de un array existente?

 
El array de parámetros de tipo MqlParam es necesario para la función IndicatorCreate() sólo cuando se crea un handle. Si desea cambiar algo, es necesario "matar" el mango actual utilizando IndicatorRelease y crear uno nuevo. Indicador "cambio de motor" en movimiento no se proporciona.
 

Pero en el artículo, en el texto.

   ***
   // Fijar el periodo de la MA lenta
   params[0].type         =TYPE_INT;
   params[0].integer_value=21;
   ***

y a continuación.

   ***
   ArrayResize(params,2);
   // Paso
   params[0].type         =TYPE_DOUBLE;
   params[0].double_value = 0.02;
   ***
no se borra nada, se cambia el tipo.....
 
Pongámoslo a nivel de catering. Un camarero coloca los platos en una bandeja y te lleva tu pedido. A continuación, coloca la comida de otro cliente en la misma bandeja y le lleva tu pedido. ¿Significa esto que usted tiene la misma comida que el otro cliente?
 

Así que las diferentes cenas sólo pueden estar en la bandeja del camarero. Vale, experimentaré.

¿Hay algún plan para matrices de tipos mixtos, como [int][double]?

 
Silent:

Así que las diferentes cenas sólo pueden estar en la bandeja del camarero. Vale, experimentaré.

¿No hay planes para matrices de tipos mixtos, como [int][double]?

Usa estructuras, mira el ejemplo en la ayuda - https://www.mql5.com/ru/docs/basis/types/casting#casting_structure:

Otro ejemplo muestra cómo puedes organizar tu propia función para obtener la representación del color RGB (Red,Green,Blue) a partir del tipo de color. Para ello, creamos dos estructuras que tienen el mismo tamaño pero diferente composición interna. Por conveniencia, vamos a añadir a la estructura una función que devuelva el color en representación RGB como una cadena.

#property script_show_inputs
input color          testColor=clrBlue;// establecer el color para la prueba
//--- estructura para la representación del color RGB
struct RGB
  {
   uchar             blue;          // componente de color azul
   uchar             green;         // componente de color verde
   uchar             red;           // componente de color rojo
   uchar             empty;         // este byte no se utiliza
   string            toString();    // función a recibir como cadena
  };
//--- función para mostrar el color como una cadena
string RGB::toString(void)
  {
   string out="("+(string)red+":"+(string)green+":"+(string)blue+")";
   return out;
  }
//--- estructura para almacenar el color del tipo incorporado 
struct builtColor
  {
   color             c;
  };
//+------------------------------------------------------------------+
//| Función de inicio del programa de script|
//+------------------------------------------------------------------+
void OnStart()
  {
//--- variable para almacenar en RGB
   RGB colorRGB;
//--- variable para almacenar el tipo de color
   builtColor test;
   test.c=testColor;
//--- convertir dos estructuras copiando su contenido
   colorRGB=test;
   Print("color ",test.c," = ",colorRGB.toString());
//---
  }

Документация по MQL5: Основы языка / Типы данных / Приведение типов
Документация по MQL5: Основы языка / Типы данных / Приведение типов
  • www.mql5.com
Основы языка / Типы данных / Приведение типов - Документация по MQL5
 
Rosh:

Utiliza estructuras, mira el ejemplo en la ayuda - https://www.mql5.com/ru/docs/basis/types/casting#casting_structure:

Entiendo más o menos con estructuras, me interesan los arrays.

Gracias.

 
Silent:

Lo de las estructuras lo tengo más o menos claro, me interesan los arrays.

Gracias.

Haz una estructura y escribe un array de este tipo.