Domande dai principianti MQL5 MT5 MetaTrader 5 - pagina 807

 
DCodec:

Onestamente, non capisco niente. Ho bisogno dei valori della linea superiore dell'indicatore su Close[2], Close[1] e basta.

Come disegnare questi valori da QUALSIASI indicatore per non "incasinare" il codice dell'indicatore.


Potete ottenere i valori di qualsiasi indicatore buffer su qualsiasi BAR, non su Close... Vedere l'aiuto diiCustom:

iCustom

Restituisce l'handle dell'indicatore personalizzato specificato.

Procedura:

  • In OnInit() crea un handle dell'indicatore
  • in OnTick() o OnTime() ottiene i dati dell'indicatore al numero di BAR specificato dal buffer INDICATOR richiesto.

 
Vladimir Karputov:

Potete ottenere i valori di qualsiasi indicatore buffer su qualsiasi BAR, non su Close... Vedere l'aiuto diiCustom:

iCustom

Restituisce l'handle dell'indicatore personalizzato specificato.

Procedura:

  • In OnInit() crea un handle dell'indicatore
  • in OnTick() o OnTime() ottiene i dati dell'indicatore al numero di BAR specificato dal buffer INDICATOR richiesto.

Sì, ho sbagliato. Ho bisogno dei valori dell'indicatore sulla prima e sulla seconda barra. Ma diciamo che le Bande di Bollinger hanno tre linee. Quale linea mi restituisce il valore? Mi scuso per le domande stupide, ma sono davvero confuso.
 
DCodec:
Sì, mi sono espresso male. Voglio i valori dell'indicatore sulla prima e sulla seconda barra. Ma diciamo che le Bande di Bollinger hanno tre linee. Quale linea mi sta restituendo? Mi scuso per le domande stupide, ma davvero STUPORE.

Solo un momento ...

Ecco la funzione per recuperare i valori da iBands:

//+------------------------------------------------------------------+
//| Get value of buffers for the iBands                              |
//|  the buffer numbers are the following:                           |
//|   0 - BASE_LINE, 1 - UPPER_BAND, 2 - LOWER_BAND                  |
//+------------------------------------------------------------------+
double iBandsGet(const int buffer,const int index)
  {
   double Bands[1];
//ArraySetAsSeries(Bands,true);
//--- reset error code 
   ResetLastError();
//--- fill a part of the iBands array with values from the indicator buffer that has 0 index 
   if(CopyBuffer(handle_iBands,buffer,index,1,Bands)<0)
     {
      //--- if the copying fails, tell the error code 
      PrintFormat("Failed to copy data from the iBands indicator, error code %d",GetLastError());
      //--- quit with zero result - it means that the indicator is considered as not calculated 
      return(0.0);
     }
   return(Bands[0]);
  }

La funzione è troncata - il suo scopo è di ottenere sempre UN SOLO valore dal buffer dell'indicatore "buffer" sul numero di barra "indice".

Tutte e tre le linee di iBands hanno le loro costanti:

//|   0 - BASE_LINE, 1 - UPPER_BAND, 2 - LOWER_BAND                  |
 
Vladimir Karputov:

Solo un momento ...

Ecco la funzione per recuperare i valori da iBands:

La funzione è troncata - il suo scopo è di ottenere sempre UN SOLO valore dal buffer dell'indicatore "buffer" sul numero di barra "indice".

Tutte e tre le linee iBands hanno le loro costanti:

Sì... sì. È solo che non capisco come applicare

//|   0 - BASE_LINE, 1 - UPPER_BAND, 2 - LOWER_BAND  

Probabilmente è dovuto alla mentalità ristretta. Sto ancora pensando come in MQL4.

 
DCodec:

Sì... sì. È così che non capisco come applicare

Probabilmente è dovuto alla mentalità ristretta. Sto ancora pensando in termini di MQL4.


Esempio di utilizzo di iBands da KodoBase:Bande di Bollinger RSI

 
DCodec:

...


Hai avuto fortuna? O creare un argomento con una descrizione passo per passo di come recuperare i dati dall'indicatore?

 
Vladimir Karputov:

Come va? O creare un argomento con una descrizione passo per passo di come recuperare i dati dall'indicatore?

Sei divertito. E mi rendo conto solo ora che

CopyBuffer

Questo è ciò di cui ho bisogno.

CopyBuffer(handle_iBands,buffer,index,1,Bands)

Grazie.

 

Ho un'altra domanda. Come posso disattivare una linea in un indicatore che non mi serve?

Diciamo di disabilitare UPPER_LINE in iEnvelopes.

 
DCodec:

Tu stai ridendo. E solo ora ho capito che non sono divertente.

questo è ciò di cui ho bisogno.

Grazie.


Ti stai immaginando le cose. Non stavo ridendo, stavo chiedendo seriamente. Per esempio, ho questo argomento:Simple Expert Advisor. Controllo delle dimensioni della barra. Comprare/Vendere.


DCodec:

Mi permetto un'altra domanda. Come faccio a disattivare la linea nell'indicatore che non mi serve?

Diciamo di disabilitare UPPER_LINE in iEnvelopes.


La domanda non è chiara. Descrivete più precisamente DOVE e COSA volete fare.

 
Vladimir Karputov:

L'hai immaginato. Non stavo ridendo, stavo chiedendo seriamente. Per esempio, ho questo argomento:Simple Expert Advisor. Controllo delle dimensioni della barra. Comprare/Vendere.



La domanda non è chiara. Descrivete più precisamente DOVE e COSA volete fare.

Quando un EA riceve l'handle di un indicatore in OnInit() ...

int OnInit()
  {
//--- Получить хэндл индикатора Envelopes_upper для отрисовки верхней линии
   EnvHandle_upper=iEnvelopes(NULL,0,Period_upper,0,MODE_SMA,PRICE_MEDIAN,Deviation_upper);

....terminal disegna entrambe le linee, io ho bisogno solo della linea superiore.

Come disabilitare il disegno di questa linea? Cioè cambiare il suo colore in CLR_NONE, o cambiare lo stile della linea in DRAW_DONE?