А если вычислить массив квадратичных весов в функции init(), вообще все может вполне шоколадно получиться. Да еще и оптимизировать вычисления с помощью IndicatorCounted(). Ну будет он подвисать первые несколько секунд при больших периодах, да и шут с ним...
А если вычислить массив квадратичных весов в функции init(), вообще все может вполне шоколадно получиться. Да еще и оптимизировать вычисления с помощью IndicatorCounted(). Ну будет он подвисать первые несколько секунд при больших периодах, да и шут с ним...
Пробовал. По готовому массиву считает скользящую регрессию со скоростью обыкновенной машки. Единственное Неудобство, массив получился размерностью А[][20] (на изи нет структур), и приходится как на БЭСМ-3 помнить цифровой адрес ячейки)))
Ну будет он подвисать первые несколько секунд при больших периодах, да и шут с ним...
Мне кажется заметного подвисания на первом расчёте быть не должно. Но, как сейчас кажется, мы должны сначала рассчитать уходящие значения (запоминать их смысла вроде нет), затем посчитать редуцированные суммы, затем рекуррентно рассчитать их новые значения и, наконец, добавить входящие значения. Всё это для трёх сумм (собственно сумма, первая и вторая производная). При небольшом периоде это, по числу операций, вполне потянет на полный расчёт единственной нужной суммы. Вообще говоря, такое предельное форсирование оправдано только если алгоритм предназначен для оптимизации в тестере, имхо.
Полином: K0*X^0+K1*X^1+K2*X^2+K3*X^3..., коэффициенты К определяются в строке K="1/5/6/1/-20" (K0=1, K2=5...). Аргумент X меняется в пределах от ArgumentMin до ArgumentMax и получается некоторая кривулина, которую можно посмотреть в режиме ControlMode=true, а дальше эта кривулина использутся как коэффициенты для скользящей.
Было бы интересней сделать сплайн, а то этим полнимомом не просто получить желаемую форму кривой.
Краевое значение ( X 1, правый край) для кубического полинома построенного при помощи МНК, для семи точек ряда, ( X 7*(-2)+ X 6*(4)+ X 5*(1)+ X 4*(-4)+ X 3*(-4)+ X 2*(8)+ X 1*(39))/42 . Ряд для проверки 0, 1, 8, 27, 64, 125, 216, при подстановке в формулу первых шести чисел в результате должно быть 216, так как выравнивается кубическим полиномом ряд состоящий из кубов. Источник, Кендалл М и Стьюарт А.
Кстати, тот же самый кубический полином для семи точек, но дающий оценку значения по МНК для средних точек, т.е.
Для X 4 будет ( X 7*(-2)+ X 6*(3)+ X 5*(6)+ X 4*(7)+ X 3*(6)+ X 2*(3)+ X 1*(-2))/21
Для Х3 будет ( X 7*(1)+ X 6*(-4)+ X 5*(2)+ X 4*(12)+ X 3*(19)+ X 2*(16)+ X 1*(-4))/42
Для Х2 будет ( X 7*(4)+ X 6*(-7)+ X 5*(-4)+ X 4*(6)+ X 3*(16)+ X 2*(19)+ X 1*(8))/42
Вообще, это интерполяционные формулы, по этому для экстраполяции, например в точку X 0, т.е в будущее, за пределы существующего ряда, придется искать другие коэффициенты в формуле.
Для авторизации и пользования сайтом MQL5.com необходимо разрешить использование файлов Сookie.
Пожалуйста, включите в вашем браузере данную настройку, иначе вы не сможете авторизоваться.
Вы вошли в аккаунт. Двухфакторная аутентификация отключена. Настройте её заново и отсканируйте новый QR-код или продолжите с отключённой двухфакторной аутентификацией.
А если вычислить массив квадратичных весов в функции init(), вообще все может вполне шоколадно получиться. Да еще и оптимизировать вычисления с помощью IndicatorCounted(). Ну будет он подвисать первые несколько секунд при больших периодах, да и шут с ним...
А если вычислить массив квадратичных весов в функции init(), вообще все может вполне шоколадно получиться. Да еще и оптимизировать вычисления с помощью IndicatorCounted(). Ну будет он подвисать первые несколько секунд при больших периодах, да и шут с ним...
Единственное Неудобство, массив получился размерностью А[][20] (на изи нет структур),
и приходится как на БЭСМ-3 помнить цифровой адрес ячейки)))
Ну будет он подвисать первые несколько секунд при больших периодах, да и шут с ним...
Вообще говоря, такое предельное форсирование оправдано только если алгоритм предназначен для оптимизации в тестере, имхо.
Это не просто:-)
Полином: K0*X^0+K1*X^1+K2*X^2+K3*X^3..., коэффициенты К определяются в строке K="1/5/6/1/-20" (K0=1, K2=5...). Аргумент X меняется в пределах от ArgumentMin до ArgumentMax и получается некоторая кривулина, которую можно посмотреть в режиме ControlMode=true, а дальше эта кривулина использутся как коэффициенты для скользящей.
Было бы интересней сделать сплайн, а то этим полнимомом не просто получить желаемую форму кривой.
Кривая - это что-то типа весовой функции к-тов для машки?
да, они и есть
Краевое значение ( X 1, правый край) для кубического полинома построенного при помощи МНК, для семи точек ряда, ( X 7*(-2)+ X 6*(4)+ X 5*(1)+ X 4*(-4)+ X 3*(-4)+ X 2*(8)+ X 1*(39))/42 . Ряд для проверки 0, 1, 8, 27, 64, 125, 216, при подстановке в формулу первых шести чисел в результате должно быть 216, так как выравнивается кубическим полиномом ряд состоящий из кубов. Источник, Кендалл М и Стьюарт А.
Кстати, тот же самый кубический полином для семи точек, но дающий оценку значения по МНК для средних точек, т.е.
Для X 4 будет ( X 7*(-2)+ X 6*(3)+ X 5*(6)+ X 4*(7)+ X 3*(6)+ X 2*(3)+ X 1*(-2))/21
Для Х3 будет ( X 7*(1)+ X 6*(-4)+ X 5*(2)+ X 4*(12)+ X 3*(19)+ X 2*(16)+ X 1*(-4))/42
Для Х2 будет ( X 7*(4)+ X 6*(-7)+ X 5*(-4)+ X 4*(6)+ X 3*(16)+ X 2*(19)+ X 1*(8))/42
Вообще, это интерполяционные формулы, по этому для экстраполяции, например в точку X 0, т.е в будущее, за пределы существующего ряда, придется искать другие коэффициенты в формуле.