Discussione sull’articolo "Creazione di Indicatori Multicolor in MQL5"

 

Il nuovo articolo Creazione di Indicatori Multicolor in MQL5 è stato pubblicato:

In questo articolo, considereremo come creare indicatori multicolor o convertire quelli esistenti in multicolor. MQL5 permette di rappresentare le informazioni nella forma più conveniente. Ora, non è più necessario guardare una dozzina di grafici con indicatori ed eseguire analisi dell’RSI o dei livelli stocastici, è meglio semplicemente colorare le candele con colori diversi a seconda dei valori degli indicatori.

Colore dell’RSI

Autore: Дмитрий Александрович

 
Bene e dettagliato, grazie mille. L'ho trovato molto utile.
 
Mi sembra di capire che in mql4 il gradiente sui candelieri non può essere rappresentato?
 

omg, grazie per questa riga:

L'ordine dei buffer deve essere speciale: prima di tutto i buffer dei dati dell'indicatore, poi i buffer degli indici dei colori.

Pensavo di essere un po' impazzito, cercando di disegnare trame a due colori (ho ordinato i buffer e ha funzionato senza problemi).

Grazie!

 
Molto bene, trovo molto difficile creare una regola di colorazione con Stochastic. Avete un esempio?
 
I commenti che non riguardano questo argomento sono stati spostati in "Messaggi fuori tema".
 

Buon pomeriggio!

Ho riscontrato un problema quando si utilizzano piùstili di disegno contemporaneamente . Ad esempio, è necessario disegnare un canale dipinto come bolingjder e al centro di esso c'è una linea centrale. Ecco un esempio:

SetIndexBuffer(0, Buf1, INDICATOR_DATA);
SetIndexBuffer(1, Buf2, INDICATOR_DATA);

SetIndexBuffer(2, Buf3, INDICATOR_DATA);

PlotIndexSetInteger(0, PLOT_DRAW_TYPE, DRAW_FILLING);

PlotIndexSetInteger(2, PLOT_DRAW_TYPE, DRAW_LINE);

Con questa struttura, viene visualizzato solo il canale dipinto. Se si cambia l'ordine, utilizzando prima la linea centrale e poi il canale dipinto, tutto va bene. Ma l'ordine è necessario, perché è solo una parte dell'indicatore.

Se si utilizza DRAW_LINE invece di DRAW_FILLING, tutto va bene: vengono disegnate solo tre linee, un canale non dipinto e una linea centrale.

Ho provato diverse combinazioni, sequenze e numero di buffer, punti di disegno e altre cose, ma non funziona nulla. Se ad esempio c'è un buffer con il tipo di disegno DRAW_FILLING, tutto ciò che segue non viene visualizzato o viene disegnato in modo errato. Sarò grato per qualsiasi aiuto, in quanto non credo che sia impossibile disegnare indicatori complessi di stili diversi allo stesso tempo.


 
Ruslan Piraliyev SetIndexBuffer(1, Buf2, INDICATOR_DATA);

SetIndexBuffer(2, Buf3, INDICATOR_DATA);

PlotIndexSetInteger(0, PLOT_DRAW_TYPE, DRAW_FILLING);

PlotIndexSetInteger(2, PLOT_DRAW_TYPE, DRAW_LINE);

Con questa struttura, viene visualizzato solo il canale dipinto. Se si cambia l'ordine, utilizzando prima la linea centrale e poi il canale dipinto, tutto va bene. Ma l'ordine è necessario, perché è solo una parte dell'indicatore.

Se si utilizza DRAW_LINE invece di DRAW_FILLING, tutto va bene: vengono disegnate solo tre linee, un canale non dipinto e una linea centrale.

Ho provato diverse combinazioni, sequenze e numero di buffer, punti di disegno e altre cose, ma non funziona nulla. Ad esempio, se c'è un buffer con il tipo di disegno DRAW_FILLING, tutto ciò che segue non viene visualizzato o viene disegnato in modo errato. Sarò grato per qualsiasi aiuto, in quanto non credo che sia impossibile disegnare indicatori complessi di stili diversi allo stesso tempo.


L'indice del buffer non deve coincidere con l'indice di costruzione. Hanno una propria indicazione. Provare con PlotIndexSetInteger(1, PLOT_DRAW_TYPE, DRAW_LINE);

 
Alexey Viktorov #:

L'indice del buffer non deve essere lo stesso dell'indice di costruzione. Hanno una propria indicazione. Provare con PlotIndexSetInteger(1, PLOT_DRAW_TYPE, DRAW_LINE);

Grazie!!! Ho capito e tutto è andato subito al suo posto).

Non pensavo che avessero indicizzazioni diverse. Risulta che il binding dei buffer al punto di disegno avviene come sembra.

 
Alexey Viktorov #:

L'indice del buffer non deve essere lo stesso dell'indice di costruzione. Hanno una propria indicazione. Provare con PlotIndexSetInteger(1, PLOT_DRAW_TYPE, DRAW_LINE);

Potreste dirmi un'altra cosa: posso cambiare l'ordine delle linee in modo che quella desiderata sia in cima? O è solo in base all'ordine di dichiarazione dei buffer? Ad esempio, volevo che il buffer 0-esimo corrispondesse alla linea principale, e il canale di riempimento fosse alla fine, ma si sovrappone a tutti). Questo è conveniente perché ho intenzione di utilizzare l'indicatore nell'Expert Advisor per recuperare comodamente i dati.

 
Ruslan Piraliyev #:

Potreste dirmi un'altra cosa, è possibile cambiare l'ordine delle linee in modo che quella necessaria sia in cima? O è solo in base all'ordine di dichiarazione dei buffer? Per esempio, volevo che il buffer 0-esimo corrispondesse alla linea principale, e che il canale di riempimento fosse alla fine, ma si sovrappone a tutti). Questo è conveniente perché ho intenzione di utilizzare l'indicatore nell'Expert Advisor per recuperare comodamente i dati.

Non capisco nulla. E che differenza fa il numero del buffer da tirare nell'Expert Advisor?