Вопросы от начинающих MQL5 MT5 MetaTrader 5 - страница 795

 
Alexey Viktorov:
А вы уверены что индикатор пересчитывается во время выполнения цикла while?
Да,вывел comment на экран.Или это еще не доказывает выполнение пересчета?
 
007yurik:
Да,вывел comment на экран.Или это еще не доказывает выполнение пересчета?

Надо в режиме отладки посмотреть значения Value[]

В Comment может меняться за пределами цикла. Я с такой ситуацией не сталкивался и не проверял, но что-то подсказывает, что не будет пересчитываться и значения будут неизменны. А следовательно из цикла никогда не выйдешь.

 
Alexey Viktorov:

Надо в режиме отладки посмотреть значения Value[]

В Comment может меняться за пределами цикла. Я с такой ситуацией не сталкивался и не проверял, но что-то подсказывает, что не будет пересчитываться и значения будут неизменны. А следовательно из цикла никогда не выйдешь.

Что-то ерунда какая-то.. В отладке значения Value правильные,но цикл проходит всегда один раз,не зависимо от выполнения условия.Пожалуй откажусь от While.
 
007yurik:
Что-то ерунда какая-то.. В отладке значения Value правильные,но цикл проходит всегда один раз,не зависимо от выполнения условия.Пожалуй откажусь от While.

А как определяете, что в массиве Value[] правильные значения? Как Вы его заполняете?

 
Vladimir Karputov:

А как определяете, что в массиве Value[] правильные значения? Как Вы его заполняете?

Хендлом индикатора,если я вас правильно понял.Напоминаю мой уровень владения темой=чайнику)
 
007yurik:
Хендлом индикатора,если я вас правильно понял.Напоминаю мой уровень владения темой=чайнику)

Я думаю, что нужно поступать в обратной последовательности: сначала заполнять массив Value, а потом уже сравнивать то, что в нём записанно.

 
007yurik:
Что-то ерунда какая-то.. В отладке значения Value правильные,но цикл проходит всегда один раз,не зависимо от выполнения условия.Пожалуй откажусь от While.

Всё в точности как в программе написано

 bool pravda=false;

   if(pravda || Ind[0]<=-0.7)
   pravda=true;
   
   {   
      
      while(Value[2]<Value[1])
         {
         if(CopyBuffer(InpInd2_Handle,1,SignalBar,3,Value)<=0) {Recount=true; return;}                 
          }
          
         if(BuyPosOpen) BUY_Open=true;     
                                                  
         if(SellPosClose) SELL_Close=true;
         UpSignalTime=datetime(SeriesInfoInteger(Symbol(),InpInd_Timeframe,SERIES_LASTBAR_DATE))+TimeShiftSec;
         }

Если CopyBuffer выполнен с ошибкой присвоить переменной Recount значение true и выйти из цикла.

Следовательно дело было не в ... цикле.

 

Объясните дураку, пожалуйста.
Задача - нарисовать в подокне нулевую линию. Простую сплошную белую линию.

Я что не делаю - она получается полосатая. Я и уровни устанавливал, и индикаторную линию выводил, и уже графический объект вставил - а всё равно полосатая получается.
Причина понятна - полосатая линия сетки отображается сверху. Но вот что странно: сверху всех - только сеточная нулевая горизонтальная, а вертикальные сеточные - ниже индикаторных.

Вот, как нарисовать простую сплошную белую нулевую линию в подокне?

 
И "если вы не отзовётесь, мы напишем в Спортлото"!
 
User_mt5:

Объясните дураку, пожалуйста.
Задача - нарисовать в подокне нулевую линию. Простую сплошную белую линию.

Я что не делаю - она получается полосатая. Я и уровни устанавливал, и индикаторную линию выводил, и уже графический объект вставил - а всё равно полосатая получается.
Причина понятна - полосатая линия сетки отображается сверху. Но вот что странно: сверху всех - только сеточная нулевая горизонтальная, а вертикальные сеточные - ниже индикаторных.

Вот, как нарисовать простую сплошную белую нулевую линию в подокне?

Можно скриншотик того, как сейчас?
Причина обращения: