- Ошибка компилятора - неправильная перегрузка методов
- Тестер стратегий MetaTrader 5: ошибки, баги, предложения по улучшению работы
- Любые вопросы новичков по MQL4 и MQL5, помощь и обсуждение по алгоритмам и кодам
Добрый вечер всем! Вот сделал индикатор, который показывает
куда направлен луч ZigZag на разных ТФ. Делал его для эксперта.
Индикатор работает, но вот возникла одна проблемка... В эксперте
он не хочет работать, т.е. показывает всегда трэнд = -1, а +1 у него нет.
Никак не пойму в чем проблема... В эксперт вставляю его как функцию.
Сразу предупреждаю программировать начал совсем недавно,
так что .... Вот и сам индюк.
Я вроде тебе отсылал шаблон эксперта на ZZ. Вот на всякий случай ещё вариант:
проверь, должно работать. Из комментов должно быть всё понятно.
extern int ExtDepth = 20; extern int ExtDeviation = 5; extern int ExtBackstep = 3; extern int ZZTop = 2; // Количество последних нужных нам вершин ZZ для занесения в буфер. extern bool Comments = true; // false string txt=""; int ZZMaxBar,ZZMinBar,Zbar[],trend;// Буфер вершин 33, последняя вершина=Zbar[0], предпоследняя=Zbar[1] и т.д. // возвращает кол-во баров от нулевого double zz,ZZMax,ZZMin,Zval[];// Буфер значений 33, последнее значение=Zval[0], предпоследнее=Zval[1] и т.д. //+------------------------------------------------------------------+ void init() { ArrayResize(Zbar,ZZTop); ArrayResize(Zval,ZZTop); } // Ограничиваем размеры массивов //+------------------------------------------------------------------+ void deinit() { if(Comments) Comment(""); } // Удаляем комменты (если включены). //+------------------------------------------------------------------+ int start() { int z; for(int x=0; x<Bars; x++) { zz=iCustom(NULL,0,"ZigZag",ExtDepth,ExtDeviation,ExtBackstep,0,x); if(zz!=0 && zz!=EMPTY_VALUE) { Zbar[z]=x; Zval[z]=zz; z++; if(z>=ZZTop) break; }} if(Zval[0]>Zval[1]) { ZZMaxBar=Zbar[0]; ZZMinBar=Zbar[1]; ZZMax=Zval[0]; ZZMin=Zval[1]; txt="Вверх"; trend=-1; } if(Zval[1]>Zval[0]) { ZZMaxBar=Zbar[1]; ZZMinBar=Zbar[0]; ZZMax=Zval[1]; ZZMin=Zval[0]; txt="Вниз"; trend=1; } //+------------------------------------------------------------------+ if(Comments) Comment("ZZMaxBar "+ZZMaxBar+" ZZMinBar "+ZZMinBar+"\n", "ZZMax ",ZZMax," ZZMin ",ZZMin,"\nЛуч ZZ направлен : ",txt," trend = ",trend); return(0); } //+------------------------------------------------------------------+
if ( iClose(NULL,0,i+1)<=zigzag1 ) trend=-1;
if ( iClose(NULL,0,i+1)>=zigzag1 ) trend=1;
Как не пробовал ничего не получается....
И через iCustom не очень то и хотелось его вызывать тормозная она какая-то. Но для начало и так бы сошло... Честно говоря это мой первый индикатор и то основан на ZigZage Kloda. Надеюсь он на меня не сильно за это обидется...
Привет!!! Спасиб за ответ! Но есть одно но... Если я правильно понимаю, то сам trend ты в буфер не заносишь и поэтому вызвать сам трэнд через iCustom в эксперте не получится. Или я что-то не так понимаю??? Блин уже совсем запутался. ... Мне нужно чтоб именно эти условия вынести в буфер
if ( iClose(NULL,0,i+1)<=zigzag1 ) trend=-1;
if ( iClose(NULL,0,i+1)>=zigzag1 ) trend=1;
Как не пробовал ничего не получается....
И через iCustom не очень то и хотелось его вызывать тормозная она какая-то. Но для начало и так бы сошло... Честно говоря это мой первый индикатор и то основан на ZigZage Kloda. Надеюсь он на меня не сильно за это обидется...
Только не понятно, зачем тебе что то заносить в буфер, если и из экспа всё прекрасно расчитывается?
Специально не стал убирать оттуда лишний код (определение мин/мах и определение баров экстремумов), чтобы было
легче понять что и откуда берётся. Если всё таки не получится, напиши, сделаем вместе то что тебе нужно.
Ниразу не пробовал вызывать в эксперте IndicatorCounted() - даже не знаю что будет. Уберите цикл for (int i=0; i<limit; i++), вместо i поставьте 1. Да и в индикатре этот цикл не нужен.
Ниразу не пробовал вызывать в эксперте IndicatorCounted() - даже не знаю что будет. Уберите цикл for (int i=0; i<limit; i++), вместо i поставьте 1. Да и в индикатре этот цикл не нужен.
Rosh, что с вами? Я писал про вызов IndicatorCounted() в эксперте. Автор темы пишет, что в эксперт функцию переносил, а в этой функции используется IndicatorCounted(). А в предложении "Да и в индикатре этот цикл не нужен" словом "индиктор" я подразумевал только индикатор фигурирующий в этой теме.
Rosh, что с вами? Я писал про вызов IndicatorCounted() в эксперте. Автор темы пишет, что в эксперт функцию переносил, а в этой функции используется IndicatorCounted(). А в предложении "Да и в индикатре этот цикл не нужен" словом "индиктор" я подразумевал только индикатор фигурирующий в этой теме.
эту функцию один бар назад как-нибудь задать TrendByZigZag(4), если да, то как???
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Вы принимаете политику сайта и условия использования