Toute question des nouveaux arrivants sur MQL4 et MQL5, aide et discussion sur les algorithmes et les codes. - page 1418

 
Valeriy Yastremskiy:

Je préfère les options booléennes

Je ne sais pas vraiment comment cela s'applique ici.

Pourriez-vous modifier mon code, si vous le voulez bien ?

      string symbol;
      long currChart=ChartFirst(); int i=0;
      while(currChart>=0)
        {
         if(ChartGetInteger(currChart,CHART_BRING_TO_TOP,0)==true) 
           { 
            if(ChartSymbol(currChart)!=symbol)
              {
               symbol=ChartSymbol(currChart); Print(symbol);
              }
           } 
         currChart=ChartNext(currChart);  i++;
        }
 
Pourquoi, Vitaly a écrit un bon code. Il a i++ au bon endroit. Comment ce code fonctionne-t-il ?
 
MakarFX:

Pouvez-vous me dire comment faire pour que Print(), imprime une fois lors d'un changement de valeur.

Quand quelle valeur est modifiée ?

 
MakarFX:

Je ne suis pas tout à fait sûr de la façon dont cela peut être appliqué ici.

Mon code peut-il être modifié, si cela ne vous dérange pas ?

string symbol, printsimbol="";
      long currChart=ChartFirst(); int i=0;
      while(currChart>=0)
        {
         if(ChartGetInteger(currChart,CHART_BRING_TO_TOP,0)==true) 
           { 
            if(ChartSymbol(currChart)!=symbol)
              {
               symbol=ChartSymbol(currChart);if(printsimbol!=symbol) Print(symbol);printsimbol=symbol;
              }
           } 
         currChart=ChartNext(currChart);  i++;
        }
 
MakarFX:

Je ne suis pas tout à fait sûr de la façon dont cela peut être appliqué ici.

Mon code peut-il être corrigé, si cela ne pose pas trop de problèmes ?

Vous ne précisez pas les détails de l'endroit et de la manière dont cette construction est appelée.

Dans ce cas, si vous avez trouvé le graphique nécessaire et que c'est le seul, alors faites une pause ; immédiatement, afin de ne pas forcer le terminal.

Vous trouvez le tableau, vous le mémorisez et vous n'appelez plus le constructeur. Il est probablement préférable de l'appeler sur un événement, bien que cela dépende de la tâche.

 
Aleksei Stepanenko:

quand quelle valeur change ?

Lorsque la fenêtre du graphique actif change, la fonction imprime le symbole du graphique actif.

Vitaly Muzichenko:

Vous ne précisez pas les détails de l'endroit et de la manière dont cette construction est appelée.

Dans ce cas, si vous avez trouvé le graphique nécessaire, et qu'il n'y a qu'un seul graphique, alors faites une pause ; afin de ne pas forcer le terminal.

Vous trouvez le tableau, vous le mémorisez et vous n'appelez plus le constructeur. Probablement la meilleure façon de l'appeler sur un événement, bien que cela dépende de la tâche.

Désolé, la fonction est appelée dans le...

//+------------------------------------------------------------------+
//| Timer function                                                   |
//+------------------------------------------------------------------+
void OnTimer()
  {
      string symbol01;
      long currChart=ChartFirst(); int i=0;
      while(currChart>=0)
        {
         if(ChartGetInteger(currChart,CHART_BRING_TO_TOP,0)==true) 
           { 
            symbol01=ChartSymbol(currChart);      Print(symbol01);
           } 
         currChart=ChartNext(currChart);  i++;
        }
//--- 
  }
Valeriy Yastremskiy:

Malheureusement, ça ne marche pas non plus. Imprime sans fin(

 
MakarFX:

Lorsque la fenêtre du graphique actif change, la fonction imprime le symbole du graphique actif.

Désolé, la fonction est appelée dans le...

Malheureusement, cela ne fonctionne pas non plus. Il imprime à l'infini(

Que pensez-vous de ça ? - seulement il donnera un signal une fois dans l'impression

//+------------------------------------------------------------------+
//|                                                         0001.mq5 |
//|                        Copyright 2021, MetaQuotes Software Corp. |
//|                                             https://www.mql5.com |
//+------------------------------------------------------------------+
#property copyright "Copyright 2021, MetaQuotes Software Corp."
#property link      "https://www.mql5.com"
#property version   "1.00"
int ticks_to_close=1; // количество тиков
//+------------------------------------------------------------------+
//| Expert initialization function                                   |
//+------------------------------------------------------------------+
int OnInit()
  {
//--- create timer
   if(!EventSetTimer(1))
      Alert("Error create timer!");
//---
   return(INIT_SUCCEEDED);
  }
//+------------------------------------------------------------------+
//| Expert deinitialization function                                 |
//+------------------------------------------------------------------+
void OnDeinit(const int reason)
  {
//---
  }
//+------------------------------------------------------------------+
//| Expert tick function                                             |
//+------------------------------------------------------------------+
void OnTick()
  {
//---
  }
//+------------------------------------------------------------------+
//| Timer function                                                   |
//+------------------------------------------------------------------+
void OnTimer()
  {
   string symbol01;
   long currChart=ChartFirst();
   int i=0;
   while(currChart>=0)
     {
      if(ChartGetInteger(currChart,CHART_BRING_TO_TOP,0)==true)
        {
         symbol01=ChartSymbol(currChart);
           {
            if(ticks_to_close>0)
              {
               ticks_to_close--;
               Print(symbol01);
              }
           }
        }
      currChart=ChartNext(currChart);
      i++;
     }
//---
  }
//+------------------------------------------------------------------+
 
SanAlex:

Que pensez-vous de ça ? - seulement il donnera un signal une fois dans l'impression

Faux. Il imprime une fois au démarrage. Ça ne fait rien quand on change le programme.
 
MakarFX:

Lorsque la fenêtre du graphique actif change, la fonction imprime le symbole du graphique actif.

Désolé, la fonction est appelée dans le...

Malheureusement, cela ne fonctionne pas non plus. Il imprime à l'infini(

Ou peut-être devriez-vous lire la documentation plus attentivement ?

CHART_BRING_TO_TOP

Afficher le graphique au dessus de tous les autres graphiques

bool w/o


Cela signifie que cette propriété est en écriture seule. Et vous essayez de le lire. .........

De plus, vous ne donnez pas une réponse complète à la question.

Il s'agit d'un script ou d'un indicateur.
 
MakarFX:

Lorsque la fenêtre du graphique actif change, la fonction imprime le symbole du graphique actif.

Désolé, la fonction est appelée dans le...

Malheureusement, cela ne fonctionne pas non plus. Il imprime sans fin(

Si je ne comprends pas ce qui se passe, j'imprime tout ce que j'ai, parfois ça aide. Et je ne comprends pas l'essence du voile. La condition est toujours vraie.

string symbol, printsimbol="";
      long currChart=ChartFirst(); int i=0;
      while(currChart>=0)
        {
         if(ChartGetInteger(currChart,CHART_BRING_TO_TOP,0)==true) 
           { 
            if(ChartSymbol(currChart)!=symbol)
              {
               symbol=ChartSymbol(currChart);if(printsimbol!=symbol) Print(symbol," ",ChartSymbol(currChart)," ",printsimbol,
" ",currChart," ",ChartFirst()," ",ChartNext(currChart)," ",ChartGetInteger(currChart,CHART_BRING_TO_TOP,0));
printsimbol=symbol;
              }
           } 
         currChart=ChartNext(currChart);  i++;
        }