- OnStart
- OnInit
- OnDeinit
- OnTick
- OnCalculate
- OnTimer
- OnTrade
- OnTradeTransaction
- OnBookEvent
- OnChartEvent
- OnTester
- OnTesterInit
- OnTesterDeinit
- OnTesterPass
OnCalculate
La funzione è chiamata negli indicatori quando si verifica l'evento Calculate per l'elaborazione delle modifiche dei dati di prezzo. Ci sono due tipi di funzione. Solo uno di esse può essere utilizzata all'interno di un singolo indicatore.
Calcolo basato su matrice di dati
int OnCalculate(
|
Calcoli basati sulle timeseries del corrente timeframe
int OnCalculate(
|
Parametri
rates_total
[in] Gradenzza della serie di prezzi[ ] o serie di input disponibili per l'indicatore per il calcolo. Nel secondo tipo di funzione, il valore del parametro corrisponde al numero di barre sul grafico-chart su cui è stato lanciato.
prev_calculated
[in] Contiene il valore restituito dalla funzione OnCalculate() durante la chiamata precedente. È progettato per saltare le barre che non sono state modificate dal lancio precedente di questa funzione.
begin
[in] Il valore dell'indice nell'array price[] da cui partono i dati significativi. Permette di saltare i dati mancanti o iniziali, per i quali non ci sono valori corretti.
price[]
[in] Array di valori per i calcoli. Una delle timeseries prezzo o un buffer indicatore calcolato può essere passato come array price[ ]. Il tipo di dati passati per il calcolo può essere definito usando la variabile predefinita _AppliedTo.
time{}
[in] Array con valori di tempo della barra aperta.
open[]
[in] Array con valori di prezzo Open.
high[]
[in] Array con valori di prezzo High.
low[]
[in] Array con valori di prezzo Low.
close[]
[in] Array con valori di prezzo Close.
tick_volume[]
[in] Array con valori di volume tick.
volume[]
[in] Array con valori di volume trade.
spread[]
[in] Array di valori spread per le barre.
Valore di ritorno
tipo int di valore da passare come parametro prev_calculated durante la prossima chiamata di funzione.
Nota
Se la funzione OnCalculate() è uguale a zero, nessun valore dell'indicatore viene visualizzato nel DataWindow del terminale client.
Se i dati del prezzo sono stati modificati dall'ultima chiamata della funzione OnCalculate() (è stato caricato uno storico più profondo o sono stati riempiti spazi vuoti nello storico), il valore del parametro di input prev_calculated è impostato a zero dal terminale stesso.
Per definire la direzione di indicizzazione negli array time[], open[], high[], low[], close[], tick_volume[], volume[] e spread[], chiamare la funzione ArrayGetAsSeries(). Per non dipendere dai valori predefiniti, chiamare la funzione ArraySetAsSeries() per gli array con cui lavorare.
Quando si utilizza il primo tipo di funzione, un indicatore o timeseries necessari viene selezionato da un utente come array price[ ] nella scheda Parametri quando si avvia l'indicatore. Per fare ciò, specificare l'elemento necessario nell'elenco a discesa del campo "Applica a".
Per ottenere i valori dell'indicatore personalizzato da altri programmi mql5, viene usata la funzione iCustom(). Restituisce l'handle dell'indicatore per le operazioni successive. È anche possibile specificare l'array price[ ] richiesto o l'handle di un altro indicatore. Questo parametro deve essere passato per ultimo nell'elenco delle variabili di input di un indicatore personalizzato.
È necessario utilizzare la connessione tra il valore restituito dalla funzione OnCalculate() e il secondo parametro di input prev_calculated. Quando si chiama la funzione, il parametro prev_calculated contiene il valore restituito dalla funzione OnCalculate() durante la chiamata precedente. Ciò consente di implementare algoritmi di risparmio delle risorse per il calcolo di un indicatore personalizzato al fine di evitare calcoli ripetitivi per le barre che non sono state modificate dal lancio precedente di questa funzione.
Indicatore di esempio
//+------------------------------------------------------------------+
|
Guarda anche
ArrayGetAsSeries, ArraySetAsSeries, iCustom, Funzioni di event handling, Avvio programmi, Eventi del terminale client, Accesso a timeseries ed indicatori