Domande dai principianti MQL5 MT5 MetaTrader 5 - pagina 407

 
first_may:

Buon pomeriggio.

Potreste dirmi come ottenere il valore diTenkan eKijun sulla candela precedente in mql5?

Si prega di vedere l'esempio periIchimoku.
 
Karputov Vladimir:
Guardate l'esempio diiIchimoku.

Stavo guardando prima di fare la domanda. In mql4 era più facile, per esempio sull'ultima candela

double tenkan_sen=iIchimoku(NULL,0,9,26,52,MODE_TENKANSEN,1);

E qui ho capito che viene creato un oggetto

handle=iIchimoku(nome,periodo,tenkan_sen,kijun_sen,senkou_span_b);

Ma come ottenere il valore tenkan da esso, non riesco a capirlo :(. Voglio una semplice intersezione tenkan e kijun da tracciare e basta.

 
first_may:

Stavo guardando prima di fare la domanda. In mql4 era più facile, per esempio sull'ultima candela

double tenkan_sen=iIchimoku(NULL,0,9,26,52,MODE_TENKANSEN,1);

E qui ho capito che viene creato un oggetto

handle=iIchimoku(nome,periodo,tenkan_sen,kijun_sen,senkou_span_b);

Ma come ottenere il valore tenkan da esso, non riesco a capirlo :(. Voglio una semplice intersezione di tenkan e kijun e basta.

Vuoi tracciare in un indicatore o in un EA?
 
Karputov Vladimir:
Vuoi tracciare in un indicatore o in un EA?
Nell'EA. Emettere il modulo di allerta con il suono.
 
first_may:
Nel consigliere. Avvisi di forma in uscita con suono.
Guardate la funzione CopyBuffer().
 
Tapochun:
Guardate la funzione CopyBuffer().

Nell'esempio

ma_handle=iMA(Symbol(),0,period,shift,smootMode,price); - l'oggetto viene creato

if(CopyBuffer(ma_handle,0,0,to_copy,MABuffer)<=0)return(0); - riempie l'arrayMABuffer con i valori dima_handle

E orapossiamo ottenere valori daMABuffer?

 
first_may:

Nell'esempio

ma_handle=iMA(Symbol(),0,period,shift,smootMode,price); - l'oggetto viene creato

if(CopyBuffer(ma_handle,0,0,to_copy,MABuffer)<=0)return(0); - riempie l'arrayMABuffer con i valori dima_handle

E orapossiamo ottenere valori daMABuffer?

Sì. In MABuffer, usando la funzione CopyBuffer() si ottengono i valori di MA sull'intervallo specificato. MABuffer è, ovviamente, un array.

 
Tapochun:

Sì. In MABuffer hai ottenuto i valori MA sull'intervallo che hai specificato con la funzione CopyBuffer(). MABuffer, naturalmente, è un array.

E si dovrebbe fare tutto correttamente nella procedura

intOnCalculate(constint rates_total,
constint prev_calculated,
constdatetime&time[],
constdouble&open[],
constdouble&high[],
constdouble&low[],
constdouble&close[],
constlong&tick_volume[],
constlong&volume[],

constint&spread[])

Anche se voglio visualizzare il valore sullo schermo?

 
La lunghezza standard della stringa va da 0 a 255 caratteri. Leggo la stringa dal file riga per riga tramite FileReadString senza parametro di lunghezza ( lunghezza=0 per default ) .Cioè, la stringa viene letta dalla posizione corrente al carattere di avanzamento di riga "\r\n". Cosa fare nel caso in cui una riga di un file occupi più di 255 caratteri (ed è possibile abbastanza spesso). Non voglio rompere la stringa in parti, perché le stringhe sono strettamente strutturate (il file contiene codice html). L'idea è che prima leggo l'intero file riga per riga nell'array, e poi lo analizzo e seleziono solo le informazioni di cui ho bisogno. Se le linee si dividono, il parser smetterà di funzionare, perché i segni delle informazioni necessarie possono separarsi ed entrare in diverse linee di lettura. Nessuna stringa lunga( Qualche altra idea?
 
first_may:

E tutto questo viene fatto correttamente in una procedura

intOnCalculate(constint rates_total,
constint prev_calculated,
constdatetime&time[],
constdouble&open[],
constdouble&high[],
constdouble&low[],
constdouble&close[],
constlong&tick_volume[],
constlong&volume[],

constint&spread[])

Anche se voglio visualizzare il valore sullo schermo?

Tutto dipende dalla logica dell'indicatore. Più spesso, sì, nella funzione OnCalculate().