Форум » Статьи MQLabs » Новый ZigZag » Ответить

Новый ZigZag

hoz: Появился вопрос касательно статьи. Я пишу класс для работы с зиг-загами. Решил для теста воспользоваться индикатором из данной статьи NeoZigZag_Close. В итоге, почему-то он периодически возвращает не как обычно бывает 0 или "не ноль" т.е. значение, а вот такое значение: 2147483647.0. С чем это связано? Мне теперь приходится проверять не только на "не пустое значение", но и не "не 2147483647.0, что не есть логично. Вот что пишет в журнале у меня возвращаемое значение данного индикатора: 2015.07.13 22:07:06 2015.06.01 00:10 ZZBaseVariant EURUSD,M15: ZZ.GetZZExtremumPrice(9) = 2147483647.0 2015.07.13 22:07:06 2015.06.01 00:10 ZZBaseVariant EURUSD,M15: ZZ.GetZZExtremumTime(9) = 2015.05.29 21:30:00 2015.07.13 22:07:06 2015.06.01 00:10 ZZBaseVariant EURUSD,M15: ZZ.GetZZExtremumPrice(10) = 2147483647.0 2015.07.13 22:07:06 2015.06.01 00:10 ZZBaseVariant EURUSD,M15: ZZ.GetZZExtremumTime(10) = 2015.05.29 21:15:00 2015.07.13 22:07:06 2015.06.01 00:10 ZZBaseVariant EURUSD,M15: ZZ.GetZZExtremumPrice(11) = 2147483647.0 2015.07.13 22:07:06 2015.06.01 00:10 ZZBaseVariant EURUSD,M15: ZZ.GetZZExtremumTime(11) = 2015.05.29 21:00:00 2015.07.13 22:07:06 2015.06.01 00:10 ZZBaseVariant EURUSD,M15: ZZ.GetZZExtremumPrice(12) = 2147483647.0 2015.07.13 22:07:06 2015.06.01 00:10 ZZBaseVariant EURUSD,M15: ZZ.GetZZExtremumTime(12) = 2015.05.29 20:45:00 2015.07.13 22:07:06 2015.06.01 00:10 ZZBaseVariant EURUSD,M15: ZZ.GetZZExtremumPrice(13) = 1.09936 2015.07.13 22:07:06 2015.06.01 00:10 ZZBaseVariant EURUSD,M15: ZZ.GetZZExtremumTime(13) = 2015.05.29 20:30:00 2015.07.13 22:07:06 2015.06.01 00:10 ZZBaseVariant EURUSD,M15: ZZ.GetZZExtremumPrice(14) = 2147483647.0 2015.07.13 22:07:06 2015.06.01 00:10 ZZBaseVariant EURUSD,M15: ZZ.GetZZExtremumTime(14) = 2015.05.29 20:15:00

Ответов - 17, стр: 1 2 All

Scriptong: hoz пишет: В итоге, почему-то он периодически возвращает не как обычно бывает 0 или "не ноль" т.е. значение, а вот такое значение: 2147483647.0. С чем это связано? Если Вы читаете содержимое первого буфера индикатора (индекс 0), то все верно: индикатор указывает на отсутствие экстремума именно значением EMPTY_VALUE (2147483647). В МТ4 индикаторные буфера по умолчанию инициализируются именно значением EMPTY_VALUE. Чтобы изменить умолчательное значение, используемое в качестве пустого, на другое, используют функцию SetIndexEmptyValue(). В стандартном ZigZag именно так и поступили, указав в качестве пустого значения 0.0. К слову, в МТ5 по умолчанию буферы индикатора инициализируются нулем, а не EMPTY_VALUE, что дает много головной боли при переводе индикаторов с MQL4 на MQL5 и обратно.

hoz: Игорь, здравствуйте. Замечен странный момент. Пользуюсь Вашими зиг-загами уже не один месяц, но сегодня вот что увидел в терминале: Что это может такое быть? Глюк терминала что-ли?

Scriptong: hoz пишет: Игорь, здравствуйте. Замечен странный момент. Пользуюсь Вашими зиг-загами уже не один месяц, но сегодня вот что увидел в терминале: Доброго времени суток. Укажите, пожалуйста, о каком именно из зиг-загов идет речь.


hoz: Scriptong пишет: Укажите, пожалуйста, о каком именно из зиг-загов идет речь. Добрый ночи) Вот об этом, разумеется... Индикатор NeoZigZag_Close из статьи Новый ZigZag.

Scriptong: hoz пишет: Добрый ночи) Вот об этом, разумеется... Индикатор NeoZigZag_Close из статьи Новый ZigZag. У меня все ОК.

hoz: В том-то и дело, что уже не первый месяц им пользуюсь. Тока вот на днях такая фигня началась. А до этого сколько терминалов не ставлю, постоянно при старте терминала исчезают все панели инструментов. Приходится нажимать вид - панель инструментов и выбирать каждую, чтоб появилась. То ли какая-то несовместимость новых билдов недоделанных, то ли что-то ещё. Кроме МТ4 больше, ни с чем граблей не обнаружено в системе...

Sergey: hoz пишет: Тока вот на днях такая фигня началась. Если это тебя успокоит, у меня на одном из терминалов такая же фигня. Три терминала установлены на одном компе, а глючит только один с прошлого воскресенья. Вчера переустановил, все устаканилось по умолчанию.

hoz: Так это всё понятно. Но я уже переустанавливал его. Хватает на некоторое время, и начинается снова...

Scriptong: Давайте попробуем путем вспоминания подробностей установить причину. Итак, какой билд терминала используется, на какой ОС, какой брокер, какой тип счета, как была получена история котировок.

hoz: Scriptong пишет: Давайте попробуем путем вспоминания подробностей установить причину. Итак, какой билд терминала используется, на какой ОС, какой брокер, какой тип счета, как была получена история котировок. ОС Win 7 x64. Брокеры Alpari и Oanda. На демке сваливается даже всё. История котировок подкачивается по F2 изначально, а потом сама подкачивается, т.к. запускаю ежедневно.

Balbesik: hoz пишет: ОС Win 7 x64. Брокеры Alpari и Oanda. На демке сваливается даже всё. История котировок подкачивается по F2 изначально, а потом сама подкачивается, т.к. запускаю ежедневно. Хорошая контора, очень консервативная и все подряд билды (этих уе...в, что бы мы им "вылизывали") не ставит. Была у меня подобная картинка на ЗигЗаге Nena - смотри программную ошибку.

Scriptong: hoz пишет: ОС Win 7 x64. Брокеры Alpari и Oanda. На демке сваливается даже всё. История котировок подкачивается по F2 изначально, а потом сама подкачивается, т.к. запускаю ежедневно. У меня, кстати, все те же самые исходные данные (ОС и компания). Запустил только что индикатор, ничего в нем не переделывая: Снова все ОК. Скорее всего, в Вашем терминале какая-то проблема с историей котировок. Попробуйте использовать мою версию истории.

hoz: Игорь, возник попутный вопрос по Вашему индикатору. Как реализовать момент, чтоб следующий экстремум зиг-зага рисовался только тогда, когда между нулевым баром и предыдущим экстремумом было расстояние, например, 5 баров? Т.е. если меньше, то не рисуем? Я что-то пытался, но на выходе не то что-то получается.

hoz: На данный момент у меня вот такой вариант получился. Если от туда убрать принты, то становится видно что я делал. Принтовал спецом, чтоб отследить что происходит. Тем не менее, наблюдаю, что разница между 0-вым баром и баром с индексом равным индексу бара последнего экстремума не является адекватной. Причину понять не смог...

Scriptong: hoz пишет: На данный момент у меня вот такой вариант получился. В этом варианте слишком много ошибок, чтобы можно было обоснованно продолжать разбор проблемы. Так, сразу бросается в глаза, что объявлен массив, который, видимо, должен использоваться в качестве буфера индикатора - ZZTimeBuf. Но, во-первых, этот массив не может быть буфером, т. к. он объявлен как статический. А, во-вторых, этот массив так и не стал буфером, т. к. не привязан ни к одному из трех предполагаемых буферов (в IndicatorBuffers указано 3). Ну а в принципе указанная задача может быть решена без ввода дополнительного буфера. Примерный алгоритм таков: 1. Запоминаем дату/время последнего экстремума ZZ. 2. На каждом новом баре определяем, какой индекс бара соответствует сохраненной дате/времени. 3. Сравниваем полученный индекс с заданной величиной (через сколько баров можно регистрировать экстремум) и, если можно регистрировать экстремум по стандартному критерию, то регистрируем новый экстремум ZZ.



полная версия страницы