торговая стратегия на базе Волновой теории Эллиота - страница 259

 
cooper123 19.03.07 15:15

Может быть я долго думаю, но я никак не врублюсь что такое пересечение каналов.
Вот на картинке по моему типичная ситуация, но там нет как такового пересечение каналов.
есть каналы разного масштаба. А как образуется разворотная зона пересечением каналов не врубаюсь.
может кто пояснит по этой картинке.


Вот одна из типичных разворотных зон



Различными цветами я хотел показать некое подобие градиента вероятности разворота в этой зоне.

ЗЫ Сначал мучал в паинте, потом стало стыдно переделал в фотошопе
 

Поэтому, если уж Вы даете мне право выбора, то я выбираю MQL. :-))
Здесь или непосредственно на почтовый ящик - как Вам будет угодно.
Заранее благодарю.


Ok!


Собственно код:

//+------------------------------------------------------------------+
//|                                     Moving Average Batteruot.mq4 |
//|                                                  Code by Neutron |
//+------------------------------------------------------------------+
#property indicator_chart_window
#property indicator_color1 Blue
#property indicator_width1 3

#define Pi 3.14159
extern int FLFPeriod=300, K=1;
int Start,i,m;
double Gamma,alfa,b,ci,g,MA[5000],Y[5000]; 

int start()
{
Start=5000;
Gamma= MathPow(0.484,1/(2*K))/MathTan(Pi/(FLFPeriod+1));	 
	 MA[Start+1]=Open[Start+1];
	 MA[Start+2]=Open[Start+2];
	 for (i=0;i<=Start;i++) {Y[i]=Open[i];}

for (m=1;m<=K;m++) 	 {
	 alfa=2*MathSin(Pi/4*(2*m-1)/K);
	 g=1/(Gamma*Gamma+Gamma*alfa+1);
	 b=2*g*(Gamma*Gamma-1);
	 ci=g*(Gamma*Gamma-Gamma*alfa+1); 
	 for (i=Start-2;i>=0;i--) {MA[i]=g*(Y[i]+2*Y[i+1]+Y[i+2])+b*MA[i+1]-ci*MA[i+2];}	 
    for (i=Start-2;i>=0;i--) {Y[i]=MA[i];}
                       }
}

int init()
{
   SetIndexStyle(0,DRAW_LINE);
   SetIndexBuffer(0,Y);
   return(0);
}



Итак, кидаете индикатор на график и работаете. Это оптимальный (в смысле фазовой задержки (ФЗ)) фильтр низкой частоты (ФНЧ).В настройки я вынес две преременные:
FLFPeriod - натуральное число в пределах от 2 до нужного. Отвечает за ширину полосы пропускания ФНЧ.
К - натуральное число в пределах от 1 до нужного. Эта переменная задаёт порядок ФНЧ, что в свою очередь определяет крутизну среза ФНЧ. Все подробности по работе и устройству ФНЧ по ссылке выше. Необходимо помнить, что при К>2 высокочастотные гармоники подавляются ОЧЕНЬ сильно и дальнейшее увеличение порядка бессмыслено - это ведёт только к сильному увеличению ФЗ и возникновению паразитных слабозатухающих биений (явление Гибса) в точке старта (у меня это 5000 баров). Усреднение ведётся по ценам открытия.
Опытным путём я установил, что для прикладных целей, оптимально выбирать К=1 при этом, отношение качество сглаживания/ФЗ максимально.

 
Спасибо большое Jhonny
Теперь стало все более или менее понятно, и даже куда потенциальную энергию запихнуть вроде тоже стало представимо.


Удачи.
 
to Neutron.
Я, конечно, много пропустил в этой ветке, но глядя на код индикатора, а еще раньше глядя на то,что рисует этот индикатор, я не понял - в чем фишка?
Во-первых, этот мувинг имеет такое же запаздывание и не имеет преимуществ перед собратьями (это по графику).
Во-вторых, по коду индикатора я не увидел никакой изюминки. Сейчас пройдусь по последним 5 страницам темы, может найду ответ.

PS. Код в индикаторе далек от идеала.
 
to Rosh

Всё зависит от того, какую цель ты преследуешь используя тот или иной ФНЧ. Для моей ТС важна минимально возможная ФЗ при её максимальной стабильности в полосе пропускания фильтра. Именно этим качествам удовлетворяют фильтры Баттерлуота (подробности в ссылке выше). Для примера привожу скрин с терминала на котором запущены два мувенга - Баттерлуота (синий) и просто скользящего суммирования (красный).



Видно, что при большей ФЗ, обычный фильтр показывает меньшее качество сглаживания, это проявляется в пропускании ВЧ составляющих (изломы на графике) и подавлении НЧ составляющей спектра (отсутствие средних по величине провалов и холмов). Конкретно в моей ТС это приводит к более чем в в раза меньшей доходности. Кроме того, меняя параметр К мы можем, на своё усмотрение менять форму полосы пропускания фильтра приближая его к идеальному или напротив, уходя в сторону простого скользящего среднего. Согласись, это дополнительная ручка для пытливого ума!

P.S. Код, согласен, неоптимальный т.к. я сам его царапал:-)
 
Пью коньяк, и размышляю о гармонии Хаоса. :)
 
2 Neutron
Привет, Сергей ! Спасибо за код, картинки сравнил. Хотел выложить результат, но на mql4.com были проблемы с редактором, а потом поймал вирус, пришлось чиститься и восстанавливать данные. Теперь выкладываю.


Не знаю как соотносится с обычным периодом МА Ваш параметр FLFPeriod, поэтому взял для всех трех графиков период=100. Кроме того, К=1. Синяя линия - МА по Баттерлуоту, красная - моя, CadetBlue - стандартная МА simple.
Наверное эта картинка Вас не впечатлит, поскольку у меня при меньшей ФЗ все-таки кривая недостаточно гладкая.
Однако, я такой цели и не преследовал, просто "отчитываюсь о результатах". :-))
 
Не знаю как соотносится с обычным периодом МА Ваш параметр FLFPeriod, поэтому взял для всех трех графиков период=100. Кроме того, К=1. Синяя линия - МА по Баттерлуоту, красная - моя, CadetBlue - стандартная МА simple.
Наверное эта картинка Вас не впечатлит, поскольку у меня при меньшей ФЗ все-таки кривая недостаточно гладкая.


Юра, привет!
Я, честно, не задавался задачей привязки параметра FLFPeriod к ширине полосы пропускания ФНЧ, но сделать это не трудно.
Интересно посмотреть на ваши результаты, если параметр у всех фильтров подобрать так, чтобы совпали ФЗ.

Ниже привожу код ФНЧ Баттерлуота с НУЛЕВОЙ ФЗ!!! :-)))
//+------------------------------------------------------------------+
//|              Moving Average Batteruot Simmetric (ЭТО ШУТКА!).mq4 |
//|                                                  Code by Neutron |
//+------------------------------------------------------------------+
#property indicator_chart_window
#property indicator_color1 Red
#property indicator_width1 3

#define Pi 3.14159
extern int FLFPeriod=20, K=4;
int Start,i,m;
double Gamma,alfa,b,ci,g,MA[5000],Y[5000]; 

int start()
{
Start=5000;
Gamma= MathPow(0.484,1/(2*K))/MathTan(Pi/(FLFPeriod+1));	 
	 MA[Start+1]=(Open[Start+1]+Close[Start+1]+High[Start+1]+Low[Start+1])/4;
	 MA[Start+2]=(Open[Start+2]+Close[Start+2]+High[Start+2]+Low[Start+2])/4;
	 for (i=0;i<=Start;i++) {Y[i]=(Open[i]+Close[i]+High[i]+Low[i])/4;}

for (m=1;m<=K;m++) 	 {
	 alfa=2*MathSin(Pi/4*(2*m-1)/K);
	 g=1/(Gamma*Gamma+Gamma*alfa+1);
	 b=2*g*(Gamma*Gamma-1);
	 ci=g*(Gamma*Gamma-Gamma*alfa+1); 
	 for (i=Start-2;i>=0;i--) {MA[i]=g*(Y[i]+2*Y[i+1]+Y[i+2])+b*MA[i+1]-ci*MA[i+2];}
	 Y[0]=MA[0];
	 Y[1]=MA[1]; 	 
          for (i=2;i<=Start-2;i++) {Y[i]=g*(MA[i]+2*MA[i-1]+MA[i-2])+b*Y[i-1]-ci*Y[i-2];}
                       }
}

int init()
{
   SetIndexStyle(0,DRAW_LINE);
   SetIndexBuffer(0,Y);
   return(0);
}



НЕ ПЫТАЙТЕСЬ ИСПОЬЗОВАТЬ ЭТОТ КОД ДЛЯ ПОСТРОЕНИЯ ТОРГОВОЙ СТРАТЕГИИ!!!




 
2 Neutron
Шутку оценил ! :-))
Но до чего же красиво выглядит !
Подобрал параметр моей МА так, чтобы совпадал основной максимум картинки.
Получилось FLFPeriod=100, К=1, у моей МА период=136 и для MAsimple период=136.
Из картинки же видно, что из совпадения одного масимума совсем не следует совпадение остальных.


Кстати, надо бы чуть поправить код индикатора. Вместо
MA[Start+1]=Open[Start+1];
MA[Start+2]=Open[Start+2];


писать

MA[Start]=Open[Start];
MA[Start-1]=Open[Start-1];



 

Ok!

Собственно код:
...............................................................


Спасибо за индикатор - интересно.

Еще: в коде ошибка - выход за границы массива.
Задайте размер double MA[5003];
Y[] можно не размещать, а оставить double Y[]; будет верно.


Успехов.
Причина обращения: