T3 - страница 30

 

Да, просто добавьте 2 x ATR

 
sohocool:
Привет, Младен,

Как вы думаете, возможно ли сделать Adaptive Hull Moving Average V2 ????

Десятичный период, кажется, работает.

С уважением,

Hull основан на LWMA, а так как LWMA основан строго на барах, он не будет таким плавным в изменениях, как, например, EMA (подпериоды 3 LWMA, рассчитанные для получения HULL, должны быть целыми значениями). Если мы заменим LWMA в HULL на EMA, возможно, стоит попробовать (и если мы избежим округлениявычисленных подпериодов). Правда, тогда это будет уже не HULL, но, возможно, это будет хороший вариант, и тогда он будет идеально подходить для адаптации.

 
mladen:
Hull основан на LWMA, а так как LWMA основан строго на барах, он не будет так плавно меняться, как, например, EMA (подпериоды 3 LWMA, рассчитанные для получения HULL, должны быть целыми значениями). Если мы заменим LWMA в HULL на EMA, возможно, стоит попробовать (и если мы избежим округления вычисленных подпериодов). Правда, тогда это будет уже не HULL, но, возможно, это будет хороший вариант, и тогда он будет идеально подходить для адаптации

Спасибо, я попробую сделать с Ema.

 
sohocool:
Спасибо, я попробую сделать с Ema.

Только не используйте для этого встроенную функцию iMA(), поскольку она округляет периоды до целочисленных значений.

Используйте эту функцию (или что-то подобное) :

//------------------------------------------------------------------

//

//------------------------------------------------------------------

//

//

//

//

//

double workEma[][3];

double iEma(double price, double period, int r, int instanceNo=0)

{

if (ArrayRange(workEma,0)!= Bars) ArrayResize(workEma,Bars); r = Bars-r-1;

//

//

//

//

//

double alpha = 2.0 / (1.0+period);

workEma[r] = workEma[r-1]+alpha*(price-workEma[r-1]);

return(workEma[r]);

}

в 3 разных экземплярах расчета. Параметры просты: цена, период, индекс и номер экземпляра.

 
mladen:
Только не используйте для этого встроенную функцию iMA(), поскольку она округляет периоды до целочисленных значений.

Используйте эту функцию (или что-то подобное) :

//------------------------------------------------------------------

//

//------------------------------------------------------------------

//

//

//

//

//

double workEma[][3];

double iEma(double price, double period, int r, int instanceNo=0)

{

if (ArrayRange(workEma,0)!= Bars) ArrayResize(workEma,Bars); r = Bars-r-1;

//

//

//

//

//

double alpha = 2.0 / (1.0+period);

workEma[r] = workEma[r-1]+alpha*(price-workEma[r-1]);

return(workEma[r]);

}

в 3 разных случаях вычисления. Параметры просты: цена, период, индекс и номер экземпляра.

Я должен удалить и вставить здесь ?

double iT3(double price, double period, double hot, bool clean, int i, int instanceNo=0)

{

if (ArrayRange(workT3,0) !=Bars) ArrayResize(workT3,Bars);

if (ArrayRange(workT3Coeffs,0) < (instanceNo+1)) ArrayResize(workT3Coeffs,instanceNo+1);

if (workT3Coeffs[_period] != period)

{

workT3Coeffs[_period] = period;

double a = hot;

workT3Coeffs[_c1] = -a*a*a;

workT3Coeffs[_c2] = 3*a*a+3*a*a*a;

workT3Coeffs[_c3] = -6*a*a-3*a-3*a*a*a;

workT3Coeffs[_c4] = 1+3*a+a*a*a+3*a*a;

если (чисто)

workT3Coeffs[_alpha] = 2.0/(2.0 + (период-1.0)/2.0);

else workT3Coeffs[_alpha] = (MathCos(2*Pi/period)+MathSin(2*Pi/period)-1)/MathCos(2*Pi/period);

}

 
sohocool:
Я должен удалить и вставить здесь ???

double iT3(double price, double period, double hot, bool clean, int i, int instanceNo=0)

{

if (ArrayRange(workT3,0) !=Bars) ArrayResize(workT3,Bars);

if (ArrayRange(workT3Coeffs,0) < (instanceNo+1)) ArrayResize(workT3Coeffs,instanceNo+1);

if (workT3Coeffs[_period] != period)

{

workT3Coeffs[_period] = period;

double a = hot;

workT3Coeffs[_c1] = -a*a*a;

workT3Coeffs[_c2] = 3*a*a+3*a*a*a;

workT3Coeffs[_c3] = -6*a*a-3*a-3*a*a*a;

workT3Coeffs[_c4] = 1+3*a+a*a*a+3*a*a;

если (чисто)

workT3Coeffs[_alpha] = 2.0/(2.0 + (период-1.0)/2.0);

else workT3Coeffs[_alpha] = (MathCos(2*Pi/period)+MathSin(2*Pi/period)-1)/MathCos(2*Pi/period);

}

sohocool

Один вариант того, как это можно сделать (который все еще не является адаптивной версией), опубликован здесь: https: //www.mql5.com/en/forum/174961/page10.

Теперь вы должны сделать его адаптивным (в конце концов, это была ваша идея).

 
sohocool:
Привет Младен,

Адаптивная функция очень интересна.

Я сделал адаптивный T3 с "Swiss Army" Alpha.

Мы можем выбрать 2 альфы: чистую или швейцарскую армию.

С уважением.

PS: Если вы хотите нормальный период альфы, вы можете использовать чистую альфу: 2 x период.

Привет всем,

Я только что добавил канал ATR.

 
mladen:
Индикатор T3, использующий стандартное отклонение для адаптации (T3 очень хорош для адаптации, так как его расчетная длина не обязательно должна быть целым числом - например, вы можете рассчитать nnn.5 T3 - и это дает идеально гладкое значение T3, даже когда к нему применяется адаптация, чего нельзя сказать о некоторых других типах адаптации средних).

PS: прикрепляю ex4 для тех, у кого могут возникнуть проблемы с компиляцией исходников. Несмотря на то, что индикатор от первой до последней буквы написан мной, моя сборка некоторое время отказывалась его компилировать. Теперь, ни с того ни с сего, он компилируется без проблем, поэтому я не уверен, что у кого-то другого не возникнет та же проблема, что и у меня. Для этого случая скачайте ex4 (он собран с билдом 500).

PS: при сравнении с "обычными" индикаторами T3 установите T3Original в false (поскольку большинство индикаторов T3 используют расчеты Фулкса/Матулича, а не оригинальный расчет Тима Тиллсона).

Уважаемый Младен

Не могли бы вы конвертировать прикрепленный индикатор с 'Adaptive T3 calculations'!

Спасибо за любую помощь

secretcode

Файлы:
ma_i-ca.mq4  2 kb
 
secretcode:
Уважаемый Младен

Не могли бы вы преобразовать прикрепленный индикатор с 'Adaptive T3 calculations'!

Спасибо за любую помощь

secretcode

secretcode

Вот, пожалуйста Используйте те же параметры по умолчанию, что и оригинальный индикатор (чтобы их можно было легко сравнить - как и ожидалось, этот намного быстрее).

Файлы:
 

Привет, Младен,

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

Мне лично очень хотелось бы иметь такой lib файл от вас, такой же как ваш знаменитый DynamicZone.dll . Все они делают мир кодинга все более и более интересным и удобным, по крайней мере для меня.