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

Init_Sync - librería para MetaTrader 5

Visualizaciones:
764
Ranking:
(31)
Publicado:
2017.05.11 16:25
\MQL5\Include\
Init_Sync.mqh (5.93 KB) ver
MQL5 Freelance ¿Necesita un robot o indicador basado en este código? Solicítelo en la bolsa freelance Pasar a la bolsa

Si en MT cambiamos el marco temporal o el nombre de un símbolo del gráfico, todos los indicadores en el gráfico se descargarán desde el gráfico y volverán a cargarse en el mismo de nuevo. Además, a diferencia de MT4, en MT5 la secuencia de descarga/carga no está determinada por las peculiaridades de la arquitectura interna.

Esta circunstancia a veces provoca problemas no del todo obvios, reclacionados con el hecho de que el OnInit de la nueva copia del indicador cargada puede ejecutarse antes que el OnDeinit de la copia descargada.

Las situaciones en las que este problema se manifiesta se relacionan habitualmente con el deseo de transmitir (explícitamente/implícitamente) una cierta información desde el OnInit de la copia antigua a el OnDeinit de la nueva copia. En otras palabras, será necesario que la nueva copia del indicador sepa de la existencia de la copia antigua y que así no se cargue hasta que la antigua se haya descargado.

Esta biblioteca permite a cualquier indicador implementar semejante sincronización.

Como ejemplo, tomaremos un indicador sencillo

#property indicator_chart_window

#property indicator_buffers 1
#property indicator_plots   1
#property indicator_color1  clrRed
#property indicator_type1   DRAW_LINE

input int Input = 0;

double Buffer[];

int OnInit()
{
  SetIndexBuffer(0, Buffer);
  Print("Init");
  return(INIT_SUCCEEDED);
}

void OnDeinit( const int Reason )
{
  Print("DeInit");
}

void OnChartEvent( const int id,
                   const long& lparam,
                   const double& dparam,
                   const string& sparam )
{
}

void OnTimer()
{
}

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[] )
{
  ArrayCopy(Buffer, open, prev_calculated, prev_calculated);  
  return(rates_total);
}

Si iniciamos este indicador y comenzamos a conmutar los marcos temporales o los símbolos de su gráfico, en el diario de registro veremos interrupciones en la alternacia de las líneas "Init" y "Deinit".

Sin embargo, si añadimos al inicio del código del indicador la línea de código siguiente

#include <Init_Sync.mqh> // Sincroniza Init/Deinit de los indicadores

entonces se respetará la alternancia correspondiente.

Para que esta propiedad funcione para cualquier indicador, hay que añadir al inicio del código de este indicador la línea anteriormente mostrada.

Observaciones:

// La biblioteca sincroniza Init/Deinit de los indicadores.
// En el indicador deberá existir necesariamente int OnInit(), OnDeinit, OnTimer y OnChartEvent.
// Aquellos que no se usen, se escribirán vacíos.

#include <TypeToBytes.mqh> // https://www.mql5.com/es/code/16280
#include <crc64.mqh>       // https://www.mql5.com/en/blogs/post/683577

Los archivos mqh anexos se encuentran en los enlaces indicados en el código fuente.

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

Color_Spread Color_Spread

El indicador muestra el spread actual con una línea de color.

Exp_XFatlXSatlCloud Exp_XFatlXSatlCloud

El sistema comercial Exp_XFatlXSatlCloud está construido sobre la base del cambio de dirección de la tendencia, representado por el indicador XFatlXSatlCloud.

XMA_BB_Pivot XMA_BB_Pivot

Dos rectángulos coloreados y construidos entre los valores de dos canales de Bollinger en una barra.

XMA_Keltner_Pivot XMA_Keltner_Pivot

Dos rectángulos coloreados y construidos entre los valores de dos canales de Keltner en una barra.