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

 

Подскажите, пожалуйста. 

В mql4 был индикатор на основе МА по цене открытия, это позволяло избежать перерисовки на текущем баре. через int start() работал нормально. Все показывал четко

В mql5 этот же индикатор  через int start не работает, работает через int OnCalculate. И постоянно пересчитывает и перерисовывает, на мили секунды пропадает изображение и заного появляются уже могут быть другие значения, так как граничная с пересечением двух МА ситуация, хотя задано растояние между двумя МА, не помогает. И то что по ценам открытия тоже не помогает, были мысли взять не 0-ое, а 1-ое значения из буфера МА, но не помогло, была мысль отключить выполнение до прихода нового бара, тоже не помогло (вообще перестал что-либо отображать. Как победить эту ситуацию?

При перелистывании графика вправо влево, тоже мерцание индикатора с постоянными перерасчетами

 
Sergey Dymov #:

Подскажите, пожалуйста. 

В mql4 был индикатор на основе МА по цене открытия, это позволяло избежать перерисовки на текущем баре. через int start() работал нормально. Все показывал четко

В mql5 этот же индикатор  через int start не работает, работает через int OnCalculate. И постоянно пересчитывает и перерисовывает, на мили секунды пропадает изображение и заного появляются уже могут быть другие значения, так как граничная с пересечением двух МА ситуация, хотя задано растояние между двумя МА, не помогает. И то что по ценам открытия тоже не помогает, были мысли взять не 0-ое, а 1-ое значения из буфера МА, но не помогло, была мысль отключить выполнение до прихода нового бара, тоже не помогло (вообще перестал что-либо отображать. Как победить эту ситуацию?

При перелистывании графика вправо влево, тоже мерцание индикатора с постоянными перерасчетами

Здесь вопрос задайте - точно помогут.

 
Sergey Dymov #:

Подскажите, пожалуйста. 

В mql4 был индикатор на основе МА по цене открытия, это позволяло избежать перерисовки на текущем баре. через int start() работал нормально. Все показывал четко

В mql5 этот же индикатор  через int start не работает, работает через int OnCalculate. И постоянно пересчитывает и перерисовывает, на мили секунды пропадает изображение и заного появляются уже могут быть другие значения, так как граничная с пересечением двух МА ситуация, хотя задано растояние между двумя МА, не помогает. И то что по ценам открытия тоже не помогает, были мысли взять не 0-ое, а 1-ое значения из буфера МА, но не помогло, была мысль отключить выполнение до прихода нового бара, тоже не помогло (вообще перестал что-либо отображать. Как победить эту ситуацию?

При перелистывании графика вправо влево, тоже мерцание индикатора с постоянными перерасчетами

Выложи код
 

Есть такая штука на графике

Встречал, что её делают любым цветом, если не ошибаюсь.

Как?

 
Vitaly Muzichenko #:

Есть такая штука на графике

Встречал, что её делают любым цветом, если не ошибаюсь.

Как?

F8 и


Но это и цвет сетки, поэтому снять флажок


 
Artyom Trishkin #:

F8 и

Но это и цвет сетки, поэтому снять флажок

Понял, спасибо!

Сетка нужна, жаль что не разделено.

P.S. А как программно сдвинуть на 15 баров от правого края?
 
Vitaly Muzichenko #:

Понял, спасибо!

Сетка нужна, жаль что не разделено.

P.S. А как программно сдвинуть на 15 баров от правого края?

Может так?

//+------------------------------------------------------------------+
//| Функция включает/выключает режим отображения ценового графика с  |
//| отступом от правого края.                                        |
//+------------------------------------------------------------------+
bool ChartShiftSet(const bool value,const long chart_ID=0)
  {
//--- сбросим значение ошибки
   ResetLastError();
//--- установим значение свойства
   if(!ChartSetInteger(chart_ID,CHART_SHIFT,0,value))
     {
      //--- выведем сообщение об ошибке в журнал "Эксперты"
      Print(__FUNCTION__+", Error Code = ",GetLastError());
      return(false);
     }
//--- успешное выполнение
   return(true);
  }
Документация по MQL5: Константы, перечисления и структуры / Константы графиков / Примеры работы с графиком
Документация по MQL5: Константы, перечисления и структуры / Константы графиков / Примеры работы с графиком
  • www.mql5.com
Примеры работы с графиком - Константы графиков - Константы, перечисления и структуры - Справочник MQL5 - Справочник по языку алгоритмического/автоматического трейдинга для MetaTrader 5
 
Alexey Viktorov #:

Может так?

Да, но это отжимает кнопку

Когда тащишь маркер руками, то он упирается не доходя до правого края довольно много - это в корне неверное ограничение терминала!

Когда отжать кнопку, то крайний бар почти прилипает к правому краю, получается информативность графика потеряна.

Нужно поджать программно не доходя баров 15-20, при этом не проводить эту операцию при появлении каждого нового бара. Поджать единожды.

P.S. Зачем такое ограничение и столько пустого места?


 
Vitaly Muzichenko #:

Да, но это отжимает кнопку

Когда тащишь маркер руками, то он упирается не доходя до правого края довольно много - это в корне неверное ограничение терминала!

Когда отжать кнопку, то крайний бар почти прилипает к правому краю, получается информативность графика потеряна.

Нужно поджать программно не доходя баров 15-20, при этом не проводить эту операцию при появлении каждого нового бара. Поджать единожды.

В процентах

//+------------------------------------------------------------------+ 
//| Функция устанавливает размер отступа нулевого бара от правого    | 
//| края графика в процентах (от 10% до 50%). Для включения режима   | 
//| отступа, нужно установить значение свойства CHART_SHIFT равным   | 
//| true.                                                            | 
//+------------------------------------------------------------------+ 
bool ChartShiftSizeSet(const double value,const long chart_ID=0) 
  { 
//--- сбросим значение ошибки 
   ResetLastError(); 
//--- установим значение свойства 
   if(!ChartSetDouble(chart_ID,CHART_SHIFT_SIZE,value)) 
     { 
      //--- выведем сообщение об ошибке в журнал "Эксперты" 
      Print(__FUNCTION__+", Error Code = ",GetLastError()); 
      return(false); 
     } 
//--- успешное выполнение 
   return(true); 
  }
 
Alekseu Fedotov #:

В процентах

Работает, но минимум - это отступ, который можно установить руками и не менее

Визуально - примерно 10% минимум. Почему не работает 5%