Работа завершена
Техническое задание
Плагин риск менеджер для MT5
Термины:
Capital, $ – размер первоначального капитала торгового счета в долларах. Является переменной для плагина, устанавливается для группы счетов или конкретных МТ5 счетов.
Equity, $ – плавающая прибыль/убыток. Значение получать от сервера по конкретному счету.
Max daily loss, % - ежедневный лимит потерь. Является переменной для плагина, устанавливается для группы счетов или конкретных МТ5 счетов.
Max week loss, % - недельный лимит потерь. Является переменной для плагина, устанавливается для группы счетов или конкретных МТ5 счетов.
Max loss, % - максимальный лимит потерь за весь период. Является переменной для плагина, устанавливается для группы счетов или конкретных МТ5 счетов.
Max Exposure, LOT - максимальный одномоментный совокупный размер позиций. Является переменной для плагина, устанавливается для группы счетов или конкретных МТ5 счетов.
Time Liquidation of positions, sec – время в секундах до наступления Закрытия рынков, в которое в конце торговой недели должны быть принудительно закрыты открытые позиции. Является переменной для плагина, устанавливается для группы счетов или конкретных МТ5 счетов.
Описание:
Реализовать плагин, который блокирует для торговли МТ5 счета и закрывает открытые позиции по заданным в параметрах плагина критериям.
Критерии:
- превышен Ежедневный лимит потерь (Max daily loss, %);
- превышен Недельный лимит потерь (Max week loss, %);
- превышен Максимальный лимит потерь за весь период (Max loss, %);
Если счету меньше 30 дней
Ежедневный лимит потерь (Max daily loss, %):
Лимит потерь рассчитывается исходя из размера первоначального капитала (Capital), поэтому:
-если Equity на конец предыдущего торгового дня МЕНЬШЕ Capital, то сравнивать текущий Equity с Equity на конец предыдущего торгового дня;
-если Equity на конец предыдущего торгового дня БОЛЬШЕ ИЛИ РАВНО Capital, то сравнивать текущий Equity с Capital;
-в первый день сравнивать текущий Equity с Capital;
Недельный лимит потерь (Max week loss, %)
-если Equity на начало текущей торговой недели МЕНЬШЕ Capital, то сравнивать текущий Equity с Equity на начало текущей торговой недели;
-если Equity на начало текущей торговой недели БОЛЬШЕ ИЛИ РАВНО Capital, то сравнивать текущий Equity с Capital;
-в первую неделю сравнивать с Capital.
Максимальный лимит потерь за весь период (Maxx loss, %) – сравнивает текущий Equity c Capital установленного по счету или группе счетов.
Если счету больше 30 дней
Сравнивать не с Capital, а с Equity на конец 30-го календарного дня
Если счету больше 60 дней
Сравнивать не с Capital, а с Equity на конец 60-го календарного дня и т.д. с интервалом в 30 дней.
Плагин должен запрещать открывать позицию сверх установленного по каждой группе счетов или конкретного МТ5 счета - Максимального одномоментного совокупного размера позиции (Max Exposure, LOT);
Плагин должен в конце торговой недели Закрыть открытые позиции согласно времени закрытия рынков, за X секунд (переменная Time Liquidation of positions, sec) до закрытия.
Отчет времени вести исходя из даты регистрации счета в МТ5, параметр Зарегистрирован.
Настройки в виде переменных Max daily loss/Max week loss/Maxx loss, Max Exposure, Time Liquidation of positions должны задаваться для группы счетов или конкретного МТ5 счета.
Значение Equity в конце каждого дня для каждого счета необходимо записывать и хранить в отдельной базе MySQL. Параметр конец дня должен запрашиваться из МТ5 сервера.
При наступлении события «Блокировка счета», отправить запрос на отправку письма Клиенту. Адрес и порт почтового сервера должны быть вынесены в переменные (Mail server). Для вызова процедуры используется gRPC. Заказчик передает протофайл по запросу Исполнителя.
Переменные для плагина должны задаваться через Добавление\Изменение Параметров в Настройках платформы MetaTrader 5 Administrator.
По завершению работ необходимо передать исходный код Заказчику.
Пример настроек плагина
Параметр | Значение |
BD | Address, user, password, database name |
Mail server | Ip_adress:port |
Groups 1 | null |
Logins 1 | 5000302 |
Max daily loss 1, % | 4 |
Max week loss 1, % | 7 |
Max loss 1, % | 12 |
Max Exposure 1, LOT | 6 |
Time Liquidation of positions 1, sec | 300 |
Capital 1, USD | 10000 |
Groups 2 | ArumTrade\real\riskmanager\group1 |
Logins 2 | null |
Max daily loss 2, % | 5 |
Max week loss 2, % | 9 |
Max loss 2, % | 13 |
Max Exposure 2, LOT | 6 |
Time Liquidation of positions 2, sec | 350 |
Capital 2, USD | 15000 |
Groups 3 | … |
Logins 3 | … |
…. |
|
Groups X | ArumTrade\real\riskmanager\gr\* |
Logins X | null |
Max daily loss X, % | 5 |
Max week loss X, % | 9 |
Max loss X, % | 12 |
Max Exposure X, LOT | 6 |
Time Liquidation of positions X, sec | 300 |
Capital X, USD | 15000 |
… |
|
Пример структуры таблицы базы MySQL
Логин МТ5 | Дата + время | Значение equity |
|
|
|