Erreurs, bugs, questions - page 1051

 
Comment puis-je obtenir par programme la couleur de la ligne que l'utilisateur a définie dans la boîte de dialogue des propriétés d'un indicateur ?
 
marketeer:
Comment puis-je obtenir par programme la couleur de la ligne que l'utilisateur a définie dans le dialogue des propriétés d'un indicateur ?

Je ne me souviens pas d'une telle caractéristique.

Pourquoi ? Peut-être que si vous changez la question, il y aura une solution.

Vous pouvez modifier l'ensemble de la palette de couleurs en un seul clic. Il faut entrer la couleur dans les paramètres et laisser l'utilisateur la modifier dans les paramètres.

 
marketeer:
Comment puis-je obtenir par programme la couleur de la ligne que l'utilisateur a définie dans le dialogue des propriétés d'un indicateur ?

COULEUR_LIGNE

 

Une erreur difficile à détecter

int replace( int& a, const int b ) {
        int prev = a;
        a = b;
        return ( prev );
}

class A { public:
        A() : value( 5 ) {}
        virtual int      get() const     { return ( value ); }
        virtual int      set( int _New ) {return (replace(this.value, _New));}
        virtual void     print();
        int    value;
};

void A::print() {
        Print( "value1=" + get()   );
        Print( "value2=" + set( 8 ));
}

void OnStart() {
        A a;
        a.print(); 
}

Résultat : valeur1=5, valeur2=8, et devrait être

valeur1=5, valeur2=5

Si je supprime ce. ou que je supprime le préfixe virtual de A::set(...) ou que je supprime la fonction replace en déplaçant le code dans A::set(...)

//убрать this.
virtual int   set( int _New ) { return ( replace( value, _New ) ); }      

//или убрать у set virtual
      int   set( int _New ) { return ( replace( this.value, _New ) ); }

//или убрать функцию replace, путем переноса кода в A::set(...)

virtual int set(int _New) {int prev=this.value; this.value=_New; return (prev);}

tout est OK

 
A100:

Si vous supprimez ce. ou supprimez le préfixe virtuel de A::set(...) ou supprimez la fonction replace, en déplaçant le code vers A::set(...),

+ si vous l'exécutez en débogage, tout va bien.
en compilation normale - bug
 
Urain:

Je ne me souviens pas d'une telle fonctionnalité.

Pourquoi ? Peut-être que si vous changez la question, il y aura une solution.

ZS J'ai réussi à changer toute la palette de couleurs en un clic. Eh bien, entrez une couleur dans les paramètres, et laissez l'utilisateur la changer dans les paramètres.

C'est comme ça que ça se passe maintenant. C'est un non-sens, car les couleurs sont dupliquées dans les paramètres et dans l'onglet des couleurs en surbrillance.

Le besoin est simple : vous devez placer des étiquettes sur le graphique qui correspondent aux couleurs des lignes sélectionnées par les utilisateurs.

D'après ce que je comprends, Lizar a tort, car PLOT_LINE_COLOR, selon la documentation, définit l'index du tampon avec les numéros de coloration (lorsqu'une ligne est dessinée alternativement avec différentes couleurs). Ma question n'est pas résolue avec cette constante.

 
marketeer:

...

D'après ce que je comprends, Lizar a tort, car PLOT_LINE_COLOR, d'après la documentation, définit l'index du tampon avec les numéros de coloration (lorsqu'une ligne est dessinée dans différentes couleurs en alternance). Ma question n'est pas résolue avec cette constante.

Essayez comme ça :

color line_color=PlotIndexGetInteger(0,PLOT_LINE_COLOR);
 
marketeer:

C'est ainsi que les choses se passent maintenant. C'est un non-sens, car les couleurs sont dupliquées dans les paramètres et dans l'onglet des couleurs en surbrillance.

Le besoin est simple : vous devez placer des marqueurs sur le graphique qui correspondent aux couleurs des lignes sélectionnées par les utilisateurs.

D'après ce queje comprends, Lizar a tort, car PLOT_LINE_COLOR, selon la documentation, définit l'index du tampon avec les numéros de coloration (lorsqu'une ligne est dessinée alternativement avec différentes couleurs). Ma question n'est pas résolue avec cette constante.

Vous pouvez. J'ai coordonné les couleurs des tampons de deux indicateurs interdépendants par le biais d'événements :

   if((id==MYEVENT_PLOT_FILE+CHARTEVENT_CUSTOM) && (sparam==FName)) 
   {
      if(lparam!=0) PlotIndexSetInteger(2,PLOT_LINE_COLOR,(int)lparam);
      FileRedraw();
      ChartRedraw(0);
   } 

J'appelle cet événement (à partir d'un autre indicateur) comme suit :

      EventChartCustom(ChartID(),MYEVENT_PLOT_FILE,(long) PlotIndexGetInteger(0,PLOT_LINE_COLOR),0,FName);
Tout fonctionne.
 
MetaDriver:

C'est faux, c'est vrai.

Merci, je vais essayer. Mais quand même, y a-t-il un endroit dans la documentation où l'on peut lire cela ? Je veux dire qu'il devrait être écrit quePLOT_LINE_COLOR permet de définir et de lire la couleur d'un tampon ordinaire, et non d'un tampon "multicolore".
 

Cette énumération ENUM_PLOT_PROPERTY_INTEGER pour PlotIndexSetInteger() et PlotIndexGetInteger()

peut être attribué, peut être lu

Документация по MQL5: Стандартные константы, перечисления и структуры / Константы индикаторов / Стили рисования
Документация по MQL5: Стандартные константы, перечисления и структуры / Константы индикаторов / Стили рисования
  • www.mql5.com
Стандартные константы, перечисления и структуры / Константы индикаторов / Стили рисования - Документация по MQL5