По чему эксперт получает "через раз" сигнал от индикатора? - страница 2

 
double up=iCustom(NULL,0,"ASC_Trend_1sig",3,0,1);
double down=iCustom(NULL,0,"ASC_Trend_1sig",3,1,1);
if(up!=0)
{
   Print("тренд вверх");
}
if(down!=0)
{
   Print("тренд вниз");
}
Можно примерно, такой код написать в эксперте. Если значение buf0 на 1м баре не равно 0, то вверх.Если значение buf1 на 1м баре не равно 0, то вниз.
 

Искринне прошу меня извинить, но если бы это сработало, я бы не задовал предыдущего вопроса. Дело в том, что это обращение, возвращает одновременно вот такую "2147483647" большую цыфру. И чё с ней делать, ума не приложу. Были бы хоть координаты, куда б не шло. Если не лень, посмотрите сами.

 
Это знаменитое число.
 
Погулял по бескрайним простором вышеуказанной ссылки. Сделал единственный вывод в существующей ошибке. Добавил SetIndexEmptyValue(0,0.0);
и получил всё по нулям. Может приведёте конкретный пример. А то мне и так ещё много ночей не спать, пока удовлетворю своё любопытство в изучении подводных камней.
 
в функцию индикатора init() добавь :
SetIndexEmptyValue(0,0.0);
SetIndexEmptyValue(1,0.0);

Дальше buf0[] и buf[] хранят значения стрелочек на каждом баре.
Если это значение не равно 0, стрелочка на баре есть.
Например если тебе нужно, определить на каких именно из 10-ти последних баров есть верхние стрелочки, то можно сделать так:

int num[10];//массив для хранения номеров баров
double up=0;
int n=0;
for(int i=0;i<10;i++)
{
    up=iCustom(NULL,0,"ASC_Trend_1sig",3,0,i);//берем значение 0-го буфера индикатора на i-м баре
  if(up!=0)//если не равно 0, то стрлочка на i-м баре есть
  {
    num[n]=i;//сохраняем её номер в массиве
    n++;
  }
}
 
Всё равно одни нули. Не одной координаты. через Print проверял.
 
Doctorcoot:
Всё равно одни нули. Не одной координаты. через Print проверял.
Не знаю, как вы проверяли.
Прицепил на график ASC_Trend_1sig.mq4, запустил написанный для проверки скрипт ASC_test.mq4 и получил следующую картинку:



Где нули? ;)
Файлы:
 
Да. Верно. Работает.
Только я на тестере проверял. А там вот такой пейзаж выходит.
 

Doctorcoot писал (а):
Да. Верно. Работает.
Только я на тестере проверял. А там вот такой пейзаж выходит.

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

Как временное решение - расчитывать в индикаторе всю историю каждый тик (убрать counted_bars).
А лучше перенести расчет в код эксперта - это достаточно просто.
 
komposter:

Doctorcoot писал (а):
Да. Верно. Работает.
Только я на тестере проверял. А там вот такой пейзаж выходит.

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

Как временное решение - расчитывать в индикаторе всю историю каждый тик (убрать counted_bars).
А лучше перенести расчет в код эксперта - это достаточно просто.

Перенести код индюка в эксперта - это явный гемор.

А вот то, что в тестере буфер потиково инициализируется, а в реальном времени не трогает накопленную информацию - это очередной глюк со стороны разработчиков. Такого быть не должно. Надо Рената попинать, пущай исправляют. А то на Java переходить не хотят, кочевряжатся. Зато глюков вешают немерянно. На каждый пофиксенный баг, десяток другой новых сажают. МТ4 уже не торговый терминал, а сплошной глюкогенератор.