Propiedades de indicadores personalizados

El número de los buffers de indicadores que se puede usar en un indicador personalizado no está limitado.  Pero para cada array que se designa como búfer de indicador a través de la función SetIndexBuffer() es necesario indicar el tipo de datos que él va a almacenar. Puede ser uno de los valores de la enumeración ENUM_INDEXBUFFER_TYPE.

ENUM_INDEXBUFFER_TYPE

Identificador

Descripción

INDICATOR_DATA

Datos para dibujar

INDICATOR_COLOR_INDEX

Colores

INDICATOR_CALCULATIONS

Buffers auxiliares para los cálculos intermedios

Un indicador personalizado cuenta con una variedad de configuraciones para proporcionar una visualización y percepción convenientes. Estas configuraciones se realizan a través de asignación de las propiedades de indicador correspondientes usando las funciones IndicatorSetDouble(), IndicatorSetInteger() y IndicatorSetString(). Los identificadores de las propiedades del indicador se encuentran en la enumeración ENUM_CUSTOMIND_PROPERTY.

ENUM_CUSTOMIND_PROPERTY_INTEGER

Identificador

Descripción

Tipo de la propiedad

INDICATOR_DIGITS

Precisión de dibujo de los valores del indicador

int

INDICATOR_HEIGHT

El alto fijo de la propia ventana del indicador (comando del preprocesador #property indicator_height)

int

INDICATOR_LEVELS

Número de niveles en la ventana del indicador

int

INDICATOR_LEVELCOLOR

Color de la línea del nivel

color                      modificador - número de nivel

INDICATOR_LEVELSTYLE

Estilo de la línea del nivel

ENUM_LINE_STYLE  modificador - número de nivel

INDICATOR_LEVELWIDTH

Grosor de la línea del nivel

int                         modificador - número de nivel

INDICATOR_FIXED_MINIMUM

Mínimo fijo para ventana del indicador. La propiedad está disponible solo para la escritura por parte de la función IndicatorSetInteger()

bool

INDICATOR_FIXED_MAXIMUM

Máximo fijo para ventana del indicador. La propiedad está disponible solo para la escritura por parte de la función IndicatorSetInteger()

bool

ENUM_CUSTOMIND_PROPERTY_DOUBLE

Identificador

Descripción

Tipo de la propiedad

INDICATOR_MINIMUM

Mínimo de la ventana del indicador

double

INDICATOR_MAXIMUM

Máximo de la ventana del indicador

double

INDICATOR_LEVELVALUE

Valor del nivel

double                    modificador - número de nivel

ENUM_CUSTOMIND_PROPERTY_STRING

Identificador

Descripción

Tipo de la propiedad

INDICATOR_SHORTNAME

Nombre breve del indicador

string

INDICATOR_LEVELTEXT

Descripción del nivel

string                     modificador - número de nivel

Ejemplos:

//--- indicator settings
#property indicator_separate_window
#property indicator_buffers 4
#property indicator_plots   2
#property indicator_type1   DRAW_LINE
#property indicator_type2   DRAW_LINE
#property indicator_color1  clrLightSeaGreen
#property indicator_color2  clrRed
//--- input parameters
extern int KPeriod=5;
extern int DPeriod=3;
extern int Slowing=3;
//--- indicator buffers
double MainBuffer[];
double SignalBuffer[];
double HighesBuffer[];
double LowesBuffer[];
//+------------------------------------------------------------------+
//| Custom indicator initialization function                         |
//+------------------------------------------------------------------+
void OnInit()
  {
//--- indicator buffers mapping
   SetIndexBuffer(0,MainBuffer,INDICATOR_DATA);
   SetIndexBuffer(1,SignalBuffer,INDICATOR_DATA);
   SetIndexBuffer(2,HighesBuffer,INDICATOR_CALCULATIONS);
   SetIndexBuffer(3,LowesBuffer,INDICATOR_CALCULATIONS);
//--- set accuracy
   IndicatorSetInteger(INDICATOR_DIGITS,2);
//--- set levels
   IndicatorSetInteger(INDICATOR_LEVELS,2);
   IndicatorSetDouble(INDICATOR_LEVELVALUE,0,20);
   IndicatorSetDouble(INDICATOR_LEVELVALUE,1,80);
//--- set maximum and minimum for subwindow 
   IndicatorSetDouble(INDICATOR_MINIMUM,0);
   IndicatorSetDouble(INDICATOR_MAXIMUM,100);
//--- sets first bar from what index will be drawn
   PlotIndexSetInteger(0,PLOT_DRAW_BEGIN,KPeriod+Slowing-2);
   PlotIndexSetInteger(1,PLOT_DRAW_BEGIN,KPeriod+Slowing+DPeriod);
//--- set style STYLE_DOT for second line
   PlotIndexSetInteger(1,PLOT_LINE_STYLE,STYLE_DOT);
//--- name for DataWindow and indicator subwindow label
   IndicatorSetString(INDICATOR_SHORTNAME,"Stoch("+KPeriod+","+DPeriod+","+Slowing+")");
   PlotIndexSetString(0,PLOT_LABEL,"Main");
   PlotIndexSetString(1,PLOT_LABEL,"Signal");
//--- sets drawing line to empty value
   PlotIndexSetDouble(0,PLOT_EMPTY_VALUE,0.0);
   PlotIndexSetDouble(1,PLOT_EMPTY_VALUE,0.0);
//--- initialization done
  }