Скользящая средняя(SMA) в количестве 2000 шт. расчитать при минимальных затрат ресурсов. - страница 5
Вы упускаете торговые возможности:
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Регистрация
Вход
Вы принимаете политику сайта и условия использования
Если у вас нет учетной записи, зарегистрируйтесь
Что вы называете фидом?
Любый данные (числовые) можно положить в буфер индикатора. Начните с этого. Чтоб нужные данные были видны, если не на графике, то в окне данных (Ctrl+D).
А потом из советника просто возьмите значение нужного буфера на нужном баре.
Фид - это n-ое количество скользящих средних. Допустим 2000-и скользящих средних на нулевом баре.
То есть извлечь данные с индикатора, который высчитывает значение 50 - ой МА (пример) на нулевом баре.
numMa - это количество вычисляемого фида МА, то есть в индикаторе будет хранится значение заданного количества МА.(например 2000 значений периодов МА)
a - номер бара, на каком баре произвести расчет.
И что, работает?
Если нет, мои предыдущие советы остаются в силе.
И что, работает?
Если нет, мои предыдущие советы остаются в силе.
NaZnPrd - Значение пытаюсь присвоить нюлевому буферу, что то делаю не так?
NaZnPrd - Значение пытаюсь присвоить нюлевому буферу, что то делаю не так?
А что не получается? Не присваивается?
Упростите код, чтоб вы сами понимали, что он делает.
Начните с такого:
А потом усложняйте. Когда появится проблема, пишите конкретно о ней.
Потому что разбирать весь ваш код не интересно.
А что не получается? Не присваивается?
Упростите код, чтоб вы сами понимали, что он делает.
Начните с такого:
А потом усложняйте. Когда появится проблема, пишите конкретно о ней.
Потому что разбирать весь ваш код не интересно.
Да уж, удивляет что до сих пор отвечаете!)
Блин я уже просто не знаю, как ...
sm.d[numMa-1] - Задаем нужный период скользящей средней,или количество SMA для расчета.
m[a] - Задаем № бара.
sm.d[numMa-1].m[a] - по заданным параметрам получаем значение цены на требуемом баре, с требуемом периодом SMA
Как связать эту информацию, с буферами индикатора.
Чтоб было возможно вытащить эти значения через эксперт?
Да уж, удивляет что до сих пор отвечаете!)
Блин я уже просто не знаю, как ...
sm.d[numMa-1] - Задаем нужный период скользящей средней,или количество SMA для расчета.
m[a] - Задаем № бара.
sm.d[numMa-1].m[a] - по заданным параметрам получаем значение цены на требуемом баре, с требуемом периодом SMA
Как связать эту информацию, с буферами индикатора.
Чтоб было возможно вытащить эти значения через эксперт?
У вас в предыдущем коде были правильные строки:
Объявили массив, привязали его к буфферу, присвоили значение на определенном баре.
Чтоб присвоить значение для бара с индексом а, как в последнем примере, сделайте так:
NaZnPrd[a]=12345;
Если нарисуется линия на уровне 12345, двигайтесь дальше - присваивайте на каждом баре новое значение.
Если и это выйдет, тогда присваивайте то, что вы посчитали в своих многоэтажных массивах )
Да уж, удивляет что до сих пор отвечаете!)
Здравствуйте. Задача найти аналог параметру &Price для эксперта по подобию индикатора, то есть в первом коде все работает как надо, как организовать во втором, что подставить за место Price
объявляю в эксперте, выдает ошибку
Тогда не надо хранить старые значения. На каждой итерации делаем 2000 сложений. Меньше никак.
Если надо не с периода 1 или 2 начать, тогда для минимального периода применять ускоренный алгоритм с хранением старого значения, а дальше только прибавлять.
Ускоренный алгоритм это два действия - отнять старое, прибавить новое. Значит если минимальный период больше от 4, то есть смысл в его использовании для минимального периода.
Тогда вам надо 2000 буферов, и по каждому из них экономно считать SMA ;)
Это будет экономнее по процессору, но затратнее по памяти.
Можно ускориться еще больше и при этом сократить используемую память по минимуму.
Идея в следующем: рассчитывать все требуемые периоды SMA на одном массиве данных (вернее на одном списке). Массив данных будет один - его длина будет равна периоду самой медленной MA. Параллельно хранится массив из, в данном случае, 2000 значений double, содержащих суммы ряда. При запросе значения MA с произвольным периодом, делается пересчет нужной суммы и ее средней, которая затем возвращается.
Естественно, такой алгоритм можно будет реализовать только с помощью классов, потому что внутренняя реализация будет весьма нетривиальной и базироваться на словарях (для быстрого доступа к произвольному индексу). Но скорость потенциально может быть просто феерической. При том выигрыш будет особенно заметен именно при расчете кластеров индикаторов (1000, 2000, 10000 индикаторов в одном флаконе).
З.Ы. Интерфейс класса будет примерно следующим:
Период усреднения можно будет задавать произвольно, непосредственно перед получением значения. Никаких промежуточных расчетов выполнять не нужно (все расчеты будут выполнены за пользователя внутри класса).
Здравствуйте. Задача найти аналог параметру &Price для эксперта по подобию индикатора, то есть в первом коде все работает как надо, как организовать во втором, что подставить за место Price
объявляю в эксперте, выдает ошибку
Что за функция sm.Solve?
Вы скопировали Pmax элементов MqlRates. А что хотите передать?
Массива close нет, у вас массив MqlRates. Можете передать нужный close - mrate[index].close.
А если нужен массив клоузов - используйте CopyClose().