Макс = Бар 2 < Бар 1 бар 1 > бар 0
Билл Виллиамс даже сигналы на эту тему придумал.
Разве это не очевидно, в чем подвох то?
Подвох, вероятно, в том, что при определенном соотношении бар2 / бар1 / бар0,
например, |бар1-бар2| <= 2 пункта или |бар1-бар0| <= 2 пункта,
при условии, что за бар2 / бар1 / бар0 не следует более высоких точек,
бар1 не может считаться максимумом.
Макс = Бар 2 < Бар 1 бар 1 > бар 0
Билл Виллиамс даже сигналы на эту тему придумал.
Разве это не очевидно, в чем подвох то?
то что вы здесь написали полная чушь, это ни есть пики МАКДи, мне нужен алгоритм реально рассчитывающий пики, экстремумы МАКДи...
Часто бывает так, что что-то кажется чушью до тех пор, пока не пытаешься это понять.
Программно определить пики очень легко, при такой постановке вопроса других ответов скорее вы не получите, вам был задан конкретный вопрос -чем подвох, то есть чем пик отличается от локального максимума в данной задаче..
Тот же Билл Виллиамс для нахождения фракталов использует специфический алгоритм, можете использовать его.
Вариант Forsage-а, мне тоже понравился. А откатный строится так. Движемся в направлении времени, фиксируем макс. и мин. Допустим находимся на верху и у нас есть максимум. Если цена прошла от этого максимума вниз скажем 20%, тогда он считается вершиной. И наоборот.
Все намного проще. По фракталам определяються конкретные точки вершин или впадин и затем на основании дополнительного анализа определяем вершины верхней половины МАСДа или нижней, также еще можно использовать алгоритм поиска максимумов и минимумов с конкретным допуском расхождения.
iNoise допуск на игнорирование небольшого колебания ayTemp5 - исходные данные цены ayTemp3 - исходные данные МАСД int IxMax=iCount-1; int IxMin=iCount-1; IxLeft=0; for (Rx=iCount-1;Rx>=0;Rx--){ if (ayTemp3[Rx]>ayTemp3[IxMax]) IxMax=Rx; if (ayTemp3[Rx]<ayTemp3[IxMin]) IxMin=Rx; if ((IxMax>IxMin)&&(IxMin>Rx)) { if (((ayTemp3[Rx]-ayTemp3[IxMin])/Point)>iNoise){ ayTemp4[IxMax]=ayTemp5[IxMax]; // "+" признак максимального значения функции // сохранение самой левой позиии экстремума в правом положении указателя if (MathAbs(IxRight)<IxMax) IxRight=ayTemp5[IxMax]; IxMax=Rx; } } if ((IxMax<IxMin)&&(IxMax>Rx)) { if (((ayTemp3[IxMax]-ayTemp3[Rx])/Point)>iNoise){ ayTemp4[IxMin]=-ayTemp5[IxMin]; // "-" признак минимального значения функции // сохранение самой левой позиии экстремума в правом положении указателя if (MathAbs(IxRight)<IxMin) IxRight=-ayTemp5[IxMin]; IxMin=Rx; } } } ayTemp4[IxMax]=ayTemp5[IxMax]; ayTemp4[IxMin]=-ayTemp5[IxMin];
Народ, вы что хотите дивергенции автоматизировать?
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Вы принимаете политику сайта и условия использования