Ставь лайки и следи за новостями
Поставь на него ссылку - пусть другие тоже оценят
Оцени его работу в терминале MetaTrader 5
ZigZag on Parabolic SAR - индикатор для MetaTrader 4
- Просмотров:
- 3561
- Рейтинг:
- Опубликован:
- 2010.06.23 12:13
- Обновлен:
- 2015.12.14 12:09
- Нужен робот или индикатор на основе этого кода? Закажите его на бирже фрилансеров Перейти на биржу
В этой реализации Зигзага в качестве порога чувствительности используется Параболик.
В обычном Зигзаге определение экстремумов происходит при уходе цены от экстремума за некоторый порог, задаваемый обычно в пунктах или %% цены экстремума.
Здесь, в отличие от обычного Зигзага, где порог фиксированный, используется порог динамический. Полная аналогия со способом постановки стопов - фиксированный и трейлинг.
Другие особенности:
Работа по нулевому бару. Большинство реализаций используют только полностью сформированные бары. Здесь же, после пересечения ценой порога (переворота Параболика), индикатор не ждет следующего бара, чтобы отрисовать экстремум.
У реализаций Зигзага, где противоположные экстремумы могут быть определены на одном баре (вертикальный фрагмент), возникают проблемы с приоритетом этих экстремумов. Обычно приоритет устанавливают исходя из инерционности рынка, что не всегда соответствует действительности. В этом Зигзаге такой проблемы нет - все однозначно определяется Параболиком. Другое дело, насколько соответствует действительности входящий в MetaTrader 4 Параболик. Но это уже не ко мне - проблему "первородства" экстремумов я переложил на него. И тот, вроде, справляется...
Программный код для организации пересчета истории, пропущенных и предпоследнего баров использует не функцию IndicatorCounted(), а заменяющую ее конструкцию. Логика ее работы, в принципе, аналогична IndicatorCounted(), но более однозначна (для меня, по крайней мере). Я не уверен, исходя из описания в Документации, что IndicatorCounted() будет обнуляться всегда, когда есть, что пересчитать заново; скорее наоборот. Но пока я различий в работе IndicatorCounted() и моей конструкции не отметил. Но тем не менее... К тому же, возможно - не проверял - выигрыш во времени, т.к. не используется вызов функции.
static int BarsPrev; // значение Bars на пред.баре bool MissBars=Bars-BarsPrev>1; // 1 - есть пропущенные бары if(MissBars && BarsPrev!=0) BarsPrev=0; // пропущенные бары в процессе - пересчет заново int limit=Bars-BarsPrev-(BarsPrev==0); // кол-во пересчетов BarsPrev=Bars; // обновление BarsPrev for(int i=limit; i>=0; i--) // цикл по непосчитанным и предпоследнему барам {
Параметры индикатора (первые два) идентичны параметрам Параболика стандартной поставки MetaTrader 4.
Добавлены параметры:
ExtremumsShift - определяет положение экстремумов по оси времени: по моменту их определения (false) или по их фактическому положению (true).
History - ну, тут понятно. Впрочем, индикатор считает очень быстро, так что этот параметр можно вообще убрать. Как и предыдущий - тот скорее иллюстрация к способу ловли экстремумов, чем что-то полезное. Хотя... Так или иначе, убрать из объявления этих переменных extern всегда можно.
ExtremumsShift = true Экстремумы на своих фактических местах:
ExtremumsShift = false Экстремумы по времени их определения:
Индикатор измеряет производную по ускорению ма
Para_BПо просьбе maks741: Parabolic SAR - все периоды на диапазоне М1
Канал, образованный максимумом и минимумом за определённый период и средняя этого канала.
ytg_time_zoneПо просьбе poruchik. Индикатор временных зон с использованием отношений чисел Песавенто.