Проблема в том, что сами машки надо научиться вычислять еще оптимальнее, чем в стандартном пакете метаквотов. Нужен какой-то рекуррентный алгоритм вычислений машек, при котором по известной машке периода N вычисляется машка периода N+1. В принципе он несложен, но тогда придется отвергнуть стандартный алгоритм метаквотов.
По поводу плотности машек: здесь явно нужен какой-то алгоритм кластеризации, так как они могут располагаться очень неоднородно по вертикали (для заданного бара). Короче, задача технически совсем непроста.
Можно сделать индикатор, в котором последние сто(если использовать сто машек) значений возвращают значения машек. Но в таком случае речь пойдет только о SMA. У других машек алгоритм немного другой, но в принципе тоже реализуемо.
Не совсем понял, Виктор. Поясни, пожалуйста, подробнее. Что такое "последние сто"? В одном одномерном массиве?
В принципе рекуррентность в алгоритме метаквотов уже заложена для всех машек. Но она хороша для вызовов машек одного периода. А у нас-то периоды разные каждый раз.
В принципе рекуррентность в алгоритме метаквотов уже заложена для всех машек. Но она хороша для вызовов машек одного периода. А у нас-то периоды разные каждый раз.
Не совсем понял, Виктор. Поясни, пожалуйста, подробнее. Что такое "последние сто"? В одном одномерном массиве?
В принципе рекуррентность в алгоритме метаквотов уже заложена для всех машек. Но она хороша для вызовов машек одного периода. А у нас-то периоды разные каждый раз.
Функция вместо дорогущего вызова iMA() (который будет суммировать кучу слагаемых) независимо от периода вычисляет машку с периодом, увеличенным на 1. Таким образом, фактически на каждом обсчитываемом баре iMA() можно вызывать только один раз, первый и последний.
Для EMA аналогичный алгоритм тоже рекуррентен, хотя не настолько очевиден. SMMA эквивалентна EMA, осталось только LWMA посмотреть.
Ну да, сумма и запоминается, точнее прежний SMA. Никаких проблем выложить два кода, делающих тыщу вычислений машки на одном баре стандартным методом, и того же самого моим способом. И сравнить их эффективности.
Ага, Candid, понял теперь. Для произвольного бара со сдвигом sh:
// размер массива SMA[] уже установлен равным N+1 перед вызовом функцииvoidcreateSMAsArray(intsh, double& SMA[]){doubleSum = 0;
for(inti = 1; i <= N; i ++ ){Sum += Close[sh + i - 1];
SMA[i] = Sum / i;
}
return;
}
Так, что ли? Обрати внимание на начальный индекс суммирования.
Для авторизации и пользования сайтом MQL5.com необходимо разрешить использование файлов Сookie.
Пожалуйста, включите в вашем браузере данную настройку, иначе вы не сможете авторизоваться.
Вы вошли в аккаунт. Двухфакторная аутентификация отключена. Настройте её заново и отсканируйте новый QR-код или продолжите с отключённой двухфакторной аутентификацией.
но тогда придется отвергнуть стандартный алгоритм метаквотов.
Его нужно отвергнуть. Если конечно время имеет значение.
Проблема в том, что сами машки надо научиться вычислять еще оптимальнее, чем в стандартном пакете метаквотов. Нужен какой-то рекуррентный алгоритм вычислений машек, при котором по известной машке периода N вычисляется машка периода N+1. В принципе он несложен, но тогда придется отвергнуть стандартный алгоритм метаквотов.
По поводу плотности машек: здесь явно нужен какой-то алгоритм кластеризации, так как они могут располагаться очень неоднородно по вертикали (для заданного бара). Короче, задача технически совсем непроста.
Не совсем понял, Виктор. Поясни, пожалуйста, подробнее. Что такое "последние сто"? В одном одномерном массиве?
В принципе рекуррентность в алгоритме метаквотов уже заложена для всех машек. Но она хороша для вызовов машек одного периода. А у нас-то периоды разные каждый раз.
В принципе рекуррентность в алгоритме метаквотов уже заложена для всех машек. Но она хороша для вызовов машек одного периода. А у нас-то периоды разные каждый раз.
Не совсем понял, Виктор. Поясни, пожалуйста, подробнее. Что такое "последние сто"? В одном одномерном массиве?
В принципе рекуррентность в алгоритме метаквотов уже заложена для всех машек. Но она хороша для вызовов машек одного периода. А у нас-то периоды разные каждый раз.
Что -то подобное.Если считать по среднему,
Я имел в виду другое.
Функция вместо дорогущего вызова iMA() (который будет суммировать кучу слагаемых) независимо от периода вычисляет машку с периодом, увеличенным на 1. Таким образом, фактически на каждом обсчитываемом баре iMA() можно вызывать только один раз, первый и последний.
Для EMA аналогичный алгоритм тоже рекуррентен, хотя не настолько очевиден. SMMA эквивалентна EMA, осталось только LWMA посмотреть.
Конечно быстрее. Но я говорю про "ещё быстрее" :). Сравни с моим, который выше.
Так, что ли? Обрати внимание на начальный индекс суммирования.