Cualquier pregunta de los recién llegados sobre MQL4 y MQL5, ayuda y discusión sobre algoritmos y códigos - página 1418

 
Valeriy Yastremskiy:

Me gustan más las opciones booleanas

No estoy muy seguro de cómo se aplica eso aquí.

¿Podría retocar mi código, si no le importa?

      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++;
        }
 
Por qué, Vitaly ha escrito un buen código. Tiene i++ en el lugar correcto. ¿Cómo funciona este código?
 
MakarFX:

Me pueden decir cómo hacer que Print(), imprima una vez al cambiar el valor

¿Cuándo se modifica qué valor?

 
MakarFX:

No estoy muy seguro de cómo se puede aplicar esto aquí

¿Se puede modificar mi código, si no le importa?

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:

No estoy muy seguro de cómo se puede aplicar esto aquí

¿Se puede corregir mi código, si no es mucho problema?

No especifica los detalles de dónde y cómo se llama a esta construcción.

En este caso, si has encontrado el gráfico necesario y es el único, haz una pausa; inmediatamente, para no forzar el terminal.

Encuentras el gráfico, lo memorizas y no vuelves a llamar a la construcción. Probablemente lo mejor sea llamarlo en un evento, aunque depende de la tarea.

 
Aleksei Stepanenko:

¿cuál es el valor que cambia?

Cuando la ventana del gráfico activo cambia, la función imprime el símbolo del gráfico activo.

Vitaly Muzichenko:

No se especifican los detalles de dónde y cómo se llama a esta construcción.

En este caso, si ha encontrado el gráfico necesario, y sólo hay un gráfico, entonces haga una pausa; para no forzar el terminal.

Encuentras el gráfico, lo memorizas y no vuelves a llamar a la construcción. Probablemente la mejor manera de llamarlo en un evento, aunque depende de la tarea.

Lo siento, la función se llama en el...

//+------------------------------------------------------------------+
//| 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:

Por desgracia, tampoco funciona. Imprime sin parar(

 
MakarFX:

Cuando la ventana del gráfico activo cambia, la función imprime el símbolo del gráfico activo.

Lo siento, la función se llama en el...

Desgraciadamente, tampoco funciona. Imprime infinitamente(

¿Qué te parece esto? - sólo dará una señal una vez en la impresión

//+------------------------------------------------------------------+
//|                                                         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:

¿Qué te parece esto? - sólo dará una señal una vez en la impresión

No es así. Se imprime una vez al inicio. No hace nada al cambiar el horario.
 
MakarFX:

Cuando la ventana del gráfico activo cambia, la función imprime el símbolo del gráfico activo.

Lo siento, la función se llama en el...

Desgraciadamente, tampoco funciona. Imprime infinitamente(

¿O tal vez sea mejor leer la documentación con más atención?

CHART_BRINGING_TO_TOP

Mostrar el gráfico encima de todos los demás gráficos

bool sin


Esto significa que esta propiedad es de sólo escritura. Y tú estás tratando de leerlo.........

Además, no estás dando una respuesta completa a la pregunta

Es un guión o un indicador.
 
MakarFX:

Cuando la ventana del gráfico activo cambia, la función imprime el símbolo del gráfico activo.

Lo siento, la función se llama en el...

Desgraciadamente, tampoco funciona. Imprime sin parar(

Si no entiendo lo que pasa, imprimo todo lo que tengo, a veces ayuda. Y no entiendo la esencia del velo. La condición es siempre verdadera.

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++;
        }
Razón de la queja: