Продолжение разработки советника для ценовых уровней

MQL4 Эксперты

Работа завершена

Время выполнения 30 дней

Техническое задание


  Для покупки:
0. От последнего бара в окне (размер окна задается в настройках как «Число баров в окне поиска») на расстоянии >= «Мин. расстояние между барами» (задается в настройках) по направлению к нулевому бару в пределах расстояния «Число баров в окне поиска»/2 советник ищет бар (который далее будет называться «отдаленный бар»), по которому вместе с нулевым баром будет строиться линия уровня цен. 
0. Советник рассчитывает для любого рассматриваемого бара «Угол рассматриваемого бара относительно нулевого» = (значение цены открытия нулевого бара  - значение цены открытия рассматриваемого бара)/число баров от нулевого до рассматриваемого бара. 
0. Для каждого рассматриваемого бара при поиске «отдаленного бара» (в соответствии с п. 1) советник высчитывает количество баров, у которых «Угол бара относительно нулевого» меньше чему у рассматриваемого бара (т.е. советник считает количество баров, цены открытия которых находятся выше линии между ценой открытия рассматриваемого бара и нулевого). Также советник высчитывает число баров, у которых «Угол бара относительно нулевого» больше чем величина этого же параметра у рассматриваемого бара, т.е. советник ищет количество баров, цены открытия которых находятся ниже математической линии между ценой открытия рассматриваемого бара и нулевого бара.
0. Далее советник считает для каждого рассматриваемого бара величину параметра «Лояльность к линии» = количество баров в окне поиска с углом меньше чем у рассматриваемого бара / число баров в окне поиска. Значение этого параметра для определения ценового уровня задается в настройках.  Например, если «Лояльность к линии» = 0.95, то если в окне поиска 100 баров, то только 5 из них имеют тела, цены открытия которых находятся ниже линии (от рассматриваемого бара до нулевого). Как только советник находит первый бар (начинается поиск с последнего в окне и заканчивается на расстоянии «Число баров в окне поиска»/2 от нулевого бара), у которого цена открытия удовлетворяет этому условию (то есть значение «Лояльности» равно или больше заданного в настройках), то это значит что советник нашел предполагаемый «отдаленный бар», по которому от нулевого бара строится линия уровня. 
0. Доп. условие для отдаленного бара: «Лояльность» в промежутке от последнего бара в окне поиска до отдаленного бара (этот промежуток должен быть >= «Мин. расстояние между барами», п. 1) должна быть равна или больше заданной в настройках.  
0. Далее советник ищет по направлению к нулевому бару, начиная с расстояния «Число баров в окне поиска»/2  и до расстояния «Мин. расстояние между барами», бар, у которого цена открытия находится ниже найденной предполагаемой линии уровня цен (т.е. бар у которого «Угол бара относительно нулевого» > «Угол отдаленного бара относительно нулевого»). Этот бар будет называться далее «ближайшим баром». 
0. Задается параметр «Расстояние от данного бара до линии тренда» = (значение цены открытия данного бара - значение цены открытия нулевого бара) + «Угол тренда»* число баров между нулевым и данным. «Угол тренда» = «Угол отдаленного бара относительно нулевого» = (цена открытия нулевого бара - цена открытия отдаленного бара) / число баров между нулевым и отдаленным. Советник находит от нулевого бара до «ближайшего бара» бар с максимальным значением параметра «Расстояние от данного бара до линии тренда» (т.е. ближайшую ширину тренда), и так же находит бар с максимальным значением этого параметра для баров от ближайшего до «отдаленного бара» (отдаленную ширину тренда). 
0. Далее должны выполняться следующие условия: ближайшая и отдаленная ширина тренда должны быть > «Минимальная ширина тренда» (параметр, задаваемый в настройках). Также ближайшая ширина тренда > отдаленная ширина тренда* «Стабильность тренда». «Стабильность тренда» - это коэффициент (например, 0.8), задаваемый в настройках. 
0. Если все условия соблюдены, то линия ценового уровня считается найденной и советник отрисовывает широкую голубую линию от значения цены открытия нулевого бара до значения цены открытия отдаленного бара.  В настройках должны быть заданы минимальный и максимальный «Угол тренда». Важно чтобы можно было задавать минимальный угол тренда не только положительным числом, но и отрицательным числом (близким к 0). То есть учитывать допуски флета.
0. Советник выставляет над линией уровня цен (в расчете на разворот цены вверх, внутрь тренда) параллельно ей математическую линию на расстоянии «Старт» от цены открытия нулевого бара ( «Старт» - это параметр, задаваемый в настройках). Эта линия должна быть также отрисована (ярко-желтая и поуже). С этого момента цена идет вправо за «нулевой бар», поэтому это название далее будет условным, а реальный нулевой бар мы будем называть текущим баром. Условие входа в рынок следующее: значение цены открытия текущего бара > значение цены открытия нулевого бара + «Старт»+ «Угол тренда»* число баров от текущего до нулевого. 
0. Советник выбирает между значениями ближайшей и отдаленной ширины тренда минимальное значение и выставляет профит по такому условию: цена открытия текущего бара > выбранное значение ширины тренда + цена открытия нулевого бара + «Угол тренда»* число баров от текущего до нулевого. Линия профит отрисовывается зеленым цветом, толщина линии такая же, как и «старт». 
0. Также в советнике может задаваться в настройках фиксированный тейкпрофит. Стоплосс задается в настройках в процентах от значения тейкпрофита (либо фиксированного, либо автоматического). Фиксированный тейкпрофит выставляется стандартно, как расстояние от открытой сделки. Автоматический же выставляется по формуле выше. 
0. В советнике имеется опция трейллинг стоп. Ширина трала выставляется в настройках в процентном значении от тейкпрофита, либо фиксированного, либо автоматического (так же как и стоплосс), а линия стоп трала находится в нулевом безубытке. 
0. В советнике все условия привязаны к цене открытия баров, чтобы обеспечить использование быстрого режима оптимизации в МТ, поэтому линии стоп трала и стоплосс должны также срабатывать по открытию бара за соответствующей линией.  
0. В случае если советник не входит в рынок, по условию «Количество баров ожидания сделки» (задается в настройках), уровень обнуляется и начинается поиск нового. 
0. Советник имеет опцию «Использовать пробой» (да/нет). Если она активна, то одновременно с выставлением линии старт как описано ранее, советник выставляет горизонтальную линию ниже цены открытия нулевого бара на расстоянии «Расстояние до пробоя» (задается в настройках в процентном отношении от «выбранного значения ширины тренда»). Эта линия отрисовывается также ярко-желтым, толщина как у линии «старт».   
0. Если ценовой бар открывается ниже этой линии, затем один из следующих баров открывается выше линии «Расстояние до пробоя»/2 (эта виртуальная линия находится также ниже нулевого бара), после чего один из следующих баров вновь открывается ниже линии «Расстояние до пробоя», то советник входит в продажу. 
0. Стоплосс и тейкпрофит опции «Использовать пробой» выставляются в процентном отношении от «Расстояние до пробоя». Стандартные линии (стоплосс, задаваемый тейкпрофит и линия стоп трала) должны быть должны иметь обычный вид (красного цвета). Линия трала должна перерисовываться при появлении новых цен открытия (если они движутся в направлении профита). 
0. Сделки выставляются либо с фиксированным лотом, либо с рассчитываемым. Процент риска для рассчитываемого лота, скажем, 2%, означает, что при закрытии сделки по любому стоплоссу теряется 2% от депозита (разумеется, точного значения в реальности не будет так как ордера закрываются по условию открытия бара за линией стоплосс). 
0. Нужно чтобы на линии уровня можно было увидеть 4 основных точки из ТЗ: нулевой, ближайший и отдаленный бары (чтобы была видна корректность работы советника). 

Для продажи:
      1. От последнего бара в окне (размер окна задается в настройках как «Число баров в  окне поиска») на расстоянии >= «Мин. расстояние между барами» (задается в  настройках) по направлению к нулевому бару в пределах расстояния «Число баров в  окне поиска»/2 советник ищет бар (который далее будет называться «отдаленный  бар»), по которому вместе с нулевым баром будет строиться линия уровня цен.
2. Советник рассчитывает для любого рассматриваемого бара «Угол     рассматриваемого бара относительно нулевого» = (значение цены открытия рассматриваемого бара - значение цены открытия нулевого бара)/число баров от нулевого до рассматриваемого бара. 
3. Для каждого рассматриваемого бара при поиске «отдаленного бара» (в соответствии с п. 1) советник высчитывает количество баров, у которых «Угол бара относительно нулевого» меньше чему у рассматриваемого бара (т.е. советник считает количество баров, цены открытия которых находятся ниже линии между ценой открытия рассматриваемого бара и нулевого). Также советник высчитывает число баров, у которых «Угол бара относительно нулевого» больше чем величина этого же параметра у рассматриваемого бара, т.е. советник ищет количество баров, цены открытия которых находятся выше математической линии между ценой открытия рассматриваемого бара и нулевого бара.
4. Далее советник считает для каждого рассматриваемого бара величину параметра «Лояльность к линии» = количество баров в окне поиска с углом меньше чем у рассматриваемого бара / число баров в окне поиска. Значение этого параметра для определения ценового уровня задается в настройках.  Например, если «Лояльность к линии» = 0.95, то если в окне поиска 100 баров, то только 5 из них имеют тела, цены открытия которых находятся выше линии (от рассматриваемого бара до нулевого). Как только советник находит первый бар (начинается поиск с последнего бара в окне и заканчивается на расстоянии «Число баров в окне поиска»/2 от нулевого бара), у которого цена открытия удовлетворяет этому условию (то есть значение «Лояльности» равно или больше заданного в настройках), то это значит что советник нашел предполагаемый «отдаленный бар», по которому от нулевого бара строится линия уровня. 
5. Доп. условие для отдаленного бара: «Лояльность» в промежутке от последнего бара в окне поиска до отдаленного бара (этот промежуток должен быть >= «Мин. расстояние между барами», п. 1) должна быть равна или больше заданной в настройках. То есть количество баров между последним баром и отдаленным, у которых угол (п. 2) меньше чем у отдаленного бара/ число баров между последним баром и отдаленным >= заданного в настройках значения «Лояльности». 
6. Далее советник ищет по направлению к нулевому бару, начиная с расстояния «Число баров в окне поиска»/2 и до расстояния «Мин. расстояние между барами», бар, у которого цена открытия находится выше найденной предполагаемой линии уровня цен (т.е. у которого «Угол бара относительно нулевого» > «Угол отдаленного бара относительно нулевого»). Этот бар будет называться далее «ближайшим баром». 
7. Задается параметр «Расстояние от данного бара до линии тренда» = (значение цены открытия нулевого бара - значение цены открытия данного бара) + «Угол тренда»* число баров между нулевым и данным. «Угол тренда» = «Угол отдаленного бара относительно нулевого» = (цена открытия отдаленного бара - цена открытия нулевого бара) / число баров между нулевым и отдаленным. Советник находит от нулевого бара до «ближайшего бара» бар с максимальным значением параметра «Расстояние от данного бара до линии тренда» (т.е. ближайшую ширину тренда), и так же находит бар с максимальным значением этого параметра для баров от ближайшего до «отдаленного бара» (отдаленную ширину тренда). 
8. Далее должны выполняться следующие условия: ближайшая и отдаленная ширина тренда должны быть > «Минимальная ширина тренда» (параметр, задаваемый в настройках). Также ближайшая ширина тренда > отдаленная ширина тренда* «Стабильность тренда». «Стабильность тренда» - это коэффициент (например, 0.8), задаваемый в настройках.
9. Если все условия соблюдены, то линия ценового уровня считается найденной и советник отрисовывает широкую голубую линию от значения цены открытия нулевого бара до значения цены открытия отдаленного бара.  В настройках должны быть заданы минимальный и максимальный «Угол тренда». Нужно чтобы можно было задавать минимальный угол тренда не только положительным числом, но и отрицательным числом (близким к 0). То есть учитывать допуски флета.
10. Советник выставляет под линией уровня цен (в расчете на разворот цены вниз, внутрь тренда) параллельно ей математическую линию на расстоянии «Старт» от цены открытия нулевого бара ( «Старт» - это параметр, задаваемый в настройках). Эта линия должна быть также отрисована (ярко-желтая и поуже). С этого момента цена идет вправо за «нулевой бар», поэтому это название далее будет условным, а реальный нулевой бар мы будем называть текущим баром. Условие входа в рынок следующее: значение цены открытия текущего бара < значение цены открытия нулевого бара - «Старт» - «Угол тренда»* число баров от текущего до нулевого.
11. Советник выбирает между значениями ближайшей и отдаленной ширины тренда минимальное значение и выставляет профит по такому условию: цена открытия текущего бара < цена открытия нулевого бара - выбранное значение ширины тренда - «Угол тренда»* число баров от текущего до нулевого. Линия профит отрисовывается зеленым цветом, толщина линии такая же, как и «старт». 
12. Также в советнике может задаваться в настройках фиксированный тейкпрофит. Стоплосс задается в настройках в процентах от значения тейкпрофита (либо фиксированного, либо автоматического). Фиксированный тейкпрофит выставляется стандартно, как расстояние от открытой сделки. Автоматический же выставляется по формуле выше. 
13. В советнике имеется опция трейллинг стоп. Ширина трала выставляется в настройках в процентном значении от тейкпрофита, либо фиксированного, либо автоматического (так же как и стоплосс), а линия стоп трала находится в нулевом безубытке. 
14. В советнике все условия привязаны к цене открытия баров, чтобы обеспечить использование быстрого режима оптимизации в МТ, поэтому линии стоп трала и стоплосс должны также срабатывать по открытию бара за соответствующей линией.  
15. В случае если советник не входит в рынок, по условию «Количество баров ожидания сделки» (задается в настройках), уровень обнуляется и начинается поиск нового. 
16. Советник имеет опцию «Использовать пробой» (да/нет). Если она активна, то одновременно с выставлением линии старт как описано ранее, советник выставляет горизонтальную линию выше цены открытия нулевого бара на расстоянии «Расстояние до пробоя» (задается в настройках в процентном отношении от «выбранного значения ширины тренда»). Эта линия отрисовывается также ярко-желтым, толщина как у линии «старт».   
17. Если ценовой бар открывается выше этой линии, затем один из следующих баров открывается ниже линии «Расстояние до пробоя»/2 (эта виртуальная линия находится также выше нулевого бара), после чего один из следующих баров вновь открывается выше линии «Расстояние до пробоя», то советник входит в покупку. Пункты 18,19, 20 см. выше. 

Файлы:

Откликнулись

1
Разработчик 1
Оценка
(281)
Проекты
650
28%
Арбитраж
112
19% / 62%
Просрочено
319
49%
Свободен
2
Разработчик 2
Оценка
(76)
Проекты
136
45%
Арбитраж
11
27% / 64%
Просрочено
26
19%
Свободен
Опубликовал: 5 примеров
3
Разработчик 3
Оценка
(45)
Проекты
76
20%
Арбитраж
7
0% / 86%
Просрочено
14
18%
Свободен
4
Разработчик 4
Оценка
(351)
Проекты
679
56%
Арбитраж
33
15% / 39%
Просрочено
63
9%
Свободен

Информация о проекте

Бюджет
70+ USD
Сроки выполнения
до 10 дн.