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
Indicadores

Clase de trazado del RSI usando el buffer circular - indicador para MetaTrader 5

Visualizaciones:
1301
Ranking:
(20)
Publicado:
2014.01.15 09:02
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 CRSIOnRingBuffer está diseñada para el cálculo del indicador técnico índice de fRelative Strength Index, RSI) utilizando el algoritmo del buffer circular.  

Declaración

class CRSIOnRingBuffer : public CArrayRing

Título

#include <IncOnRingBuffer\CRSIOnRingBuffer.mqh>

El archivo de la clase CRSIOnRingBuffer.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. Archivo con la clase del buffer circular y la clase de Media Móvil también debe estar en esta carpeta.

Métodos de la clase

//--- inicio del método:
bool Init(                                  // si error devuelve falso, si exitoso - verdadero
   int            period      = 14,         // periodo del RSI
   ENUM_MA_METHOD method      = MODE_SMMA,  // método de suavizado  
   int            size_buffer = 256,        // tamaño del buffer circular, númro de dato almacenado
   bool           as_series   = false       // verdadero, si timeseries, 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 del RSI para el conjunto de elementos
   const int    rates_total,     // tamaño de la matriz
   const int    prev_calculated, // elementos procesados de la matriz
   const int    begin,           // desde donde comienzan los datos significativos de la matriz
   const double value,           // valor de los elementos de la matrize
   const int    index            // el índice de los elemetos
   );

//--- the methods of access to data:
int    BarsRequired();   // Devuelve el número necesario de barras para dibujar el inficator
string Name();           // Devuelve el nombre del indicador
int    Period();         // Devuelve el período 
string Method();         // Devuelve el método en forma de línea de texto 
int    Size();           // Devuelve el tamaño del buffer circular

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 RSI:
#include <IncOnRingBuffer\CRSIOnRingBuffer.mqh>
CRSIOnRingBuffer rsi;

...

//+------------------------------------------------------------------+
//| Función iteracion del indicador personalizado                    |
//+------------------------------------------------------------------+
int OnCalculate(const int    rates_total, 
                const int    prev_calculated, 
                const int    begin, 
                const double &price[]) 
  {
//--- cálculo del indicador, según el precio de series de tiempo:
   rsi.MainOnArray(rates_total,prev_calculated,price);

...

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

//--- devuelve el valor del prev_calculated para la siguiente 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. The indicator calculates the Test_RSI_OnArrayRB.mq5 file on the basis of the price time series. Se demuestra la aplicación del método MainOnArray()
  2. El archivo Test_RSI_OnValueRB.mq5 muestra el uso del método MainOnValue(). Al principio el indicador RSI se calcula y se dibuja. Después sobre la base de este buffer circular del indicador se raza un RSI más. 


Resultado del trabajo del Test_RSI_OnArrayRB.mq5 con el tamaño del búfer circular de 256 elementos



Resultado del trabajo del Test_RSI_OnValueRB.mq5 con el tamaño del búfer circualr de 256 elementos

 

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/1385

isNormalDist isNormalDist

La prueba de normalidad de Shapiro-Wilk.

DDE - Server DDE - Server

Exportar datos reales de MQL5 a Excel (DDE).

Exp_BBands_Stop Exp_BBands_Stop

Sistema de trading basado en las señales que se obtienen del indicador BBands_Stop_v1.

Support Vector Machine Learning Trader Support Vector Machine Learning Trader

Este Asesor Experto utiliza el aprendizaje por medio de los vectores de soporte para analizar el historial de precios y dar señales para operaciones futuras.