Вот и возник вопрос. Мой алгоритм верен вообще?
Алгоритм абсолютная глупость. Чтобы объяснить в чём глупость надо полностью написать код, а мне, извини, лениво.
Если коротко, то считая непустые значения ZZ надо их куда-то сохранять, а не просто принтовать и увеличивать счётчик.
Я написал алгоритм сбора последних непустых вершин зиг-зага.
Вот он:
Имеется инпут-переменная:
Зиг-заг имеет один буфер цены, а так же 1 парамтер i_ZZTF - таймфрейм, на котором он рисуется. По сути, второй параметр функии iCustom(), как я понимаю не играет здесь вообще никакой роли, поэтому там можно ставить 0, i_ZZTF или даже PERIOD_CURRENT. Я проверял, в любом случает выдаются одинаковые значения. Но вот почему-то, хотя я и собираю непустые значения в количестве i_extremumCountToCollect. Потом их печатаю. Но выводятся какие-то не совсем верные данные. Попадаются некоторые верные, а некоторые нет.
Вот и возник вопрос. Мой алгоритм верен вообще?
Я его упростил т.к. он в классе и там болше зависимостей. Поэтому я его вынес в простом виде в OnTick(). Тем более, значения и там и там одинаковые принтуются.
В глаза бросилось вот это:
if (ZZPrice == EMPTY_VALUE) continue;Вы ищите в буфере пустые значения , которые равны 2147483647 , но буфер может содержать и нули (0). А в остальном вроде всё правильно..
Алгоритм абсолютная глупость. Чтобы объяснить в чём глупость надо полностью написать код, а мне, извини, лениво.
Если коротко, то считая непустые значения ZZ надо их куда-то сохранять, а не просто принтовать и увеличивать счётчик.
Вы не внимательно прочитали вопрос. Про сохранение речи не было.
На самом деле, всё у меня сохраняется в класе, которые я началсегодня писать. Я его даже прилагаю.
А в посте выше я просто принтовал. он этого ничего не меняется. Видно же в первом сообщение закомментирнованная строка:
// setZZProperties(m_ZZProperties[cnt], i, ZZPrice);
Вот и сохранение.. Но, на данный момент, меня интересует больше не сохранение, а получение. Так что в моём вопросе есть все данные, как я понимаю.
В глаза бросилось вот это:
Вы ищите в буфере пустые значения , которые равны 2147483647 , но буфер может содержать и нули (0). А в остальном вроде всё правильно..Я ищу не пустые, а именно непустые значения т.е. экстремумы. 0 там быть не может т.к. в индикаторе у меня изначально все элементы буферного массива инициализируются пустым значением т.е.:
ArrayInitialize(g_ZZPriceBuf, EMPTY_VALUE);
Зиг-заг имеет один буфер цены, а так же 1 парамтер i_ZZTF - таймфрейм, на котором он рисуется. По сути, второй параметр функии iCustom(), как я понимаю не играет здесь вообще никакой роли, поэтому там можно ставить 0, i_ZZTF или даже PERIOD_CURRENT. Я проверял, в любом случает выдаются одинаковые значения. Но вот почему-то, хотя я и собираю непустые значения в количестве i_extremumCountToCollect. Потом их печатаю
Алгоритм правильный, сам так делаю. Но в рассуждениях 3 слабых момента. А где тонко - там и рвется. 1) Обычно, второй параметр имеет значение. Попробуйте поставить 5, 15, 30, 60 - должна быть разница. Хотя, возможно, в самом индикаторе этот параметр игнорируется. 2) в OnTick данные будут выводиться каждый тик, т.е. повторяться. Лучше поместить эти строки в OnInit или вынести в скрипт для разового исполнения. 3) если печатаете - то для оперативности лучше использовать функцию Alert
Алгоритм правильный, сам так делаю. Но в рассуждениях 3 слабых момента. А где тонко - там и рвется. 1) Обычно, второй параметр имеет значение. Попробуйте поставить 5, 15, 30, 60 - должна быть разница. Хотя, возможно, в самом индикаторе этот параметр игнорируется. 2) в OnTick данные будут выводиться каждый тик, т.е. повторяться. Лучше поместить эти строки в OnInit или вынести в скрипт для разового исполнения. 3) если печатаете - то для оперативности лучше использовать функцию Alert
1) А каким образом индикатор его может игнорировать? Я так понимаю, что если у меня есть параметр в индкаторе ТФ, то он влиичет на его выдачу, а если нет не понятно как он может на него влиять, на самом деле... Ставил разные периоды, возвращает что-то левое, а не те значения, которые этот индикатор отображает на графике.
2) Ну так правильно. Нам же нужно перепроверять каждые (смотря какой таймфрейм) сформированные вершины. А в ините отработает раз, найдет.. и всё. Смысл?
1) А каким образом индикатор его может игнорировать? Я так понимаю, что если у меня есть параметр в индкаторе ТФ, то он влиичет на его выдачу, а если нет не понятно как он может на него влиять, на самом деле... Ставил разные периоды, возвращает что-то левое, а не те значения, которые этот индикатор отображает на графике.
Второй параметр функции iCustom указывает на каком таймфрейме запускать индикатор. А если в параметрах или коде индикатора конкретно указано с каким таймфреймом работать вне зависимости от таймфрейма графика, на котором он запущен, то в таком случае и будет проигнорирован второй параметр функции iCustom.
Второй параметр функции iCustom указывает на каком таймфрейме запускать индикатор. А если в параметрах или коде индикатора конкретно указано с каким таймфреймом работать вне зависимости от таймфрейма графика, на котором он запущен, то в таком случае и будет проигнорирован второй параметр функции iCustom.
Я так и подумал. Но получается странно. Ведь, если мт4 может работать только с текущим таймфреймом, то тот параметр ни к чему. Да и вообще, если параметр можно задать самому, то второй параметр функции iCustom() излишество.
У себя я вопрос решил промудохавшись прилично. Получается, что тестер не работает с другими ТФ, кроме открытого графаки, на котором индикатор запущен. Понял я это т.к. в пятницу в риалтайме всё корректно отображалось в реал-тайме.
Я так и подумал. Но получается странно. Ведь, если мт4 может работать только с текущим таймфреймом, то тот параметр ни к чему. Да и вообще, если параметр можно задать самому, то второй параметр функции iCustom() излишество.
У себя я вопрос решил промудохавшись прилично. Получается, что тестер не работает с другими ТФ, кроме открытого графаки, на котором индикатор запущен. Понял я это т.к. в пятницу в риалтайме всё корректно отображалось в реал-тайме.
Точнее, тестер МТ4 не работает с несколькими таймфреймами. В реалтайм, прекрасно работает и в мультивалютном, и в мультитаймфремовом режимах. Для этого и существуют эти параметры. К тому же в параметрах не всех индикаторах указывается таймфрейм. Возьмите любой индикатор из поставки МТ4, там нет таймфрейма в параметрах.
То что тестер не работает с другим ТФ, кроме активного я уже сам понял и выше это отписал. А остальное не очевидно. Объясню свою точку зрения:
Второй параметр функции iCustom() - период. Как он влияет на нндикатор, если у индикатора нет такого параметра?
Это как запрограммировать машину и управлять скорость её движения, когда у машины нет такого параметра. Такая же ситуация и здесь. Какой-то не эффективный набро параметров. Вот этот период можно было смело опустить. Если не добавил в индикатор переменную периода, значит период текущий и всё.. Логично? И вопросов бы не было. А так хз посредством чего этот второй параметр влияет на индикатор, если влияет.
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Вы принимаете политику сайта и условия использования
Я написал алгоритм сбора последних непустых вершин зиг-зага.
Вот он:
Имеется инпут-переменная:
Зиг-заг имеет один буфер цены, а так же 1 парамтер i_ZZTF - таймфрейм, на котором он рисуется. По сути, второй параметр функии iCustom(), как я понимаю не играет здесь вообще никакой роли, поэтому там можно ставить 0, i_ZZTF или даже PERIOD_CURRENT. Я проверял, в любом случает выдаются одинаковые значения. Но вот почему-то, хотя я и собираю непустые значения в количестве i_extremumCountToCollect. Потом их печатаю. Но выводятся какие-то не совсем верные данные. Попадаются некоторые верные, а некоторые нет.
Вот и возник вопрос. Мой алгоритм верен вообще?
Я его упростил т.к. он в классе и там болше зависимостей. Поэтому я его вынес в простом виде в OnTick(). Тем более, значения и там и там одинаковые принтуются.