Автор |
Сообщение |
AntColonel
Зарегистрирован: 03.05.2011
Сообщения: 213
Откуда: Новосибирск
|
000 писал(а): |
А если так.
Взяли точку 1, от неё пошло движение, потом разворот немного и дальше опять движение, в месте этого зигзага имеем еще одну потенциальную точку 1. Т.е. получается, что внутри одного движения 1-2 может построиться целый паттерн 1-2-3. |
Предлагаю не рассматривать новые потенциальные паттерны, пока не закончился (реализовался или отменился) основной (первый). |
|
|
Посмотреть профиль Отправить личное сообщение |
|
Mechanic
Зарегистрирован: 10.06.2008
Сообщения: 359
|
В качестве идеи.
Зигзаг для формализации волн и волновых паттернов плохо подходит. Волны могут иметь разный наклон, и отчётливая, продолжительная волна может быть пологой и не превысить размерность зигзага. Я волны формализую взвешенным мувингом, построенным по (H+L)/2: пока мувинг сохраняет своё направление (растёт или падает) - волна продолжается, поменял направление - началась новая. Ну и небольшой запас на болтанку закладываю (для валют - 1 пункт) - WMA считается изменившей направление, только если после разворота она прошла в противоположном направлении более этого запаса, более мелкие всплески не учитываются. Периодом мувинга регулируется порядок волн, которые нужно вычленить из графика, это аналог размерности зигзага. Потом находим экстремумы - максимумы над растущими участками WMA и минимумы под падающими - это и есть вершины волн. На рисунке видно, как это выглядит. Растущая WMA - зелёная, падающая - красная.
Ну и на этих волнах уже ищем любые волновые паттерны. В паттерне 1-2-3 ждём точку 3 до тех пор, пока продолжается нисходящая волна после точки 2. Как только нисходящая волна завершится, и цена пойдёт вверх, фиксируем минимум (точку 3) и ставим ордер на пробой точки 2. Если цена не дойдёт до ордера и снова развернётся вниз, образовав новую нисходящую волну, снимаем ордер - паттерн не отработал. |
|
|
Посмотреть профиль Отправить личное сообщение ICQ Number |
|
000
Site Admin
Зарегистрирован: 10.12.2007
Сообщения: 9106
|
Если так будет?
На цифры внимание не обращай.
Код: |
SetBarsRequired(sbrAll, sbrAll);
per = Param("период", 20, 15, 50, 5);
mov = MA((H+L)/2, per);
UpDw = Flip(mov > Ref(mov, -1), mov < Ref(mov, -1));
ll = Ref(LLV(L, BarsSince(!UpDw AND Ref(UpDw, -1)) +1), 0);
Ll1 = IIf(UpDw, Null, ValueWhen(UpDw AND !Ref(UpDw, -1), Max(Ll, Ref(Ll, -1)), 0));
Hh = Ref(HHV(H, BarsSince(UpDw AND !Ref(UpDw, -1)) +1), 0);
Hh1 = IIf(!UpDw, Null, ValueWhen(!UpDw AND Ref(UpDw, -1), Min(Hh, Ref(Hh, -1)), 0));
Up = HH1 == H;
Dw = Ll1 == L;
Plot(mov, "", IIf(UpDw, colorGreen, colorRed), styleThick);
Plot(C, "", colorBlack, styleCandle);
//Plot(BarsSince(mov < Ref(mov, -1) AND Ref(mov, -1) > Ref(mov, -2))+1, "222", colorBlack, styleOwnScale);
//Plot(Ll1, "", colorBlue);
//Plot(Hh1, "", colorBlue);
//Plot(UpDw, "UpDw", colorWhite, styleOwnScale);
PlotShapes(Up*shapeDigit2, colorRed, 0, yposition = H, 12);
PlotShapes(Dw*shapeDigit1, colorRed, 0, yposition = L, -12);
|
|
_________________ ceterum censeo carthaginem esse delendam
Удачи. Олег. |
|
Посмотреть профиль Отправить личное сообщение Посетить сайт автора |
|
Mechanic
Зарегистрирован: 10.06.2008
Сообщения: 359
|
000 писал(а): |
Если так будет? |
Олег, это к кому вопрос? Если ко мне, то малость не так. Во-первых, надо использовать всё-таки взвешенный мувинг - он гораздо лучше повторяет импульсы цены, а во-вторых, надо ввести допуск на болтанку мувинга, в пределах которого не засчитываем смену направления. Просто иногда бывает на восходящей волне шпилька вниз, которая волну, в общем-то, не отменяет, а мувинг меняет направление. Чтобы мувинг не реагировал на такие выбросы, приходится увеличивать его период, что тоже не есть хорошо, поскольку он тогда начинает отображать волны уже другого порядка. Лучше ввести дельту.
В общем, алгоритм такой: в начале графика определяем начальное приращение WMA - если оно положительное, значит мувинг растёт, т.е. идёт восходящая волна. Затем направление мувинга считается неизменным до тех пор, пока он не снизится на величину, превышающую заданную дельту от своего максимума. Горизонтальное движение и проседания меньше дельты направление не меняют. На АФЛ всё это получается довольно громоздко и тормознуто, так что у меня этот код в dll вынесен. Во вложении, вместе с исходником. Там одна функция:
Direction(array, delta);
Здесь array - мувинг, delta - допустимый зазор.
Возвращает 1, если мувинг растёт, -1, если падает и 0 в начале графика, когда направление ещё не определено. |
|
|
Посмотреть профиль Отправить личное сообщение ICQ Number |
|
000
Site Admin
Зарегистрирован: 10.12.2007
Сообщения: 9106
|
вопрос был не тебе. Я хотел узнать в принципе как такой подход к решению. |
_________________ ceterum censeo carthaginem esse delendam
Удачи. Олег. |
|
Посмотреть профиль Отправить личное сообщение Посетить сайт автора |
|
AntColonel
Зарегистрирован: 03.05.2011
Сообщения: 213
Откуда: Новосибирск
|
000 писал(а): |
вопрос был не тебе. Я хотел узнать в принципе как такой подход к решению. |
Как мне кажется, не совсем то получается, что изначально хотелось. Тут получается отрисовка фракталов наподобие индюка WATL для МТ4 |
|
|
Посмотреть профиль Отправить личное сообщение |
|
darshan
Зарегистрирован: 27.09.2009
Сообщения: 15
|
000 писал(а): |
Если так будет?
На цифры внимание не обращай.
Код: |
SetBarsRequired(sbrAll, sbrAll);
per = Param("период", 20, 15, 50, 5);
mov = MA((H+L)/2, per);
UpDw = Flip(mov > Ref(mov, -1), mov < Ref(mov, -1));
ll = Ref(LLV(L, BarsSince(!UpDw AND Ref(UpDw, -1)) +1), 0);
Ll1 = IIf(UpDw, Null, ValueWhen(UpDw AND !Ref(UpDw, -1), Max(Ll, Ref(Ll, -1)), 0));
Hh = Ref(HHV(H, BarsSince(UpDw AND !Ref(UpDw, -1)) +1), 0);
Hh1 = IIf(!UpDw, Null, ValueWhen(!UpDw AND Ref(UpDw, -1), Min(Hh, Ref(Hh, -1)), 0));
Up = HH1 == H;
Dw = Ll1 == L;
Plot(mov, "", IIf(UpDw, colorGreen, colorRed), styleThick);
Plot(C, "", colorBlack, styleCandle);
//Plot(BarsSince(mov < Ref(mov, -1) AND Ref(mov, -1) > Ref(mov, -2))+1, "222", colorBlack, styleOwnScale);
//Plot(Ll1, "", colorBlue);
//Plot(Hh1, "", colorBlue);
//Plot(UpDw, "UpDw", colorWhite, styleOwnScale);
PlotShapes(Up*shapeDigit2, colorRed, 0, yposition = H, 12);
PlotShapes(Dw*shapeDigit1, colorRed, 0, yposition = L, -12);
|
|
Sir,
Thank you very much,
i found your code / concept is very near to this
http://www.tradeprofitably.com/The_1-2-3_Breakout_Trading_System.html
Waiting for more ..
Thank you |
|
|
Посмотреть профиль Отправить личное сообщение |
|
darshan
Зарегистрирован: 27.09.2009
Сообщения: 15
|
Hello everyone,
Found this beautiful formula of 123 ptrn.
its been coded by edward pottash.
nicely done
thank you |
|
|
Посмотреть профиль Отправить личное сообщение |
|
|
|
Следующая тема
Предыдущая тема
Вы не можете начинать темы Вы не можете отвечать на сообщения Вы не можете редактировать свои сообщения Вы не можете удалять свои сообщения Вы не можете голосовать в опросах Вы не можете вкладывать файлы Вы не можете скачивать файлы
|
|