Название советника: Stupido BTM (Beat The Market)
Год выпуска: 2020
Актуальные версии: 1.9
Терминал: MT4 (build 1220+)
Сайт разработки: https://tradelikeapro.ru/
Рекомендуемые валютные пары: любые
Таймфрейм: любой
Время торговли: круглосуточно
Рекомендуемый ММ: 0.01 лота на 1000$
Описание:
Стратегия описана в блоге: https://tlap.io/beat-the-market-strategy/
На форуме есть тема: /torgovye-sistemy/2/m15-beat-the-market-strategy/20421/
На форуме существует программная реализация этой стратегии, которая меня не устроила: мне показалось, что можно дать пользователю/оптимизатору больше свободы выбора сигналов, фильтров и методов сборки.
В результате родился вот этот советник.
Хочу сразу предупредить: количество настроек не для слабых духом.
Советник предоставляет пользователю свободу выбора стиля торговли: от тонкого скальпинга на отскоках от границ канала ТМА/Боллинджера/Envelopes, или по сигналам десятка других индикаторов, до сеточного, или мартингейлового высиживания до последнего цента депозита.
Выбор за вами.
У меня появлялись варианты сетов и того, и другого типа.
Я постепенно накидаю детали настроек как можно более подробно, не останавливаясь, тем не менее, не тривиальных деталях.
Для начала давайте разберемся с тем, как он работает в принципе.
В советнике есть три основных блока:
- Блок Сигналов - используются индикаторы с явным сигналом (стрелочки, пересечение линий, выход за границы канала итд)
- Блок Фильтрации - используются индикаторы с протяженным состоянием тренда (мувинги и им подобные индикаторы тренда)
- Блок Сборки Профита (Stupido)
В первые два блока могут быть произвольно включены любые из десятка индикаторов, на основе которых этот советник построен.
На каждом тике советник сначала опросит Блок Сигналов. Любой из индикаторов может быть настроен генерировать:
- Сигнал на открытие первого ордера (Entry), который в том числе может быть использован, как сигнал на закрытие в зависимости от текущего профита
- Сигнал на открытие дополнительных ордеров (Add), который может быть использован, как сигнал снижения веса позиции в противоположном направлении
- И то, и другое (Both)
Если хотя бы один из индикаторов рекомендует открыть покупку, и ни один другой не рекомендует продавать, мы имеем сигнал на открытие покупки - причем тип сигнала зависит от выбранного сигнального режима этого индикатора: первый ордер, дополнительный ордер, и то и другое.
То есть на выходе из сигнального блока мы имеем двухканальный сигнал: Entry и Add
Если Блок Сигналов выдал ненулевой результат, мы отправляем его в Блок Фильтрации, который опрашивает все фильтры, настроенные фильтровать соответствующий тип сигнала. Важно: если индикатор настроен фильтровать сигнал первого ордера (Entry), он не будет фильтровать сигнал доливки в сетку (Add).
Если хотя бы один из фильтрующих индикаторов не согласен с направлением сигнала, сигнал отбрасывается и не торгуется. В том числе, не считается сигналом закрытия!
Если сигнал-таки просочился через сито фильтров, мы проверяем, сколько у нас ордеров в рынке и где они расположены - и открываемся по Entry сигналу, если ордеров нет, или по Add, если соблюдена заданная дистанция.
Сборка Stupido подробно описана в топике StupidoChallenger.
В этом советнике она может быть декорирована учетом сигналов:
- Если появился сигнал на открытие первого ордера на покупку, Stupido проверит общий профит позиции на продажу, и если он не меньше указанного значения, закроет продаже. Симметрично с сигналом на продажу будут закрываться все покупки
- Если появится сигнал доливки в сетку, Stupido проверит текущую отслеживаемую позицию противоположного направления (в соответствии с правилами отслеживания Stupido) и, если она в профите, закроет ее
Индикаторы:
Всем индикаторам можно задать индивидуальные таймфреймы. ТМА поддерживает один ТФ для сигнала и фильтра, раздельно настроить не получится.
TMA (считается на движке советника)
Может использоваться как в качестве источника сигнала (выход за границы канала, разворот за границами канала, вход обратно в канал итп), так и в качестве фильтра (цена в определенной зоне в процентах от ширины канала, канал имеет уклон в заданном направлении).
Все расчеты могут выполняться на последнем баре, или на текущем, по выбору.
Beat The Market C New (Arrows)
Используется только как индикатор открытия (Entry).
BBand Stop Alert
Может использоваться и как источник сигнала, и как фильтр
Сигналом является смена цвета
HalfTrend-1.02
Может использоваться и как источник сигнала, и как фильтр
Сигналом является смена цвета/появление стрелочки
Gann T3 high-low activator + alerts + arrows 1.01
Только вход по стрелочкам
Trend envelopes - multi pass moving average filter 1.01
Только сигнал - по смене цвета
Price Channel Stop (mtf+alerts)
Только сигнал

Triple Exponential MA
Сигнал по пересечению, фильтр по взаимному положению двух линий ТЕМА на текущем баре
Support/Resistance Levels
Только сигнал на вход.
Сигнал двух типов: на пробой уровня (сигналит на выходе из прямоугольника насквозь) и на отскок от уровня (сигналит на возврате из прямоугольника внутрь).
По выбору можно использовать или игнорировать уровни, которые цена уже пробовала.
Bollinger Bands
Только сигнал: выход за границы канала, разворот за границами канала, вход обратно в канал итп
Стандартный индикатор, без скриншотов
Relative Vigor Index
Только фильтр. Больше нуля - покупка, меньше - продажа
Стандартный индикатор, без скриншотов
Пример почти скальпингового сета от @ostapbender - детали в приложенном архиве
Советник требует серьезной работы над стратегией, оптимизации и обкатки методики.
Я по мере сил готов дорабатывать его с вашей помощью.
Всем профитов!
История изменений:
1.2
Поправил логику индикатора ТЕМА
1.4
- Поправил логику домножения противоположной стороны при образовании просадки: вход теперь по сигналу, но, если сетка в одну сторону набралась более N ордеров, ордера в противоположном направлении открываются с множителем. Так же есть возможность выбрать базовый лот для этих ордеров по среднему или максимальному ордеру уже наросшей сетки.
Это помогает раздергивать разросшуюся сетку частями.
Имеет смысл только если включена частичная сборка (MinRecoveryLot > 0)
- Добавил сборку сессии по достижении совокупного профита, плавающего и закрытого - и, соответственно, элементы контроля на панели.
Кнопка "Trace" включает и выключает слежение. При выключенном слежении можно редактировать цель и при включении она подхватится.
По достижении цели все ордера закроются, цикл начнется заново.
В окошке под целью отслеживается текущий профит. Кнопка Reset сбрасывает прогресс сессии, не закрывая ордера.
- Добавил кнопки закрытия всех ордеров в прибыли и закрытия в ноль. "В ноль" закроет все открытые ордера в прибыли и те ордера в просадке, совокупный минус которых меньше плавающего профита.
Обе кнопки добавлены для покупок, продаж и полного набора.
- При закрытии полной совокупности сделок по Buy, по Sell, или всех вместе, используется CloseBy, если количество сделок больше трех. К сожалению, закрытие частичных сборок по CloseBy пока не реализовано.
- Традиционный уже шильдик tlap
1.5
У меня было немного усложненное условие входа по ТЕМА, которое почему-то не всегда отрабатывало. Возможно, значение на текущем баре не гарантировано.
Я проверял, что на текущем баре одна тема выше другой, и (на предыдущем ниже, или же на предыдущем равно и на втором ниже).
Упростил. Сравниваю последний завершенный бар и бар до него.
Еще добавил вывода в лог: если переключить логгирование на debug, он теперь пишет, когда какой индикатор подает какой сигнал на вход и на доливку. Потом пишет, какие сигнальные решения приняты по всей совокупности индикаторов (если, например, у нас два противоположных сигнала от разных индикаторов, оба игнорируются).
А потом, если какой-то фильтр отфильтровал сигнал - он это тоже записывает в лог, указывая, какой фильтр.
Поможет разбираться.
Также поменял логику входа по ТМА. Теперь используются свечи того же ТФ, на котором считается ТМА.
StupidoBTMIndicators.zip SBTM-test-Ostap.Bender.zip
1.7
Поправил логику снятия/коррекции индивидуальных стопов
1.8
Добавлена логика закрытия всех совокупностей по CloseBy
1.9
Добавлен флаг - применять ли фильтры до принятия решения о закрытии противоположного направления, или после.
В любом случае, фильтры будут применяться до принятия решения об открытии.
Значение по умолчанию сохраняет поведение предыдущих версий.


