Drawing Styles

Quando si crea un indicatore personalizzato, è possibile specificare uno dei 18 tipi di grafico tracciato (come visualizzato nella finestra del grafico principale o una sottofinestra grafico), i cui valori sono specificati nella enumerazione ENUM_DRAW_TYPE.

In un indicatore personalizzato, è consentito utilizzare qualsiasi tipo di costruzione/disegno di indicatore. Ogni tipo di costruzione richiede la specifica di uno a cinque array globali per memorizzare i dati necessari per il disegno. Questi array di dati devono essere legati con il buffer indicatore utilizzando la funzione SetIndexBuffer(). Il tipo di dati da ENUM_INDEXBUFFER_TYPE deve essere specificato per ogni buffer.

A seconda dello stile di disegno, potrebbe essere necessario 1-4 valori buffer (contrassegnato come INDICATOR_DATA). Se uno stile ammette l'alternarsi dinamico dei colori (tutti gli stili contengono COLORE nei loro nomi), quindi avrete bisogno di un altro buffer di colore (tipo indicato INDICATOR_COLOR_INDEX). I buffer di colore sono sempre tenuti dopo buffer valore corrispondente allo stile.

ENUM_DRAW_TYPE

ID

Descrizione

Data buffers

Color buffers

DRAW_NONE

Non disegnato

1

0

DRAW_LINE

Linea

1

0

DRAW_SECTION

Sezione

1

0

DRAW_HISTOGRAM

Istogramma dalla linea dello zero

1

0

DRAW_HISTOGRAM2

Istogramma dei due buffer indicatore

2

0

DRAW_ARROW

Disegnamento frecce

1

0

DRAW_ZIGZAG

Stili Zigzag permettono la sezione verticale sulla barra

2

0

DRAW_FILLING

Color fill between the two levels

2

0

DRAW_BARS

Visualizzare come una sequenza di barre

4

0

DRAW_CANDLES

Visualizza come una sequenza di candele

4

0

DRAW_COLOR_LINE

Linea multicolore

1

1

DRAW_COLOR_SECTION

Sezione multicolore

1

1

DRAW_COLOR_HISTOGRAM

Istogramma multicolore dalla linea dello zero

1

1

DRAW_COLOR_HISTOGRAM2

Istogramma multicolore dei due buffer indicatore

2

1

DRAW_COLOR_ARROW

Disegno frecce multicolori

1

1

DRAW_COLOR_ZIGZAG

ZigZag multicolore

2

1

DRAW_COLOR_BARS

Multicolore barre

4

1

DRAW_COLOR_CANDLES

Candele multicolore

4

1

 

Per perfezionare la visualizzazione del tipo di disegno selezionato, vengono utilizzati identificatori elencati in ENUM_PLOT_PROPERTY.

Per le funzioni PlotIndexSetInteger() e PlotIndexGetInteger()

ENUM_PLOT_PROPERTY_INTEGER

ID

Descrizione

Tipo di proprietà

PLOT_ARROW

Codice Arrow per DRAW_ARROW stile

uchar

PLOT_ARROW_SHIFT

Spostamento verticale di frecce per stile DRAW_ARROW

int

PLOT_DRAW_BEGIN

Numero di barre iniziali, senza disegno e valori nel DataWindow

int

PLOT_DRAW_TYPE

Tipo di costruzione grafica

ENUM_DRAW_TYPE

PLOT_SHOW_DATA

Segno di visualizzazione dei valori di costruzione nel DataWindow

bool

PLOT_SHIFT

Spostamento dell'indicatore tracciato lungo l'asse del tempo nelle bars

int

PLOT_LINE_STYLE

Stile di Disegno della linea

ENUM_LINE_STYLE

PLOT_LINE_WIDTH

Lo spessore della linea di disegno

int

PLOT_COLOR_INDEXES

Il numero di colori

int

PLOT_LINE_COLOR

L'indice di un tampone contenente il colore di disegno

color       modifier = index number of colors

 

Per la funzione PlotIndexSetDouble()

ENUM_PLOT_PROPERTY_DOUBLE

ID

Descrizione

Tipo di proprietà

PLOT_EMPTY_VALUE

Un valore vuoto per la stampa, per cui non esiste nessun disegno

double

Per la funzione PlotIndexSetString()

ENUM_PLOT_PROPERTY_STRING

ID

Descrizione

Tipo di proprietà

PLOT_LABEL

Il nome della serie grafica dell' indicatore da visualizzare nel DataWindow. Quando si lavora con stili grafici complessi che richiedono diversi buffer indicatori per la visualizzazione, i nomi per ogni buffer possono essere specificati utilizzando ";" come separatore. Codice di esempio è mostrato in DRAW_CANDLES

string

5 stili possono essere utilizzati per disegnare linee in indicatori personalizzati. Essi sono validi solo per lo spessore della linea 0 o 1.

ENUM_LINE_STYLE

ID

Descrizione

STYLE_SOLID

Linea continua

STYLE_DASH

Linea spezzata

STYLE_DOT

Linea tratteggiata

STYLE_DASHDOT

Linea punteggiata-tratteggiata

STYLE_DASHDOTDOT

Tratteggio - due punti

 

Per impostare lo stile di disegno linea ed il tipo di disegno, viene utilizzata la funzione PlotIndexSetInteger(). Per le Estensioni di Fibonacci lo spessore e lo stile di disegno dei livelli può essere indicato con la funzione ObjectSetInteger().

Esempio:

#property indicator_chart_window
#property indicator_buffers 1
#property indicator_plots   1
//--- buffers indicatore
double         MABuffer[];
//+--------------------------------------------------------------------------------+
//| Funzione di inizializzazione Indicatore Personalizzato  |
//+--------------------------------------------------------------------------------+
void OnInit()
  {
//--- Associa l'Array al buffer indicatore con indice 0
   SetIndexBuffer(0,MABuffer,INDICATOR_DATA);
//--- Imposta la linea di disegno
   PlotIndexSetInteger(0,PLOT_DRAW_TYPE,DRAW_LINE);
//--- Imposta la linea di stile
   PlotIndexSetInteger(0,PLOT_LINE_STYLE,STYLE_DOT);
//--- Imposta colore della linea
   PlotIndexSetInteger(0,PLOT_LINE_COLOR,clrRed);
//--- Imposta lo spessore della linea
   PlotIndexSetInteger(0,PLOT_LINE_WIDTH,1);
//--- Imposta etichette per la linea
   PlotIndexSetString(0,PLOT_LABEL,"Moving Average");
//---
  }
//+--------------------------------------------------------------------------------+
//| Funzione di iterazione indicatore personalizato                                |
//+--------------------------------------------------------------------------------+
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[])
  {
//--- 
   for(int i=prev_calculated;i<rates_total;i++)
     {
      MABuffer[i]=close[i];
     }
//--- restituisce il valore di prev_calculated per la prossima chiamata
   return(rates_total);
  }