Автор |
Сообщение |
MrDrJOKER
Зарегистрирован: 22.06.2009
Сообщения: 489
|
ребят, есть у кого готовые адаптивные в afl?
что-то типа AMA, KAMA, VIDYA и т.д.
охота поиграться, но колесо заново изобретать лень.
p.s.: в userguide к ами 5.20 описаны AMA и AMA2, в моем Ами 5.29 их нет. их что убрали или это апдейт плохо сработал? |
|
|
Посмотреть профиль Отправить личное сообщение |
|
000
Site Admin
Зарегистрирован: 10.12.2007
Сообщения: 9106
|
Вот АМА Кауфмана
Код: |
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
|
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%. рестарт не спасает. что делать? в другую папку инсталить что ли? |
|
|
Посмотреть профиль Отправить личное сообщение |
|
000
Site Admin
Зарегистрирован: 10.12.2007
Сообщения: 9106
|
Вот черт... Давно не проверял его. Раньше работал. Теперь и себе насрал... Позже посмотрю его и напишу что там не так...
ЗЫ Подождал несколько минут и он нарисовался. После чего удалось его убрать с графика... |
_________________ ceterum censeo carthaginem esse delendam
Удачи. Олег. |
|
Посмотреть профиль Отправить личное сообщение Посетить сайт автора |
|
настырный
Зарегистрирован: 15.06.2008
Сообщения: 67
|
Кстати, на самом этом сайте есть пример, где Олег сравнивал и рисовал различные средние. Поищите, пожалуйста.
Именно на сайте, а не на форуме.
Если ничего не упустил, то
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
|
|
Посмотреть профиль Отправить личное сообщение |
|
Nero Wolfe
Зарегистрирован: 17.03.2010
Сообщения: 174
|
Кстати недавно наткнулся на неприятный глюк в АМА при тестировании РИ. Фьюч в 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 ); |
|
_________________ Если вас грызет совесть, выбейте ей зубы, и пусть она вас нежно обсасывает. |
|
Посмотреть профиль Отправить личное сообщение |
|
|
|
Следующая тема
Предыдущая тема
Вы не можете начинать темы Вы не можете отвечать на сообщения Вы не можете редактировать свои сообщения Вы не можете удалять свои сообщения Вы не можете голосовать в опросах Вы не можете вкладывать файлы Вы не можете скачивать файлы
|
|