Автор |
Сообщение |
Nero Wolfe
Зарегистрирован: 17.03.2010
Сообщения: 174
|
Цитата: |
В настоящее время наиболее популярными представителями фрактальных временных функций являются финансовые временные ряды.
Фрактальная структура этих рядов хорошо известна и, по словам Мандельброта, есть «переформулировка известной рыночной поговорки, что движения акций или валют вполне похожи, независимо от масштаба времени и цены. Наблюдатель не может сказать по внешнему виду графика, относятся ли данные к недельным, дневным или же часовым изменениям» [1].
Для определения фрактальной размерности обычно вычисляют показатель Херста [2]. Однако для надежного вычисления этого показателя требуется большой объем данных (~10^3), что слишком много по сравнению с продолжительностью торгуемых трендов.
Авторами [1] вводится новая фрактальная характеристика - индекс вариации (m), тесно связанного с обычной фрактальной размерностью.
В отличие от показателя Херста для определения индекса вариации требуется данных на два порядка меньше. Это приводит к возможности использовать его в качестве локальной характеристики, определяющей динамику ценового ряда. При этом случай m < 0.5 может быть интерпретирован как тренд, а случай m > 0.5 - как флэт.
Предлагаемый индикатор вычисляет индекс вариации на предшествующем интервале длины 2^n. Параметр n задается пользователем.
Общие правила применения индикатора следующие:
Значение индикатора ниже 0.5 означает трендовое состояние рынка.
Экстремально низкое значение часто предшествует концу (коррекции) текущего тренда.
Значение индикатора выше 0.5 означает флэтовое состояние рынка.
Экстремально высокое значение часто предшествует началу значительных трендов.
Значение индикатора в районе 0.5 означает неопределенное состояние рынка.
|
взято вот отсюда http://codebase.mql4.com/ru/4483
там есть код для метатрейдера, может кто нибудь сможет перевести его на АФЛ?
Мне кажется полезный индикатор должен получится |
_________________ Если вас грызет совесть, выбейте ей зубы, и пусть она вас нежно обсасывает. |
|
Посмотреть профиль Отправить личное сообщение |
|
spitfire
Зарегистрирован: 29.04.2010
Сообщения: 729
Откуда: Moscow
|
Выложу сегодня ближе к ночи. Когда то выдернул этот показатель из FRAMA, где он как раз используется. Ксать, как обычно бывает, результаты тестов не показали ничо особенного. |
|
|
Посмотреть профиль Отправить личное сообщение ICQ Number |
|
spitfire
Зарегистрирован: 29.04.2010
Сообщения: 729
Откуда: Moscow
|
Есть такой вариант, правда он называется размерностью Хаусдорфа. Описалово такое:
Цитата: |
важнейшая численная характеристика фракталов (размерность Хаусдорфа) изменяется от 1 (абсолютный тренд, прямая) до 2 (абсолютный флет, вся плоскость).
Размерность < 1.5 - считаем тренд. Если > 1.5 - флет. При 1.5 - случайное блуждание. Алгортим подсчета размерности (примерный)
1 Выбираем длину Т, по которой мы будем рассчитывать размерность. Т обязательно должно быть четным.
2 Разбиваем исходный ряд длиной Т на две равных части от 1 до Т/2 и от Т/2 + 1 до Т.
3 Рассчитываем амплитуду колебаний цен на первой половине ряда А1 = (Н1 – L1), где Н1 — максимум на первой половине ряда, а L1 — минимум.
4 Рассчитываем амплитуду колебаний цен на второй половине ряда А2 = (Н2 – L2), где Н2 — максимум на второй половине ряда, а L2 — минимум.
5 Рассчитываем амплитуду колебаний цен на всем ряде от 1 до Т. А3 = (Н3 – L3), где Н3 — максимум на всем ряде, а L3 — минимум.
6 Рассчитываем приблизительную размерность по формуле: D = 1 + (ln(A1+A2)-ln(A3))/ln(2)
|
Соответсвенно код:
Код: |
HausdorfDimension =0;
periodStop = 16; //должен быть четным
stopFast = 6;//Optimize("Fast Period ", 6, 2, 10, 2); // Быстрая ЕМА - нижняя граница для Frama
stopSlow = 36;//Optimize("Slow Period ", 20, 20, 50, 2); // Медленная ЕМА - верхняя граница для Frama
function HDim(price, fr_period)
{
halfPeriod = fr_period/2;
A3 = HHV(High, fr_period) - LLV(Low, fr_period); // амплитуда колебаний на всем ряде
HH = HHV(High, halfPeriod);
LL = LLV(Low, halfPeriod);
A1 = HH - LL; // амплитуда колебаний на первой половине ряде
HH = HHV(Ref(High, -halfPeriod), halfPeriod);
LL = LLV(Ref(Low, -halfPeriod), halfPeriod);
A2 = HH - LL; // амплитуда колебаний на второй половине ряде
Dimen = IIf( A1>0 AND A2>0 AND A3>0, 1 + (log(A1+A2) - log(A3))/log(2), 2); //размерность Хаусдорфа - равна 2(абс флет), если торги уперлись в линию и цены вытянулись в линию
A = scFast*(scSlow/scFast)^(Dimen-1);
HausdorfDimension = Dimen;
}
HDim(C, 16);
Plot( HausdorfDimension , _DEFAULT_NAME(), ParamColor( "Color", colorCycle ), ParamStyle("Style") ); |
|
|
|
Посмотреть профиль Отправить личное сообщение ICQ Number |
|
Nero Wolfe
Зарегистрирован: 17.03.2010
Сообщения: 174
|
Спасибо
Код ругается на scFast и подобные, поменял на stopFast, вроде так и должно быть...
Но что картинка не впечатлила совсем
Если это из фрама, то вы имеете в виду вот этот показатель?
Код: |
Price = (H+L)/2;
N = Param( "N", 16, 2, 200, 2 ); // must be even
N3 = ( HHV( High, N ) - LLV( Low, N ) ) / N;
HH = HHV( High, N / 2 ) ;
LL = LLV( Low, N / 2 );
N1 = ( HH - LL ) / ( N / 2 );
HH = HHV( Ref( High, - N/2 ), N/2 );
LL = LLV( Ref( Low, - N/2 ), N/ 2 );
N2 = ( HH - LL ) / ( N / 2 );
Dimen = IIf( N1 > 0 AND N2 > 0 AND N3 > 0, ( log( N1+N2) - log( N3 ) )/log( 2 ), Null );
alpha = exp( -4.6 * (Dimen -1 ) );
alpha = Min( Max( alpha, 0.01 ), 1 ); // bound to 0.01...1 range
|
Самое печальное, что
Цитата: |
Ксать, как обычно бывает, результаты тестов не показали ничо особенного. |
хоть что то вообще есть рабочее? Устал уже копать |
_________________ Если вас грызет совесть, выбейте ей зубы, и пусть она вас нежно обсасывает. |
|
Посмотреть профиль Отправить личное сообщение |
|
spitfire
Зарегистрирован: 29.04.2010
Сообщения: 729
Откуда: Moscow
|
Ну да, показатель Dimen он и есть, что хотел тебе показать Код просто переписал под себя для большей наглядности.
Вообще хз, есть ли что рабочее для определения состояния тренд/флет. Если бы был такой 100-пудовый индюк, то его смело можно было причислить к граалю. Если вдруг найдешь - дай знать! А пока остается только работать с вероятностями, стопами и мани-менеджментом. |
|
|
Посмотреть профиль Отправить личное сообщение ICQ Number |
|
alexby
Зарегистрирован: 30.01.2012
Сообщения: 1
|
Вот здесь перевели
http://www.bot4sale.ru/forum/strategies/179-indeks-variatsii-tsenovogo-ryada.html#629
_SECTION_BEGIN("iVAR");
n = Param("n",5,3,15);
Sx = Sy = Sxx = Sxy = 0;
for (i=0; i<=n; i++)
{ nInterval = 2^(n-i);
//---- суммируем разницы максимальной и минимальной цен на интервале
Delta = 0;
for(k=0; k<2^i ; k++)
Delta += HHV(Ref(High,-nInterval*k),nInterval)- LLV(Ref(Low,-nInterval*k),nInterval);
//---- вычисляем координаты вариации в двойном логарифмическом масштабе
Xc = (n-i)*log(2);
Yc = log(Delta);
//---- накапливаем данные для нахождения коэффициентов линии регрессии с помощью МНК
Sx += Xc;
Sy += Yc;
Sxx += Xc*Xc;
Sxy += Xc*Yc;
}
ibuffer = -(Sx*Sy-(n+1)*Sxy)/(Sx*Sx-(n+1)*Sxx);
Plot(ibuffer,"iVar("+NumToStr(n,1,False)+")",IIf(ibuffer>0.5,colorRed,colorBlack),styleLine);
Plot(0.5,"",colorBlack);
_SECTION_END(); |
|
|
Посмотреть профиль Отправить личное сообщение |
|
|
|
Следующая тема
Предыдущая тема
Вы не можете начинать темы Вы не можете отвечать на сообщения Вы не можете редактировать свои сообщения Вы не можете удалять свои сообщения Вы не можете голосовать в опросах Вы не можете вкладывать файлы Вы не можете скачивать файлы
|
|