Здравствуйте, напишите, пожалуйста, индикатор для отрисовки экстремумов на графике.
Входные параметры:
bool drawMax = true; //включение отрисовки максимумов
bool drawMin = true; //включение отрисовки минимумов
double level = 50; //на примере RSI на скрине. уровень, относительно которого смотрим длительность нахождения индикатора выше/ниже.
int duration = 20; //длительность (в барах текущего графика) нахождения индикатора выше/ниже уровня.
int lineLength = 15; //длина линии (в барах текущего графика) на графике от экстремума вправо. Цвет, толщина, стиль — константа на
Ваше усмотрение.
double pogreshnost = 0.01; //при появлении незначительно отличающихся значений экстремумов индикатора предлагаю сравнить их разницу с этим числом. если разность не превышает это значение, то отрисовать 2 экстремума на графике.
В коде необходимо предусмотреть возможность запрашивать значение разных подвальных (а может и не только подвальных) индикаторов, чтобы поиграться. Может и получится что-нибудь.
Суть в следующем:
Вариант
первый(рисующий)предпочтительный:
-при пересечении уровня индикатором рисовать значок экстремума и двигать его при появлении нового максимума. Затем при выходе индикатора за уровень смотреть сколько мы там находились. Сравнивать количество баров с duration. если >=, то оставляем значок. Если < то удаляем.
Вариант
второй (нежелательный):
-отлавливаем пересечение туда-сюда. считаем бары. Сравнивать количество баров с duration. если >=, то рисуем значок. Если < то ничего не делаем.
В обоих случаях при наличии экстремума рисуем линию длиной lineLength после выхода из состояния выше/ниже.
Спасибо.
Всем счастья
Комментарии (1)
35 AM2 Сообщений: 16425 - Андрей
Зарегистрируйтесь или авторизуйтесь, чтобы оставить комментарий