Вопросы новичка в MQL5. Профи не проходите мимо. - страница 6

 
_o0O:

Тем более, что не любой, отсюда следует, что любые вопросы только приветствуются.

В справке этого нюанса нет. DRAW_NONE не работает ни #property ни в PlotIndexSetInteger(0,PLOT_DRAW_TYPE,DRAW_NONE), PlotIndexSetString(0, PLOT_LABEL, "Buff") тоже не работает, так какая именно логика может привести к указанию clrNONE для достижения поставленной цели?

А так-же далеко не любой умеет читать документацию по языку.

В представленном коде есть всё чтобы проверить и разобраться.

 
Alexey Viktorov:

А так-же далеко не любой умеет читать документацию по языку.

В представленном коде есть всё чтобы проверить и разобраться.

Хотите поговорить?

Ок. Покажите, пожалуйста, место в справке где есть решение моей задачи. А ваш код это костыль, недокументированная возможность, так как указание clrNONE что бы буфер не отрисовывал выглядит бредово.

 
Alexey Viktorov:

Нужно не тип ставить DRAV_NONE а цвет clr_NONE

Вот тестовый код

Поясни:

limit = rates_total-prev_calculated; // Это тупо для примера. В нормальном индикаторе так делать нельзя!

Почему нельзя? Почему красным, да с восклицанием?

 
_o0O:

Как сделать, что бы некоторые буферы индикатора не отрисовывались на чарте, но отображали свои значения в окне индикатора "Окно данных"?

делаю так:


но всё равно индикатор рисует буфер.

Вот тут можно пример глянуть:

3TF_RSI_Average
3TF_RSI_Average
  • www.mql5.com
Индикатор Three timeframes RSI Average - отображает в отдельном окне три индикатора Relative Strength Index с заданных таймфреймов и их среднее значение. Имеет десять настраиваемых параметров: RSI period - период расчёта RSIOverbought - уровень перекупленностиOversold - уровень перепроданностиDrawing mode - режим рисованияFirst RSI timeframe...
 
Artyom Trishkin:

Вот тут можно пример глянуть:

нет, не то.

в указанном Вами примере 4 буфера рисуются и 4 в окне данных. а надо что бы не рисовались но при этом были в окне данных и имели заданное имя.

 
_o0O:

нет, не то.

в указанном Вами примере 4 буфера рисуются и 4 в окне данных. а надо что бы не рисовались но при этом были в окне данных и имели заданное имя.

А если внимательно глянуть? Там же есть отключение отображения трёх из четырёх буферов - по одному. Но при отключении в окне данных они продолжают отображаться, причём с заданными программно именами - всё как и просили. Или я не понял вопроса?

 
Artyom Trishkin:

А если внимательно глянуть? Там же есть отключение отображения трёх из четырёх буферов - по одному. Но при отключении в окне данных они продолжают отображаться, причём с заданными программно именами - всё как и просили. Или я не понял вопроса?

да, я вижу там

PlotIndexSetInteger(0,PLOT_DRAW_TYPE,InpShowRSI1);

InpShowRSI1 принимает значения 0 или 1, так работает.

Но я указывал PlotIndexSetInteger(0,PLOT_DRAW_TYPE, DRAW_NONE);  и не получилось

 
_o0O:

да, я вижу там

PlotIndexSetInteger(0,PLOT_DRAW_TYPE,InpShowRSI1);

InpShowRSI1 принимает значения 0 или 1, так работает.

Но я указывал PlotIndexSetInteger(0,PLOT_DRAW_TYPE, DRAW_NONE);  и не получилось

DRAW_NONE == 0

DRAW_LINE == 1

Значит где-то у вас ещё что-то. По идее всё должно работать и у вас.

 
Artyom Trishkin:

Поясни:

Почему нельзя? Почему красным, да с восклицанием?

Если в индикаторе будет расчёт нескольких баров, то такая реализация улетит за пределы массива. Поэтому в каждом случае надо напрягать мышцы головы...
 
Alexey Viktorov:
Если в индикаторе будет расчёт нескольких баров, то такая реализация улетит за пределы массива. Поэтому в каждом случае надо напрягать мышцы головы...

Не, не надо. Всё делается один раз при limit>1. Это первый запуск и подгрузка истории. И если у тебя сглаживание period_sm=10, то и лимит в этом случае должен быть меньше на 10. Соответственно так:

if(limit>1)
  {
   limit=rates_total-period_sm-1;
   ArrayInitialize(Buffer,InitValue);
  }

InitValue - значение, которым нужно инициализировать буфер - 0 или EMPTY_VALUE - по обстоятельствам. А может и -100500 ...

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