La funzione OnCalculate() viene chiamata solo negli indicatori personalizzati quando è necessario calcolare i valori dell'indicatore tramite l'evento Calculate.
Questo di solito accade quando si riceve un nuovo tick per il simbolo per il quale l'indicatore è calcolato.
Questo indicatore non deve essere collegato a nessun grafico di prezzo di questo simbolo.
La funzione OnCalculate() deve avere un ritorno di tipo int. Ci sono due possibili definizioni. All'interno di un indicatore non è possibile utilizzare entrambe le versioni della funzione.
La prima forma è destinata a quegli indicatori che possono essere calcolati su un unico buffer di dati. Un esempio di tale indicatore è la media mobile personalizzata.
intOnCalculate(constint rates_total,// dimensione dell'array price[] constint prev_calculate,// barre gestite in una chiamata precedente constint begin,// da dove iniziano i dati significativi constdouble& price[]// array da calcolare );
La funzione OnCalculate() viene chiamata solo negli indicatori personalizzati quando è necessario calcolare i valori dell'indicatore tramite l'evento Calculate.
Questo di solito accade quando si riceve un nuovo tick per il simbolo per il quale l'indicatore è calcolato.
Questo indicatore non deve essere collegato a nessun grafico di prezzo di questo simbolo.
La funzione OnCalculate() deve avere un ritorno di tipo int. Ci sono due possibili definizioni. All'interno di un indicatore non è possibile utilizzare entrambe le versioni della funzione.
La prima forma è destinata a quegli indicatori che possono essere calcolati su un unico buffer di dati. Un esempio di tale indicatore è la media mobile personalizzata.
intOnCalculate(constint rates_total,// dimensione dell'array price[] constint prev_calculate,// barre gestite in una chiamata precedente constint begin,// da dove iniziano i dati significativi constdouble& price[]// array da calcolare );
(Uso la parola "Lag" che significa ritardi nell'azione dei prezzi, apertura e chiusura degli ordini, una sola parola che mette fuori uso la mia piattaforma MT4)
Uso la seguente funzione per il mio indicatore personalizzato.
Quando scrivo sotto il codice di ritorno al mio indicatore personalizzato, allora il mio indicatore personalizzato inizia a ritardare. Ma funziona correttamente, cosa che voglio.
return(0); // starts to lag...
E quando scrivo sotto il codice di ritorno al mio indicatore personalizzato, allora il mio indicatore personalizzato non funziona correttamente, come voglio io. Voglio dire che mentre falso MA cross " Arrow " non torna al punto precedente MA cross.
return rates_total-1; // does not go back to previous MA cross pointreturn(rates_total-1); // and same thing here
D: Cosa posso fare per questa situazione, per favore?
Max Enrik: E quando scrivo sotto il codice di ritorno al mio indicatore personalizzato allora il mio indicatore personalizzato non funziona correttamente quello che voglio. Voglio dire che mentre falso MA cross " Arrow " non torna al punto precedente MA cross.
Pubblicate tutto il vostro codice. Non ha senso senza contesto.
string counts;
void _a()
{
counts += "a - " + IntegerToString( ObjectsTotal( OBJ_ARROW ) );
//---return;
}
void _b()
{
counts += " - b - " + IntegerToString( ObjectsTotal( OBJ_ARROW ) );
//---return;
}
Print( counts );
// while 1st loop: a - 2 - b - 4// while 2nd loop: a - 2 - b - 4a - 2 - b - 4// while 3rd loop: a - 2 - b - 4a - 2 - b - 4a - 2 - b - 4a - 2 - b - 4// and so on...// But I like only 1st loop results even that loop runs 10 thousand times
OnCalculate
La funzione OnCalculate() viene chiamata solo negli indicatori personalizzati quando è necessario calcolare i valori dell'indicatore tramite l'evento Calculate .
Questo di solito accade quando si riceve un nuovo tick per il simbolo per il quale l'indicatore è calcolato.
Questo indicatore non deve essere collegato a nessun grafico di prezzo di questo simbolo.
La funzione OnCalculate() deve avere un ritorno di tipo int. Ci sono due possibili definizioni. All'interno di un indicatore non è possibile utilizzare entrambe le versioni della funzione.
La prima forma è destinata a quegli indicatori che possono essere calcolati su un unico buffer di dati. Un esempio di tale indicatore è la media mobile personalizzata.
intOnCalculate(constint rates_total,// dimensione dell'array price[]
constint prev_calculate,// barre gestite in una chiamata precedente
constint begin,// da dove iniziano i dati significativi
constdouble& price[]// array da calcolare
);
OnCalculate
La funzione OnCalculate() viene chiamata solo negli indicatori personalizzati quando è necessario calcolare i valori dell'indicatore tramite l'evento Calculate .
Questo di solito accade quando si riceve un nuovo tick per il simbolo per il quale l'indicatore è calcolato.
Questo indicatore non deve essere collegato a nessun grafico di prezzo di questo simbolo.
La funzione OnCalculate() deve avere un ritorno di tipo int. Ci sono due possibili definizioni. All'interno di un indicatore non è possibile utilizzare entrambe le versioni della funzione.
La prima forma è destinata a quegli indicatori che possono essere calcolati su un unico buffer di dati. Un esempio di tale indicatore è la media mobile personalizzata.
intOnCalculate(constint rates_total,// dimensione dell'array price[]
constint prev_calculate,// barre gestite in una chiamata precedente
constint begin,// da dove iniziano i dati significativi
constdouble& price[]// array da calcolare
);
(Uso la parola "Lag" che significa ritardi nell'azione dei prezzi, apertura e chiusura degli ordini, una sola parola che mette fuori uso la mia piattaforma MT4)
Uso la seguente funzione per il mio indicatore personalizzato.
Quando scrivo sotto il codice di ritorno al mio indicatore personalizzato, allora il mio indicatore personalizzato inizia a ritardare. Ma funziona correttamente, cosa che voglio.
E quando scrivo sotto il codice di ritorno al mio indicatore personalizzato, allora il mio indicatore personalizzato non funziona correttamente, come voglio io. Voglio dire che mentre falso MA cross " Arrow " non torna al punto precedente MA cross.
D: Cosa posso fare per questa situazione, per favore?
Grazie in anticipo.
Ecco a voi.
Grazie in anticipo.
OK! Grazie!
Ho ancora bisogno di una risposta più chiara.
Grazie in anticipo.
La risposta è:Controlla sia l'attuale MA Cross che il precedente MA Cross.
#Buffer (array out of range in ) - Chiuso
#Custom Indicator Lagging - Chiuso
#Primo risultato del Loop - Aperto
Grazie in anticipo.