Daily Loss and Drawdown Risk Manager
- Утилиты
-
Amal Yuldashev
TickForgeFX: trading tools for MetaTrader 5 and MetaTrader 4, built to hold up on a live chart - Версия: 1.0
- Активации: 15
Поставьте его на один график, и он заставит соблюдать дневной лимит убытка и максимальную просадку на всём счёте, кто бы ни открыл сделку: вы вручную, мобильное приложение, другой советник или копируемый сигнал. На лимите он закрывает все позиции, удаляет все отложенные ордера и закрывает всё новое до конца блокировки. Он срабатывает на заданной вами черте до лимита, а не после, и простыми словами сообщает, что сделал.
Риск-менеджер редко подводит из-за недостающей функции. Подводит лимит, который срабатывает поздно, настройка, которая означает не то, что говорит её название, блокировка, которую тихо отменяет изменение входных параметров, или сделки, которые он закрыл, хотя никто не ждал, что он их тронет. На каждую из этих проблем ниже есть простой ответ.
Настройка
Для челленджа проп-фирмы или для ваших собственных лимитов важны вот эти настройки:
- Account size: размер челленджа, например 100000, или размер, от которого вы хотите отсчитывать собственные лимиты. Оставьте 0, и при первом запуске он возьмёт ваш баланс.
- Daily loss limit и Overall loss limit: ваш дневной лимит убытка и ваша максимальная просадка. Настройка Loss limits are set in выбирает между деньгами в валюте счёта и процентом: от размера счёта или, когда общий лимит скользящий, от пика.
- Daily baseline: от чего отсчитывается дневная просадка. Баланс на начало дня, эквити на начало дня, большее из этих двух или максимум эквити за день, причём отсчёт никогда не ведётся от уровня ниже баланса на начало дня.
- Daily reset hour: когда у вашей фирмы сменяется день, по времени сервера.
Все остальные правила выключены, пока вы их не зададите. По умолчанию общий лимит отсчитывается от размера счёта: это фиксированный порог, как в большинстве челленджей. Один выпадающий список делает его вместо этого скользящей просадкой от наивысшего достигнутого эквити, и тогда процент берётся от этого пика, поэтому растёт вместе со счётом. Если у вашей фирмы скользящая просадка на фиксированную сумму, задайте этот лимит в деньгах.
На лимите он действует, а не отчитывается постфактум.
- По умолчанию он срабатывает на 90 процентах лимита и предупреждает на 80, оба значения задаёте вы. Этот запас нужен, чтобы поглотить гэп или медленное исполнение, прежде чем они дойдут до черты вашей фирмы. Движение больше этого запаса всё равно может её пересечь.
- Закрываются все позиции по всем символам и удаляются все отложенные ордера, начиная с самой крупной экспозиции. Закрытие, которое брокер отклонил, отправляется снова по следующей цене: сразу после отказа по цене, а после любого другого отказа, как только пройдёт ожидание не дольше 30 секунд. Каждая попытка записывается в лог вместе с ответом брокера.
- Всё, что открыто, пока стоит блокировка, закрывается сразу, как только появляется, с проверкой на каждом тике и каждую секунду, пока MetaTrader работает с прикреплённым инструментом, независимо от того, открыто оно вашей рукой, с вашего телефона или другой программой.
- Убытки считаются по эквити, как это делает эквити-протектор, поэтому плавающий убыток учитывается так, как его учитывает большинство фирм. Кредит, который начисляет ваш брокер, не учитывается, поэтому он никогда не может скрыть убыток.
- Дневная блокировка заканчивается при дневном сбросе. Общая блокировка стоит, пока вы не попросите её снять, пока ваше эквити не вернётся к уровню, от которого шёл отсчёт, или пока не вступит в силу отключение этого лимита.
День отсчитывается от его сброса, даже если MetaTrader в тот момент был закрыт. Запустите его после сброса, и всё, что счёт зафиксировал с тех пор, включая стоп, сработавший ночью, идёт в зачёт сегодняшнего лимита, как было бы, если бы инструмент работал. При базе отсчёта по эквити сделки, которые были открыты в момент сброса, оцениваются по ценам того момента, взятым из истории графика, включая те, что закрылись, пока MetaTrader был выключен. Если цену на момент сброса не удаётся прочитать в течение минуты, он сообщает об этом в журнале экспертов и отсчитывает день от сделок в том виде, в каком они есть при его запуске, без цен момента сброса.
Блокировка, которая держится
- Её не снимает ни перезапуск MetaTrader, ни удаление инструмента и повторное прикрепление. Она хранится в этом MetaTrader под номером счёта, поэтому блокировка на одном счёте не переходит вместе с вами на другой.
- Изменение входных параметров её не отменяет. Более строгий лимит убытка применяется сразу. Более мягкий, включая отключение лимита, ждёт следующего дневного сброса или снятия блокировки по вашему запросу, и об этом сообщается в журнале экспертов. Отключённый общий лимит уносит с собой свою блокировку, когда это изменение вступает в силу.
- То же относится к двум дневным счётчикам, к режиму Watch only и к размеру счёта, где более строгим считается большее значение, пока общий лимит отсчитывается от размера счёта, как задано по умолчанию, потому что оно поднимает черту, на которой он срабатывает, а в остальных случаях меньшее. Новый размер счёта начинает действовать для дневного лимита со следующего сброса или со снятия блокировки, если только он не заменяет размер, при котором лимиты убытка отказались взводиться, а пока включён хотя бы один лимит убытка, больший размер тогда же начинает действовать и для риска на сделку. Правила для каждой сделки получают новое значение сразу.
- Настройка, которую инструмент не может принять, например порог предупреждения на черте срабатывания или выше, останавливает его: MetaTrader снимает его с графика и объясняет почему, по умолчанию во всплывающем окне и всегда в журнале экспертов. Пока вы не прикрепите его снова с настройками, которые он принимает, никакие правила не применяются, а уже стоящая блокировка сохраняется.
- Снятие блокировки это запрос, а не выключатель. Поставьте Ask to clear a tripped lock в true, и снятие вступит в силу через 30 минут, если значение к тому времени всё ещё true; чтобы отменить, верните его обратно раньше. Когда снятие вступает в силу, настройки применяются так, как введены в окне, включая размер счёта, кроме Daily reset hour и варианта Daily baseline, считываемого в начале дня, которые ждут следующего сброса, а то, что уже произошло, продолжает учитываться. Поэтому блокировка, которую вызвали реальные убытки, сразу срабатывает снова, а блокировка, которую вызвала неверная настройка, остаётся снятой, если настройку исправили. Затем верните false: если оставить true, запросить снятие снова будет нельзя, и он скажет об этом, если вы попробуете.
Правила для каждой сделки, кто бы её ни открыл
Каждое из них выключено, пока вы его не зададите. У каждой группы своё действие, закрыть сделку или только предупредить, а сделке без стопа его можно ещё и выставить.
- Most one trade may risk, by its stop. Предельный риск одной сделки по её стопу: деньги, которые будут потеряны, если сработает стоп, считая от цены открытия, в процентах от размера счёта или от баланса, если оба лимита убытка выключены и размер не введён. Сделка оценивается, когда появляется, снова всякий раз, когда меняется её стоп или объём, и заново, когда MetaTrader перезапускается или инструмент прикрепляют повторно, а не тогда, когда убыток уже случился.
- Сделка без стоп-лосса. По истечении разрешённого вами числа секунд он ставит стоп-лосс на уровне лимита риска, для чего нужна заданная настройка Most one trade may risk, и сохраняет тейк-профит, либо закрывает сделку, либо предупреждает. Если цена уже прошла место, где встал бы этот стоп, он закрывает сделку, а не ставит стоп, который сработал бы сразу.
- Symbols allowed. Список разрешённых символов: к сделке по любому другому символу применяется действие. Символ из списка, которого нет у вашего брокера, не даёт инструменту запуститься, и всплывающее окно называет этот символ, вместо того чтобы позволить инструменту закрывать каждую сделку по символу, который вы имели в виду.
- Максимум открытых позиций и максимум лотов в сумме. Действие применяется к самому новому: по лотам к самой новой сделке, а по количеству на неттинговом счёте к самой новой позиции целиком.
- Максимум сделок в день и остановка на день после заданного числа убытков подряд, два правила против овертрейдинга, с учётом свопа, комиссии и сборов. Действие применяется только к сделкам, открытым после того, как лимит достигнут.
Он не закрывает то, что уже было открыто
Прикрепите его к счёту, на котором уже есть открытые сделки, и по правилам для каждой сделки о них будут предупреждения, но закрывать их эти правила не будут никогда. Лимиты убытка устроены иначе и прямо об этом говорят: с момента, когда они взводятся, они распространяются на каждую сделку на счёте, потому что лимит, который пропускал бы часть сделок, не был бы лимитом.
Закрытие MetaTrader на ночь или перезагрузка компьютера системой Windows не меняет того, какие сделки он контролирует. Только снятие инструмента с графика и повторное прикрепление в более поздний день запускает его с чистого листа, и в журнале экспертов сообщается, когда это происходит.
Рядом с другими вашими советниками
MetaTrader запускает по одному советнику на график, поэтому этот инструмент ставится на отдельный график, а другие ваши советники остаются на своих. Их сделки он контролирует так же, как любые другие: лимиты убытка закрывают их на черте, а правило, которое вы включили, действует и на них. Исключений сделать нельзя, поэтому сделкам советника, который намеренно торгует без стоп-лосса, будет выставлен стоп, если вы настроите это правило на выставление стопа; вместо этого настройте его на предупреждение. Его нельзя тестировать на истории вместе с другим советником, потому что тестер стратегий запускает одну программу за раз.
Когда другая программа раз за разом открывает сделки заново
- Сделка, открытая под блокировкой, закрывается каждый раз. Когда программа заново открывает сделку, которую закрыла блокировка, по тому же символу в течение 15 минут, всплывающее окно называет эту программу по магическому номеру и комментарию и перечисляет советников на графиках этого символа, потому что в MetaTrader нет способа сопоставить магический номер с программой. Это окно появляется в первый раз и затем каждый пятый раз, чтобы зациклившийся советник не завалил вас ими. Каждое закрытие, вместе с магическим номером, есть в логе.
- Или он может закрыть MetaTrader, когда на счёте не останется позиций, чтобы работающие в нём программы остановились, пока вы не откроете его снова. Сделки с вашего телефона или из другого терминала он остановить не может, и пока MetaTrader закрыт, их ничто не закрывает. По умолчанию выключено и никогда не действует на MQL5 VPS, где ничто не открыло бы его снова. Ничего потом не перезапускается и не восстанавливается: ваши графики и другие советники остаются такими, какими вы их оставили, а блокировка всё ещё стоит, когда вы возвращаетесь.
Пополнения, выводы средств и кредит
- Пополнение не является прибылью и не даёт дополнительного запаса. Размер счёта никогда не растёт вслед за пополнением.
- Вывод средств не считается убытком. Он списывается сначала из прибыли сверх того, что вы внесли, затем из ваших пополнений, и размер счёта уменьшается только на ту часть, которая опускает баланс ниже него.
- Кредит исключается из эквити, которое он измеряет.
- Если баланс меняется, а историю сделок прочитать не удаётся, лимиты приостанавливаются, вместо того чтобы гадать, и карточка показывает Paused. Уже стоящая блокировка на паузу не встаёт: она продолжает закрывать то, что открывается, и карточка показывает Locked.
При ошибке он отказывается взводиться
При первом запуске на счёте лимит убытка, убыток по которому уже за чертой срабатывания, не взводится: ничего не закрывается, карточка показывает Not armed, а в журнале экспертов сказано почему. Он взводится, как только этот убыток вернётся под черту, а дневной не позже следующего дневного сброса, и до тех пор он не защищает счёт. Другой лимит взводится как обычно. На счёте, где инструмент уже работал раньше, убыток, полученный, пока он был выключен, всё равно учитывается, и инструмент действует по нему, как только его снова прикрепят. Пока общий лимит включён и отсчитывается от размера счёта, как задано по умолчанию, размер счёта, введённый с лишним нулём, отклоняется, и карточка показывает Check the account size (проверьте размер счёта), если только не стоит блокировка, а пока такой размер остаётся, ни один лимит не взводится. Такой размер, введённый в действие снятием блокировки, не отклоняется: блокировка срабатывает снова, а исправленное значение вступает в силу при следующем снятии. При скользящем общем лимите или при выключенном лишний ноль не отлавливается, и когда он вступает в силу, каждый лимит, заданный в процентах, становится в десять раз шире. Пока включён хотя бы один лимит убытка, карточка показывает размер счёта, от которого идёт отсчёт, так что размер с лишним нулём виден.
Запись всего, что он сделал
- Один CSV-файл на каждый номер счёта в папке MQL5\Files: время сервера и локальное время, правило, тикет, символ, направление, объём, магический номер, цена, код ответа брокера и результат, а также примечание. В файл записывается то, что сделал инструмент; предупреждения остаются в журнале экспертов.
- Для каждой строки файл отдельно открывается, записывается и закрывается, поэтому при сбое не теряется ничего из уже записанного.
- Если Excel или другая программа держит файл открытым, строки ждут в соседнем файле и переносятся в основной по порядку, как только тот освободится. Если MetaTrader закроется раньше, они сохраняются и записываются при следующем запуске инструмента.
Неттинг и хеджинг
Работает с обоими. На неттинговом счёте каждая доливка к позиции оценивается как отдельная сделка, со своим объёмом и своим временем, и правило закрывает только тот объём, который его нарушил. Позиция больше максимального лота символа закрывается частями, а не получает отказ.
Режим Watch only
Одна настройка превращает каждое правило в предупреждение: инструмент оповещает, ничего не закрывает, а карточка показывает Reached вместо Locked. Включение на уже работающем инструменте считается ослаблением: правила для каждой сделки меняются сразу, но лимиты убытка и дневные счётчики продолжают закрывать до следующего дневного сброса, включая лимит, впервые достигнутый уже после переключения.
Карточка
- Room before it acts, то есть запас до срабатывания, в валюте вашего счёта, до того лимита, который ближе. Именно за этим числом и стоит следить.
- Дневной и общий убыток, каждый с полосой, отметкой, где он срабатывает, и своим состоянием: Clear, Near the limit, Reached, Locked или Not armed (в норме, близко к лимиту, достигнут, заблокирован, не взведён).
- Размер счёта и откуда он взят: как вы его ввели (as typed), из баланса (from the balance) или после вывода средств (after a withdrawal).
- Сделки за сегодня, убытки подряд, открытые позиции и открытые лоты, для тех правил, которые вы включили.
- Последнее, что он сделал, и почему.
- Перетащите её куда угодно, зафиксируйте на месте или закрепите в углу через входные параметры.
Оповещения приходят всплывающим окном со звуком, push-уведомлением в приложение MetaTrader и письмом на почту, каждое включается отдельно. Push и почту сначала нужно настроить в настройках самого MetaTrader.
MT5 и MT4
Обе платформы, собранные из одного файла: та же версия, те же настройки с теми же названиями и значениями по умолчанию, та же карточка, те же правила. Это страница сборки для MetaTrader 5. Сборка для MetaTrader 4 опубликована отдельно, и на её странице сказано, где разницу вносит сам MetaTrader 4: что он записывает о том, кто открыл сделку, что оставляет после себя частичное закрытие и сколько истории он отдаёт программе.
О демоверсии, без прикрас
На этом рынке демоверсия платного продукта работает только в тестере стратегий, где инструменту, который не открывает сделок, нечего было бы показать. Поэтому в визуальном тесте он открывает собственные сделки, по одному шагу за раз, и каждый шаг построен так, чтобы нарушить включённое вами правило, а карточка показывает, как это правило срабатывает. Из коробки включены только два лимита убытка, поэтому перед запуском включите те правила, за которыми хотите понаблюдать. Его сделки несут комментарий, начинающийся с "TFX demo". После срабатывания лимита убытка он открывает ещё одну сделку под блокировкой, чтобы вы увидели, что и она сразу закрывается.
Оповещения в тестере не доставляются вообще; вместо этого каждое событие показывают карточка и лог. Одно, что он делает в тестере и больше нигде: в НЕВИЗУАЛЬНОМ прогоне на неттинговом счёте с депозитом меньше 2000, то есть в той конфигурации, которую использует автоматический валидатор этого рынка, он открывает пробные сделки минимальным лотом, чтобы валидатор увидел торговые операции, и в этом прогоне не применяет никаких правил. Он сообщает об этом в журнале, и это стоит знать, прежде чем запускать собственный невизуальный бэктест на неттинговом счёте с небольшим депозитом, потому что это та же конфигурация. Визуальный прогон это демоверсия, а любой другой прогон применяет правила. Вне тестера стратегий он никогда не открывает сделок.
Чем он не является
Это не менеджер сделок: здесь нет ни безубытка, ни трейлинг-стопа, ни частичной фиксации прибыли, ни входов, ни сигналов. Всё это делает наш Trade Manager, для сделок по символу своего графика. Этот инструмент с одного графика контролирует каждую сделку на счёте, и единственное, что он вообще делает со сделкой, это закрывает её или ставит ей стоп.
Но это и не просто монитор. Мы выпускаем бесплатную панель, которая показывает оба ваших лимита убытка и никогда не трогает сделки. А этот по ним действует.
Полезно знать
- Ставьте его на один график. Одна копия контролирует весь счёт; вторая копия действовала бы на те же сделки.
- Ничто не освобождает программу или символ от лимитов убытка. Если сделка есть на счёте, они её охватывают.
- Час дневного сброса можно перенести, и такое изменение может удлинить день, но никогда его не укоротит.
Если я вам нужен, я отвечаю
Спросите в комментариях или сообщением на MQL5, и ответ вы получите от меня, а не от службы поддержки. Если что-то сломано, я хочу об этом знать, и сообщение об ошибке получает исправление, а не обходной путь.
Свои лимиты вы уже знаете. Этот инструмент заставляет их соблюдать и точно говорит вам, что сделал.
