Ошибки, баги, вопросы - страница 1394

 
Vladimir Pastushak:

Поправил строку и вроде заработало )))

Я и сам в итоге так подправил. Но мне интересно, зачем изменили логику (в МТ4 масштаб был хорошим без умножения на Point). И почему нет возможности чтобы буферы без отрисовки (c DRAW_NONE) не влияли на масштаб графика.

 
Vladimir Pastushak:

Я не особо силен в индикаторах но эта строка вызывает сомнения

1. Возвращаемое значение Количество скопированных элементов массива либо -1 в случае ошибки.

2. В случае если скопирован 1 элемент функция вернет его значение

Утверждения 1 и 2 находятся в противоречии Вы не находите?
 
Ilya Malev:
Утверждения 1 и 2 находятся в противоречии Вы не находите?

Нет )))

1 Может быть от 1 до предела

2 только если скопирован 1 элемент если 2 и более то будет возвращено EMPTY_VALUE

В справке написано

Возвращаемое значение

Количество скопированных элементов массива либо -1 в случае ошибки.  При каком условии будет скопирован 1 элемент ?

 
Ilya Malev:

Я и сам в итоге так подправил. Но мне интересно, зачем изменили логику (в МТ4 масштаб был хорошим без умножения на Point). И почему нет возможности чтобы буферы без отрисовки (c DRAW_NONE) не влияли на масштаб графика.

Вы не проходите по всему индикаторному буферу. Запись

for(int i=rates_total-MathMax(1, prev_calculated); i>=0; i--)

вообще неправильно. У Вас есть переменные rates_total, prev_calculated и смещение индикатора iStdDev. При первом проходе нужно заполнить пустые индексы:

смещение индикатора

и далее пройтись по оставшимся индексам индикаторного буфера (пройтись - значит присвоить значения). 

 
Karputov Vladimir:

Вы не проходите по всему индикаторному буферу. Запись

вообще неправильно. У Вас есть переменные rates_total, prev_calculated и смещение индикатора iStdDev. При первом проходе нужно заполнить пустые индексы:

и далее пройтись по оставшимся индексам индикаторного буфера (пройтись - значит присвоить значения). 

В оригинале у меня была функция заполняющая все нулями типа

      for(int i=(int)SeriesInfoInteger(Symbol(), Period(), SERIES_BARS_COUNT)-1; i>=0; i--){
         buffer1[i]=0;
         buffer1[i]=0;
      }

 Это в данном случае не имеет значения. Если бы там и были пустые значения, они были бы в начале графика и не влияли на масштаб окна в самом конце. Тут дело совсем в другом, вот товарищ выше уже разобрался.

 
Ilya Malev:

Я и сам в итоге так подправил. Но мне интересно, зачем изменили логику (в МТ4 масштаб был хорошим без умножения на Point). И почему нет возможности чтобы буферы без отрисовки (c DRAW_NONE) не влияли на масштаб графика.

Вот так попробуйте:

PlotIndexSetDouble(0,PLOT_EMPTY_VALUE,EMPTY_VALUE);
PLOT_EMPTY_VALUE >>>
 
Vladimir Pastushak:

Нет )))

При каком условии будет скопирован 1 элемент ? 

Да )))

int  CopyBuffer(
    int       indicator_handle,     // handle индикатора
    int       buffer_num,           // номер буфера индикатора
    int       start_pos,            // откуда начнем 
    int       count,                // сколько копируем
    double    buffer[]              // массив, куда будут скопированы данные
    );
 
Ilya Malev:

Да )))

Да, тогда Ваша строка верна.
 
Anatoli Kazharski:

Вот так попробуйте:

Там не важно, какое пустое значение и остались ли случайные значения в начале графика. Важно что там в буфере buffer2 значения от 0 до -5, которые не отображаются на графике так как он DRAW_NONE и установлен минимум масштаба 0. 

МТ4 в этой ситуации корректно масштабировал график от 0 до максимального значения буферов в окне, а МТ5 масштабирует от минимального (-5, а не 0) до максимального типа 0.0605 и прибавляет сверху к этому что-то типа 10%, что полностью ломает масштаб.

 
Ilya Malev:

Там не важно, какое пустое значение и остались ли случайные значения в начале графика. Важно что там в буфере buffer1 значения от 0 до -5, которые не отображаются на графике так как он DRAW_NONE и установлен минимум масштаба 0. 

МТ4 в этой ситуации корректно масштабировал график от 0 до максимального значения буферов в окне, а МТ5 масштабирует от минимального (-5, а не 0) до максимального типа 0.0605 и прибавляет сверху к этому что-то типа 10%, что полностью ломает масштаб.

Отнюдь. Пустое значение это не ноль. Это может быть, что и кто угодно.