Возвращаясь к Classic Trend. По следам трейдера PeV. Пост № 29.

Прежде, чем продолжать с ТС, давайте вернемся на недолго к самому индикатору тренда.
Просто хочу показать, что еще в рамках столетнего ТА можно с индюком сделать.
Для начала, давайте введем возможность выбора — переключаться по пробитию канала High (Low) цены (как в старом варианте) или ценой закрытия бара. Для этого добавим к вводимым параметрам соответствующее поле.

HL:=Input(«0 — переключение по High Low, 1 — по Close»,0,1,0);

а в теле индикатора изменим соответствующую секцию на

{Сигналы переключения}
LE:=Cross(IF(HL,C,H),Ref(HN,-1)); {Пробитие ценой верхней границы канала. Если HL=1, то по пробитию ценой закрытия бара}
LX:=Cross(Ref(LN,-1),IF(HL,C,L)); {Пробитие ценой нижней границы канала. —//—}

Теперь давайте сделаем возможность плавного регулирования учета предыдущего экстремума. Правило переключения с плавной границей будет звучать так (для переключения в аптренд): Переключение происходит только тогда, когда цена становится выше последнего пика (как в классике) и — это уже опция — разница между ценой и последним пиком больше, чем процент от разницы между двумя предыдущими впадинами. Т.е., при 100% индикатор будет работать как в старом варианте с включенной опцией, 0% — при выключенной опции, ну, а другие значения (больше или меньше 100%) позволят подстроить чуствительность индикатора.
Поле параметров опции теперь будет выглядеть так:

DF:=Input(«% от предыдущего экстремума»,0,200,0);

а соответсвующая секция:

{Вычисление границ канала с учетом предыдущего экстремума}
LD:=DF*If(L1 < L2, L2-L1, 0)/100; {Разница двух последних понижающихся впадин. При значении «% от предыдущего экстремума» > 0 — иначе=0}
HD:=DF*If(H1 > H2, H1-H2, 0)/100; {Разница двух последних повышающихся пиков. —//—}

Как видите, сразу возникает идея — не сделать ли этот процент функцией от, например, волатильности? — Можно. Но это уже не столетний ТА.)))

Текст инидкатора целиком (на всякий случай))):

{Вводимые параметры}
K1:=Input(«Волатильность %x10 (0 — из peV™ FIBO)»,0,800,3)/10;
DF:=Input(«% от предыдущего экстремума»,0,200,0);
HL:=Input(«0 — переключение по High Low, 1 — по Close»,0,1,0);

{Выбор источника значения волатильности}
K1:=LastValue(If(K1=0,ExtFml(«GV.GetVar»,»FIBO.K1″),K1)); {Если 0, то из инд. peV™ FIBO. Больше 0 — из окна параметров}
ZZ:=Fml(«peV™ ZigZag»); {Базовый ЗигЗаг }

{Определение экстремумов}
L1:= Trough(1,ZZ,K1); {1-я ближайшая впадина}
H1:= Peak(1,ZZ,K1); {1-й ближайший пик}
L2:= Trough(2,ZZ,K1); {2-я ближайшая впадина}
H2:= Peak(2,ZZ,K1); {2-й ближайший пик}

{Вычисление границ канала с учетом предыдущего экстремума}
LD:=DF*If(L1 < L2, L2-L1, 0)/100; {Разница двух последних понижающихся впадин. При значении «% от предыдущего экстремума» > 0 — иначе=0}
HD:=DF*If(H1 > H2, H1-H2, 0)/100; {Разница двух последних повышающихся пиков. —//—}

LN:=L1-HD; {Нижняя граница канала с учетом разницы двух последних повышающихся пиков}
HN:=H1+LD; {Верхняя граница канала с учетом разницы двух последних понижающихся впадин}

{Сигналы переключения}
LE:=Cross(IF(HL,C,H),Ref(HN,-1)); {Пробитие ценой верхней границы канала}
LX:=Cross(Ref(LN,-1),IF(HL,C,L)); {Пробитие ценой нижней границы канала}

{Переключение границ}
CH:=ExtFml(«Forum.Latch»,LE,LX,0,0); {Триггер-переключатель}
CH:=If(CH=0,HN,LN); {Если аптренд, то нижняя граница канала. Даунтренд — верхняя}
ExtFml(«GV.SetVar»,»CH1″,CH); {Вывод на экран с присвоением внешней переменной}
{ExtFml(«GV.SetVar»,»CH2″,CH);}

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

Похожие статьи:

Буду признателен, если поделитесь этой записью с друзьми:


Понравилась статья ? Подпишитесь на обновления:

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *



Denoy.ru