Название советника: StupidoHelper
Год выпуска: 2019-2023
Версия: 8.8
Терминал: MT4
Сайт разработки: https://tlap.io/
Разработчик: ваш покорный слуга
Пара, таймфрейм и прочее - значения не имеет
Описание :
Мы все время от времени ошибаемся.
Есть те, кто ошибаются со входом в сделку, вовремя признают свою ошибку и принимают убыток, работают дальше.
И это правильный подход.
Тем не менее, у каждого случаются приступы упрямства: "нет, я не готов принять этот убыток", "сейчас развернется", "мы вот тут просто усреднимся и закроем в безубыток" и все вот это вот.
И не успеешь оглянуться - а у тебя уже крепко провисшая сетка усреднений, а цене по-прежнему плевать с высокой колокольни на твою убежденность, что она движется в неправильном направлении.
Многие в этой ситуации хватаются за разного рода локеры - довольно бесполезная идея.
Видите ли, лок - это то же самое, что стоп лосс, когда вы фиксируете убыток и потом пытаетесь его восстановить новыми сделками.
С той лишь разницей, что лок всегда приносит убыток в виде свопов, постепенно проедая все бОльшую дыру в вашем счете.
И вдобавок, вот эти новые сделки, которыми вы пытаетесь восстановить утраченное - как правило, банальные сеточники.
Которые почему-то в качестве отдельных советников не предлагаются.
Просто потому, что они ничуть не выше имеют вероятность выскочить в прибыль, чем любые другие сеточники.
И точно с тем же успехом сольют ваш депозит, с каким его слила бы ваша исходная сетка.
Но мы отвлеклись.
На форекс я пришел исходно покодить, в августе 2019.
Мне показалось, что я могу реализовать сравнительно универсальный алгоритм сборки профита по крупной совокупности открытых позиций, максимизируя прибыль, насколько это возможно - но и минимизируя и схлопывая постепенно в ноль убыток.
Где-то здесь на форуме есть первая созданная мной ветка, которая тоже называется Stupido.
Потому, что для демонстрации возможностей системы сборки я влепил ей случайное открытие сделок в качестве входа. That was, indeed, pretty stupid way to open a position.
Но в итоге название прилипло к самой системе сборки и вот уже три с лишним года все, во что оно встраивается, носит это название.
Идея не нова: если у нас есть какое-то количество сделок, вышедших в прибыль, мы можем использовать эту прибыль, чтобы закрыть какую-то часть убытка.
Дьявол, разумеется, в деталях: когда и сколько чего закрывать, как набирать закрываемую позицию, как добавлять позиции и в целом, как добиться того, чтобы наша просадка постепенно стягивалась в ноль и закрывалась.
Встречайте помощника Stupido.
Когда он вам не подходит:
- Вы ищете инструмент, который зафиксирует ваш убыток и "гарантирует", что он не увеличится. Я такого не знаю и Stupido - точно не он
- Отношение свободной маржи к залоговой марже уже очень низкое. Иными словами, вы вляпались на всю котлету и никакого запаса по просадке у вас уже нет. Тут вам только чудо в помощь
- У вас немного открытых позиций и большинство из них открыты минимальным лотом. Stupido довольно хорошо разбирает порциями. Но если ваши позиции нельзя побить на порции и их не десятки - никакого чуда не произойдет, вам нужен обычный усреднитель и немного удачи.
Зачем он вам нужен:
- Цена ушла из зоны, где ваши позиции могли бы закрыться в безубыток, и не собирается обратно.
- При этом у вас достаточно еще простора для маневра и усреднения, но вы понимаете, что все вот это отслеживать и обсчитывать руками - задолбаешься, да и некогда
Stupido вычисляет, где ближайшая точка, в которой он начнет следить за минимальной закрываемой порцией от текущей позиции в каждом направлении и рисует рамочки, позволяющие вам это оценить.
Если цена пришла в эту точку - рамочка окрашивается и начинает показывать, что там происходит в процессе.
При этом он одновременно тралит прибыль и пытается набрать больше закрываемого убытка в набор - вплоть до попыток закрыть часть позиции противоположного направления за счет целиком прибыльной позиции текущего направления. Тоже с тралом.
По итогам его работы выглядит ваш график примерно вот так:
Одной из замечательных особенностей этого помощника является то, что он полностью тестируется.
Я, простите, не верю в сказки и не понимаю, как можно доверить деньги, даже наполовину уже потерянные, какому-то алгоритму, единственным свидетельством работоспособности которого являются скриншоты с телефонов его продавцов.
Поэтому в StupidoHelper встроена "система построения проблемы".
В настройках есть для этого специальная секция:
В этой секции вы можете задать (по порядку):
- Магик, с которым будут открываться сделки "начальной структуры"
- Количество сделок в одном направлении
-
Сигнал на первый вход в каждом направлении. Варианты:
- Stupido averaging rules. Входить там же, где входил бы усреднитель - это мы рассмотрим подробнее в секции настроек усреднения
- Last candle one side. Входить в направлении последней свечи. При этом это должна быть первая сделка вообще. Если есть сделки в противоположном направлении - мы не входим им навстречу
- Last candle both sides. Рекомендованный режим, он будет приводить к максимально скорому воспроизведению желаемой структуры. Если последняя свеча бычья и сделок в покупку нет - открываем покупку. Если медвежья и сделок в продажу нет - открываем продажу. Противоположную сторону игнорируем
- Лотность ордеров начальной структуры. Они все будут открываться этой лотностью, никаких множителей - тут уж выкручивайтесь, если вам нужно симулировать растущую лотность открытой сетки
- Шаг сетки. Открытие на барах, поэтому шаг - минимальный. Может оказываться немного больше.
- Тейк, четырехзначных пунктов
- Стоп, четырехзначных пунктов
- Отступ от последнего колена
Пример:
10 ордеров с шагом 25 пунктов лотностью 1 лот. Тейк 24 пункта, стоп ноль (нету стопа). Отступ от структуры сто пунктов.
Что он сделает: он начнет открывать сделки по выбранному методу. И усреднять их. Одни будут закрываться по тейкам, другие открываться. В итоге в какой-то момент цена уйдет на достаточное расстояние в одном направлении, против этого тренда накопится 10 колен с шагом 25 пунктов, а все сделки по тренду будут продолжать закрываться по тейку.
Больше десяти колен он открывать не будет, а когда цена уйдет на 100 пунктов от последнего колена, структура будет считаться завершенной, советник передаст управление модулю сборки, который начнет это добро расплетать.
Когда он его расплетет полностью (0 сделок на графике), советник снова войдет в режим исходной структуры и повторит цикл.
И так до конца истории.
В итоге график в тестере выглядит примерно вот так:
Это, кстати, график с исходной структурой из 16 ордеров с шагом 25п, лотностью 0.5 и отступом 50 на USDCHF
Это симуляция реальной ситуации, которая на текущий момент довольно дорого уже стоила несколько раз - и вот этот график как бы вселяет надежду, что не все потеряно.
На графике видно, как просадка вырастает заметно в точках, где все это добро налетает на тренд, а потом советник постепенно стягивает ее до полного выхода.
И снова влезает, намеренно, чтобы протестировать способность вытащить это добро из как можно большего набора просадок.
По задумке, система симуляции просадок должна работать только в тестере.
Но я бы рекомендовал на реале все же поставить Initial structure count = 0. Береженого - Бог бережет.
Основные настройки:
- Собственный магик. С ним будут открываться усредняющие ордера
- Список магиков, которые надо выплетать. -1 -> цепляем все, что найдем на этой паре. Записывать сюда магик "исходной структуры" не надо - он в тестере подхватится автоматически
- Коммент усредняющих ордеров. Для эстетов.
- Лимит потерь, в валюте депозита. Если превышен - закрываем все безжалостно. Для тех, кто не готов играть до победы
- Стоп лосс. Смотрю на этот параметр и не могу вспомнить, зачем он тут. Индивидуальный стоп каждого усредняющего ордера. Работать будет только в некоторых режимах, о режимах ниже
- Открывать ли покупки - ну, вдруг у вас аллергия на покупки. А вот вам настройка.
- Открывать ли продажи
Настройки усреднения
- Открывать первую сделку в заданном направлении только если в противоположном направлении меньше, чем вот столько. 0 - игнорируем, открываем всегда. Вам эта опция может показаться непонятной. Но, посидев в сетке через полный переворот - вы поймете. Тем не менее, в версии 8.1 эта опция стала сравнительно ненужной: советник снижает лотность первого ордера по мере удаления от безубытка всего набора.
- Таймфрейм, период и уровень сигнала CCI. Для покупок, понятно, будет использоваться минус уровень. Если период выставить в ноль, CCI игнорируется
- То же самое еще раз. Чтобы можно было склеить два CCI с разными периодами, таймфреймами и уровнями. Я, к слову, от них собираюсь отказаться в пользу следующего пункта
- Период Боллинджера, на текущем ТФ
- Множитель отклонения боллинджера, для самой узкой полосы
- Шаг множителя отклонения - с этим шагом будут строиться несколько полос, согласно следующей настройке
- Количество сигнальных полос Боллинджера. 0 - Боллинджер не используется. Сигналом считается пересечение любой из полос внутрь и закрытие внутри. Иногда получается, что мы пропускаем слишком большое движение
-
Настройки скользящего диапазона:
- Период измерения диапазона, в часах
- Процент цены в диапазоне за последние несколько часов, который будет считаться сигналом. На скрине выше значение 10. Это значит, что, если цена опустится ниже 10% диапазона за последние Х часов, мы будет рассматривать покупку. Если поднимется выше 90% - продажу.
- Отскок, в процентах, чтобы перезарядить сигнал. Если, например, цена опустилась до 5% и мы купили - мы использовали сигнал. Теперь цене нужно откатиться до 25% диапазона прежде, чем мы будем готовы рассматривать покупку еще раз.
- Консервативный подход. Я рекомендую true. По сути, мы используем не просто диапазон за последние Х часов, а средний пробег цены на таком интервале, усреднение за последние 1000 часов. Это позволяет избежать подвоха вокруг тихих азиатских сессий - там диапазон сжимается так сильно, что можно неосторожно чихнуть - и уже придется покупать, или продавать
- Рисовать скользящий диапазон и его зоны сигнала и отскока на графике. Рисует полилиниями, поэтому на каждую свечку добавляет 4 объекта на график, использовать для понимания в тестере обязательно
Важно! Все "индикаторы", которые включены, должны сигналить одновременно, чтобы оно превратилось в сигнал на покупку, или продажу. То есть, если вы включили и Боллинджера и скользящий диапазон, шансы ваши на открытие сравнительно невелики, потому, что диапазон сигналит на расширении, а Боллинджер - на сужении. CCI может успешно комбинироваться с обоими.
Лотность и шаг
Сюрприз, сюрприз.
Первая опция - для тех, кому крайне важно, чтобы лотность не улетела в космос. Но на самом деле трогать ее не стоит, если вы не оттестировали.
Это ограничения для блока управления лотностью: во сколько максимум раз можно увеличивать стартовый лот.
Стартовым считается лот наихудшей сделки в заданном направлении. Он вычисляется один раз на старте советника и потом каждый раз, когда сделок становится ноль.
В каждом направлении - свой стартовый лот.
Следом - минимальный отступ от первой сделки.
С учетом того, что вы его будете надевать на уже готовую просадку, вам эта опция понадобится для того, чтобы задать, каков будет минимальный шаг между первой и второй сделками, открываемыми советником в противоположном направлении (да, да, он будет открывать в обе стороны, если вы не выключили. И это нормально, так задумано)
Последняя опция - самая важная.
Target ratio for breakeven/full grid distance. Скажем, у вас растянута сетка на 100 пунктов, пришел сигнал открыться. Он откроет таким лотом, чтобы безубыток от этой новой сделки оказался в 100 * TargetRatio.
Пример на скриншоте предлагает значение 0.5. Это соответствует подходу равного усреднения - как если бы вы открывали равным лотом с равным шагом. Ваш безубыток всегда посередине сетки.
Если поставить, например, 0.4 - это примерно соответствует множителю сетки 1.25: ваше расстояние до безубытка в полтора раза меньше, чем расстояние от безубытка до худшего ордера.
И так далее.
То есть разумные значения лежат в диапазоне от 0.5 до 0.35.
Все, что больше 0.5 - постоянно разрежающаяся сетка. Меньше 0.35 - агрессивный множитель, ставка на зеро.
Важно! Советник не смотрит на отступ от лучшей сделки. Он смотрит только на то, на каком расстоянии от текущей цены находится сейчас безубыток позиции. И если это расстояние больше, чем задано в настройках - он готов будет открыть по сигналу даже там, где уже есть какие-то ордера в профите. То есть купить выше имеющихся покупок, и продать ниже имеющихся продаж.
Так задумано и так логично!
Настройки сборщика профита
Тем, кто видел ступидо раньше, многие из этих настроек уже знакомы:
- Точка включения трала, в процентах от цели
- Процент допустимого отката от старта трала
- Процент допустимого отката от цели. Между стартом трала и целью, откат линейно меняется от одной величины до другой, т.н. "удавка"
- Диапазон, в часах. Тот же измеритель диапазона, что в сигнальной части, только отдельный. Здесь он используется, чтобы определить величину "цели"
- Уровень "жадности" алгоритма сборки. При значении 0 он будет всегда прихватывать только минлот худшей сделки в качестве первого набора, и наращивать по мере движения цены. Чем больше значение "жадности" - тем выше процент "проблемной" части позиции, которую советник будет включать в стартовый набор. Этот процент также зависит от ширины растянутой сетки: чем шире, тем более существенный процент требуется на старте - чтобы мы не растрачивали тяжелые уже лоты на вытаскивание мизерных порций просадки на случайных колебаниях цены, уже двинувшейся в нужном нам направлении.
- Рисовать квадраты на экране
- Подписывать цены под этими квадратами. Захламляет сильно, но вдруг кому нужно
- Снижать лотность по противоположному сигналу. По сути - закрывать уже захваченный набор, например, в покупку, если пришел сигнал на продажу. Не дожидаясь отката
- Закрыть, когда общий убыток будет меньше чем столько денег. Удобно, если вы давно ждете и уже бы выпрыгнули
- Закрыть, когда общий убыток составляет меньше, чем вот столько процентов от максимальной просадки. Скажем, вы задали тут 5%, ваша просадка разрослась до 5000$, когда откатится до 250$ - закроется. Удобно для тестов, чтобы чаще схлопывать цикл и начинать новый - он под конец может довольно долго и нежно переталкивать несколько минлотов, прежде, чем закроет все в прибыль.
-
Start Tracking Mode - следите за этой настройкой! Эта настройка задает, что разрешено делать вашему выплетателю. Варианты:
- Read only (watch don't touch) - он будет все считать, рисовать, но не будет трогать позицию совсем. Не снимет тейки и стопы, не закроет, когда придет время закрыть. Даже усредняться, возможно, не будет. Это значение по умолчанию
- Close only - все считает и, когда приходит время, закрывает позицию. Но не трогает тейки и стопы позиции, пока она открыта - и они могут сработать раньше, чем он придет в свою загаданную точку. Тогда он "забудет" все, за чем следил и начнет с начала.
- Clear stops on triggered - снимет тейки и стопы у сделок, попавших в набор, за которым он начал следить. Этот набор может меняться - так что в итоге у всех почти сделок могут исчезнуть тейки и стопы - но по крайней мере этот режим гарантирует, что все, за чем он взялся следить, будет отслеживаться и закрываться, как ожидается (если никто не влезет грязными ручонками, или другими советниками)
- Full control - снимает все тейки и стопы сразу. Никаких сюрпризов, кроме Margin Call
Между этими четырьмя режимами можно переключаться с панели, раздельно для каждого направления. Кнопки при этом меняют цвет:
Настройки обхода ролловера
В ролловер у нас, как правило, неласковые спреды - и их расширение с большой долей вероятности закроет вам отслеживаемую позицию откатом, возможно, даже с убытком.
Поэтому я предусмотрел возможность обойти ролловер.
Это палка о двух концах: советник запомнит, чего он тралил и полностью тралить перестанет. Даже на графике будет видно, что все перестало двигаться на квадратиках.
А когда пауза закончится - он проверит, все ли еще цена находится выше точки закрытия по откату.
Если да - он просто продолжит, как ни в чем не бывало.
Если нет - он забудет этот набор и начнет с начала. Иногда бывает обидно отпустить уже прихваченный крупный кусок.
С другой стороны, тесты показали, что оно гораздо надежнее работает с обходом. И прибыльнее. И предсказуемее.
Настройки тривиальны:
Панель
Описание вот в этом посте:
Как мы принимаем решения о закрытиях
Описано в этом комментарии:
Разметка графика
Описана в этой публикации:
Тонкости настройки и тестирования
Заключение
Штука многогранная. Все про нее объяснить - неделю потратить. А завтра придет кто-то еще.
Поэтому: читаем описание, берем тестер, включаем визуальный режим и смотрим.
Если что-то непонятно - читаем еще раз и снова смотрим.
После пятого раза задаем вопрос, со скриншотами, подробными логами и сетом.
И ни в коем случае не ставим на реал, не собрав сет под конкретный провисший набор в тестере!!!
Это не holy grail, это остро отточеный инструмент - неосторожное использование приведет к обязательному кровопусканию
Скачать:
v.8.5
v.8.7
Список изменений:
- Разрешение торговли в покупку и продажу теперь можно задать одним из трех значений:
-- Торговля разрешена
-- Разрешено усреднение, запрещено открывать первый ордер в заданном направлении
-- Запрещено торговать в заданном направлении
- Кнопки на панели теперь тоже трехпозиционные. Зеленый - торгуем. Оранжевый - усредняемся, новых сеток не открываем. Серый - не торгуем.
- Кнопка AUTO теперь сбрасывает состояние кнопок к значению, заданному в настройках. Если она зеленая - состояние кнопок соответствует настройкам. В противном случае - серая.
- Поправлена логика закрытия встречными при использовании -1 в списке магиков (версия 8.5 открывает встречные магиком -1 - это мешает работать, например, WatchDog и может оказаться неожиданным для других стратегий)
- Обновлена логика работы "закрытия в ноль" (кнопка Close 0 для покупок, продаж, или по всей совокупности). Теперь логика та же, что и в WatchDog: советник максимально пропорционально распределяет убыточные сделки.
Скажем, у вас три убыточных сделки лотностями 1, 2 и 3 лота, в общем убытке -500 долларов, и сделка с плавающей прибылью 100 долларов.
Эта сделка позволяет закрыть 20% всего убытка - советник отщипнет 0.2, 0.4 и 0.6 лотов от вышеупомянутого набора. Если числа неровные - он будет досовывать в набор минлоты, пока не потратит всю прибыль.
Более того, перед закрытием, он переспросит вас, уверены ли вы. Показав при этом, какую общую лотность он закроет и в какой совокупный убыток.
Примерно вот так:
(скриншот из вочдога).
Отказаться - безопасно, никакие операции не выполнятся.
Следует помнить, однако, что решение нужно принимать быстро: во-первых, цена меняется, а ваш набор уже посчитан. Будете долго думать - та же лотность закроется в совсем другую сумму прибыли/убытка.
Во-вторых, это сообщение блокирует основной поток исполнения. То есть, пока вы не ткнете в кнопку, советник больше НИЧЕГО делать не будет.
Так что не тяните, соглашайтесь, или отказывайтесь - БЫСТРО
В тестере эта табличка не появляется (в тестере нельзя задать пользователю вопрос как раз потому, что это блокирует поток исполнения) - появляется то же самое сообщение в логе.
Сеты от версии 8.5 подходят для 8.7 с единственным изменением: нужно вручную задать значение разрешения торговли для покупок и продаж.
v.8.8
Список изменений:
- В секцию "проблемной структуры" для тестов добавлены множитель инкремент лота и шага. Позволяет точнее воспроизвести вашу проблему в тестах.
- Теперь кнопки "закрыть" и "закрыть позиции в профите" тоже переспрашивают
Сеты от 8.7 подходят для 8.8
v.8.10
Добавлен "обход" спреда.
Настройки выглядят вот так:
Период усреднения спреда (в тиках) и множитель стандартного отклонения.
Советник по сути, фильтрует спред, который во столько вот раз больше нормального на этой паре.
Пока не накопилось заданное количество тиков, советник фильтрует спред привычным способом, используя заданный жесткий лимит в пипсах.
При этом он теперь пишет об этом в панельке, вот тут появилось текущее значение спреда и текущее значение лимита:
Как я упоминал выше, значение лимита будет постоянным, пока усреднитель не наберет заданное количество тиков. Потом будет равно "нормальному" спреду помноженному на ваш лимит отклонения. Например, если вы задали лимит отклонения 2.0, а среднее значение "нормального" спреда равно 0.75, то лимит равен 1.5 - то, что мы видим на картинке выше.
Когда спред превышает лимит, картинка выглядит вот так:
При этом, если советник в режиме рикавери, он обновит статус, вот так:
Обход ролловера обрабатывается параллельно и, если задействован, будет отображаться в этой строчке статуса, как PAUSE (ROLLOVER).
v.8.11
Теперь фильтру спреда не страшны отрицательные средния значения спреда. Что бы это ни было, к отрицательным спредам фильтр был не готов.
Попутно в версию зацепились пара дополнительных мелочей, позволяющих чуть подробнее воссоздавать входную, "проблемную" позицию в тесте.
Ну, или просто в торгах могут пригодиться. Вот эти 4:
- Place take to last order open price - выставлять тейк нового ордера в цену открытия предыдущего. Удобно, с учетом того, что открытие раз на баре и отступы сильно нестрогие.
- Deciding when to start averaging - когда переходим в режим усреднения и выколупывания Stupido, собственно. Два варианта: отступ от первого ордера, или от последнего ордера. Помним, что количество ордеров в начальной структуре ограничено параметром Initial Structure Count
- Value of the chosen trigger - собственно, величина отступа, выбранного выше. В пипсах, понятно
-
Close all opposite when start averaging - Закрывать все ордера в другую сторону, когда в эту выполняется условие на начало усреднения. Я бы ожидал, что это всегда закрытие в плюс в этот момент
Но ордера эти могут на продолжении тренда против выцарапываемой позиции очень даже пригодиться - поэтому флажок, попробовать.
Сеты от предыдущих версий почти подходят: не перенесется логика перехода из режима начальной структуры в режим рекавери.
Можно ручками открыть сет, как текстовый файл, и заменить везде строчку
SpacingFromInitialStructurePips
на
AveragingTriggerValue
Этого будет достаточно для восстановления совместимости.
Сеты и тесты <- ссылка на google sheet
| Пара | Версия SH | ТФ | Начало теста | Конец теста | Сделок в СС | Лот СС | Макс просадка | На лот СС | Прибыль | На лот СС в год | RF в год | Link |
| USDCHF | 8.5 | H1 | 01-02-2015 | 28-04-2023 | 16 | 0.5 | $110,183.00 | $13,772.88 | $283,940.00 | $4,306.47 | 0.3126777222 | SH-v.8.5-USDCHF-H1-R6 |
| USDCHF | 8.5 | H1 | 01-02-2010 | 28-04-2023 | 16 | 0.5 | $302,795.00 | $37,849.38 | $496,133.00 | $4,683.45 | 0.1237390462 | SH-v.8.5-USDCHF-H1-R6 |
| EURGBP | 8.5 | H1 | 01-02-2010 | 28-04-2023 | 1 | 4.5 | $313,658.00 | $69,701.78 | $859,645.00 | $14,426.60 | 0.2069760629 | SH-v.8.5-EURGBP-H1-R1 |
























