ТА столетней давности 2. По следам трейдера PeV. Пост № 28.

По названию заметки вы, наверное, поняли, что речь пойдет о Т(орговой) С(истеме), основанной на индикаторе из предыдущей заметки.
Конечно, используемые в ТС дополнительные индикаторы появились гораздо позже. Лейн придумал стохастик, если мне не изменяет чувство времени и память, где-то в 70-х годах прошлого века. Но все равно – это уже давно стало классикой ТА — многие из читающих тогда или еще не родились, или послали бы к психиатру любого, кто бы предположил, что они будут торговать на бирже…

Но обо всем по порядку. Давайте договоримся сразу – сам индикатор тренда не генерирует торговые сигналы, а является фильтром для них. Т.е., если индикатор показывает растущий тренд – работаем от лонга, падающий – от шорта.
Я предлагаю использовать двойную фильтрацию – два трендовых индюка, ловящих разную волатильность. Т.е., в рамках общего тренда, определенного индюком с большей волатильности, с помощью индюка с меньшей волатильностью вычленяем участки для открытия позиции (индикаторы противофазны) и участки для фиксации прибыли (синфазны).

Тренд показывается, когда индикаторы синфазны – зоны фиксации, остутствие тренда – открытие позиции.
Для это нужно сделать копии индикатора, обозвать их, например, Classic Trend CH1 и Classic Trend CH2 и сделать в них разные глобальные переменные – последняя строчка индикатора «CH1» и «CH2».
Тогда тренды можно определить так:

{Бычий тренд}
CH1:=ExtFml(«GV.GetVar»,»CH1″) < C;
CH2:=ExtFml(«GV.GetVar»,»CH2″) < C; CH1 AND CH2 {Можно записать для экономии так: CH1*CH2 } {Медвежий тренд} CH1:=ExtFml(«GV.GetVar»,»CH1″) > C;
CH2:=ExtFml(«GV.GetVar»,»CH2″) > C;

CH1 AND CH2

Этот код нам по-любому понадобится при фильтрации торговых сигналов, так что пусть будет.
Для младшего индикатора опцию учета предыдущего экстремума я отключил – ведь его задача в данном контексте не «держать» тренд, а фильтровать зоны открытия/фиксации.

На сегодня пока все. На днях продолжим строить ТС…

Николай Онопа
01-06-2008 17:12

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

изменил последние строчки индикатора 1-го как :

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

и второго как:

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

и прописал в трендах эксперта

{Бычий тренд}
CH1:=ExtFml(«GV.GetVar»,»CH1″) < C;
CH2:=ExtFml(«GV.GetVar»,»CH2″) < C; CH1 AND CH2 {Медвежий тренд} CH1:=ExtFml(«GV.GetVar»,»CH1″) > C;
CH2:=ExtFml(«GV.GetVar»,»CH2″) > C;

CH1 AND CH2

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

Петр нАшков

01-06-2008 17:44

))) Ну… так об этом я собирался писать — как построить ТС. От нуля до эксперта (робота).

Знаете выражение Джо ДиНаполи — лучше упустить возможность, чем потерять капитал? ))) В обведенынх вами местах просто нет достойной возможности для захода, когда индикаторы противофазны. Ну… таковы особенности этого инидкатора. Он же в отличии от более продвинутых не подстраивается под волатильность…))) Но! Дальше, в сочетании со Стохастиком и др. я, надеюсь, покажу как выжать из ТС на основе классического тренда максимум. А эти места — что ж… могу повторить присказку Джо или «всех денег не заработаешь».))))

Поймите, что этот цикл заметок несет скорее демонстрационно-обучающую функцию, чем практическую. Работать это, конечно, все будет, и неплохо работать, но есть более точные, достоверные индикаторы тренда, мой последний Range Dyn, например. Да и его предыдущая версия гораздо достоверней ловит тренд.Он ведь тоже масштабируемый.
Короче, я перед собой ставил задачу — во-первых. показать, что как и в любой области знание основ необходимо, а во-вторых, объяснить, как пишутся инидкаторы, эксперты, роботы в Метастоке. Именно на примере этого индикатора. Не самого плохого, прямо скажем.)))

Николай Онопа

01-06-2008 18:47

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

Петр нАшков
01-06-2008 19:11

{Вводимые параметры}
K1:=Input(«Волатильность %x10 (0 — из peV™ FIBO)»,0,800,3)/10;
DF:=Input(«1 — учет предыдущего экстремума»,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); {Разница двух последних понижающихся впадин. При включенной опции «Учет пред. экстремума» — иначе=0} HD:=DF*If(H1 > H2, H1-H2, 0); {Разница двух последних повышающихся пиков. —//—}

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

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

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

Сравнивайте. Ошибка очевидна. И еще. Нет необходимости для копии индикатора менять что-то, кроме имени глобальной переменной в последней строчке.

B D
03-06-2008 18:15

Круто сразу опыт виден.
А я у себя тестирую на пересечениях, т.е. работаю по направлению старшего индюка, а по сигналам младшего (при переходе в противофазу) поза закрывается.
Петр а как отследить экстремум в синфазе, чтобы еще лучше позу закрыть? Судя по этой заметке у Вас кое-что наработано.
ОТ чайника могу предложить следующий фильтр от убытков:
Итак поза с убытком закрывается только по сигналу старшего индюка, а если есть профит (с учетом комиссии брокера ест-но), то по младшему. Т.е. в итоге когда младший индюк скачет не будет убыточных перезаходов.

Осмелюсь предложить для фиксации и захода такой популярный индюк как RSI. В нашем случае можно работать по 6 периодам. Параметры линий можно стандартные 70 и 30 для большего кол-ва сделок 65 35 для меньшего 80 20. Вообще там поиграться можно и подобрать.
Петр очень ждем продолжения заметок по ТС.

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

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


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

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

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



Denoy.ru