Название советника: Stupido Challenger
Год выпуска: 2020
Актуальные версии: 2.2
Терминал: MT4 (build 1220+)
Сайт разработки: https://tradelikeapro.ru/
Рекомендуемые валютные пары: любые
Таймфрейм: любой
Время торговли: круглосуточно, поддерживается расписание и перерывы на новости
Описание: сеточник/мартин, оригинальная система сборки профита на откатах, позволяющая разбирать провисшую позицию за счет прибыльной
Рекомендуемый ММ: 0.01 лота на 100000$ при агрессивных настройках
С подачи одного из форумчан, попросившего меня переписать советника, на форуме известного под кодовым названием Хрыч, я полез этого друга тестировать.
В целом, очень простой мартин, ордера открывает на открытии бара.
Первый ордер в серии - после медвежьей свечки в селл, после бычьей - бай.
Тестируется медленно и чем дальше, тем медленнее - на каждом тике пробегается по всем историческим ордерам, чтобы посчитать кумулятивную прибыль за все время. Не знаю, на какой интервал работы бота рассчитывал автор, но явно ненадолго: с такой логикой и тем количеством сделок, которое он плодит, терминал загнется меньше, чем через год.
Но это лирика.
Поехали тестировать
Тесты постоянным стартовым лотом 0.01. Приходится бить кусками, ибо тестер дохнет от нехватки памяти.
01/01/2008 - 28/03/2011. RF = 3.2, но есть ли у Вас столько депозита?
28/03/2011 - 02/04/2020 - рекавери фактор меньше единицы, максимальная просадка 1.3 миллиона
В итоге, меня слегка подутомили затяжные периоды ожидания, переписать оказалось быстрее.
Я, понятно, не стал писать все с нуля, влепил имеющиеся крупные блоки.
Поэтому бот потенциально умеет гораздо больше, чем исходный, включая поддержку ручной торговли с панели, управление лотностью с панели, перевод в режим "закроем все сетки и замолчим", отключение направления - все в панели и из настроек.
Еще в нем реализована частичная сборка позиции, широкое развитие идеи, которую я исходно выкладывал в посвященной этой идее ветке Stupido: если отскок был недостаточен, чтобы закрыть все, он будет пытаться закрыть хотя бы часть просадки - хотя с такими короткими целями оно сравнительно бесполезно, отскоки его закрывают частями почти стопроцентно. Управляется это параметром Min Lot To Recover - если стоит в ноль, закрывать будет пытаться сразу все. Любое положительное значение переведет его в режим частичного закрытия.
Как работает тейк: есть цель для каждого направления (Split target, pips) и отдельно цель для всей совокупности (Total target, pips). Оба параметра в четырехзначных пунктах. Допустим, мы поставили сплит в 4 пункта.
Trigger, % of target, в процентах от заданной цели. Допустим, мы задали 60% - это значит, как только общий профит по всем сделкам одного направления достиг 40 * 0.6 пятизначных пунктов, мы зацепились.
Дальше он тралит вверх, затягивая трал по мере приближения к цели. Закрывает на откате.
Собственно, параметры, которыми стоит играть - это шаг, множитель, время торгов и новости.
Про то, как подключить новости в тестере, я писал в ветке инкогнито - в этом боте тоже будет работать.
Поддерживает расписание работы. Время по гринвичу.
Желающим покрутить бота - тестировать, вообще говоря, проще моим, чтобы оценить просадки грубо
В приложении бот и пример сета
Если у кого-то наоптится сет, который проседает меньше, чем на 15К на истории с 2010 года - я был бы признателен
Описание параметров:
MagicNumber
AllowAuto - советник открывает первый ордер в серии. Если false - он доведет открытые сетки до закрытия и замолчит
AllowBuy, AllowSell - разрешение торговать в соответствующем направлении
Open first order on candle - дожидаться ли следующей свечи для входа в первый ордер
InvertFirstEntry - входить в первую сделку наоборот: в селл после бычьей свечи, в бай после медвежьей
MaxGridOrders - максимальное количество ордеров в сетке. Потом перестает добавлять. 0 - добавлять до упора
MaxSpreadPips - максимальный спред в четырехзначных пунктах, при котором будет открываться первый ордер в серии.
Секция Money Management
MM_StartLot - опорное значение стартового лота
MM_RiskMode - способ вычисления динамического лота: пропорция от баланса, доступных средств на счете, доступного залога
MM_AmountDivider - порция в валюте депозита, на которую выделяется стартовый лот. Скажем, ваш баланс 10К, вы задали стартовый лот 0.01, вычисление по балансу и порция 1000 - стартовый лот будет 10000 / 1000 * 0.01 = 0.1
MM_MaxLot - ограничение максимального лота. Добирается до этого значения и продолжает переставляться максимальным лотом
Секция увеличения лотности
Lot Increment Method - метод увеличения лота. Варианты:
- No increment
- By order count - по счету ордеров, классический метод
- Increment best - увеличивать лучшую сделку сетки. Преимущество: если вы вмешивались руками - следующую сделку в сетке советник выставит, исходя из лота последней. Недостаток: 0.01, сколько ни умножай на 1.1, он не увеличится. Малые множители не работают, ибо нет кумулятивного накопления множителя.
- By distance from worst - пошел хардкор.... Множитель увеличивается геометрически в зависимости от растянутости сетки: на каждую сотню пунктов от худшего ордера дополнительная степень множителя. Пример: вы задали множитель 4. Цена ушла на 50 пунктов, лот будет 4 ^ (50 / 100) = 2. Цена ушла еще на 50, множитель 4. Цена ушла в сумме на двести от первого ордера - множитель 4 ^ (200 / 100) = 16. Значение 4 взято для удобства подсчета, обычно значения куда ниже: 2.6 или около того, для сеток с крупным шагом
- By distance from breakeven - то же самое, но расстояние от безубытка. Разница очень существенная: чем больше мы поставили лот, тем сильнее подтянули безубыток к текущему уровню цены... тем мельче множитель следующего лота, если открываться прямо здесь же. А вот если цена уйдет еще дальше - снова нарастает слегка. Для этого метода нужно подбирать сбалансированный множитель и шаг
- Increment average same type - берем средний лот на сделку из сетки этого направления и умножаем на множитель. Достоинства: учитываются все частичные разборки и ручные вмешательства. Недостатки те же, что в третьем пункте: мелкие лоты не растут с мелкими множителями
- Increment average all - берем средний лот на сделку по всем открытым ордерам. Достоинства: те же, что и в предыдущем, плюс если одна сторона просела и нарастила лотность, противоположная сторона переставляется заметно агрессивнее, что позволяет вытягивать куски из просевшей совокупности. Недостаток: общая лотность растет, шанс зависания крупных сделок близко к вершине сетки
LotIncrement_Factor - множитель лота на следующем шаге
LotIncrement_IncrementPercent - прибавка лота на следующем шаге, в процентах от стартового лота
LotIncrement_ChangeEvery - изменять множитель и прибавку каждые вот столько колен
LotIncrement_ChangeFactor - множитель изменения
Давайте на примере: скажем, задаем множитель = 1, нулевую прибавку. Менять каждые три шага, множитель изменения 1.1
Первые три шага он будет множить на 1. Усредняться.
Потом три шага на 1.1. Потом еще три шага на 1.21. Ну и так далее.
Секция дистанции
Замечание: советник открывается только на открытии свечи, если превышена заданная дистанция от предыдущего ордера
Spacing_InitialPips - минимальное расстояние между сделками, 4-хзначных пунктов
Spacer_IncreaseEvery - менять минимальное расстояние каждые вот столько перестановочных сделок N
Spacing_IncrementPips - прибавка 4-хзначных пунктов после каждой пачки N
Spacing_Factor - множитель расстояния после каждой пачки N
Spacer_Method - метод ограничения минимальной дистанции: не переставляться вообще, дистанция от лучшего ордера (классическая сетка), дистанция от безубытка (здесь при небольших множителях лота ордера начнут лепиться очень близко)
Замечание: прибавка и множитель работают одновременно
Front Run Spacing Pips - если больше нуля, советник будет выставлять ордера минимальным лотом перед сеткой с таким шагом. Доливка по тренду.
DrawDownLimitCurrency - просадка в валюте депозита, при которой все сделки будут закрыты (стоп в валюте). 0 - выключено. Масштабируется на стартовый лот.
Секция управления сборкой (вот эти палочки и квадратики на экране). Подробнее о принципах сборки можно почитать в ветке Stupido. В большинстве случаев есть смысл крутить только две цели.
Minimum lot to recover (0 - side complete) - минимальный лот, цепляемый при частичной сборке. Если поставить в ноль - будет собирать всю позицию в каждом направлении целиком. Все равно будет пытаться противоположную сторону, когда выйдет в триггер
Trigger, % of target - уровень, в процентах от цели, на котором включится трейлинг
Initial retrace, % of trigger - допустимый откат от уровня триггера (исходный трейлинг стоп), в процентах от уровня триггера
Retrace when reach target, % of trigger - допустимый откат, когда цена доберется до цели (удавка, должна быть меньше предыдущего значения), в процентах от уровня триггера
Split target, pips - цель стратегии сборки в одну сторону. Бай, или селл. Скажем, поставим 10 пунктов, при триггере 60% - советник зацепит на 6 пунктах.
Total target, pips - цель сборки всей позиции, вместе. Как правило ближе раздельной - мы же предпочитаем выходить из рынка целиком
Draw retrace levels on the screen - графическое отображение логики на графике. Квадратики и палочки
Show retrace labels on the screen - показывать ли надписи на графике рядом с квадратиками.
Секция времени торговли
BrokerGMTOffsetWinter - зимнее смещение вашего брокера (или ТДС) от GMT. Используется только в тестере
BrokerDstMode - контракт перехода вашего брокера на летнее время. Используется и в тестере, и в торговле.
Интервалы по дням недели, с понедельника по пятницу, время GMT.
Интервалы задаются строго в формате hh:mm-hh:mm, можно несколько через запятую.
Еще раз: 8:00-12:00 - НЕПРАВИЛЬНО!
Правильно 08:00-12:00
DayChristmasBreakStarts - последний торговый день в декабре
DayChristmasBreakStops - последний неторговый день в январе
Блок новостей
UseNewsFilter - использовать новостной фильтр (требует включения ДЛЛ)
TimeBeforeNews - прекратить открывать новые серии за столько минут до новостей
CloseTimeBeforeNews - закрывать все открытые сделки за столько минут до новостей (очевидно, должно быть меньше предыдущего параметра, чтобы было время сетке закрыться на отскоках в плюс)
Max loss to close before news - ограничение потерь, которые советник будет закрывать перед новостями. Пока просадка больше этой суммы, он не будет закрывать. Масштабируется по стартовому лоту.
TimeAfterNews - не открываться в новые серии в течении такого количества минут после новостей
ConsiderHighImpactNews - учитывать важные новости
ConsiderMediumImpactNews - учитывать средние новости
ConsiderLowImpactNews - учитывать маловажные новости
NewsSymb - валюты, новости по которым будут учитываться. Через запятую. Если поле пусто - только валюты текущего символа
Новое в версии 1.5:
- поправлено умножение лота и множество мелких недочетов
- добавлен параметр Open first order on candle - можно выбрать, хотите ли вы ждать следующей свечки, или открыться сразу, как только сетка закрылась
- добавлен параметр InvertFirstEntry - первый вход в бай после медвежьей свечки
- добавлен параметр Front Run Spacing Pips - советник будет выставлять ордера перед вышедшей уже в профит позицией, то, что называется "доливкой по тренду"
- добавлен параметр Lot Increment Method - экспертные настройки метода увеличения лота
- добавлен параметр Show retrace labels on the screen - сохраняет квадраты, убирает надписи и ярлыки цен уровней
- советник не стоит переименовывать
Версия 1.6:
- Поправлен баг с лотностью первой сделки в серии после закрытия предыдущей серии
- Поправлен баг с отображением в панелях Buy/Sell tracking - в предыдущей версии, если шаг сетки был очень мал, сделки подолгу не подхватывались в панель
- Добавлен параметр Max loss to close before news - чтобы большие сетки не сливались без причины перед новостями
- Все цели и лимиты в валюте депозита теперь нормируются на стартовый лот: если стартовый лот 0.01, а стратегия мм предписывает открытие первого ордера в 0.02, лимиты и цели удваиваются.
- Мелкие правки логики в изобилии
Версия 1.6.1
- Поправлен баг с подбором сделок противоположного направления большей, в совокупности, лотности, чем вышедших в профит (что приводило к закрытию в минус на растаскивании)
- Я вернул логику округления лота вниз
Версия 1.7
- Добавлен учет индикатора тренда на двух таймфреймах (с выбором режима фильтрации и таймфреймов)
Индикатор Trend_Mate_Another_Period прилагается
Версия 1.7.3
- реализован механизм закрытия всех групп сделок по CloseBy
- добавлены пара кнопок на панель в каждую секцию: закрытие всех положительных сделок, сброс веса (закрытие всех положительных сделок и отрицательных - сколько влезет в закрытый профит)
И индикатор тренда XCODE
Версия 1.7.4
- Добавлена возможность подбора чужих маджиков
Мониторинг в Роботесте
Версия 2.1
- Обновлены библиотеки
- Обновлена логика сборки: советник подхватывает минимальную возможную порцию всех ордеров выше уровня безубытка сетки и тралит на увеличение лота
- Автоматическое определение целей по ATR с гибкой конфигурацией масштаба
XCODE.ex4StupidoChallenger_v.2.1.ex4
Версия 2.2
- Поправлена проблема с кодировками.
Теперь можно в каждом направлении задать в сете три режима:
Соответственно:
- не торгуем в заданном направлении совсем (кнопка серая)
- доводим текущую сетку в заданном направлении и больше не открываемся (кнопка оранжевая)
- торгуем до посинения (кнопка зеленая)
Кнопка авто позволяет после любых манипуляций на панели вернуть обе кнопки в исходное состояние, согласно конфигурации.
StupidoChallenger-1.5-EURUSD-M1.set StupidoChallenger-1.5-EURUSD-M5.set
Trend_Mate_Another_Period.ex4 StupidoChallenger_v.1.6.1.ex4 StupidoChallenger_v.1.7.ex4




