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

 
Sprut 185:

Merci de votre participation.

Malheureusement, la fonction ObjectSet*** n'était pas adaptée à ma tâche.

J'ai résolu le problème moi-même en utilisant la fonction OnDeinit().

Maintenant, tout fonctionne comme il se doit.

Mais dans votre question il y a de tels mots

Sprut 185:

Aidez-moi à résoudre un problème !

J'apprends tout juste à écrire du code et, à cet égard, je vous demande d'être indulgent envers mon illettrisme.

Je veux vous aider à comprendre la fonctionOnChartEvent qui, lorsque vous changez d'horizon temporel ou modifiez les paramètres dans le menu de l'indicateur, met à jour les objets graphiques dans le graphique.

Je crois savoir qu'il faut d'abord supprimer les objets graphiques, puis les recréer. Maissi les objets ont été supprimés, il n'y a pas d'accès à ses propriétés et alors comment recréer ces objets........ Ou peut-être que je ne le comprends pas ? Ou peut-être existe-t-il un autre moyen de mettre à jour les objets graphiques sur le graphique?

Veuillez rédiger un exemple accompagné de commentaires sur la manière de procéder.

Et pour ne pas supprimer, il suffit de changer la propriété de l'objet requis par l'une des fonctions ObjectSet***.

Quant à la suppression de tous les objets........., il faut être très prudent lorsqu'on supprime tous les objets sans discernement... Parmi les objets du graphique, il peut y avoir des objets créés manuellement ou par un autre Expert Advisor/indicateur. Si vous aimez supprimer des objets, vous devriez prêter attention à la suppression par préfixe. C'est vrai, vous devez créer avec le préfixe. Ce n'est pas difficile.

 
Quel est le résultat de

iSpread ?


Je constate qu'elle est à peu près similaire à la valeur de l'écart si vous recherchez les barres dans Symboles/Bars dans le terminal.

Bien entendu, ces valeurs ne correspondent pas aux valeurs réelles données par SYMBOL_SPREAD.

Pourquoi une telle différence ? Et qu'est-ce qu'un tel écart irréel montré à l'aide d'iSpread?

 
Aleksei Skrypnev:
Quel résultat donne la fonction

iSpread ?


Je constate qu'elle est à peu près similaire à la valeur de l'écart si vous recherchez les barres dans Symboles/Bars dans le terminal.

Bien entendu, ces valeurs ne correspondent pas aux valeurs réelles données par SYMBOL_SPREAD.

Pourquoi une telle différence ? Et qu'est-ce qu'un tel écart irréel montré aveciSpread?

Écart minimum par barre.

J'ai ajouté un tampon pour la vérification - il prend les données du tableau de l'indicateur spread[] et affiche un commentaire pour la barre actuelle - le résultat de iSpread


Comment le faire ici :Contrôle de la propagation

Spread Control
Spread Control
  • www.mql5.com
Просмотр спреда
Dossiers :
 

Salutations !

Pouvez-vous me dire pourquoi la variable "ATR14" ne change pas et comment je peux la voir changer ?

void OnTick()
{

double ATR14=iATR(NULL,PERIOD_CURRENT,14);

Comment(
 
      "ATR14==: ",ATR14,"\n");
}
 
Alexey Belyakov:

Salutations !

Pouvez-vous me dire pourquoi la variable "ATR14" ne change pas ? Comment puis-je la voir changer ?

Parce que dans MQL5 le handle de l'indicateur (d'ailleurs, il a le type int) est créé UNE fois et il est fait dans OnInit.

Et pour la réception des données de l'indicateur, le CopyBuffer est utilisé.

 
Vladimir Karputov:

Parce que dans MQL5, le handle de l'indicateur (et il est de type int, soit dit en passant) est créé UNE fois et il est fait dans OnInit.

Et pour la réception des données de l'indicateur, le CopyBuffer est utilisé.

Ok, supposons.

double  ATR14m[];   

int ATR14;

int OnInit()
  {
ATR14=iATR(NULL,PERIOD_CURRENT,14);
  return(0);   
  }
  
  
void OnDeinit(const int reason)
  {
//---  
  }


void OnTick()
{
CopyBuffer(ATR14,0,0,3,ATR14m);



Comment(

      "ATR14==: ",ATR14,"\n");

}



Rien n'a changé.

 
Alexey Belyakov:

Salutations !

Pouvez-vous me dire pourquoi la variable "ATR14" ne change pas et comment je peux la voir changer ?

voici un exempleһttp://www.mql5.com/ru/docs/indicators/iatr

Документация по MQL5: Технические индикаторы / iATR
Документация по MQL5: Технические индикаторы / iATR
  • www.mql5.com
iATR - Технические индикаторы - Справочник MQL5 - Справочник по языку алгоритмического/автоматического трейдинга для MetaTrader 5
 
Alexey Belyakov:

Eh bien, disons simplement

Rien n'a changé.

Vous l'avez presque. Je recommande d'appeler le tableau "array_atr" au lieu de "ATR14m". Vous verrez alors plus rapidement votre erreur dans l'appel"Commentaire".

 
Vladimir Karputov:

Tu as presque tout compris. Je recommande d'appeler le tableau "array_atr" au lieu de "ATR14m". Vous verrez alors votre erreur dans l'appel"Commentaire" plus tôt.

double  array_atr[];   

int ATR14;

int OnInit()
  {
ATR14=iATR(NULL,PERIOD_CURRENT,14);
  return(0);   
  }
   
void OnDeinit(const int reason)
  {
//---  
  }

void OnTick()
{


CopyBuffer(ATR14,0,0,3,array_atr);

Comment(

      "ATR14==: ",array_atr,"\n");

}

Je l'ai modifié et j'obtiens l'erreur suivante : " 'array_atr' - invalid array access "


 
Vladimir Karputov:

Vous avez presque tout compris. Je recommande d'appeler le tableau "array_atr" au lieu de "ATR14m". Vous verrez alors votre erreur en appelant"Commentaire" plus tôt.

Pensez-vous que le fait d'appeler le pot d'un enfant un vase de nuit changera quelque chose ?

Il y a un tel malentendu que je n'ose même pas essayer de suggérer quelque chose... Il faut lire la documentation 50 fois pour la comprendre...

Raison: