Название советника: MonTag (Понедельник)
Год выпуска: 2020
Версия: 2.5.1
Альтернативная реализация под МТ4 и МТ5:
Название советника: WeekDay (День Недели)
Год выпуска: 2021
Версия: 3.11
Валютные пары: EURUSD (потенциально - любые)
Таймфрейм: M1
Время торговли: один раз в неделю, утром понедельника
Описание: Советник открывает сделку на открытие понедельника, ориентируясь на диапазоны движения цены за прошлую неделю, или в прошлую пятницу.
Исходная идея почерпнута отсюда: https://strategy4you.ru/prostaya-strategiya-foreks/monday.html
Еще несколько идей честно слямзено у Всеволода: https://www.mql5.com/ru/market/product/38828
В итоге советник поддерживает три способа входа:
- открываемся в заданное время в понедельник против направления свечи прошлой пятницы
- открываемся в заданное время в понедельник против направления свечи прошлой недели
- если в заданное время в понедельник цена оказывается за пределами тела свечи прошлой пятницы, входим в направлении в тело свечи
Стоп в хай или лоу сигнальной свечи с заданным отступом, не меньше заданной величины, не больше заданной величины, фиксированный тейк.
Есть фильтр доджи - если тело сигнальной свечи меньше заданной величины - не входим.
Внимание! Убедитесь, что настройки терминала позволяют сохранять 11520 баров истории, которые советнику теперь требуются для торговли на М1!!!
Настройки:
Magic
Comment
Signal mode - выбор режима входа, см выше
Start lot - стартовый лот
Multiply by amount - режим выбора лота: постоянный, по балансу, средствам, свободной марже
One start lot per amount - порция баланса, средств, или свободной маржи, на которую выделяется стартовый лот
Maximum lot (0 - use broker limit) - ограничение максимального лота
Increment factor - множитель лота в сетке (если строится сетка)
Maximum orders in grid (0 - no limit) - сколько ордеров открывать. Больше 1 - будет строится сетка. 0 - нет ограничения, сетка до стопа
Minimum distance between first and second order, pips - шаг сетки
Take profit, pips - тейк, четырехзначных пунктов
Min stop loss, pips - минимальный стоп, четырехзначных пунктов
Max stop loss, pips - максимальный стоп, четырехзначных пунктов
Stop loss offset from low/high, pips - отступ от хай/лоу сигнальной свечи при выставлении стопа, четырехзначных пунктов
Dodji filter, pips - минимальный размер тела сигнальной свечи, четырехзначных пунктов. Если свеча меньше - советник не откроется
Close before Tuesday - закрывать за 5 минут до закрытия понедельника (до свопа) - как рекомендовано в описании исходной стратегии
Close grid before Tuesday - закрывать сетку перед закрытием понедельника. Если предыдущая опция включена, а эта - выключена, то сделка будет закрыта только в том случае, если она одна
Entry time, hour - во сколько входить, час
Entry time, minute - во сколько входить, минута
Мониторинг:
Бэктесты:
Версии:
1.3
Добавлен выбор дня, часа и минуты принудительного закрытия сделок
1.4
Поправлен баг с перестановкой тейка при усреднении
1.5
Добавлен параметр RecoveryFactor - множитель лота после промаха, до момента выхода из просадки
По умолчанию установлен в 1.0, то есть не множим.
1.6
Добавлено подробное логгирование условий входа на экране и в журнале
1.7
Добавлена проверка уже открытых сегодня сделок. Чтобы избежать повторных входов на перезапуске советника/терминала, смене символа и таймфрейма и т.д.
Мониторинг в Роботесте
Скачать:
Версия 1.8
Добавлена принудительная загрузка истории (спасибо @the 7th Guest за кусок кода, который работает)
При первой загрузке он потратит заметное количество времени на старт. Повторные загрузки отрабатывают быстро
Советник будет переподгружать историю каждый час.
Теперь не обязательно запускать его на D1/W1 в зависимости от стратегии.
Версия 1.10
Добавлены лимит в валюте депозита на стартовый лот (масштабируется с ростом лота) и в процентах.
Добавлен трал, с выбором типа трала, переводом в безубыток и прочее.
Один из типов трала - по паттерну фракталов 1-2-3, обсуждалось и описывалось в ветке доработки советников - я подумал, раз уж я это написал, включу в свой арсенал.
Версия 2.0
Переписана механика времени: мы по-прежнему задаем время в традиционном GMT+2 зимой (Тикмилл, Альпы), но теперь можно указать смещение и DST вашего брокера - советник будет отстраивать логику соответственно.
Ради этого пришлось переписать бОльшую часть логики: если ваш брокер работает в другой таймзоне, дневные и недельные свечи будут отличаться.
Поэтому теперь советник не использует дневные и недельные свечи.
Вместо этого используются минутки, пересчитываются необходимые смещения и все вот это вот.
Работать должно идентично на всех брокерах при правильно выставленных настройках GMT/DST (которые также можно выставить в авто и советник сам разберется).
Прибавился параметр ScanInterval, по умолчанию выставлен в одну минуту.
Смысл в том, что, если в заданную минуту условия входа не соблюдаются, он может продолжать проверять столько минут подряд.
Я не тестировал. Значение по умолчанию работает в точности как исходная реализация, все сеты подходят.
Версия 2.2
Добавлено ограничение просадки в валюте на старт лот.
Добавлена проверка истории на старте - если истории недостаточно, советник сразу пожалуется, что ему мало и откажется становиться на график.
В этом случае нужно поправить настройки количества баров на графике и в истории в настройках терминала и перезапустить терминал
Версия 2.5
- Советник пытается подгрузить историю прежде, чем выбрасывает алерт
- Советник не отваливается, если истории недостаточно, продолжает пытаться загрузить историю и, если ему удается, переходит в штатный режим работы
- Умные требования истории: теперь советник в режиме пятничной свечи не требует истории за всю прошедшую неделю
- Поправлен баг с пересчетом Lot Scale: сеточные сеты с лимитом просадки не закрывают всю провисшую сетку после перезапуска
- Добавлены штатные компоненты управления лотом, шагом и конвертации в валюту депозита
Версия 2.5.1
Версия для параноиков: не отправляет никакой статистики на сервер разработчика.
Можете переименовывать файл, как вам заблагорассудится.
WeekDay 3.10
Советник был радикально переписан так, чтобы втискиваться стратегией в коржа.
Кроме того, теперь его можно настроить торговать несколько сделок друг за другом, торговать в разные дни недели и использовать разные вариации сигнальной части.
Описание настроек и, попутно, логики:

Первые два параметра можно смело игнорировать, они ни на что не влияют. Нужны для работы в составе коржа.
Остальные три очевидны: мэджик, комментарий ордеров, в какую сторону советнику можно торговать (для настройки покупок и продаж раздельными сетами, я бы не рекомендовал)

Ключевая часть.
Strategy - выбор сигнала на вход.
Поддерживает 8 вариантов: вход по фиксированному, или скользящему (построенному по последним Х минутам), недельному, или дневному бару двумя разными способами:
-
High/low - стратегия, использовавшаяся в Монтаге. Если мы находимся в одном из хвостов свечи, открываемся в сторону тела. К этой категории относятся четыре опции:
- Last day high/low - вход с использованием свечи предыдущего дня (в понедельник - пятницы, эта опция воспроизводит классическую стратегию Монтага)
- Last 24H high/low - вход по свече, построенной по 1440 последним закрытым минутным свечкам. То есть наш Close - это всегда Close последней закрытой минутки, а наш Open - это открытие 1441й по счету минутной свечи
- Last week high/low - вход по свече предыдущей недели
- Last 7 days high/low - вход по свече, построенной по 1440 х 5 последним минутным свечам
-
Candle - входим против предыдущей свечи. Ну вот просто в обратном направлении, да: если была медвежья свеча - мы покупаем.
- Те же 4 варианта построения свеч
Для того, чтобы работало оно корректно и по возможности у всех одинаково, по одним и тем же свечкам вокруг ролловеров (где некоторые брокеры на некоторых символах не выдают цены и свечки выпадают) и вокруг выходных (те же причины), все эти свечки отмеряются и строятся по времени. То есть мы не берем никаких других свечек из терминала, кроме минутных, и для корректной работы советника вам нужно разрешить в настройках терминала количество свечей, соответствующее выбранное вами сигналу. Максимальная величина, которая может понадобиться - две недели, то есть 10 * 1440 = 14400. Если будет меньше - советник будет жаловаться, сообщая вам количество, которое ему, на заданных настройках, необходимо.
- Limit to single (first) entry per day - ограничиться одним первым входом в день. Заметьте, сетку строить никто не запрещает. Но если у вас сегодня были ордера и закрылись все - молчим до конца дня. Эта опция важна в контексте длительности торгового интервала, о котором позднее
- Min candle size (Doji filter) - фильтруем сигнальные свечи по величине. Если тело свечи меньше заданного значения в 4-значных пунктах - она считается Доджи и мы ее игнорируем
Следом идут секции ММ и LotIncrement:

Они довольно стандартныя и кочуют у меня из советника в советник, я пропущу их описание.
Секция фильтрации спреда:

Можно указать, какой спред слишком высок для открытия ордеров и на скольки тиках мы хотим этот спред усреднять (чтобы отфильтровать подлые вбросы неторгуемых тиков с малым спредом, на которых обычно запрыгивают все ночники)
Секция контроля многоордерной торговли. Тоже штатная, но я опишу, чтобы потом в ветке пять раз не объяснять:

- Only one trade at a time (FIFO) - если есть открытый ордер, второй открывать нельзя. Есть брокеры, которые требуют соблюдения first in first out
- Maximum number of orders in one direction (0-unlimited) - ограничение количества ордеров в одну сторону. 0 - неограниченно. Эта величина, вместе со стопом, используется для рассчета шага
- Bars to wait between orders - пауза между ордерами, свечек рабочего таймфрейма стратегии (М1). Только для сетки. Если все ордера закрылись - можно открываться хоть сразу.
- Grid by spacing, no signal required - если true, то сетка строится по дистанции просто. Если false - по сигналу с соблюдением дистанции. Сигнал тот же, основной сигнал на вход
- Open new grid order on the new bar (or tick) - проверять условия открытия нового колена сетки на открытии бара, или на каждом тике
- Use common takes and stops (averaging) - объединять стопы и тейки. Если выключить - каждый ордер имеет свой собственный стоп и тейк и появление новых колен никак не меняет стопы и тейки уже открытых (за исключением стопа по лимиту просадки)
Следом - фильтр АТР.

Если период оставить равным нулю - не используется.
Жирная секция логики выхода:

Советник умеет закрывать по пересечению машки (для покупок - пересечение снизу вверх и закрытие над машкой, для продаж - пересечение сверху вниз и закрытие под машкой)
При этом он, разумеется, не будет покупать, если цена выше машки закрытия и продавать, если цена ниже. Так что машка закрытия - это еще и фильтр.
- Close MA timeframe - таймфрейм машки закрытия
- Close MA period - период машки закрытия
- Use as trend following (trail by trend) - прочитайте выше абзац про машку закрытия. Он описывает торговлю на возврат. Этот параметр позволяет переключиться в режим торговли по тренду: покупаем, если цена выше машке, продаем - когда ниже, закрываемся по пересечению. Расчет на длинное движение, тейки должны быть далеко, пара должна быть трендовая. В этом режиме, как правило, советник большую часть времени будет закрывать некрупные убытки, пока цена колбасится во флете. Но время от времени будет выхватывать хороший жирный профит - и если найдется конфигурация, где сумма профитов в среднем уверенно превышает сумму убытков, советник станет трендовой стратегией
- Close MA period step for each extra order - с каждым дополнительным открытым ордером период машки меняется на эту величину. Может быть отрицательной.
-
Close MA period upper limit (0-no limit) - ограничение максимального периода машки. А то наоткрываете сетку из 100 ордеров с шагом машки 10 - будет машка с периодом исходный + 1000, сроду до нее не доберетесь
Стопы советник пытается ставить за хай, или лоу сигнальной свечи, на заданный отступ. При этом можно ограничить минимальный стоп в пунктах и разброс стопов в пунктах.
Тейки можно задать в пунктах, или в долларах на минлот (чтобы масштабировалось безболезненно вместе с лотом). Заметьте: в долларах! Если депозит у вас в евро, цель по-прежнему в долларах! Советник конвертирует автоматически по текущему курсу, но для теста в МТ4 надо дать ему фиксированный множитель для конвертации. Что поделать, технология начала века.
Следом идут еще несколько опций: время удержания позиции в минутах (на самом деле в минутных свечках, чтобы после выходных все не схлопнулось сразу), закрытие по величине хай-лоу диапазона (если расколбас - закроем от греха подальше) и стандартный лимит просадки. В долларах тоже
Настройки трейлинга

Утомился писать, пропущу, а то никогда до сути не доберусь ![]()
Стандартная шапка настроек времени. Внимательно настраиваем эту часть под своего брокера:

Настройки времени торгов.

Как и обещал, торговать можно в любой день. Старт задается в минуте суток во временной зоне большинства брокеров, в той, где полночь соответствует ролловеру.
Ключевой момент этих настроек - Entry scan period, minutes - время, в минутах, начиная с заданной минуты старта, в течение которого советник будет сканировать рынок на возможности входа.
Помните опцию в самом начале про "один вход в день"? Вот если у вас интервал сканирования 15 минут, он может войти и выйти несколько раз (или встрять вторым входом), если вы эту опцию не включили.
Пример задания времени: стартовая минута в понедельник 483, время сканирования 10 минут. Это значит, что в понедельник в 8:03 по времени тикмилла советник начнет искать входы и будет продолжать их искать до 8:13
Все, что дальше - обход рождества, фильтрация новостей, суффиксы, уровень логгирования и параметры оптимизации - штатный набор, не стоит отдельного расписывания.
Ну точно не сегодня
Версия 3.11
Добавил подсчет профита. При наведении на кнопку показывает историческую разбивку. При нажатии - показывает график.
Кнопка заголовка теперь поддерживает три режима: торговля включена, вывод позиции с последующей остановкой торговли, и просто "выключено".
Все это, конечно, писалось в корж, но раз уж написалось - торчит и в стратегии.
Убедился, что не пытается связываться с сервером.
WeekDayStrategyTester.ex5WeekDayStrategyTester.ex4
Версия 4.0
Поправлена работа планировщика


