Вы упускаете торговые возможности:
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Регистрация
Вход
Вы принимаете политику сайта и условия использования
Если у вас нет учетной записи, зарегистрируйтесь
Сейчас написано огромное количество индикаторов, которые используют в своей основе или как внешний зигзаг, имеющий один буфер, используемый для вывода индикатора на график.
Поэтому продвигать двухбуферный зигзаг надо осторожно. Он будет несовместим со многими индикаторами.
Расшифруйте , пожалуйста, выделенную фразу.
По поводу стиля DRAW_ZIGZAG - именно поэтому и не стал делать, во-первых, опять же будет спорный алгоритм рассчета, и во-вторых - большинство сразу и не поймет как им пользоваться, а уж тупая замена в советниках или индикаторах будет грозить народными волнениями :)
Пример: DT-ZigZag - индикатор, который написал klot, через iCustom использует данные от внешнего ZigZag. Есть индикаторы по поиску различных паттернов, Gartley, в частности, также берут данные от внешнего зигзага. Есть и другие индикаторы, работающие через через iCustom с внешним ZigZag'ом.
Ко мне часто обращаются трейдеры с просьбой заменить в том или ином индикаторе в тексте кода индикатора встроенный стандартный ZigZag на ZigZag с исмправленными ошибками. Эти индикаторы работают с встроенным "однобуферным" зигзагом. Наверняка могут поступать предложения и для встраивания в текст вместо "однобуферного" "двухбуферного" зигзага, если "двухбуферный" будет активно продвигаться. А такое встраивание уже сложнее сделать.
Мое мнение - надо продвигать оба варианта ZigZag'a.
=====================
В тексте выложенного выше индикатора необходимо заменить строчку
на следующую строчку
Сейчас поменяю. Иначе в некоторых случаях будет пересчет и перерисовка зигзага задерживаться до прихода нового бара.
ZZ - один из самых сложных индикаторов в стандартном пакете МТ4, и в нем используются три последовательных прохода по полной истории. Явный перебор в сложности! Мне кажется, суть проблемы в том, что сам по себе стандартный алгоритм, зашитый в МТ4, навязывает и соответствующие параметры индикатора, которые, вообще говоря, кажутся крайне искусственными - все три параметра!
Самый логичный вариант - найти такой алгоритм, в котором остались бы только параметры, которые имеют для трейдера ясный смысл, а не легкий шок при попытке понять, как они влияют на его внешний вид. Прошу воспринимать это замечание не как критику именно твоего или стандартного варианта ZZ; это просто общее впечатление, вполне естественное для человека, не знающего его логики.
Для меня единственный естественный параметр - это минимальная разница в пунктах между соседними экстремумами индикатора, которая должна быть неким пороговым значением, задающим необходимость отрисовки его вершин. Это моя бритва Оккама. Например, если мы задаем 50 пунктов, то это означает, что на нарисованном ZZ не должно быть соседних вершин с разницей уровней менее 50. Довольно любопытно, что в стандартном алгоритме этого важнейшего параметра вообще нет...
Честно говоря, у меня пока четко оформленного алгоритма нет, но несколько дней назад я об этом очень крепко задумался и намерен создать абсолютно другой алгоритм. Подход к решению видится в рекурсии и только в ней, а не в последовательном многопроходном алгоритме. Рекурсия кажется здесь самым естественным подходом, автоматически учитывающим фрактальность чарта. На каждом этапе рекурсии предполагается искать по одному минимуму и максимуму ZZ и проверять, соответствуют ли они нашей бритве Оккама. Границы каждого самостоятельного отрезка проходят по точкам экстремумов.
Как только появится что-то работающее - выложу (если меня не опередят :)).
Второй вариант Zigzag'а - это построение эктремумов по системе окруженных вершин и донышков, описанный в книге Ларри Вильямса "Долгосрочные секреты краткосрочной торговли". В какой-то мере пересекается с Ганном.
Третий способ - нахождение экстремумов цены на определенных областях какого-либо индикатора. Этот способ мне показал один знакомый, точнее по его алгоритму я сделал такой Zigzag (еще в МТ3).
По поводу этого:
как видишь в этой ветке, не все так считают, многим хочется абсолютной точности как в аптеке, fuzzi logic вызывает иногда даже ярость :)
Как учитывать фрактальность цен - я пока не знаю, например, индикатор FRAMA я написал но больше к нему так и не возврашался. А как твои успехи с ним? :)
Насчет этого:
Честно говоря, у меня пока четко оформленного алгоритма нет, но несколько дней назад я об этом очень крепко задумался и намерен создать абсолютно другой алгоритм. Подход к решению видится в рекурсии и только в ней, а не в последовательном многопроходном алгоритме. Рекурсия кажется здесь самым естественным подходом, автоматически учитывающим фрактальность чарта. На каждом этапе рекурссии предполагается искать по одному минимуму и максмуму ZZ и проверять, соответствуют ли они нашей бритве Оккама. Границы каждого самостоятельного отрезка проходят по точкам экстремумов.
у меня пока есть только смутный алгоритм, предложенный Владиславом в самой длинной ветке на этом форуме. Необходимо найти критерии слома одной тенденции и возможное начало другой. Тут необходимо провести статистические исследования, хотя не факт, что это что-то даст. В общем такой мой расплывчатый ответ, грубо говоря - не знаю .
Первый уровень рекурсии (внешний): полная история. Ищем два глобальных экстремума. Проверяем их на наш критерий (разница - более 50). Делим историю в общем случае на 3 неравных отрезка (о нюансах типа "максимум и минимум на одном баре" пока не говорим), границы которых соответствуют найденным экстремумам. Запоминаем характер движения цены внутри каждого отрезка (рост или падение).
Второй уровень рекурсии: внутри каждого отрезка снова ищем экстремумы и проверяем бритвой. Соответствие бритве для соседних отрезков выполняется автоматически, так что не нужно вырезать что-то лишнее, как это сделано во втором проходе стандартного алгоритма. И так далее.
Понятно, что дробить до бесконечности мы не сможем. Для каждого из отрезков определим в качестве критерия окончания рекурсии нашу бритву Оккама. Никаких дополнительных параметров, они не нужны!
И где тут у нас фаззи, не пойму... Все однозначно, никаких экстремумов, висящих в воздухе: у нас же нет параметра ExtDeviation.
Вероятно, этот алгоритм аналогичен алгоритму Ларри Вильямса (с добавлением нашей бритвы), так как тот тоже по сути рекурсивен, но в сторону укрупнения экстремумов.
P.S. За FRAMA - большое спасибо. Я тоже с ним немного повозился и пока отложил. Надеюсь, скоро снова пригодится...
1. Строим аппроксимацию на всей истории по ЛР.
2. Строим распределение остатков от ЛР.
3. Задаем критерий в % нормального распределения для поиска макисмальных размахов от ЛР.
4. Находим эти экстремуму и на полученных интервалах ... идем по пункту 1 .2.3 и 4.
Критерием окончания рекерсии служит то, что дисперсия на всей ломанной линии меньше дисперсии от Yi-Yi+1.
Таким образом, у нас есть как-то обоснованный Zigzag, теперь начинаем отслеживать некий критерий при движении по истории с привязкой к известным (теперь априори) точкам привязки Zigzag'а(экстремумам) . Набираем статисику слома любого удобного критерия при подходе к точке перелома Zigzag'а, например, это может быть показатель Херста или размер сигмы. Если статистика работает, пытаемся создать алгоритм для работы уже в он-лайн. Надеюсь, понятно описал.
не сложный, но достаточно стабильный и скоростной алгоритм.
Экстремумы в функциях iLowest и iHighest расчитываются по MODE_CLOSE можно заменить на MODE_LOW и MODE_HIGH соответственно, но стабильность незначительно потеряется на "внешних" барах.
Единственный внешний параметр - это ExtDepth - временной диапазон для поиска экстремумов.
Это какие два экстремума? Два соседних хая или два соседних противоположных экстремума? (пара хай-лоу?). Собственно весь алгоритм из таких вот загадок состоит.
Это какие два экстремума? Два соседних хая или два соседних противоположных экстремума? (пара хай-лоу?). Собственно весь алгоритм из таких вот загадок состоит.
Ищем два экстремума на участке в ExtDepth баров (данный вариант по клозе)
curlowpos=iLowest(NULL,0,MODE_CLOSE,ExtDepth,shift);
curlow=Close[curlowpos];
curhighpos=iHighest(NULL,0,MODE_CLOSE,ExtDepth,shift);
curhigh=Close[curhighpos];
далее сравниваем
//--- high
if( curhigh<=lasthigh ) { lasthigh=curhigh;}
и
//--- low
if( curlow>=lastlow ) { lastlow=curlow; }
если образовался новый экстремум (для хай) - но он меньше старого - ничего не делаем, иначе смотрим все промежуточные экстремумы на участке между последним донышком и текущим хаем, и если новый хай больше старого убираем старый и ставим новый.
для лов аналогично (только наоборот).
при таком варианте не может быть двух макушек или двух донышек подряд.
2 klot: твоя версия намноооого короче стандартной. Надо на него посмотреть, что он рисует...
2 Rosh: мне надо ознакомиться с методом Владислава, есть непонятные термины. Это в большой эллиоттовской ветке здесь же?
2 klot: твоя версия намноооого короче стандартной. Надо на него посмотреть, что он рисует...
Стараюсь :)