Список форумов AmiSite.ru AmiSite.ru
Форум по Ами
 FAQ  •  Поиск  •  Пользователи  •  Группы   •  Регистрация  •  Профиль  •  Войти и проверить личные сообщения  •  Вход
 Адаптивные мувинги Следующая тема
Предыдущая тема
Начать новую тему  Ответить на тему
Автор Сообщение
MrDrJOKER



Зарегистрирован: 22.06.2009
Сообщения: 489

СообщениеДобавлено: Вс Янв 31, 2010 6:44 pm Ответить с цитатой Вернуться к началу

ребят, есть у кого готовые адаптивные в afl?
что-то типа AMA, KAMA, VIDYA и т.д.

охота поиграться, но колесо заново изобретать лень.

p.s.: в userguide к ами 5.20 описаны AMA и AMA2, в моем Ами 5.29 их нет. их что убрали или это апдейт плохо сработал? Rolling Eyes
Посмотреть профиль Отправить личное сообщение
000
Site Admin


Зарегистрирован: 10.12.2007
Сообщения: 9106

СообщениеДобавлено: Вс Янв 31, 2010 8:39 pm Ответить с цитатой Вернуться к началу

Вот АМА Кауфмана

Код:

P = ParamField("Price field");
Per = Param("Period", 10, 10, 100, 10);

fast = 2/(2+1);
slow = 2/(30+1);
dir=abs(p-Ref(p,-Per));
vol=Sum(abs(p-Ref(p,-1)),Per);
ER=dir/vol;
//sc =( ER*(fast-slow)+slow)^2;
sc = ER;

Plot( AMA(P, SC), _DEFAULT_NAME(), ParamColor( "Color", colorCycle ), ParamStyle("Style"));

Вот Adaptive Laguerre Filter
Код:

//---------------------------------------------------------------------------------------------------------------
//
//
// Adaptive Laguerre Filter, from John Ehlers
// Link :http://www.mesasoftware.com/Papers/Time%20Warp%20Without%20Space%20Travel.exe
// Another works from Ehlers : http://www.mesasoftware.com/technicalpapers.htm
//
// Description :
// Laguerre Filtering, in its adaptive Version (alpha is automaticaly adapted depending the error of filtering).
// Can be apply to RSI OR any other datas like the another Laguerre Version on that AFL library :
// http://www.amibroker.com/library/detail.php?id=450
// To do :
// - Kautz Filter, they are generic Name for Laguerre Filter AND treats complex signals (use amplitude AND phase)
//
// Coding author: Mich.
//
//---------------------------------------------------------------------------------------------------------------
//

function ALFilter(price, length, medianlong) {
result=price;
L0 = price;
L1 = price;
L2 = price;
L3 = price;
coef=0.5;
Diff=0;
HH=0.1;
LL=0;
alpha=0.5;

for(i = 1+length; i < BarCount; i++) {
   Diff[i] = abs(price[i] - result[i-1]);
   HH[i] = Diff[i];
   LL[i] = Diff[i];

   for(j = 0; j < (length-1); j++) {
      if (Diff[i-j] > HH[i]) HH[i] = Diff[i-j];
      if (Diff[i-j] < LL[i]) LL[i] = Diff[i-j];
   }

   if ( (i > length) AND (HH[i] - LL[i] != 0) ) {

   // SLOW :
   //coef = Median(((Diff - LL) / (HH - LL)), 5);

   // FAST :
   //----- Speed up the median calculation by placing it inline : Thanks to its author "Not Too Swift"
   coeftemp=(Diff - LL) / (HH - LL);
   mlen = medianlong;
   for(k = mlen - 1; k >= 0; k--) temparray[k] = coeftemp[i + k - (mlen - 1)];
   temp=0;
   for(k = mlen - 1; k > 0; k--) {
      for (j = mlen - 1; j > 0; j--) {
         if (temparray[j-1] > temparray[j]) {
            temp = temparray[j-1];
            temparray[j-1] = temparray[j];
            temparray[j] = temp;
         }
      }
   }
   coef[i] = temparray[(mlen/2)-0.5];   
   //----- End median calculation
} // end main IF

alpha=coef[i];
L0[i] = alpha*price[i] + (1 - alpha)*L0[i-1];
L1[i] = -(1 - alpha)*L0[i] + L0[i-1] + (1 - alpha)*L1[i-1];
L2[i] = -(1 - alpha)*L1[i] + L1[i-1] + (1 - alpha)*L2[i-1];
L3[i] = -(1 - alpha)*L2[i] + L2[i-1] + (1 - alpha)*L3[i-1];
result[i] = (L0[i] + 2*L1[i] + 2*L2[i] + L3[i]) / 6;
} // end main FOR

return result;
}


/* DEMO */

SetBarsRequired(2000,2000);

P = ParamField("Price field",-1);
periods = Param( "Periods", 20, 1, 40, 1 );
periodsmedian = Param( "Periods Median", 5, 1, 40, 1 );

Plot( ALFilter(P,periods,periodsmedian), "Adaptive Laguerre Filter",
ParamColor( "Adaptive Laguerre Filter", colorCycle ), ParamStyle("Style")  );

_________________
ceterum censeo carthaginem esse delendam
Удачи. Олег.
Посмотреть профиль Отправить личное сообщение Посетить сайт автора
MrDrJOKER



Зарегистрирован: 22.06.2009
Сообщения: 489

СообщениеДобавлено: Пн Фев 01, 2010 1:31 am Ответить с цитатой Вернуться к началу

tnx.

000 писал(а):
Вот АМА Кауфмана

Код:

P = ParamField("Price field");
Per = Param("Period", 10, 10, 100, 10);

fast = 2/(2+1);
slow = 2/(30+1);
dir=abs(p-Ref(p,-Per));
vol=Sum(abs(p-Ref(p,-1)),Per);
ER=dir/vol;
sc =( ER*(fast-slow)+slow)^2;

Plot( AMA(P, SC), _DEFAULT_NAME(), ParamColor( "Color", colorCycle ), ParamStyle("Style"));

похоже, что так правильнее. да?
странно, в ами этот же код в ф-ции AMA забит.

p.s.: запустил Adaptive Laguerre Filter на графике цены и Ами повис. проц забит на 100%. рестарт не спасает. что делать? в другую папку инсталить что ли? Shocked
Посмотреть профиль Отправить личное сообщение
000
Site Admin


Зарегистрирован: 10.12.2007
Сообщения: 9106

СообщениеДобавлено: Пн Фев 01, 2010 10:22 am Ответить с цитатой Вернуться к началу

Вот черт... Давно не проверял его. Раньше работал. Теперь и себе насрал... Позже посмотрю его и напишу что там не так...

ЗЫ Подождал несколько минут и он нарисовался. После чего удалось его убрать с графика...

_________________
ceterum censeo carthaginem esse delendam
Удачи. Олег.
Посмотреть профиль Отправить личное сообщение Посетить сайт автора
настырный



Зарегистрирован: 15.06.2008
Сообщения: 67

СообщениеДобавлено: Ср Фев 03, 2010 6:24 pm Ответить с цитатой Вернуться к началу

Кстати, на самом этом сайте есть пример, где Олег сравнивал и рисовал различные средние. Поищите, пожалуйста.
Именно на сайте, а не на форуме.

Если ничего не упустил, то
VIDYA CMO

Код:

per=Param("Period", 5, 3, 32, 1);
C19 = ParamColor( "ViDYA(CMO) Color", colorCycle);
 
P = Close;
cmopds = per;
n = per;
f = 2/(n+1);
Up = Sum(IIf(P > Ref(P, -1), (P - Ref(P ,-1)), 0 ), cmopds);
Dw = Sum(IIf(P < Ref(P, -1), (Ref(P, -1) - P), 0 ), cmopds);
CMO = abs ((Up - Dw)/(Up + Dw));
sc = f*CMO;
VIDYA = AMA(P, sc);
Plot(VIDYA, "VIDYA CMO",C19);
Посмотреть профиль Отправить личное сообщение
Gluhov



Зарегистрирован: 06.02.2009
Сообщения: 44

СообщениеДобавлено: Пн Мар 01, 2010 7:22 am Ответить с цитатой Вернуться к началу

Понравились результаты http://www.amibroker.com/library/detail.php?id=450

Adaptive Laguerre Filter

Кто нибудь врубался в математику процесса? Есть ли возможность обьяснить смысл работы фильтра?
Посмотреть профиль Отправить личное сообщение
Nero Wolfe



Зарегистрирован: 17.03.2010
Сообщения: 174

СообщениеДобавлено: Чт Авг 26, 2010 12:14 pm Ответить с цитатой Вернуться к началу

Кстати недавно наткнулся на неприятный глюк в АМА при тестировании РИ. Фьюч в 2008 несколько раз падал на планку и получалось что в течении нескольких баров OHLC были равны. При этом получалось, что vol стремилась к нулю и соответственно при вычислении ER происходило деление на ноль. Я сделал вот так:

Код:
// АМА Кауфмана
Per = Param( "AMA Length", 10, 1, 200, 1 );
fast = 2 / ( 2 + 1 );
slow = 2 / ( 30 + 1 );
dir = Close - Ref( Close, -per );
vol = Sum( abs( Close - Ref( Close, -1 ) ), per );
ER = IIf( vol > 0, abs( dir / vol ), 0 );
sc = ( ER * ( fast - slow ) + slow ) ^ 2;
HAM = AMA( Close, sc );
Plot( HAM, "AMA", colorBlue, styleLine );

_________________
Если вас грызет совесть, выбейте ей зубы, и пусть она вас нежно обсасывает.
Посмотреть профиль Отправить личное сообщение
Показать сообщения:      
Начать новую тему  Ответить на тему


 Перейти:   



Следующая тема
Предыдущая тема
Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете голосовать в опросах
Вы не можете вкладывать файлы
Вы не можете скачивать файлы


Powered by phpBB © 2001, 2002 phpBB Group :: FI Theme :: Часовой пояс: GMT + 3

File Attachment © by Meik Sievertsen