Mira cómo descargar robots gratis
¡Búscanos en Twitter!
Pon "Me gusta" y sigue las noticias
¿Es interesante este script?
Deje un enlace a él, ¡qué los demás también lo valoren!
¿Le ha gustado el script?
Evalúe su trabajo en el terminal MetaTrader 5
Librerías

TypeToBytes - librería para MetaTrader 5

Visualizaciones:
927
Ranking:
(40)
Publicado:
2016.10.18 15:21
Actualizado:
2017.07.17 17:18
\MQL5\Include\
TypeToBytes.mqh (19.12 KB) ver
\MQL5\Scripts\
¿Necesita un robot o indicador basado en este código? Solicítelo en la bolsa freelance Pasar a la bolsa

Esta biblioteca multiplataforma permite realizar cómodamente operaciones byte a byte con estructuras y tipos estándar de datos.

Posibilidades:

  • Comparación byte a byte (== y !=) entre sí de estructuras y tipos estándar de datos (en MQL por defecto no hay operadores de comparación de estructuras).
  • Definición del desplazamiento byte a byte del campo de la estructura por su nombre.
  • Lectura del valor de cualquier tipo estándar según el desplazamiento byte a byte en los datos fuente.
  • Escritura de estructuras y tipos estándar (a través del operador =) por desplazamiento byte a byte (a través del operador []) en los datos fuente.
  • Asignación byte a byte (a través del operador =).
  • Transformación de estructuras y tipos estándar de datos en una matriz de datos.
En todas partes estamos hablando de estructuras sencillas.

Para demostrar las posibilidades de la biblioteca se adjunta un script con comentarios detallados
// MQL4&5-code

#property strict

#include <TypeToBytes.mqh>

#define PRINT(A) ::Print(#A + " = " + (string)A);

void OnStart( void )
{
  MqlTick Tick;
  ::SymbolInfoTick(::Symbol(), Tick);

  MqlTick CloneTick = Tick;

// Operación con estructuras
  if (_R(Tick) == CloneTick)             // Ahora las estructuras se pueden comparar
    ::Print("Equal");

// Obtener el valor del tipo requerido por desplazamiento
  PRINT(_R(Tick)[(datetime)0])           // Vemos el valor datetime por el desplazamiento cero en el objeto de estructura MqlTick - Tick.time

// Obtener el desplazamiento del campo de la estructura
  const int Offset = _OFFSET(Tick, bid); // Hemos localizado el desplazamiento en bytes del campo bid en el objeto de estructura MqlTick

  PRINT(Tick.bid)                        // Hemos comprobado el valor de Tick.bid
  _W(Tick)[Offset] = 1.23456;            // Escrito el valor (double)1.23456según el desplazamiento encontrado

  PRINT(Tick.bid)                        // Hemos comprobado que Tick.bid ahora es igual a 1.23456

  PRINT(_R(Tick)[(double)Offset])        // Imprimido el valor double, que se encuentra en el desplazamiento Offset, es la base de Tick.bid

  PRINT(_R(Tick).Bytes[8])               // Comprobado el valor del byte con el desplazamiento 8 en el objeto de la estructura MqlTick
  PRINT(_R(Tick)[(uchar)8])              // Lo mismo, pero con otro método

  PRINT(CloneTick.bid)                   // Comprobado el valor CloneTick.bid
  _W(CloneTick)[0] = Tick;               // Escrito en CloneTick el valor del objeto de estructura Tick según el desplazamiento cero
  PRINT(CloneTick.bid)                   // Comprobamos que CloneTick.bid == Tick.bid

// Operación con tipos estándar
  color Color = C'241,248,255';

  PRINT(_R(Color)[(uchar)1])             // Componente Green del color 248

  _W(Color)[2] = (uchar)230;             // Escribimos el valor (uchar)230 según el 2 desplazamiento.
  PRINT(Color)                           // Comprobamos que Color ahora es C'241,248,230'

// Operación simultánea con tipos mixtos
  if (_R(Tick) != Color)                 // Se pueden incluso comparar las estructuras con los tipos estándar
    ::Print("Not equal");

// Operador de asignación de byte a byte
  int i = 0;
  _W(i) = (float)12.34;                  // Escribimos en la viariable int- la presentación byte a byte del número (float)12.34
  PRINT(i)                               // Comprobamos que es 1095069860

  float f = 0;
  _W(f) = i;                             // Escribimos en la viariable float- la presentación byte a byte del número obtenido anteriormente (int)1095069860
  PRINT(f)                               // Comprobamos que ahora el valor es igual al original - (float)12.34

  return;
}

Traducción del ruso realizada por MetaQuotes Ltd
Artículo original: https://www.mql5.com/ru/code/16280

ColorXvaMA_Digit_StDev V2 ColorXvaMA_Digit_StDev V2

Indicador vaMA con posibilidad de sustituir la promediación, también representa el último valor en forma de etiqueta de precio y tiene la posibilidad de redondear los niveles del indicador en la cantidad indicada de grados. Asimismo, dispone de una indicación adicional de la fuerza de la tendencia con puntos de colores basada en el algoritmo de desviación estándar.

i4_DRF_v3_HTF i4_DRF_v3_HTF

Indicador i4_DRF_v3 con posibilidad de cambiar el marco temporal del indicador en los parámetros de entrada.

Monthly Weekly Levels Monthly Weekly Levels

El script representa en el gráfico los niveles mensuales y semanales.

Fibo ZigZag Fibo ZigZag

El indicador Fibo ZigaZag permite calcular los niveles supuestos de apoyo y resistencia, usando los coeficientes de Fibonacci.