Aggiungere colore a un indicatore - pagina 2

 

Non ho ancora capito i buffer degli indicatori,

ma il seguente codice fa quello che voglio, visualizzare il colore Heiken Ashi della barra corrente e di quella passata.

Quello che non fa è metterlo in una finestra separata e visualizzarlo SOLO sotto la barra corrente.

È possibile? O devo ancora capire il buffer dell'indicatore?

Hai a che fare con un newbie molto verde... grazie per la pazienza.

int start()

{

ObjectsDeleteAll();

// cancella il grafico prima di disegnare

// 5 min di corrente

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

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


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

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

// 5 min dopo

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

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

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

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


ObjectCreate("square1",OBJ_RECTANGLE, 0, TimeCurrent(), Ask-0.001, 0, Bid-0.001);

if(Down.5.0 == 1) ObjectSet("square1",OBJPROP_COLOR,Red);


ObjectCreate("square1",OBJ_RECTANGLE, 0, TimeCurrent(), Ask-0.001, 0, Bid-0.001);

if(Down.5.0 == 0) ObjectSet("square1",OBJPROP_COLOR,White);


ObjectCreate("square2",OBJ_RECTANGLE, 0, TimeCurrent(), Ask-0.0015, 0, Bid-0.0015);

if(Down.5.1 == 1) ObjectSet("square2",OBJPROP_COLOR,Red);


ObjectCreate("square2",OBJ_RECTANGLE, 0, TimeCurrent(), Ask-0.0015, 0, Bid-0.0015);

if(Down.5.1 == 0) ObjectSet("square2",OBJPROP_COLOR,White);


return(0);

}

 

Si prega di utilizzare questo per postare il codice . . rende più facile la lettura.

 
mrchuckw:

Non ho ancora capito i buffer degli indicatori,

ma il seguente codice fa quello che voglio, visualizzare il colore Heiken Ashi della barra corrente e di quella passata.

Quello che non fa è metterlo in una finestra separata e visualizzarlo SOLO sotto la barra corrente.

È possibile? O devo ancora capire il buffer dell'indicatore?

Penso che avresti bisogno di disegnare un indicatore sulla finestra separata per ottenere la finestra in primo luogo in modo da potervi aggiungere gli oggetti.
 

qualcosa del genere

double adUpBuffer[],
       adDnBuffer[];
//---- indicator colors
color  cDirection[2]={LimeGreen,FireBrick};
string sDirection[2]={"up", "down"};
int    iSquare=110;
double dGap=10*Point
//+------------------------------------------------------------------+
//   Custom indicator initialization function                        |
//+------------------------------------------------------------------+
int init()
  {
//---- drawing settings
   IndicatorBuffers(2);
   for(int i=0;i<2;i++){
   SetIndexStyle(i,DRAW_ARROW,clrDirection[i]);
   SetIndexArrow(i,iSquare);
   SetIndexDrawBegin(i,12);
   SetIndexLabel(i,sDirection[i]);}
//---- 2 indicator buffers mapping
   SetIndexBuffer(0,adUpBuffer);
   SetIndexBuffer(1,adDnBuffer);
//---- initialization done
   return(0);
  }


      if(Up.5.0)
           adUpBuffer[i]=Low[i]-dGap;
      else adDnBuffer[i]=NULL;
      if(Dn.5.0)
           adDnBuffer[i]=High[i]+dGap;}
      else adDnBuffer[i]=NULL;} 
 

Non sono bravo con gli indicatori . . . dai un'occhiata a questo per vedere se ti dà quello che ti serve . . .

File:
ashi1.mq4  3 kb
 

Ok... ci sto lavorando... ma voi date per scontato che io sappia MOLTO di più di quello che so.

In allegato c'è tutto il mio programma indicatore finora. Come potrei inserirvi il tuo codice? O devo creare un nuovo programma?

Ho provato a inserirlo al meglio, ma non riesco a compilare. Non gli piace il doppio dGap=10*Point anche dopo aver messo un ; dopo di esso.

E c'era una tonnellata di altri errori di compilazione. Immagino di essere abbastanza ottuso da non sapere cosa fare ora.

File:
objects2.mq4  3 kb
 
mrchuckw:

Ok... ci sto lavorando... ma voi date per scontato che io sappia MOLTO di più di quello che so.

In allegato c'è tutto il mio programma indicatore finora. Come potrei inserirvi il tuo codice? O devo creare un nuovo programma?

Ho provato a inserirlo al meglio, ma non riesco a compilare. Non gli piace il doppio dGap=10*Point anche dopo aver messo un ; dopo di esso.

E c'era una tonnellata di altri errori di compilazione. Immagino di essere abbastanza ottuso da non sapere cosa fare ora.

Basta scaricare il mio codice, copiarlo nella struttura della directory di MT4 in Indicators. fermare e riavviare MT4 poi aggiungere l'indicatore a un grafico . . se si utilizzano buffer di indicatori non si usano oggetti.
 

dove posso scaricare il tuo codice?

vedi quanto sono ottuso?

 
mrchuckw:

dove posso scaricare il tuo codice?

vedi quanto sono ottuso?

È allegato al mio post, un paio di post sopra... ashi1.mq4
 

questo è quasi perfetto. Ci ho giocato e mi sono divertito.

Penso che potrei averlo ucciso, ma ora ho messo i quadrati in una finestra separata.

Quella parte funziona perfettamente. Ora... Non riesco a capire come avere tutti i quadrati in una linea perfetta.

Perché voglio mettere un'altra linea sotto quella. Penso di poter capire come farlo... almeno mi divertirò a provarci.

la nuova linea sarà un arco di tempo più grande. E la terza linea sarebbe ancora un altro time frame più grande.

Ecco come appare il tuo ea dopo che ci ho giocato. Puoi dirmi come mettere il quadrato in una linea retta. ?

Grazie

ps... Ci sto giocando da un po' e non riesco a capire come ottenere una seconda e una terza linea e renderle dritte.

Se poteste aiutarmi in questo, ve ne sarei grato. Il 2° file è il mio tentativo per la seconda linea.

File:
ashi1_1.mq4  3 kb
ashi1-a.mq4  3 kb
Motivazione: