Задача найти среднее значение двух буферов.

Авторизуйтесь или зарегистрируйтесь, чтобы добавить комментарий
Uladzimir Izerski
8489
Uladzimir Izerski  

Не даёт покоя, на первый взгляд, простая задача. Как найти среднее значение из двух буферов за период скажем 5 в цикле?

Имеем Буфер1 и Буфер2. Когда один буфер рисуются, то противоположный имеют значение  EMPTY_VALUE.

Есть ли короткое решение с минимальными затратами на ресурсы?

Может у кого есть оригинальные идеи?


Олег avtomat
8836
Олег avtomat  

Напр. так

в цикле

   if(A[j]==EMPTY_VALUE)   S[j]=S[j+1]+B[j]; 
   if(B[j]==EMPTY_VALUE)   S[j]=S[j+1]+A[j]; 
   


 Получаешь сумму в скользящем окне, а дальше делай с ней, что хошь -- дели, умножай, извлекай  ;)))

Vladimir Karputov
Модератор
180734
Vladimir Karputov  
Uladzimir Izerski:

Не даёт покоя, на первый взгляд, простая задача. Как найти среднее значение из двух буферов за период скажем 5 в цикле?

Имеем Буфер1 и Буфер2. Когда один буфер рисуются, то противоположный имеют значение  EMPTY_VALUE.

Есть ли короткое решение с минимальными затратами на ресурсы?

Может у кого есть оригинальные идеи?

Так как EMPTY_VALUE это число и не маленькое число :), то используйте вместо EMPTY_VALUE значение "0.0". В таком случае при суммировании значений "0.0" не повлияет на среднее.

Fast235
2003
Fast235  
Vladimir Karputov:

Так как EMPTY_VALUE это число и не маленькое число :), то используйте вместо EMPTY_VALUE значение "0.0". В таком случае при суммировании значений "0.0" не повлияет на среднее.

NULL в этом случае тоже подойдет?

не могу никак сообразить почему EMPTY_VALUE возвращает максимальное число? для чего? (уже дошло, любое другое может быть значением индикатора)

кстати DBL_MAX жмем F1 и попадаем в справке на TranslateKey

Vladimir Karputov
Модератор
180734
Vladimir Karputov  
Fast528:

NULL в этом случае тоже подойдет?

Если судить по документации

Константа

Описание

Значение

CHARTS_MAX

Максимально возможное количество одновременно открытых графиков в терминале

100

clrNONE

Отсутствие цвета

-1

EMPTY_VALUE

Пустое значение в индикаторном буфере

DBL_MAX

INVALID_HANDLE

Некорректный хэндл

-1

IS_DEBUG_MODE

Признак работы mq5-программы в режиме отладки

в режиме отладки не равно нулю, в противном случае 0

IS_PROFILE_MODE

Признак работы mq5-программы в режиме профилирования

в режиме профилирования не равно нулю, в противном случае 0

NULL

Ноль любого типа

0

WHOLE_ARRAY

Означает количество элементов, оставшееся до конца массива, то есть, будет обработан весь массив

-1

WRONG_VALUE

Константа может неявно приводиться к типу любого перечисления.

-1

то подойдёт.

Но я в индикаторах принудительно использую или EMPTY_VALUE или "0.0". От "NULL" отказался вообще и в индикаторах и в советниках (то есть во всех функциях, где можно символ задать как "NULL" я прописываю название символа явно).

Uladzimir Izerski
8489
Uladzimir Izerski  
Когда имеешь дело с двумя буферами  то EMPTY_VALUE и 0 могут иметь разное значение. 
Fast235
2003
Fast235  
Uladzimir Izerski:
Когда имеешь дело с двумя индикаторами  то EMPTY_VALUE и 0 могут иметь разное значение. 

у цветного буфера 0 рабочее значение

Vladimir Karputov
Модератор
180734
Vladimir Karputov  
Uladzimir Izerski:
Когда имеешь дело с двумя индикаторами  то EMPTY_VALUE и 0 могут иметь разное значение. 

Это и так два разных числа. 

EMPTY_VALUE -> DBL_MAX -> 1.7976931348623158e+308

А ноль он и в Африке ноль.

Uladzimir Izerski
8489
Uladzimir Izerski  
Fast528:

у цветного буфера 0 рабочее значение

Да рабочее. Может быть положительным, отрицательным и 0 тоже. Исправил на буфера. Недосыпание))

Uladzimir Izerski
8489
Uladzimir Izerski  
Vladimir Karputov:

Это и так два разных числа. 

EMPTY_VALUE -> DBL_MAX -> 1.7976931348623158e+308

А ноль он и в Африке ноль.

Правильно. Поэтому 0 не подходит.

Fast235
2003
Fast235  

Кто может подсказать как проще найти ровную прямую у индикатора в течение 1-3 дня на H1 к примеру найти уровень индикатора когда он не менялся к примеру 5 баров?



12
Авторизуйтесь или зарегистрируйтесь, чтобы добавить комментарий