- Stili Indicatore negli Esempi
- Connection between Indicator Properties and Functions
- SetIndexBuffer
- IndicatorSetDouble
- IndicatorSetInteger
- IndicatorSetString
- PlotIndexSetDouble
- PlotIndexSetInteger
- PlotIndexSetString
- PlotIndexGetInteger
Custom Indicators
Questo è il gruppo funziona utilizzati nella creazione di indicatori personalizzati. Queste funzioni non possono essere utilizzate durante la scrittura di Expert Advisors e Script.
Funzione |
Azione |
---|---|
Associa il buffer indicatore specificato con l' array dinamico uni-dimensionale di tipo double |
|
Imposta il valore della proprietà dell' indicatore di tipo double |
|
Imposta il valore di una proprietà dell'indicatore di tipo int |
|
Imposta il valore della proprietà dell' indicatore di tipo string |
|
Imposta il valore della proprietà dell' indicatore di tipo double |
|
Imposta il valore di una proprietà dell'indicatore di tipo int |
|
Imposta il valore di una proprietà dell'indicatore di tipo string |
|
Restituisce il valore della proprietà della linea dell'indicatore di tipo integer |
La proprietà dell'indicatore può essere impostata utilizzando le direttive del compilatore o utilizzando le funzioni. Per capire meglio ciò, si consiglia di studiare gli stili indicatore negli esempi.
Tutti i calcoli necessari di un indicatore personalizzato devono essere messi nella funzione predeterminata OnCalculate(). Se si utilizza una forma breve della chiamata di funzione OnCalculate(), come
int OnCalculate (const int rates_total, const int prev_calculated, const int begin, const double& price[]) |
allora la variabile rates_total contiene il valore del numero totale di elementi dell'array prezzo[] passato come parametro di input per il calcolo dei valori degli indicatori.
Il parametro prev_calculated è il risultato dell'esecuzione di OnCalculate() alla chiamata precedente, ma permette di organizzare un algoritmo risparmiante risorse, per calcolare i valori degli indicatori. Ad esempio, se il valore corrente rates_total = 1000, prev_calculated = 999, allora forse è sufficiente per fare calcoli solo per un valore di ciascun buffer indicatore.
Se le informazioni rigardo la grandezza dell'array di input prezzi sarebbe stato non-disponibile, allora avrebbe portato alla necessità di fare calcoli per 1000 valori di ogni buffer indicatore. Alla prima chiamata di OnCalculate() Valore prev_calculated = 0. Se l'array prezzo[] è cambiato in qualche modo, allora in questo caso prev_calculated è anche uguale a 0.
Il parametro begin mostra il numero di valori iniziali dell'array prezzo, che non contengono dati per il calcolo. Per esempio, se i valori di Oscillator Accelerator (per cui i primi 37 valori non vengono calcolati) sono stati utilizzati come parametro di input, allora begin = 37. Ad esempio, consideriamo un semplice indicatore:
#property indicator_chart_window
|
Trascinandolo dalla finestra "Navigatore" alla finestra dell'indicatore Accelerator Oscillator, indicheremo che i calcoli saranno effettuati in base ai valori dell'indicatore precedente:
Come risultato, la prima chiamata di OnCalculate() avrà il valore di prev_calculated uguale a zero, e con ulteriori chiamate sarà uguale al valore rates_total (finché il numero di barre sul grafico dei prezzi aumenti).
Il valore del parametro begin sarà esattamente uguale al numero di barre iniziali, per cui i valori dell'indicatore Accelerator non vengono calcolati secondo la logica di questo indicatore. Se guardiamo il codice sorgente del indicatore personalizzato Accelerator.mq5, vedremo le seguenti linee nella funzione OnInit():
//--- imposta la prima barra da quell' indice sarà disegnato
|
Utilizzando la funzione PlotIndexSetInteger(0, PLOT_DRAW_BEGIN, Empty_first_values), abbiamo impostato il numero di primi-valori non esistenti nell'array indicatore zero di un indicatore personalizzato, che non abbiamo bisogno di accettare per il calcolo (empty_first_values). Così, abbiamo meccanismi per:
- impostare il numero di valori iniziali di un indicatore, che non dovrebbe essere utilizzato per i calcoli in un altro indicatore personalizzato;
- ottenere informazioni sul numero dei primi valori per essere ignorati quando si chiama un altro indicatore personalizzato, senza entrare nella logica dei suoi calcoli.