Aggiungere colore a un indicatore

 

Vorrei stampare un quadrato rosso (piccolo) sul grafico quando il prossimo time frame superiore sta scendendo. E un quadrato bianco se sta salendo.

Come posso farlo? Una volta che l'ho capito, posso aggiungere altri time frame e barre diverse.

Il mio codice finora è:

// 30 min corrente

double open.30.0 =iCustom(NULL,30,"Heiken Ashi",0,2,0); //Precedente apertura

double close.30.0 =iCustom(NULL,30, "Heiken Ashi",0,3,0); //Precedente chiusura

bool Up.30.0 = (close.30.0>open.30.0);

bool Down.30.0 = (close.30.0<open.30.0);

Commento ("\n 30 min corrente su o giù " + Up.30.0 +" "+ Down.30.0);

Ma invece di avere uno "0" o un "1", voglio che il commento mostri un quadrato o un punto rosso o bianco.


Qualsiasi aiuto sarebbe apprezzato... Non riesco a trovare nulla cercando su questo sito o sul web.

 
mrchuckw:

Vorrei stampare un quadrato rosso (piccolo) sul grafico quando il prossimo time frame superiore sta scendendo. E un quadrato bianco se sta salendo.

Come posso farlo? Una volta che l'ho capito, posso aggiungere altri time frame e barre diverse.

Il mio codice finora è:

// 30 min corrente

double open.30.0 =iCustom(NULL,30, "Heiken Ashi",0,2,0); //Precedente apertura

double close.30.0 =iCustom(NULL,30, "Heiken Ashi",0,3,0); //Chiusura precedente

bool Up.30.0 = (close.30.0>open.30.0);

bool Down.30.0 = (close.30.0<open.30.0);

Commento ("\n 30 min corrente su o giù " + Up.30.0 +" "+ Down.30.0);

Ma invece di avere uno "0" o un "1", voglio che il commento mostri un quadrato o un punto rosso o bianco.


Qualsiasi aiuto sarebbe apprezzato... Non riesco a trovare nulla cercando su questo sito o sul web.

Ciao mrchuckw,

Cerca su questo sito e su altri forum FX gli EA che hanno codice ObjectCreate...

Usi ObjectCreate per posizionare i segni colorati dove vuoi.

Spero che questo ti aiuti,

Robert


 
Gli indicatori di colore usano due buffer. Impostare uno al valore e l'altro al valore_vuoto. Guarda un po' di codice dell'indicatore nella base di codice
 
Grazie Robert!
 

Sto usando il seguente codice... perché non mette un rettangolo bianco sul mio grafico?

ObjectCreate("quadrato",OBJ_RECTANGLE,0,0,0);

ObjectSet("quadrato",OBJPROP_XDISTANCE,193);

ObjectSet("quadrato",OBJPROP_YDISTANCE,48);

ObjectSet("quadrato",OBJPROP_COLOR,White);

 

mrchuckw:

Sto usando il seguente codice... perché non mette un rettangolo bianco sul mio grafico?

ObjectCreate("quadrato",OBJ_RECTANGLE,0,0,0);

ObjectSet("quadrato",OBJPROP_XDISTANCE,193);

ObjectSet("quadrato",OBJPROP_YDISTANCE,48);

ObjectSet("quadrato",OBJPROP_COLOR,Bianco);

OBJ_RECTANGLE 16 Rettangolo. Utilizza 2 coordinate. Una coordinata è tempo e prezzo . . quindi . . .

ObjectCreate("square",OBJ_RECTANGLE, 0, datetime time1, double price1, datetime time2, double price2);

ObjectSet("square",OBJPROP_COLOR,White);



Dovete riempire i valori per . . datetime time1, double price1, datetime time2, double price2

O forse vuoi usare un Label, OBJ_LABEL e poi usare un wingding per il quadrato? https://docs.mql4.com/constants/wingdings

 

Ok... credo. Non voglio che sia orientato alla data/ora... Non credo.

Ecco cosa voglio. Nella parte inferiore del grafico, sotto la barra corrente, voglio mettere un quadrato (wingding 110 ?) che posso riempire con

rosso, se il prossimo time frame sta scendendo, o riempirlo di bianco se sta salendo.

Poi, quando la barra si chiude e inizia la barra successiva, voglio che il quadrato si sposti sotto la barra precedente, e un nuovo quadrato sotto la nuova barra...

ha senso?

Quindi come sarebbe la linea ObjectCreate()? Come posso posizionarla sul grafico dove voglio, o devo usare una finestra separata?

Grazie per il vostro aiuto.

 
mrchuckw:

Ok... credo. Non voglio che sia orientato alla data/ora... Non credo.

Ecco cosa voglio. Nella parte inferiore del grafico, sotto la barra corrente, voglio mettere un quadrato (wingding 110 ?) che posso riempire con

rosso, se il prossimo time frame sta scendendo, o riempire di bianco se sta salendo.

Poi, quando la barra si chiude e inizia la barra successiva, voglio che il quadrato si sposti sotto la barra precedente, e un nuovo quadrato sotto la nuova barra...

ha senso?

Quindi come sarebbe la linea ObjectCreate()? Come posso posizionarla sul grafico dove voglio, o devo usare una finestra separata?

Grazie per il tuo aiuto.

Ah OK, quindi vuoi un quadrato sotto ogni barra, bianco o rosso a seconda dell'indicatore... non usare gli oggetti, usa i buffer degli indicatori. ( https://docs.mql4.com/customind )

Crea 2 buffer indicatori, uno per i quadrati rossi e uno per i quadrati bianchi, imposta i buffer per avere valori vuoti ( SetIndexEmptyValue( int index, double value) ) per ottenere il quadrato sotto la barra usa il valore basso delle barre - 10 pips . . . questo è fondamentalmente quello che WHRoeder stava ottenendo.

 
Ma se lo imposto a 10 pip sotto il prezzo, non salterà? Forse dovrei metterlo in un windo separato. Voglio il quadrato nello stesso posto nel grafico, non importa cosa stiano facendo le barre.
 
mrchuckw:
Ma se lo imposto a 10 pip sotto il prezzo, non salta? Forse dovrei metterlo in una finestra separata.
Puoi metterlo in una finestra separata se vuoi. . . quello che ho detto era 10 pip sotto il minimo della barra . . non sotto il prezzo corrente. La maggior parte del codice che ti serve è comune, se lo fai in una finestra separata è facile cambiarlo in una posizione sotto la barra dopo . . .
 
OK... lasciatemi giocare con questo per un po'. Apprezzo tutto l'aiuto!
Motivazione: