Ставь лайки и следи за новостями
Поставь на него ссылку - пусть другие тоже оценят
Оцени его работу в терминале MetaTrader 5
Индикатор тренда на основе Сингулярного Спектрального Анализа - индикатор для MetaTrader 5
- Просмотров:
- 6167
- Рейтинг:
- Опубликован:
- 2016.07.06 15:18
- Нужен робот или индикатор на основе этого кода? Закажите его на бирже фрилансеров Перейти на биржу
Выделение тренда и фильтрация шумов с помощью метода Сингулярного Спектрального Анализа. Управление параметрами индикатора позволяет управлять гладкостью выделяемого тренда и порогом фильтрации шума.
Оптимальная декомпозиция данных на трендовую, низкочастотные и высокочастотные аддитивные составляющие с последующей реконструкцией сигнала определяется временным горизонтом торговой стратегии. Индикатор (сглаженный тренд) не имеет фазовых запаздываний в отличие от методов обычной фильтрации и сглаженного среднего.
Индикатор тренда на основе метода "Гусеница" предполагает разложение ряда цен на аддитивные составляющие. При этом не требуется стационарности ряда, знания модели тренда, сведений о наличии периодических составляющих и их периодах [1-4].
Возможности реализованного индикатора позволяют сглаживать ряд, выделять тренд и, выбирая параметры подстройки модели под исходный ряд цен, учитывать или подавлять вклад от слагаемых осциллирующих на меньшем масштабе времени — фильтровать"шумовые" колебания.
Параметры индикатора
Основными параметрами являются:
- SegmentLength — длина фрагмента "новейшей истории" ряда цен.
- SegmentLag — длина гусеницы. Выбирается в интервале от 1/4 до 1/2 длины фрагмента. Влияет на разделимость составляющих и гладкость тренда.
- EigMax — число главных компонент (мод разложения). Определяет размерность подпространства сигналов и учет колебаний разного масштаба.
- EigNoiseFlag — флаг расчета числа главных компонент, для переключения между режимами "фиксированное" число мод и величина допускаемого шума. Варианты = 0,1,2.
- EigNoiseLevel — допускаемый процент вклада шума в суммарную "энергию колебаний" ряда, если EigNoiseFlag != 0. Переопределяет EigMax в процессе вычислений.
Варианты целого параметра EigNoiseFlag:
- 0 — размерность пространства сигнала фиксирована: [1,EigMax] ( EigNoiseLevel игнорируется. Если EigMax больше возможного, то ограничивается возможным).
- 1 — удельный вклад собственного значения отдельной моды в общую сумму значений не менее заданной ошибки EigNoiseLevel. EigMax подбирается автоматически.
- 2 — учитываются моды, чей удельный суммарный вклад отличается от "единицы" (полный) не более чем на EigNoiseLevel. EigMax подбирается автоматически.
Типичный выбор и влияние параметров:
- SegmentLength — длина фрагмента ряда цен в конце истории данных. Выбирается исходя из стабильности истории и более-менее однородного характера изменения данных, либо периода стратегии.
- SegmentLag — задает размерность "ширину фильтра" для отдельных мод (обратно пропорционально). Влияет на гладкость и подстройку тренда под изменчивость графика цен.
- EigMax — задает размерность подпространства "сигнала" с полезной информацией. Устанавливает порог "шума" .
- EigNoiseLevel — задает величину "шума" в суммарной дисперсии ряда. Указывать в ПРОЦЕНТАХ.
Программная реализация
Класс CCaterpillar, реализованный в файле CCaterpillar.mqh, включает все необходимое для расчетов тренда, кроме процедур линейной алгебры (для сингулярного разложения траекторной матрицы используется библиотека ALGLIB). Представленный в файле код включает описания для членов и процедур класса.
Для работы индикатора требуются файлы:
- 1) MQL5\Include\SSA\CCaterpillar.mqh
- 2) MQL5\Indicators\SingularMA.mq5
- 3) Библиотека ALGLIB (присоединяюсь к многим, благодарным Сергею Бочканову за предоставленную замечательную библиотеку численных методов ALGLIB)
Особенности использования
Не стоит задавать фрагмент данных более 300 значений из-за большой вычислительной нагрузки. Оптимально 150-200. Всегда можно перейти на другой период отсчетов графика для охвата большей истории.
Окно "гусеницы" разумно менять в интервале 1/3-1/2 длины фрагмента. Если окно превышает половину фрагмента, то в силу симметрии траекторной и транспонированной ей матрицы, это эквивалентно окну с длиной, симметричной относительно середины фрагмента. Малая длина окна не дает качественного усреднения и разделения информации по отдельным модам.
Если наблюдается замедленное поступление данных в графическом интерфейсе ряда цен, то возможными решениями будут: а) уменьшить длину фрагмента; б) увеличить параметр дискретности пересчета ReCalcLim в функции OnCalculate.
Рис.1. Период 5 мин. Два тренда SSA(120,50,4), SSA(50,20,7) и скользящее среднее MA(14)
Рис. 2. Период 1 час. Два тренда SSA(120,50,4), SSA(50,20,7) и скользящее среднее MA(14)
Рис. 3. Период 1 день. Два тренда SSA(120,50,4), SSA(50,20,7) и скользящее среднее MA(14)
Применение сингулярного анализа для реализации индикатора тренда в данном виде является базовой иллюстрацией. Широкое применение методов ССА в финансовой сфере для анализа и прогнозирования временных рядов представлено в [5-7].
Литература
- Elsner J.B., Tsonis A.A. Singular Spectrum Analysis: A New Tool in Time Series Analysis. Plenum Press. New York, 1996. 164 p.
- Данилов Д.Л., Жиглявский А.А. Главные компоненты временных рядов: Метод «Гусеница». СПб.: СПбГУ, 1997. -308 с.
- Голяндина Н.Э. Метод «Гусеница»-SSA: анализ временных рядов: Учеб. пособие. СПб.: ВВМ, 2004. - 76 с.
- Главные компоненты временных рядов: метод "Гусеница", Под ред. Д. Л. Данилов, А. А. Жиглявский. СПб.: Пресском, 1997. С. 308.
- Метод «Гусеница»-SSA — АРПСС — СПОАРУГ и модель АРСПСС — СПОАРУГ для анализа и прогнозирования финансово-экономических временных рядов: сборник трудов второй Международной научно-методической конференции «Математические методы, модели и информационные технологии в экономике», 4—6 мая 2011 г., Черновцы. — С. 306—308.
- Кожихова Н.А., Ширяев В.И. Прогнозирование временного ряда с учетом хаотической компоненты. Вестник ЮУрГУ, № 22, 2010, С. 22-25.
- А.М. Аvdeenko Advisors and indicators based on the SSA models and non-linear generalizations // см. arXiv:
Торговая система, построенная на сигналах индикатора Volume_Weighted_MA_Digit_System.
Exp_JFatl_Digit_SystemТорговая система, построенная на сигналах индикатора JFatl_Digit_System.
Торговая система, построенная на сигналах индикатора Volume_Weighted_MACandle.
Exp_Donchian_Channels_SystemТорговая система, построенная на сигналах индикатора Donchian_Channels_System.