Quaisquer perguntas de recém-chegados sobre MQL4 e MQL5, ajuda e discussão sobre algoritmos e códigos - página 1418

 
Valeriy Yastremskiy:

Eu gosto mais das opções booleanas

Não tenho bem a certeza de como isso se aplica aqui.

Posso ter meu código ajustado, se não for muito incômodo?

      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 que, Vitaly escreveu um bom código. Ele tem o i++ no lugar certo. Como funciona este código?
 
MakarFX:

Você pode me dizer como fazer Print(), imprimir uma vez na mudança de valor

Quando o valor é alterado?

 
MakarFX:

Não sei bem como isto pode ser aplicado aqui.

Meu código pode ser ajustado, se você não se 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:

Não sei bem como isto pode ser aplicado aqui.

Meu código pode ser corrigido, se não for muito incômodo?

Você não especifica os detalhes de onde e como esta construção é chamada.

Neste caso, se você encontrou a carta necessária e ela é a única, então faça uma pausa; imediatamente, para que você não force o terminal.

Você encontra a tabela, memoriza-a e não volte a chamar a construção. Provavelmente o melhor é convocá-lo para um evento, embora isso dependa da tarefa.

 
Aleksei Stepanenko:

quando o valor muda?

Quando a janela do gráfico ativo muda, a função imprime o símbolo do gráfico ativo.

Vitaly Muzichenko:

Você não especifica os detalhes de onde e como esta construção é chamada.

Neste caso, se você tiver encontrado a carta necessária, e houver apenas uma carta, então faça uma pausa; para que você não force o terminal.

Você encontra a tabela, memoriza-a e não volte a chamar a construção. Provavelmente a melhor maneira de chamá-lo em um evento, embora dependa da tarefa.

Desculpe, a função é chamada no...

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

Infelizmente, também não funciona. Imprime sem parar(

 
MakarFX:

Quando a janela do gráfico ativo muda, a função imprime o símbolo do gráfico ativo.

Desculpe, a função é chamada no...

Infelizmente, também não funciona. Imprime infinitamente(

Que tal isso? - somente dará um sinal uma vez na impressão

//+------------------------------------------------------------------+
//|                                                         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 tal isso? - somente dará um sinal uma vez na impressão

Errado. Ela é impressa uma vez no início. Não faz nada ao alterar o cronograma.
 
MakarFX:

Quando a janela do gráfico ativo muda, a função imprime o símbolo do gráfico ativo.

Desculpe, a função é chamada no...

Infelizmente, também não funciona. Imprime infinitamente(

Ou talvez seja melhor você ler a documentação com mais atenção?

TABELA_BRING_TO_TOP

Mostrar gráfico no topo de todos os outros gráficos

bool c/o


Isto significa que esta propriedade é somente escrita. E você está tentando lê-lo.........

Além disso, você não está dando uma resposta completa à pergunta

É um roteiro ou um indicador.
 
MakarFX:

Quando a janela do gráfico ativo muda, a função imprime o símbolo do gráfico ativo.

Desculpe, a função é chamada no...

Infelizmente, também não funciona. Ela imprime sem parar(

Se eu não entendo o que está acontecendo, eu imprimo tudo o que tenho, às vezes isso ajuda. E eu não entendo a essência do véu. A condição é sempre verdadeira.

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ão: