Job finished
![](https://c.mql5.com/i/avatar/avatar_na2.png)
![](https://c.mql5.com/i/avatar/avatar_na2.png)
Specification
Разработка скрипта типа Советник для торговой платформы Metatrader 4 на языке MQL4
Формирование сигналов: на основании уровней, созданных индикатором MorningFlat_V3_old
Функционал:
Настраиваемые параметры:
StartHour – час начала работы индикатора
StartMinute – минута начала работы индикатора
EndHour – час окончания работы индикатора
EndMinute – минута окончания работы индикатора
В интервале между заданными временными значениями
StartHour + StartMinute и EndHour + EndMinute индикатор отслеживает МАКС и МИН значения ценовых колебаний.
В момент времени EndHour + EndMinute + период рабочего таймфрейма индикатор графически выводит эти данные на экран в виде двух уровней up и down (голубая и красная линии на графике), формируя при этом РАБОЧИЙ КАНАЛ (РК). Значения МАКС и МИН цены за заданный временной отрезок подписываются рядом с уровнями на графике (см рис).
Количество уровней: 2
up down | Формируются ежедневнопо рабочим дням брокера, образуя при этом РАБОЧИЙ КАНАЛ (РК).
Например: РК от 10 дек 19г. |
Настраиваемый параметр:
TargetLevel – позволяет добавлять еще 2 ЦЕЛЕВЫХ УРОВНЯ up_target и down_target, которые формируются в процентном отношении от ширины РК.
Параметр 100 означает 0%, 110 – 10%, 120 – 20% ...... 200 – 100% ...... 250 – 150% и т.д.
В тот же самый момент времени EndHour + EndMinute + период рабочего таймфрейма индикатор также графически выводит up_target и down_target на экран в виде двух уровней (желтая и белая линии на графике), формируя при этом ЦИКЛ. Значения up_target и down_target подписываются рядом с уровнями на графике (см рис).
Добавление целевых уровней - количество уровней: 4
up_target up down down_target | Формируются ежедневнопо рабочим дням брокера, образуя при этом единый ЦИКЛ.
Например: Цикл от 10 дек 19г. |
Визуализация работы индикатора MorningFlat_V3_old – Цикл от 10 дек 19г.
Здесь были установлены следующие параметры:
StartHour – 0
StartMinute – 15
00:15 – время начала работы
EndHour – 8
EndMinute – 45
08:45 – время окончания работы
TargetLevel – 140 (Целевые уровни установлены на 40% от ширины ТК в обе стороны, ширина ТК в этом Цикле = 288 новых пп (5 знаков после запятой))
Советник MBF
Функционал:
1. Советник должен «увидеть» значения 4-х уровней ЦИКЛА, которые выдал для него индикатор MorningFlat_V3_old и зафиксировать их;
2. В дальнейшем, при пересечении ценой своим значением BID!!! любого из этих уровней, срабатывают триггеры по одному из сценариев:
2.1. Пересечение ценой BID уровня up снизу-вверх:
Открытие длинной позиции путем формирования рыночного ордера BUY с постановкой отложенного ордера TakeProfit_1 на уровне up_target и с постановкой отложенного ордера StopLoss_1 на уровне down. Лот ордера BUY = k (расчет см. ниже). С этого момента и до момента достижения ценой либо уровня TakeProfit_1 (закрытие ордера с прибылью), либо уровня StopLoss_1 (закрытие ордера с убытком) никакие более ордера в рамках этого ЦИКЛА не устанавливаются.
2.2. Пересечение ценой BID уровня down cверху-вниз:
Открытие короткой позиции путем формирования рыночного ордера SELL с постановкой отложенного ордера TakeProfit_1 на уровне down_target и с постановкой отложенного ордера StopLoss_1 на уровне up. Лот ордера SELL = k (расчет см. ниже). С этого момента и до момента достижения ценой либо уровня TakeProfit_1 (закрытие ордера с прибылью), либо уровня StopLoss_1 (закрытие ордера с убытком) никакие более ордера в рамках этого ЦИКЛА не устанавливаются.
2.3. Срабатывание любого установленного ранее отложенного ордера TakeProfit_1 (или физическое пересечение ценой BID уровня, что наступит ранее) останавливает работу советника в рамках этого ЦИКЛА. Значения 4-х уровней ЦИКЛА забываются и снимаются с контроля.
2.4. Срабатывание любого установленного ранее отложенного ордера StopLoss_1 (или физическое пересечение ценой BID уровня, что наступит ранее) приводит в действие триггеры по одному из сценариев:
2.4.1. Срабатывание отложенного ордера StopLoss_1 (или физическое пересечение ценой BID уровня, что наступит ранее) на уровне down:
Открытие короткой позиции путем формирования рыночного ордера SELL с постановкой отложенного ордера TakeProfit_2 на уровне down_target и с постановкой отложенного ордера StopLoss_2 на уровне up. Лот ордера SELL = 2k. С этого момента и до момента достижения ценой либо уровня TakeProfit_2 (закрытие ордера с прибылью), либо уровня StopLoss_2 (закрытие ордера с убытком) никакие более ордера в рамках этого ЦИКЛА не устанавливаются.
2.4.2. Срабатывание отложенного ордера StopLoss_1 (или физическое пересечение ценой BID уровня, что наступит ранее) на уровне up:
Открытие длинной позиции путем формирования рыночного ордера BUY с постановкой отложенного ордера TakeProfit_2 на уровне up_target и с постановкой отложенного ордера StopLoss_2 на уровне down. Лот ордера BUY = 2k. С этого момента и до момента достижения ценой либо уровня TakeProfit_2 (закрытие ордера с прибылью), либо уровня StopLoss_2 (закрытие ордера с убытком) никакие более ордера в рамках этого ЦИКЛА не устанавливаются.
2.4.3. Срабатывание любого установленного ранее отложенного ордера TakeProfit_2 (или физическое пересечение ценой BID уровня, что наступит ранее) останавливает работу советника в рамках этого ЦИКЛА. Значения 4-х уровней ЦИКЛА забываются и снимаются с контроля.
2.4.4. Срабатывание любого установленного ранее отложенного ордера StopLoss_2 (или физическое пересечение ценой BID уровня, что наступит ранее) останавливает работу советника в рамках этого ЦИКЛА. Значения 4-х уровней ЦИКЛА забываются и снимаются с контроля.
3. Работа советника MBF над каждым ЦИКЛОМ начинается в момент передачи данных о 4-х уровнях от индикатора MorningFlat_V3_old (EndHour + EndMinute + период рабочего таймфрейма) и продолжается до исполнения одного из условий:
- достижения ценой любого из уровней (автоматическое срабатывание отложенного ордера) TakeProfit_1
- достижения ценой любого из уровней (автоматическое срабатывание отложенного ордера) TakeProfit_2
- достижения ценой любого из уровней (автоматическое срабатывание отложенного ордера) StopLoss_2
На эти условия не влияют никакие временные факторы, не открытие нового дня (дней), не начало нового ЦИКЛА (ОВ).
4. Работа с каждым ЦИКЛОМ ведется по алгоритму 2 до исполнения одного из условий 3, индивидуально. Открытие новых ЦИКЛОВ и передача данных от них своих 4-х уровней, расчет лотов с индивидуальными коэффициентами k и 2k никак не влияет на отработку по алгоритму тех ЦИКЛОВ, которые уже находятся в работе. Одновременно советник должен сопровождать столько ЦИКЛОВ, сколько это необходимо до наступления условия 3 (для каждого ЦИКЛА условие 3 может быть разным).
5. Настраиваемое меню советника MBF перед началом работы
В меню советника все параметры настраиваемые, причем в нем должны содержаться параметры как самого советника MBF:
MinLots – минимальное значение лота, которое позволяет поставить брокер;
MaxLots – максимальное значение лота, которое позволяет поставить брокер или захочет поставить трейдер;
MC – минимальная стоимость 1 пункта финансового инструмента при разных значениях MinLots;
Start_depo – значение, которое определяет размер начального депозита, необходимо для расчета k, может отличаться от реальной суммы депозита, но только в меньшую сторону. В случае если параметр Start_depo будет превышать размер реального депозита, советник выдаст ошибку;
FixLot – фиксированное значение начального лота, в этом случае k всегда будет равно значению FixLot;
Risk_st_active – отключение или включение режима Risk_st
- в не активном режиме “false” советник работает в режиме FixLot,
- при активации этой опции “true” функция FixLot отключается и включается система подсчета по формуле Risk_st;
Risk_st – автоматический мани менеджмент – статичный риск на каждую сделку, % от начального депозита. В этом случае для каждого ЦИКЛА индивидуально вычисляется значение первоначального лота:
k = (Start_depo * Risk_st / 100) / (UP – DOWN) / MC * MinLots * 0,0001
Risk_din_active – отключение или включение режима Risk_din
- в не активном режиме “false” советник работает в режиме FixLot или Risk_st,
- при активации этой опции “true” функции FixLot и Risk_st отключаются и включается система подсчета по формуле Risk_din;
Risk_din – автоматический мани менеджмент – динамический риск на каждую сделку, % от общего депозита. В этом случае для каждого ЦИКЛА индивидуально вычисляется значение первоначального лота:
k = (Текущий депозит * Risk_din / 100) / (UP – DOWN) / MC * MinLots * 0,0001
MAX_TC – максимально допустимая ширина ТОРГОВОГО КАНАЛА (значение UP – DOWN) при котором советник начинает работу над ЦИКЛОМ по алгоритму 2. В случае если текущее значение MAX TC превышает установленный параметр, то ЦИКЛ в работу не берется (пропускается), значения 4-х его уровней забываются и снимаются с контроля. Значение «0» означает отсутствие какого-либо ограничения;
MIN_TC – минимально допустимая ширина ТОРГОВОГО КАНАЛА (значение UP – DOWN) при котором советник начинает работу над ЦИКЛОМ по алгоритму 2. В случае если текущее значение MIN TC ниже, чем установленный параметр, то ЦИКЛ в работу не берется (пропускается), значения 4-х его уровней забываются и снимаются с контроля. Значение «0» означает отсутствие какого-либо ограничения;
Magic Number – это уникальный числовой идентификатор, который используется советником для того, чтобы он не путал свои и чужие ордера. Magic Number – параметр индивидуальности работы каждого из советников MBF в случае, когда их несколько и они работают одновременно на разных финансовых инструментах или таймфреймах, или других внутренних параметрах;
так и параметры индикатора MorningFlat_V3_old:
StartHour – час начала работы индикатора
StartMinute – минута начала работы индикатора
EndHour – час окончания работы индикатора
EndMinute – минута окончания работы индикатора
TargetLevel – удаление целевых уровней в % от ширины РК.
6. Перед тем, как начать работу над ЦИКЛОМ:
- советник проверяет значение параметров MAX_TC и MIN_TC, сравнивая их с текущим значением ТК (текущее значение UP – DOWN), в случае не соответствия - пропускает ЦИКЛ, выдавая об этом информацию на экран;
- советник вычисляет текущее значение 2k, в случае если это значение больше или равно параметру MaxLots – пропускает ЦИКЛ, выдавая об этом информацию на экран.