Обновлённый клиентский терминал MetaTrader 4 build 201 - страница 7

 
Да, смещение делать можно. Изменяем код так:
int init()
  {
   IndicatorBuffers(4);
//---- drawing settings
   SetIndexStyle(0,DRAW_ZIGZAG);
   SetIndexStyle(1,DRAW_ZIGZAG);
   SetIndexShift(0,10);
   SetIndexShift(1,10);

//---- indicator buffers mapping



и видим


 
Да, смещение делать можно. Изменяем код так:
int init()
  {
   IndicatorBuffers(4);
//---- drawing settings
   SetIndexStyle(0,DRAW_ZIGZAG);
   SetIndexStyle(1,DRAW_ZIGZAG);
   SetIndexShift(0,10);
   SetIndexShift(1,10);

//---- indicator buffers mapping



и видим



Спасибо!
 

Мой алгоритм позволяет искать зкстремумы на других ТФ :)
Речь не об этом. Интересен алгоритм зигзага, чтобы при единых настройках для всех таймфреймов экстремумы зигзагов со всех таймфреймов сходились в точках экстремумов. Естественно, при этом на одном луче зигзага со старшего таймфрейма укладывается несколько лучей с более мелких таймфреймов. Есть зигзаги, у которых надо подбирать параметры для того, чтобы экстремумы зигзагов с разных таймфреймов сходились в одной точке.
Я не говорю, что Ваш зигзаг не способен на такое.
Все Зигзаги имеют право на существование. Тут вопрос в том, как использовать в дальнейшем в работе зигзаг. Что нужно с помощью этого зигзага получить?
Идеально было бы найти такой алгоритм, который бы раскладывал график на волны Эллиота. Но это, скорее всего, не реально.
В 153 номере журнала ФорексМагазин статья Ларри Песавенто. Там приведены его "Модели Песавенто" (Паттерны Песавенто). Алгоритм зигзага, на котором построены его паттерны трендовый. То есть в основе того зигзага лежит трендовый индикатор. У него два параметра: количество баров и количество пунктов (min. Bars. и min. Size). И ничего, работает. Правда, иногда коряво работает. Большинство торговых стратегий в терминале Ensign, который использует Песавенто, использует этот встроенный зигзаг.
Основные алгоритмы зигзага
1) стандартной из МТ4
2) трендовый
3) свинговый (Ганна)
4) рекурсивный

Из всех приведенных здесь алгоритмов интереснее всего работают зигзаги, использующие в своей основе стандартный МТ4. У каждого из приведенных здесь алгоритмов есть интересные моменты. Их необходимо исследовать. Чтобы понимать, в каких ситуациях применять тот или иной алгоритм зигзага. Но исследование - работа сложная. Найти для такой работы энтузиастов не просто.
 
Посмотрел на рекурсивный ZZ. Алгоритм все же недостаточно прозрачен, хотя, конечно, короче стандартного.

ОК, а что мешает просто разметить вначале потенциальные вершины (три бара, в которых средний - экстремальный в нужную сторону), а потом, при втором проходе, убрать лишние так, чтобы свинги были не меньше определенной величины (скажем, 50 пунктов)?
 

2 klot: твоя версия намноооого короче стандартной. Надо на него посмотреть, что он рисует...

Стараюсь :)

Есть идея сделать отдельный раздел для Zigzag'ов и Swing'ов.
Идея хорошая.
Экстремумы рынка имеют исключительное значение. Зигзаг помогает найти экстремумы. Зигзаг достоин того, чтобы для него был заведен отдельный раздел.
 

ОК, а что мешает просто разметить вначале потенциальные вершины (три бара, в которых средний - экстремальный в нужную сторону), а потом, при втором проходе, убрать лишние так, чтобы свинги были не меньше определенной величины (скажем, 50 пунктов)?
Ничего не мешает. Подробно не разбирался с алгоритмом. Мне было важно собрать зигзаги с разными алгоритмами. Чтобы получился универсальный зигзаг. И основную задачу для себя поставил так - попытаться применить зигзаг для торговли. Найти для зигзага такие алгоритмы его использования, чтобы он давал максимальную отдачу.
 
Понятно, что "правильного" зигзага не существует. Это, наверно, и есть фаззи лоджик, о которой говорит Rosh. Какой критерий заложишь - так и получится. Даже в простейшем двухпроходном алгоритме, который я только что предложил, можно по разным критериям построить разные ZZ. Например, вот возможные критерии фильтрации во втором проходе:

- "минимальный профит 50 пунктов",
- "максимальный откат после каждого мелкого свинга внутри большого не более 30 пунктов",
- "минимальное количество баров в свинге - 5",
- и т.д. и т.п.

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

- "минимальный профит 50 пунктов",
- "максимальный откат после каждого мелкого свинга внутри большого не более 30 пунктов",
- "минимальное количество баров в свинге - 5",
- и т.д. и т.п.

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


Если под качеством сигнала понимать истинность текущего экстремума, то наверное тут уместно будет использование каких-нибудь фильтров, которые должны "отсеевать" ложные экстремумы. Мой алгоритм допускает применение таких фильтров в принципе. Я правда не пробовал сейчас нейросети меня увлекли :) , но по алгоритму смотрите:

Задаем начальные условия для экстремумов

lasthighpos=Bars; lastlowpos=Bars;
lastlow=Low[Bars];lasthigh=High[Bars];

Далее начинаем медленно двигатся из глубин истории к сегодняшнему дню

for(shift=Bars-ExtDepth; shift>=0; shift--)
{
Постоянно смотрим все экстремумы, которые оразуются на отрезке в ExtDepth баров

curlowpos=iLowest(NULL,0,MODE_LOW,ExtDepth,shift);
curlow=Low[curlowpos];
curhighpos=iHighest(NULL,0,MODE_HIGH,ExtDepth,shift);
curhigh=High[curhighpos];

Если текущий экстремум меньше последнего зафиксированного , значит на рынке либо флет, либо down тренд.
Просто запомним запомним текущий Хай.
//------------------------------------------------
//--- high
if( curhigh<=lasthigh ) { lasthigh=curhigh;}
else
{

Тут начинается самое интересное!

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

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

FiltrHigh(); // Фильтр макушек

Если мы решили, что это настоящий экстремум (точка разворота), значит пишем zz[curhighpos]=High[curhighpos];
Если наш фильтр показал, что это продолжение тренда пишем zzH[curhighpos]=High[curhighpos];


lasthighpos=curhighpos;
lasthigh=curhigh;
}
//------------------------------------------------
Аналогично для донышка.

Ну вот собственно такова идея. Вариант построения системы торговли на зиг-заге. Причем фильтр можно динамически подстраивать и сразуже смотреть по истории результат подстройки - точки массивов zz[] и zzH[] ...