Смотри, как бесплатно скачать роботов
Ищи нас в Telegram!
Ставь лайки и следи за новостями
Интересный скрипт?
Поставь на него ссылку - пусть другие тоже оценят
Понравился скрипт?
Оцени его работу в терминале MetaTrader 5
Индикаторы

ZigZag on Parabolic SAR - индикатор для MetaTrader 4

Просмотров:
3522
Рейтинг:
(2)
Опубликован:
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 Экстремумы по времени их определения:

AOC2P4N3 AOC2P4N3

Индикатор измеряет производную по ускорению ма

Para_B Para_B

По просьбе maks741: Parabolic SAR - все периоды на диапазоне М1

(M) High-Low Channel (M) High-Low Channel

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

ytg_time_zone ytg_time_zone

По просьбе poruchik. Индикатор временных зон с использованием отношений чисел Песавенто.