Job finished
Specification
!Только форекс. Не надо FORTS
Задача: Разработать советника «Простой менеджер плеча» для MT5. Его задача: непрерывно контролировать эффективное плечо открытой позиции, чтобы оно оставалось в заданном диапазоне (минимальное/максимальное значение). В случае выхода текущего плеча за установленные пределы – как вследствие плавных рыночных колебаний, так и из-за резких ценовых разрывов (например, после выходных или клиринга) – советник должен автоматически скорректировать объем позиции для возврата эффективного плеча к целевому уровню.
Рисунок: мониторинг диапазона эффективного плеча
Цель: пирамидинг длинных трендов (6-18 месяцев). Автоматически поддерживать эффективное плечо (ЭП) позиции в заданном диапазоне (Целевое ± %Отклонения). При любом выходе за диапазон – запустить таймер 10 секунд и при невозвращении в диапазон - коррекция объема (BUY или SELL) позиции одним рыночным ордером для возврата ЭП к целевому значению.
Входные параметры (ключевые):
· Направление долгосрочного пирамидинга: либо LONG (докупать – BUY, скидывать лишне – SELL), либо SHORT (допродавать – SELL, скидывать лишнее – BUY).
· InpTargetLeverage: Целевое ЭП (напр., 15.0)
· InpLeverageDeviationPercent: Отклонение от цели в % (напр., 10.0) -> формирует Мин/Макс ЭП (13.5-16.5)
· InpCheckIntervalSeconds: Интервал проверки плеча (напр., 1-5 сек). Учитывать пинг.
· InpSymbolName: Инструмент (напр., USDRUB, EURUSD)
· InpMagicNumber: Magic
· Без стопов и без отложенных ордеров
· Валюта счета: рубли, доллары.
Логика:
1. Инициализация: Рассчитать Мин/Макс допустимое ЭП.
2. Цикл (OnTimer/OnTick):
o Получить AccountEquity(), цены Ask/Bid.
o Расчет текущего ЭП: (ОбъемПозиции * РазмерКонтракта * ТекущаяЦена) / AccountEquity().
§ ТекущаяЦена: Bid для лонга, Ask для шорта.
o Если нет позиции:
§ Рассчитать ЦелевойОбъем = (AccountEquity() * InpTargetLeverage) / (РазмерКонтракта * ЦенаОткрытия).
§ ЦенаОткрытия: Ask для лонга, Bid для шорта.
§ Открыть позицию.
o Если позиция есть и (Текущее ЭП < МинЭП ИЛИ Текущее ЭП > МаксЭП):
§ Рассчитать ОбъемДляКоррекции = (AccountEquity() * InpTargetLeverage) / (РазмерКонтракта * ЦенаКоррекции).
§ ЦенаКоррекции: Ask для докупки/откупа шорта; Bid для допродажи/продажи лонга.
§ ОбъемСделки = ОбъемДляКоррекции - ТекущийОбъемПозиции.
§ Изменить позицию на ОбъемСделки (купить/продать).
§ Важно: Перед увеличением позиции – проверка маржи.
Отображение на графике: Текущее ЭП, Целевое ЭП, Диапазон ЭП (Мин-Макс).
Пример 1 ЛОНГ (Цель.ЭП 15, Диапазон 13.5-16.5):
1. Equity 1.2M руб, USDRUB Ask 78.00. Открываем LONG ~230.76 лотов. ЭП ~15.
2. Цена растет, ЭП падает до 13.5. Equity вырос. 10 сек ждем подтверждение выхода за диапазон. Докупаем по рынку, чтобы ЭП стало ~15.
3. Цена падает, ЭП растет до 16.5. Equity упал. 10 сек ждем подтверждение выхода за диапазон. Частично продаем, чтобы ЭП стало ~15.
Пример 2 ШОРТ (Цель.ЭП 15, Диапазон 13.5-16.5):
1. Equity 1.2M, USDRUB Bid 78.00. Открываем SHORT ~230.76 лотов. ЭП ~15.
2. Цена падает (шорт в плюсе), ЭП падает до 13.5. Equity вырос. 10 сек ждем подтверждение выхода за диапазон. Допродаем по рынку, чтобы ЭП стало ~15.
3. Цена растет (шорт в минусе), ЭП > 16.5 (напр. 20). Equity упал. 10 сек ждем подтверждение выхода за диапазон. Частично откупаем, чтобы ЭП стало ~15.
Пример 3 ЛОНГ – открытие рынка в понедельник за границей диапазона или после клиринга (Цель.ЭП 15, Диапазон 13.5-16.5):
1. Цена выросла, пробила далеко диапазон, ЭП падает до ~12.0. Equity вырос. 10 сек ждем подтверждение выхода за диапазон. Докупаем по рынку, чтобы ЭП стало ~15.
2. Цена падает, пробила далеко диапазон, ЭП растет до 16.5. Equity упал. 10 сек ждем подтверждение выхода за диапазон. Частично продаем, чтобы ЭП стало ~15.
Функция для ленивого или занятого трейдера: закрытие всех позиций и выключение робота по таймеру (например, 22:49 перед закрытием рынка). Также прописать во сколько открыть позицию в следующий рабочий день (например, 09:03) и продолжать пирамидить.
Учесть отключение электричества и перезапуск терминала
Реагировать на кнопку Алготрейдинг вкл/выкл.
Робот для ленивого пирамидчика, который не всегда заходит в терминал и торгует тренды годами. ОТКАЗОУСТОЙЧИВОСТЬ И ИСПОЛНЕНИЕ ВОЛИ ТРЕЙДЕРА – ПРИОРИТЕТ ЭТОГО РОБОТА.
Перед передачей заказчику обязательно протестируйте робота на демо-счете с высоким кредитным плечом и узким диапазоном отклонений (0.3-0.5%) для проверки корректности работы механизма коррекции позиции. Уделите особое внимание защите от некорректных действий пользователя и нештатных ситуаций, так как интерфейс может использоваться непредсказуемо. Я проведу выборочное тестирование, включая сложные сценарии, но основная ответственность за всестороннее тестирование и качество кода лежит на вас.
