Совсем зеленый - помогите пожалуйста написать простейший индикатор (линии поддержки и сопротивления)

 

Идея: Отображение на всех таймфреймах одной линии поддержки и одной линии сопротивления, построенные на 4х часовках по отношению к цене открытия первой(00:00) 4х-часовки сегодняшнего дня. Обновление один раз в начале дня (00:00 часов)


Правило определения уровня поддержки (УП): Уровень максимума свечи 1, становиться УП, когда следующая свеча 2 закрывается выше максимума свечи 1  и следующая свеча 3 имеет минимум выше уровня 1 

1

 

 

Правило определения уровня сопротивления (УС):Уровень минимума свечи 1, становиться УС, когда следующая свеча 2 закрывается ниже минимума свечи 1 и следующая свеча 3 имеет максимум ниже  уровня 1

2

 

Загвоздка может быть в том что между свечами №2 и №3 может быть как ноль свечей так и сто 

 
klok44:


До пяти считать умеете? Тогда пронумеруйте свечи на картинках по порядку и правильно.
 
khorosh:
До пяти считать умеете? Тогда пронумеруйте свечи на картинках по порядку и правильно.
Очень часто будет разное кол-во свечей между (1) и (2) свечами. Это не порядковые номера, это для наглядности
 
klok44:
Очень часто будет разное кол-во свечей между (1) и (2) свечами. Это не порядковые номера, это для наглядности
Тогда нумерация вводит только путаницу. Объясняйте без нумерации. Пока ничего непонятно. Свеча начала дня у вас и нулевая и первая одновременно, чёрт ногу сломает.)
 
khorosh:
Тогда нумерация вводит только путаницу. Объясняйте без нумерации. Пока ничего непонятно. Свеча начала дня у вас и нулевая и первая одновременно, чёрт ногу сломает.)

Попробую еще раз  с другой нумерацией (без нее все-таки не объяснишь) :))

Правило определения уровня поддержки (УП): Уровень максимума свечи 1, становиться УП, когда следующая свеча 2 закрывается выше максимума свечи 1  и следующая свеча 3 имеет минимум выше уровня 1 

1


 Правило определения уровня сопротивления (УС):Уровень минимума свечи 1, становиться УС, когда следующая свеча 2 закрывается ниже минимума свечи 1 и следующая свеча 3 имеет максимум ниже  уровня 1

2

 

Загвоздка может быть в том что между свечами №2 и №3 может быть как ноль свечей так и сто 

 

 
klok44:


Загвоздка может быть в том что между свечами №2 и №3 может быть как ноль свечей так и сто 

 

Никак больше трех быть не может, иначе наступит завтра :) 
 
tara:
Никак больше трех быть не может, иначе наступит завтра :) 
1 и 2 свечи это необязательно вчерашние 4х-часовки, они могут бытьи позавчерашние и прошлогодние, короче далековато от 3-ей, главное что бы критерий соблюдался :)
 
Вначале называете УП, а дальше уровень 1. Если это одно и тоже зачем вводить разные названия одного и того же. А если это не одно и тоже, тогда что такое уровень 1.
 
Зачем нужен уровень поддержки, если нельзя понять, что именно сейчас его тестируешь :) 
 
khorosh:
Вначале называете УП, а дальше уровень 1. Если это одно и тоже зачем вводить разные названия одного и того же. А если это не одно и тоже, тогда что такое уровень 1.
Это одно и тоже :) попутал бес..хотя если на картинку посмотреть то там только один уровень (он и есть Уровень Поддержки ака Уровень 1)
 

Интересную идею подкинули ). Индикатор, кстати, вообще простейший будет. Написать можно легко и быстро. Я тоже, можно сказать, зеленый еще, но с несколько десятков индикаторов и советников написал :-). 

Я бы сделал так:

1. Индикатор должен находить актуальные уровни поддержки сопротивления. Т.е. нужно нам для вычислений задать глубину поиска. Допустим, возьмем глубину сканирования - 100 баров.

2. Рассмотрим случай для уровней поддержки. С помощью оператора цикла while(i < 0)  сканируем i == 100 баров. Возьмем первый бар с нумерацией "i".  Небольшое отступление. Здесь в Ваших условиях возможен случай, когда минимум 2 бара будет больше максимума бара 1. И это тоже несет в себе уровень. Т.е. составим условие из двух баров, отстоящий друг от друга на 0...99 баров. Вводим внутренний цикл поиска while(k < i) (еще один) с переменной "k" и ищем бар с выполнением условия  High(i) < Low(i+k). Во время поиска этого условия должно выполняться еще условие (как я понял Вас) Low(i) < Low(i+k). Если последнее условие на любом промежуточном баре не выполняется, то первый бар (бар отсчета поиска с индексом i) становится не актуальным и следует переходить к следующему первому бару.

Как только условие выполнилось строим уровень с помощью функций построения от бара "i" до "i+k". 

3. Если уровень нужно продолжить до настоящего момента, то нужно отдельно просканировать его актуальность на наличия пробоя уровня.

Это условие Level >= Close[i] || Level >= Low[i] + N*IATR(NULL,0,i)/100 ; где N*IATR(NULL,0,i)/100 - диапазон пробоя, заданный как процент N от волатильности рынка АТР.

 

Это кратко. Основная суть алгоритма. Здесь условия еще уточнить надо будет при написании в зависимости от того, что конкретно хочется увидеть на экране.

Причина обращения: