Любые вопросы новичков по MQL4 и MQL5, помощь и обсуждение по алгоритмам и кодам - страница 1418

 
Valeriy Yastremskiy:

Мне булевы варианты больше нравятся

Я не совсем понял как это можно здесь применить

Можно мой код подправить, если не сложно?

      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++;
        }
 
А что, Виталий хороший код написал. У него i++ в нужном месте. Как работает этот код?
 
MakarFX:

Подскажите, как заставить Print(), печатать один раз при смене значения

при смене какого значения?

 
MakarFX:

Я не совсем понял как это можно здесь применить

Можно мой код подправить, если не сложно?

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:

Я не совсем понял как это можно здесь применить

Можно мой код подправить, если не сложно?

Вы не указываете детали, где и как вызывается данная конструкция.

При этом, если нашли нужный чарт, а он один, то делайте сразу break;, чтобы не насиловать терминал.

Нашли чарт, запомнили его и больше конструкцию не вызывать. Вызывать наверное оптимально по событию, хотя зависит от задачи.

 
Aleksei Stepanenko:

при смене какого значения?

Когда меняется активное окно графика, функция принтует символ активного графика.

Vitaly Muzichenko:

Вы не указываете детали, где и как вызывается данная конструкция.

При этом, если нашли нужный чарт, а он один, то делайте сразу break;, чтобы не насиловать терминал.

Нашли чарт, запомнили его и больше конструкцию не вызывать. Вызывать наверное оптимально по событию, хотя зависит от задачи.

Простите, функция вызывается в...

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

К сожалению тоже не работает. Принтует бесконечно(

 
MakarFX:

Когда меняется активное окно графика, функция принтует символ активного графика.

Простите, функция вызывается в...

К сожалению тоже не работает. Принтует бесконечно(

а вот так не пойдёт? - только он один раз  в принт даст сигнал

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

а вот так не пойдёт? - только он один раз  в принт даст сигнал

Не то. Один раз печатает при запуске. При смене графика ничего не делает.
 
MakarFX:

Когда меняется активное окно графика, функция принтует символ активного графика.

Простите, функция вызывается в...

К сожалению тоже не работает. Принтует бесконечно(

А может лучше почитать документацию повнимательней?

CHART_BRING_TO_TOP

Показ графика поверх всех других

bool   w/o


Это означает, что данное свойство только для записи. А вы его пытаетесь прочесть………

Плюс ко всему вы не даёте полный ответ на вопрос

Это скрипт или индикатор.
 
MakarFX:

Когда меняется активное окно графика, функция принтует символ активного графика.

Простите, функция вызывается в...

К сожалению тоже не работает. Принтует бесконечно(

Если не понимаю что происходит, принтую все что есть, иногда помогает. И не понимаю сути вайл. Условие всегда истинно.

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++;
        }
Причина обращения: