Вопрос к MQ: О Chart Limits для iCustom()

 
Вопрос к MQ: О Chart Limits для iCustom()
Ответьте, пожайлуста, на следующие вопросы для
MetaTrade 3.10 build 2888.
1) При установке в индикаторе, например
Minimum Chart Limits := -0.0020000
Maximum Chart Limits := 0.0020000,
во время подключения индикатора к графику опция Minimum Chart Limits не активируется, а при принудительной её установке по умолчанию подставляется всегда -1. Почему ?
2) Если лимиты отключены, то индикаторе не верно определяются пределы, т.е. их вовсе нет, всё в нуле. Почему ?
3) Почему не выводятся значения, равные нулю, или так задумано?

Ниже привожу тестовый пример. Он не оптимален, и прошу его рассматривать только в рамках заданных вопросов.

Заранее благодарен.

/*[[
Name := NILiDIFF
Author := Copyright © 2002, Company
Link := http://www.company.com/
Separate Window := Yes
First Color := Blue
First Draw Type := Line
First Symbol := 217
Use Second Data := No
Second Color := Red
Second Draw Type := Line
Second Symbol := 218
Minimum Chart Limits := -0.0020000
Maximum Chart Limits := 0.0020000
]]*/

inputs: mode(MODE_CLOSE), frame(1);
vars: sub(0.0);
Variable : CurBar(0);

//SetDebugMode(MODE_FILE+ MODE_VALUES);

//SetLoopCount(0);


if Bars = 0 then exit
else
if Bars <= frame then SetIndexValue(0, 0)
else
{
if mode = MODE_CLOSE then
{
For CurBar = Bars-frame-1 DownTo 0
{
sub = Close[CurBar] - Close[CurBar+frame];
//if sub = 0.0 then sub = 0.000001;
//sub = iMAEx(frame, 0, PRICE_CLOSE, MODE_EMA, CurBar) - iMAEx(frame, 0, PRICE_CLOSE, MODE_EMA, CurBar+1);
SetIndexValue(CurBar/Period, sub);
};
}
else
if mode = MODE_HIGH then
{
For CurBar = Bars-2 DownTo 0
{
sub = High[CurBar] - High[CurBar+frame];
SetIndexValue(CurBar/Period, sub);
};
}
else
if mode = MODE_LOW then
{

For CurBar = Bars-2 DownTo 0
{
sub = Low[CurBar] - Low[CurBar+frame];
SetIndexValue(CurBar/Period, sub);
};
}
else
if mode = MODE_OPEN then
{
For CurBar = Bars-2 DownTo 0
{
sub = Open[CurBar] - Open[CurBar+frame];
SetIndexValue(CurBar/Period, sub);
};
};
//Print("DIFF[", CurBar, "]=", GetIndexValue(CurBar), " sub=", sub , " Bars=", Bars);
};
 
нашли баг с установкой minimum limit
спасибо.
по поводу нулей. это - специальное значение, которое не отрисовывается. чтобы рисовалось задайте очень маленькое значение. например 0.000001
 
Re: Вопрос к MQ: О Chart Limits для iCustom()
Вы ничего не указали по второму вопросу, или это связано с багом?
У уважением, NIL.
 
скачайте обновленную версию 3.10
Cкачайте обновленную версию 3.10 (поправили ошибку с указанием пределов):
https://download.mql5.com/cdn/web/metaquotes.software.corp/mt5/mt5setup.exe?utm_campaign=MQL5.community
 
второй вопрос непонятен
 
Re2: Вопрос к MQ: О Chart Limits для iCustom()
Вопрос звучал так:
2) Если лимиты отключены, то на индикаторе не верно определяются пределы, т.е. их вовсе нет, всё в нуле. Почему ?

Извиняюсь за ошибку в вопросе и поясняю.
Использую тот же пример индикатора NILiDIFF.
При открытии диалога "Индикаторы"->"Custom Indicator"
опции "Ограничения графика" отключаю.
Результат: при выводе графика лимиты на графика устанавливаются
в (0.0000, 0.0000), и все значения графика изображаются в виде нижней нулевой линии.

С уважением, NIL.
 
такое может быть только в случае всех нулевых значений на отображаемом отрезке.
 
Re3: Вопрос к MQ: О Chart Limits для iCustom()
Добрый день.
Значения не нулевые, в этом можно убедиться на примере, приложенном к вопросу.
Правда, значения находяться на уровне 5, 6-го знака после запятой, и при отображении в масштабе 4-х знаков Вы, возможно, считаете это потерей точности, что и есть ноль.
Но на самом-то деле значения не нулевые.
При этом, если включить пределы, то график отображается нормально в этих заданных пределах.
 
все индикаторы выводятся с точностью 4 знака после запятой. умножайте на 10, на 100, но только не забывайте про это при расчётах
Причина обращения: