Экономный ZigZag - страница 3

 
klot >>:

К сожалению, убедиться в том, что экстремум больше не изменится, можно только тогда, когда появится новый экстремум.

Ведь новый экстремум высчитывается на основе этих параметров, когда соблюдены некоторые условия. Ладно я так понял что вы используете его в слепую и никто не задумывался об этих параметрах.

nen >>:

В алгоритме оптимизации расчетов ZigZag_NK имеется ошибка.

Соответственно, эта ошибка перешла и во все зигзаги, сделанные на основе ZigZag_NK.

А что за ошибка и в чем это проявляется?

А вот строить автомат на основе этого зигзаа я бы не стал.

Я и не строю автомат, а делаю скрипт для оценки сигналов по типу https://www.mql5.com/ru/articles/1557 Но с другими исходными данными и другим выходом и хотел использовать ZigZag_NK. Придется пользоваться пока простым зигзагом.

 
Разобрался. Ошибку допустил я. В операторе switch пррпустил оператор break. Сейчес лоступ в Интернет с КПК. Не могу исправленный код выложить.
 
nen писал(а) >>

За основу взят зигзаг Николая Косицина.
Но внесены исправления и небольшие дополнения.

1) Исправлена прорисовка зигзага. Переломы зигзага всегда находятся на High
или Low бара. Повисших в воздухе переломов нет.
Также при подкачке истории зигзаг не повисает в "воздухе".

2) Расчет зигзага производится только тогда, когда цена выходит за пределы
уже посчитанной части нулевого бара. То есть не на каждом тике.
3) Введена внешняя переменная, которая задает количество баров,
на которых рассчитывается зигзаг.

Толково, старый зигзаг идет в карзину.

 

Исправил ошибки и недоработки.

Исправленные версии ZigZag_NK_ и MultiZigZag в архиве.

Теперь несколько слов об "ошибке". Стал проверять, что сохраняется в переменных для оптимизации вычислений.

В переменных LASTHIGHEST и LASTLOWES иногда сохранялись действительно последние экстремумы зигзага. А иногда 0 (ноль).

Как же может быть значение последнего максимума (минимума) быть равным 0 ?

Тем более, в статье, где было описание оптимизации вычислений, некоторые положения (по моему мнению) не соответствовали тиким "манипуляциям" с этими переменными. Это и смутило.

Вывод из этой ситуации таков. Вышеуказанные переменные не имеет смысла использовать. Главное - время баров, которым соответствуют значения этих переменных. Время баров фиксирует точки, с которых необходимо делать пересчет. Соответственно, можно еще немного упростить код за счет возможного удаления этих переменных. Упрощение кода в данном случае ведет к ускорению расчетов.

В исправленных версиях зигзагов эти доработки не сделаны, так как версии были сделаны раньше, чем возникло вышеописанное понимание работы этих переменных.

Файлы:
 

Попробовал удалить LASTHIGHEST и LASTLOWES. Все работает и без этих переменных.

Упрощаем, упрощаем и еще раз упрощаем... как завещал...

Код короче и меньше накладных расчетов. Перестройка и ускорение...

 
nen >>:

Исправил ошибки и недоработки.

Исправленные версии ZigZag_NK_ и MultiZigZag в архиве.

Перезалейте в зипе. Качается пустой архив. Подозреваю не нравится рар.

 

Все качается. Но это промежуточные версии.

И еще. Стал прогонять в тестере. А потом для сравнения на истории.

Иногда в режиме реального времени и на истории не совпадают экстремумы. Это не есть гуд.

Осталось только с этой проблемой разобраться.

В отладочной версии действительно мультизигзаг получился. Можно и на текущем тф и на вышестоящих тф строить зигзаги, а выводить на текущем.

Без применения icustom().

 

Зигзаг, из-за которого создана эта веточка в архиве.

Можно выводить 3 зигзага как на текущем таймфрейме, так и на данных со старших таймфреймов.

Описание параметров в тексте индикатора.

Сейчас по умолчанию настроен для вывода зигзагов с H1-H4-D1.

Не устранял следующее.

При отрисовке в режиме реального времени (иногда) строится один зигзаг.

А при прогоне на истории некоторые переломы исчезают.

Прогонял в тестере этот зигзаг и первоисточник - ZigZag_NK. Построения один к одному.

Этот недостаток присутствует в обоих. Хотя первоисточник сильно переработан.

Но основной алгоритм сохранен.

Скорее всего это от того, что пересчитывается маленькое количество баров в режиме реального времени.

А необходимо делать пересчет для последних 3-х переломов зигзага.

При необходимости можно добавить еще один - 4-ый - зигзаг. Сейчас выводится 3 зигзага и заняты 6 индикаторных буферов.

Два индикаторных буфера остались свободными.

Добавление четвертого зигзага - на усмотрение пользователей и для желающих потренироваться в программировании.

Хорошее упражнение.

Предыдущие индикаторы, выложенные в этой веточке форума, являются частными случаями этой последней версии.

Файлы:
 
nen >>:

Все качается. Но это промежуточные версии.

И еще. Стал прогонять в тестере. А потом для сравнения на истории.

Иногда в режиме реального времени и на истории не совпадают экстремумы. Это не есть гуд.

Осталось только с этой проблемой разобраться.

В отладочной версии действительно мультизигзаг получился. Можно и на текущем тф и на вышестоящих тф строить зигзаги, а выводить на текущем.

Без применения icustom().

Эта проблема как-то решена?

 

Не решена.

Скорее всего, это из-за ошибки, про которую писал чуть ранее.

Неверное сохранение последнего минимума (последнего максимума).

==================

При расчете зигзага используются два независимых цикла.

А параметры для пересчета на непосчитанных барах сохраняются без учета независимости циклов.

==================

Надо делать свой алгоритм оптимизации. И уже понятно как.

Любой алгоритм необходимо строить от поставленной задачи. Без жесткой привязки к заранее известной схеме.

Пусть даже эта схема показала в прошлом хорошие результаты.

Но она была придумана под другие задачи.

Механический перенос ее на все последующие задачи дает сбои...

==================

В основе зигзага оставляем только три параметра: ExtDepth - ExtDeviation - ExtBackstep.

Остальное все свое.

Интересно было бы узнать, кто придумал алгоритм, основанный на этих трех параметрах.

Знаю, что Rosh переводил этот алгоритм на mql4. Может быть, Rosh подскажет, кто придумал этот алгоритм.

Алгоритм замечательный. Пусть и вызывает множество нареканий. Просто он не был доведен до кондиции.

Потому и нарекания.

Причина обращения: