Questions des débutants MQL5 MT5 MetaTrader 5 - page 807

 
DCodec:

Honnêtement, je ne comprends rien. J'ai besoin des valeurs de la ligne supérieure de l'indicateur sur Close[2], Close[1] et c'est tout.

Comment tirer ces valeurs de N'IMPORTE QUEL indicateur afin de ne pas "bousiller" le code de l'indicateur.


Vous pouvez obtenir les valeurs de n'importe quel indicateur tampon sur n'importe quelle barre, pas sur la clôture... Voir l'aideiCustom:

iCustom

Renvoie le handle de l'indicateur personnalisé spécifié.

Procédure :

  • Dans OnInit() créez un handle d'indicateur
  • dans OnTick() ou OnTime() obtenir les données de l'indicateur au numéro de BAR spécifié à partir du tampon INDICATOR requis.

 
Vladimir Karputov:

Vous pouvez obtenir les valeurs de n'importe quel indicateur tampon sur n'importe quelle barre, pas sur la clôture... Voir l'aideiCustom:

iCustom

Renvoie le handle de l'indicateur personnalisé spécifié.

Procédure :

  • Dans OnInit() créez un handle d'indicateur
  • dans OnTick() ou OnTime() obtenir les données de l'indicateur au numéro de BAR spécifié à partir du tampon INDICATOR requis.

Oui, je me suis trompé. J'ai besoin des valeurs de l'indicateur sur la première et la deuxième barre. Mais disons que les bandes de Bollinger ont trois lignes. Quelle ligne me renvoie la valeur ? Je m'excuse pour ces questions stupides, mais je suis vraiment perdue.
 
DCodec:
Oui, je me suis mal exprimé. Je veux des valeurs d'indicateur sur la première et la deuxième barre. Mais disons que les bandes de Bollinger ont trois lignes. Quelle ligne me renvoie-t-il ? Je m'excuse pour les questions stupides, mais vraiment STUPOR.

Un instant...

Voici la fonction permettant de récupérer les valeurs des 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 fonction est tronquée - son but est d'obtenir toujours UNE SEULE valeur du tampon de l'indicateur "buffer" sur le numéro de barre "index".

Les trois lignes d'iBands ont leurs propres constantes :

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

Un instant...

Voici la fonction permettant de récupérer les valeurs des iBands :

La fonction est tronquée - son but est d'obtenir toujours UNE SEULE valeur du tampon de l'indicateur "buffer" sur le numéro de barre "index".

Les trois lignes d'iBands ont leurs propres constantes :

Oui... oui. C'est juste que je ne comprends pas comment appliquer

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

C'est probablement dû à l'étroitesse d'esprit. Je pense toujours comme dans MQL4.

 
DCodec:

Oui... oui. C'est ainsi que je ne comprends pas comment appliquer

C'est probablement dû à l'étroitesse d'esprit. Je pense toujours en termes de MQL4.


Exemple d'utilisation des iBands de KodoBase :Bandes de Bollinger RSI

 
DCodec:

...


Une chance ? Ou créer un sujet avec une description étape par étape de la façon de récupérer les données de l'indicateur ?

 
Vladimir Karputov:

Comment ça se passe ? Ou créer un sujet avec une description étape par étape de la façon de récupérer les données de l'indicateur ?

Vous êtes amusé. Je viens juste de réaliser que je suis dans...

CopyBuffer

C'est ce dont j'ai besoin.

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

Merci.

 

J'ai une autre question. Comment désactiver une ligne dans un indicateur dont je n'ai pas besoin ?

Disons que pour désactiver UPPER_LINE dans iEnvelopes.

 
DCodec:

Vous riez. Et je viens seulement de réaliser que je ne suis pas drôle.

c'est ce dont j'ai besoin.

Merci.


Vous imaginez des choses. Je ne riais pas, je demandais sérieusement. Par exemple, j'ai ce sujet :Simple Expert Advisor. Vérification de la taille des barres. Acheter/vendre.


DCodec:

Je vais me permettre une dernière question. Comment désactiver la ligne de l'indicateur dont je n'ai pas besoin ?

Disons que pour désactiver UPPER_LINE dans iEnvelopes.


La question n'est pas claire. Décrivez plus précisément OÙ et QUOI vous voulez faire.

 
Vladimir Karputov:

Vous l'avez imaginé. Je ne riais pas, je demandais sérieusement. Par exemple, j'ai ce sujet :Simple Expert Advisor. Vérification de la taille des barres. Achat/Vente.



La question n'est pas claire. Décrivez plus précisément OÙ et QUOI vous voulez faire.

Quand un EA reçoit un handle d'indicateur dans OnInit() ...

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

....terminal dessine les deux lignes, je n'ai besoin que de la ligne supérieure.

Comment désactiver le dessin de cette ligne ? Par exemple, changer sa couleur en CLR_NONE, ou changer le style de ligne en DRAW_DONE ?

Raison: