Mira cómo descargar robots gratis
¡Búscanos en Telegram!
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
Indicadores

La clase para la elaboración de la AMA usando el buffer circular - indicador para MetaTrader 5

Visualizaciones:
1290
Ranking:
(17)
Publicado:
2014.01.15 08:55
Actualizado:
2016.11.22 07:33
\MQL5\Include\IncOnRingBuffer\
carrayring.mqh (6.64 KB) ver
\MQL5\Indicators\IncOnRingBuffer\
¿Necesita un robot o indicador basado en este código? Solicítelo en la bolsa freelance Pasar a la bolsa

Descripción

La clase CAMAOnRingBuffer está diseñada para el cálculo del indicador técnico Media Móvil Adaptable (Adaptive Moving Average, AMA) utilizando el algoritmo del buffer circular

Declaración

class CAMAOnRingBuffer : public CArrayRing

Título

#include <IncOnRingBuffer\CAMAOnRingBuffer.mqh>

El archivo de la clase CAMAOnRingBuffer.mqh debe colocarse en la carpeta IncOnRingBuffer que es necesario establecer en MQL5\Include\. Se adjuntan a la descripción dos archivos con los ejemplos utilizados por la clase de esta carpeta. El archivo de la clase buffer circular y la clase Ratio de Eficiencia también debe estar en esta carpeta.

Métodos de la clase

//--- método de inicio:
bool Init(                                  // si error devuelve falso, si exitoso - verdadero
   int            period        = 10,       // periodo del AMA 
   int            fast_period   = 2,        // periodo del EMA rápido 
   int            slow_period   = 30,       // periodo del EMA lento
   int            size_buffer   = 256,      // tamaño del buffer circular, número de dato almacenado
   bool           as_series     = false     // verdadero, si timeserie, falso - si indexación habitual de los datos de entrada
   );
//--- método de cálculo basado en una serie temporal o buffer del indicador:          
int MainOnArray(                  // devuelve el número de lemenetos procesados  
   const int     rates_total,     // tamaño de la matriz array[]
   const int     prev_calculated, // elementos procesados en la llamada anterior
   const double &array[]          // matriz de los valores de entrada
   );
//--- //--- el método de cálculo basado en los elementos de las series separadas de la matriz           
double MainOnValue(              // devuelve el valor de AMA para el elemento de conjunto
   const int    rates_total,     // tamaño de la matriz
   const int    prev_calculated, // elements procesados de la matriz
   const int    begin,           // desde donde comienzan los datos significativos de la matriz
   const double value,           // valor del elemento de la matriz
   const int    index            // índice del elemento
    );
//--- métodos de acceso a los datos:
int    BarsRequired();   // Devuelve el número necesario de barras para dibujar el indicador
string Name();           // Devuelve el nombre del indicador
string FastPeriod();       // Devuelve el período del EMA suavizado rápido  
int     SlowPeriod();       // Devuelve el período del EMA suavizado lento
int    Period();            // Devuelve el período del AMA
int    Size();           // Devuelve el tamaño del buffer cirdular

Es posible obtener los datos calculados del indicador desde el buffer circular a partir de la matriz habitual. Por ejemplo:

//--- la clase con los métodos de cálculo del indicador AMA:
#include <IncOnRingBuffer\CAMAOnRingBuffer.mqh>
CAMAOnRingBuffer ama;

...

//+------------------------------------------------------------------+
//| Fución de iteración del indicador personalizado                  |
//+------------------------------------------------------------------+
int OnCalculate(const int    rates_total, 
                const int    prev_calculated, 
                const int    begin, 
                const double &price[]) 
  {
//--- calculation of the indicator based onprice time series cálculo del indicador basado en timeseries en precio:
   ama.MainOnArray(rates_total,prev_calculated,price);

...

//--- utilizar los datos del buffer circular "ama",
//    por ejemplo, copiar los datos en el buffer del indicador:
   for(int i=start;i<rates_total;i++)
      AMA_Buffer[i] = ama[rates_total-1-i];          // linea del indicador

//--- valor que devuelve prev_calculated para la próxima llamada:
   return(rates_total);
  }

Tenga en cuenta que la indexación en el búfer circular es la misma que en la timeserie.

Ejemplos

  1. El archivo Test_AMA_OnArrayRB.mq5 calcula el indicador basado en series temporales de precios. Se demuestra la aplicación del método MainOnArray()
  2. El archivo Test_AMA_OnValueRB.mq5 muestra el uso del método MainOnValue(). Al principio el indicador AMA se calcula y se dibuja. Entonces sobre la base de este buffer circular del indicador se dibuja un AMA más. 


El resultado del trabajo del Test_AMA_OnArrayRB.mq5 con el tamaño del buffer circular de 256 elementos



The result of the work of the Test_AMA_OnValueRB.mq5 with the size of the ring buffer of 256 elements

 

Al escribir el código fueron utilizados los desarrollos de MetaQuotes Software Corp., Integer y GODZILLA.

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

Terminator_v2.0 Terminator_v2.0

La posición inicial se abre de acuerdo a las señales del indicador. (Hay seis variantes). Si la posición deja de ser rentable, su volumen se incrementa.

La clase para la elaboración del IMF usando el buffer circular La clase para la elaboración del IMF usando el buffer circular

La clase está diseñada para el cálculo de el indicador técnico Índice de Flujo de dinero (Money Flow Index, MFI) utilizando el algoritmo del buffer circular.

RD-TrendTrigger RD-TrendTrigger

Oscilador utilizando los promedios T3 del Análisis Técnico de Acciones y Materias primas (Diciembre. 2004).

Pivot Lines TimeZone Pivot Lines TimeZone

El indicador de niveles de Pivote, los subniveles Pivote y los niveles Camarilla, se muestran los buffers de indicadores y las líneas horizontales.