Кто может на словах объяснить, как устроена ARIMA(без сложных формул)? У меня есть желание и возможность сделать индикатор на этом алгоритме.
- Никогда не шарил как правильно пишутся индикаторы, помогите плз.. :)
- Ищу индикатор типа ARIMA
- Машинное обучение в трейдинге: теория и практика (торговля и не только)
Собственно вопрос в названии темы.
Смысл вопроса не понятен. Во-первых, без формул вам всё равно не обойтись никак. Во-вторых, если вы даже не знаете суть этой модели, то откуда взялось желание сделать индикатор и откуда уверенность, что получится?
Много раз мне доводилось видеть математические функции в описании. Как правило с использованием математических символов некоторые из них понял, а другие нет.
На деле потом оказывается, что все проще, просто нужно знать, уметь читать эти конструкции.
Ну, вот к примеру для регрессии нужно вычислить: суммы цен закрытия, суммы цен закрытия помноженных на номера баров, суммы номеров баров, суммы номеров баров в квадрате.
И потом вычислить c,b,a, для получения значений самой регрессии.
Вот кто-нибудь смог бы мне объяснить на таком уровне, как устроена ARIMA. То сделать индикатор мне будет не слишком сложно, могу на MQL4,5.
Много раз мне доводилось видеть математические функции в описании. Как правило с использованием математических символов некоторые из них понял, а другие нет.
На деле потом оказывается, что все проще, просто нужно знать, уметь читать эти конструкции.
Ну, вот к примеру для регрессии нужно вычислить: суммы цен закрытия, суммы цен закрытия помноженных на номера баров, суммы номеров баров, суммы номеров баров в квадрате.
И потом вычислить c,b,a, для получения значений самой регрессии.
Вот кто-нибудь смог бы мне объяснить на таком уровне, как устроена ARIMA. То сделать индикатор мне будет не слишком сложно, могу на MQL4,5.
Никакого отношения к линейной регрессии Ваши вычисления не имеют.
В линейной регрессии, перечисленные Вами коэффициенты, являются случайными величинами. Поэтому обязательно оценивается доверительный интервал для каждого коэффициента, который может быть кратно больше значения самого коэффициента, т.е. значение коэффициента получили, а в реальности его нет.
Но это еще не все.
Все эти вычисления коэффициентов имеют смысл только при соблюдении некоторого набора допущений.
Поэтому дело в формулах а в понимании того, что Вы делаете.
Никакого отношения к линейной регрессии Ваши вычисления не имеют.
В линейной регрессии, перечисленные Вами коэффициенты, являются случайными величинами. Поэтому обязательно оценивается доверительный интервал для каждого коэффициента, который может быть кратно больше значения самого коэффициента, т.е. значение коэффициента получили, а в реальности его нет.
Но это еще не все.
Все эти вычисления коэффициентов имеют смысл только при соблюдении некоторого набора допущений.
Поэтому дело в формулах а в понимании того, что Вы делаете.
Поэтому и обратился к форуму, чтобы понять как устроена ARIMA. В описаниях все на формулах. Читаю и пока понял что нужны данные:
а -коэффициент (постоянный множитель);
е - ошибка прогноза.
А вот как их получают не понятно. Они есть в описании автокорреляции первого и второго порядка.
Ошибка прогоноза предполагаю, что это разница между фактической ценой и прогнозируемым значением линейной регрессии?
Посмотрите это, мб поможет в понимании
но вообще, на фин. рынках ее эффективность стремится к нолю, если только каким-то неординарным образом использовать
Посмотрите это, мб поможет в понимании
но вообще, на фин. рынках ее эффективность стремится к нолю, если только каким-то неординарным образом использовать
Нашел описание авторегрессии первого порядка: берется один ценовой ряд и второй со сдвигом на один бар. Рассчитываются коэффициенты и подставляются в формулу, для получения прогноза.
Сделал индикатор на этой основе. Вопрос что такое авторегрессия второго порядка?
Дальше из описания следует, что выбирается та авторегрессия, которая дает большую корреляцию, я так понимаю проверяется корреляция между ценовым рядом?
Нашел описание авторегрессии первого порядка: берется один ценовой ряд и второй со сдвигом на один бар. Рассчитываются коэффициенты и подставляются в формулу, для получения прогноза.
Сделал индикатор на этой основе. Вопрос что такое авторегрессия второго порядка?
Дальше из описания следует, что выбирается та авторегрессия, которая дает большую корреляцию, я так понимаю проверяется корреляция между ценовым рядом?
просто добавляется еще один влияющий фактор, ценовой бар со сдвигом на 2 бара, и суммируется с первым сдвигом
Yi = a0 + ai*Yi-1+Ɛi - первого порядка
Yi = a0 + ai*Yi-1 + ai*Yi-2 +Ɛi - второго
Yi = a0 + ai*Yi-1 + ai*Yi-2 + ai*Yi-3 +Ɛi - третьего
.....
авторегрессия 1-го порядка всегда эквивалентна приращением цен с тем же сдвигом
Про корреляцию - скорее всего имеется в виду коэффициент детерминации R^2, чем меньше дисперсия между построенным рядом и регрессионной моделью тем она лучше приближает котировки, ну можно и коэффициент корреляции смотреть.
Т.е. после этих манипуляций получается AR(p) модель, где p - порядок модели
что бы получить ARMA(p,q) нужно сложить AR(p) авторегрессионную модель с MA(q), где q это порядок модели, или период мувинга. ARMA используется для прогнозирования стац. рядов
А на следующем шаге уже ARIMA для нестационарных рядов. ARIMA(p,d,q) - для этого еще нужно продифференцировать исходный временной ряд, т.е., грубо, сделать из него стационарный и потом применить к нему ARMA(p,q)
На этом канале все от и до разжевано.
https://www.youtube.com/playlist?list=PLu5flfwrnSD6wzkzgs4TocGL5GOXmEjZE
- www.youtube.com
Вот текст индикатора (правда очень старый) на основе ar.
// шшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшш // Версия от 25.06.2012 // щщщщщщщщщщщщщщщщщщщщщщщщщщщщщщщщщщщщщщщщщщщщщщщщщщщщщщщщщщщщщщщщщщщщщщщщщщщщ #property copyright "© 2010 Bernd Kreuss" // http://www.forexfactory.com/showthread.php?t=260422 // Здесь исходный текст #property indicator_chart_window #property indicator_buffers 2 #property indicator_color1 Red #property indicator_width1 2 #property indicator_color2 Aqua #property indicator_width2 1 #include <mt4R.mqh> extern int order = 200; extern int back = 500; extern int ahead = 2; bool First = true; int R; double buf_prediction[]; double buf_prediction_const[]; // шшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшш int init() { SetIndexBuffer (0, buf_prediction); SetIndexStyle (0, DRAW_LINE); SetIndexShift (0, ahead); SetIndexBuffer (1, buf_prediction_const); SetIndexStyle (1, DRAW_LINE); SetIndexShift (1, ahead); R = RInit("G:/Program Files/R-2.15.3/bin/x64/Rterm.exe --no-save", 2); Comment("history: " + back + " bars, method: OLS, order: " + order); } // шшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшш int deinit() { RExecute(R, "q"); RDeinit(R); } // шшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшш int start() { double hist[]; double pred[]; int i; if (RIsBusy(R)) { // Последний RExecuteAsync() все еще не закончил - ничего не делать. return(0); } if (RGetInteger (R, "as.integer(exists('model'))") == 1) { // Здесь существует модель (переменная установлена). // Это означает, что предыдущий старт RExecuteAsync() завершился. // Теперь можно предсказать от модели и нарисовать предсказание. RAssignInteger (R, "ahead", ahead); RExecute (R, "pred <- predict(model, n.ahead=ahead)$pred"); ArrayResize (pred, ahead); RGetVector (R, "rev(pred)", pred, ahead); // Обратная упорядоченность pred if (First) // Добавил для проверки прогноза при запуске. { for (i=0; i<ahead; i++) { buf_prediction_const[i] = pred[i]; } First = false; } for (i=0; i<ahead; i++) { buf_prediction[i] = pred[i]; } } // Сделать (новое) предсказание // Передать некоторую историю в R ArrayResize (hist, back); for (i=0; i<back; i++) { hist[i] = Close[i]; } RAssignVector (R, "hist", hist, ArraySize(hist)); RExecute (R, "hist <- rev(hist)"); // Обратная упорядоченности hist // crunch the numbers in the background and return from the start() function // RIsBusy() на следующем тике скажет нам когда он закончит. RAssignInteger (R, "ord", order); RExecuteAsync (R, "model <- ar(hist, aic=FALSE, order=ord, method='ols')"); return(0); } // шшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшш
В отмеченной строке меняете название функции с ar на ARIMA. Дописываете параметры и вперед. Предсказываете.
Кстати меняете несколько символов и получаете индикатор, предсказание по которому ведется по любому из алгоритмов, доступных в R.
Индикатор был в кодобазе, 7500 просмотров. Текст индикатора взял из собственного архива.
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Вы принимаете политику сайта и условия использования