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

 

Коллеги, я в тупике. Нужна помощь.

Есть нормально работающий индикатор, скрестил его из двух, но не в этом дело. Хочу скрыть первый блок внешних переменных, но при удалении любого input в этом блоке после компиляции зависает терминал с установленным на график индикатором.

Кусок кода с 76 по 86 строку

input string     01 = "••  Channel:";   // ------------------------------------------------------------
input string     02 = "";       //  

input ENUM_TF_MINUTES   TMA_TimeFrame = TF_CURR;                        // Time Frame
input uint              TMA_Half_Length = 55;                                                                   // Averaging Period
input ENUM_APPLIED_PRICE        TMA_Price = PRICE_CLOSE;        // Applied _Price
input double    TMA_ATR_Multiplier = 3;                                                         // ATR Multiplier
input uint              TMA_ATR_Period = 100;                                                                   // ATR Period
input double    TMA_Band_Deviation_Percent = 50;                        // Band Deviation Percent
input bool              TMA_Interpolate = true;                                                         // Interpolate?
input uint Bars_Limit=1000;

Так же зависает если перемещаю весь этот блок ниже других переменных, и даже если переношу крайние переменные вверх или вниз:

При изменении порядка переменных внутри блока, компилируется нормально. Терминал не зависает.

Шайтан какой то, ничего не понимаю. Может чего очевидного не вижу, глаз замылился (((  Код прилагаю

P.S. Вопрос решился, код удалил.
 
Andrey Kaunov #:

Коллеги, я в тупике. Нужна помощь.

Есть нормально работающий индикатор, скрестил его из двух, но не в этом дело. Хочу скрыть первый блок внешних переменных, но при удалении любого input в этом блоке после компиляции зависает терминал с установленным на график индикатором.

Кусок кода с 76 по 86 строку

Так же зависает если перемещаю весь этот блок ниже других переменных, и даже если переношу крайние переменные вверх или вниз:

При изменении порядка переменных внутри блока, компилируется нормально. Терминал не зависает.

Шайтан какой то, ничего не понимаю. Может чего очевидного не вижу, глаз замылился (((  Код прилагаю

замените input на const 

и возрадуйтесь !

 
Maxim Kuznetsov #:

замените input на const 

и возрадуйтесь !

Не помогает, все равно зависает терминал при добавлении индикатора на график.

 
Andrey Kaunov #:

Не помогает, все равно зависает терминал при добавлении индикатора на график.

и компилируется ?

то есть если параметр имеет атрибут input  то работает, а если const то виснет ?

таких чудес не бывает

 
Andrey Kaunov #:

Шайтан какой то, ничего не понимаю. Может чего очевидного не вижу, глаз замылился (((  Код прилагаю

Начиная с 379 строки у вас идет рекурсия на индикатор (вызов самого себя). Там есть параметры и вам нужно их тоже привести в соответствие после смены порядка параметров.

 
Nikolay Ivanov #:

Начиная с 379 строки у вас идет рекурсия на индикатор (вызов самого себя). Там есть параметры и вам нужно их тоже привести в соответствие после смены порядка параметров.

Спасибо огромное, Николай.

Да, нужно было копнуть глубже. А я зациклился на параметрах.

 

Подскажите, пожалуйста, почему в этом цикле не работает внутренний цикл?

for (int Try=0; Try<1;) 

  {  Print("цикл 1");

      for (int Try2=0; Try2<1;) 

        {  Print("цикл 2"); Try=1; Try2=1;
...


Не принтуется "цикл 2". Только "цикл 1"

 
Кто знает как зафиксировать размер OBJ_RECTANGLE_LABEL, чтобы на разных мониторах он был одинаковым? Сделал маленькую панель по размеру встроенной панели OneClickTrading (в пикселях), но на разных мониторах моя меняет размер, а встроенная нет.
 
Ivan Butko #:

Подскажите, пожалуйста, почему в этом цикле не работает внутренний цикл?

for (int Try=0; Try<1;) 

  {  Print("цикл 1");

      for (int Try2=0; Try2<1;) 

        {  Print("цикл 2"); Try=1; Try2=1;
...


Не принтуется "цикл 2". Только "цикл 1"

все принтуется, алертится

void OnStart()
  {
//---
for (int Try=0; Try<1;) 

  { Alert("цикл 1");

      for (int Try2=0; Try2<1;) 

        {  Alert("цикл 2"); Try=1; Try2=1;
        }}
   
  }
//+------------------------------------------------------------------+

2022.03.20 10:28:29.373 Script qqq EURUSD,M1: removed
2022.03.20 10:28:29.373 qqq EURUSD,M1: uninit reason 0
2022.03.20 10:28:29.373 qqq EURUSD,M1: Alert: цикл 2
2022.03.20 10:28:29.357 qqq EURUSD,M1: Alert: цикл 1
2022.03.20 10:28:29.326 qqq EURUSD,M1: initialized

 
Valeriy Yastremskiy #:

все принтуется, алертится

2022.03.20 10:28:29.373 Script qqq EURUSD,M1: removed
2022.03.20 10:28:29.373 qqq EURUSD,M1: uninit reason 0
2022.03.20 10:28:29.373 qqq EURUSD,M1: Alert: цикл 2
2022.03.20 10:28:29.357 qqq EURUSD,M1: Alert: цикл 1
2022.03.20 10:28:29.326 qqq EURUSD,M1: initialized

Спасибо за проверку! Буду смотреть

Причина обращения: