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

 

Ajouté au code, n'imprime pas la deuxième copie et les copies suivantes des indicateurs

int OnCalculate(const int rates_total,
                const int prev_calculated,
                const datetime &time[],
                const double &open[],
                const double &high[],
                const double &low[],
                const double &close[],
                const long &tick_volume[],
                const long &volume[],
                const int &spread[])
{
  OnInit();
   for(int i = prev_calculated == 0 ? 0 : prev_calculated - 1; i < rates_total; i++)
   {
      Label1Buffer[i] = close[i];
   }
   return(rates_total);
}

---

Ce qui a été fait :

J'ai installé 3 copies de l'indicateur, j'ai compilé le fichier et j'ai obtenu l'impression de la première copie.

2021.09.12 18:30:40.975 Create_button (BTCUSD,M30)      INIT SUCCEEDED: 1
 
Vitaly Muzichenko #:

Mais si vous modifiez les paramètres d'entrée - alors cela fonctionne.

j'ai vu de tels messages sur le forum, d'après ce que j'ai compris, le terminal ne fait pas tourner deux copies de l'indicateur avec les mêmes paramètres sur le même graphique.

 
Igor Makanu #:

J'ai vu de tels messages sur le forum, d'après ce que j'ai compris, le terminal ne lance pas deux copies de l'indicateur avec les mêmes paramètres sur le même graphique.

Comment puis-je le faire fonctionner sans modifier les paramètres d'entrée ?

Vous devez installer plusieurs copies, c'est une telle tâche, malheureusement

 
Vitaly Muzichenko #:

Comment puis-je le faire fonctionner sans changer les paramètres d'entrée, peut-être ajouter quelque chose à partir de la définition ?

Nécessité de définir des copies multiples, c'est une telle tâche, malheureusement.

Entrez un faux paramètre. Et lui attribuer 1, 2, 3 ...

 
Vitaly Muzichenko #:

Comment puis-je le faire fonctionner sans changer les paramètres d'entrée, peut-être ajouter quelque chose à partir de la définition ?

Il est nécessaire de définir des copies multiples, c'est un tel défi, malheureusement.

J'ai vu et testé comment créer deux sous-fenêtres en modifiant un modèle - une sous-fenêtre en haut du tableau, la seconde au sous-sol.

essayez d'enregistrer un modèle avec votre indicateur, et si cela fonctionne aussi avec les modèles, ajoutez une copie de l'indicateur au texte du modèle.

 
Igor Makanu #:

j'ai vu et testé comment créer deux sous-fenêtres en utilisant l'édition de modèles - une sous-fenêtre en haut du graphique, la seconde au sous-sol

essayez d'enregistrer un modèle avec votre indicateur et si cela fonctionne, utilisez aussi cette astuce avec les modèles - ajoutez une copie de l'indicateur au texte du modèle.

Le problème est qu'ils doivent être lancés en différentes quantités de manière aléatoire, ce qui ne fonctionne pas de manière fixe.

 
Igor Makanu #:

j'ai vu et testé comment créer deux sous-fenêtres en utilisant l'édition de modèles - une sous-fenêtre en haut du graphique, la seconde au sous-sol

essayez d'enregistrer un modèle avec votre indicateur, et si cela fonctionne, la même astuce avec les modèles - ajoutez une copie de l'indicateur dans le texte du modèle.

J'ai téléchargé 3 copies, OnInit a fonctionné une fois.

Modification de la valeur d'entrée - le deuxième indicateur s'est déclenché.

J'ai changé la couleur dans le troisième - cela a fonctionné aussi bien.


Mais comment l'automatiser ?

 

alors je ne sais pas, je ne vois que la solution de @Vladimir Karputov comme acceptable

faire un paramètre d'entrée long et l'appeler aléatoirement, et générer aléatoirement un grand, c'est-à-dire long

 
Igor Makanu #:

alors je ne sais pas, je ne vois que la solution de @Vladimir Karputov comme acceptable

faire un paramètre d'entrée long et l'appeler aléatoirement, et générer aléatoirement un grand, c'est-à-dire long

Je l'ai imaginé comme ça, mais comment le mettre en œuvre ?

S'il vous plaît, montrez-moi le code !

 
Vitaly Muzichenko #:

C'est à peu près ce que j'ai imaginé, mais comment le mettre en œuvre ?

S'il vous plaît, montrez-moi le code !

pas du tout

Si vous l'appelez par programme, vous pouvez générer un paramètre de façon aléatoire.

Et si vous devez l'exécuter manuellement, vous devez toujours modifier le paramètre d'entrée.


essayez de voir ce qu'il y a dans les macrosubstitutions prédéfinies, il y avait __COUNT___ et maintenant il y a quelque chose avec random, je n'ai pas vérifié comment __COUNT___ fonctionne - il s'avère statique, il a peu d'effet, peut-être que vous pouvez utiliser random pour votre tâche

Raison: