Proprietà Indicatori Personalizzati

Il numero di buffer indicatore che può essere utilizzato in un indicatore personalizzato è illimitato. Ma per ogni array, che è designato come il buffer indicatore utilizzando la funzione SetIndexBuffer(), è necessario specificare il tipo di dati che verranno memorizzati. Questo può essere uno dei valori dell'enumerazione ENUM_INDEXBUFFER_TYPE.

ENUM_INDEXBUFFER_TYPE

ID

Descrizione

INDICATOR_DATA

Dati per disegnare

INDICATOR_COLOR_INDEX

Color

INDICATOR_CALCULATIONS

Buffer ausiliari per calcoli intermedi

Un indicatore personalizzato ha un sacco di impostazioni per fornire visualizzazioni convenienti. Queste impostazioni vengono effettuate attraverso l'assegnazione d proprietà indicatore corrispondente utilizzando le funzioni IndicatorSetDouble(), IndicatorSetInteger() e IndicatorSetString(). Identificatori di proprietà indicatori sono elencati nell'enumerazione ENUM_CUSTOMIND_PROPERTY.

ENUM_CUSTOMIND_PROPERTY_INTEGER

ID

Descrizione

Tipo di proprietà

INDICATOR_DIGITS

Precisione del disegno di valori degli indicatori

int

INDICATOR_HEIGHT

Altezza fissa della finestra dell'indicatore (il comando del preprocessore # property indicator_height)

int

INDICATOR_LEVELS

Numero di livelli nella finestra dell'indicatore

int

INDICATOR_LEVELCOLOR

Colore della linea di livello

color                      modifier = level number

INDICATOR_LEVELSTYLE

Stile della linea di livello

ENUM_LINE_STYLE  modifier = level number

INDICATOR_LEVELWIDTH

Spessore della linea di livello

int                         modifier = level number

INDICATOR_FIXED_MINIMUM

Minimo Fisso per la finestra dell'indicatore. La proprietà può essere scritta solo dalla funzione IndicatorSetInteger()

bool

INDICATOR_FIXED_MAXIMUM

Massimo Fisso per la finestra dell'indicatore. La proprietà può essere scritta solo dalla funzione IndicatorSetInteger()

bool

ENUM_CUSTOMIND_PROPERTY_DOUBLE

ID

Descrizione

Tipo di proprietà

INDICATOR_MINIMUM

Minima della finestra dell'indicatore

double

INDICATOR_MAXIMUM

Massima della finestra dell'indicatore

double

INDICATOR_LEVELVALUE

Valore del livello

double                    modifier = level number

ENUM_CUSTOMIND_PROPERTY_STRING

ID

Descrizione

Tipo di proprietà

INDICATOR_SHORTNAME

Nome breve dell'indicatore

string

INDICATOR_LEVELTEXT

Descrizione del Livello

string                    modifier = level number

Esempi:

//--- impostazioni indicatore
#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
//--- parametri di input
extern int KPeriod=5;
extern int DPeriod=3;
extern int Slowing=3;
//--- buffers indicatore
double MainBuffer[];
double SignalBuffer[];
double HighesBuffer[];
double LowesBuffer[];
//+--------------------------------------------------------------------------------+
//| Funzione di inizializzazione Indicatore Personalizzato                         |
//+--------------------------------------------------------------------------------+
void OnInit()
  {
//--- mappatura buffers indicatore
   SetIndexBuffer(0,MainBuffer,INDICATOR_DATA);
   SetIndexBuffer(1,SignalBuffer,INDICATOR_DATA);
   SetIndexBuffer(2,HighesBuffer,INDICATOR_CALCULATIONS);
   SetIndexBuffer(3,LowesBuffer,INDICATOR_CALCULATIONS);
//--- imposta precisione
   IndicatorSetInteger(INDICATOR_DIGITS,2);
//--- imposta livelli
   IndicatorSetInteger(INDICATOR_LEVELS,2);
   IndicatorSetDouble(INDICATOR_LEVELVALUE,0,20);
   IndicatorSetDouble(INDICATOR_LEVELVALUE,1,80);
//--- imposta massimo e minimo per sottofinestra
   IndicatorSetDouble(INDICATOR_MINIMUM,0);
   IndicatorSetDouble(INDICATOR_MAXIMUM,100);
//--- imposta la prima barra da quell' indice sarà disegnato
   PlotIndexSetInteger(0,PLOT_DRAW_BEGIN,KPeriod+Slowing-2);
   PlotIndexSetInteger(1,PLOT_DRAW_BEGIN,KPeriod+Slowing+DPeriod);
//--- imposta stile STYLE_DOT per seconda linea
   PlotIndexSetInteger(1,PLOT_LINE_STYLE,STYLE_DOT);
//--- nome per DataWindow e indicatore di etichetta sottofinestra
   IndicatorSetString(INDICATOR_SHORTNAME,"Stoch("+KPeriod+","+DPeriod+","+Slowing+")");
   PlotIndexSetString(0,PLOT_LABEL,"Main");
   PlotIndexSetString(1,PLOT_LABEL,"Signal");
//--- imposta il valore di disegno della linea come vuoto
   PlotIndexSetDouble(0,PLOT_EMPTY_VALUE,0.0);
   PlotIndexSetDouble(1,PLOT_EMPTY_VALUE,0.0);
//--- inizializzazione fatta
  }