Создание Эксперта: Простой менеджер плеча для форекс МТ5

MQL5 Asesores Expertos

Trabajo finalizado

Plazo de ejecución 19 días
Comentario del Ejecutor
Понятное ТЗ, оперативные ответы на текущие вопросы, никаких дополнительных хотелок, всё только в рамках ТЗ. Однозначно рекомендую!
Comentario del Cliente
Александр — MQL5-спец! Чистый код с визуалом и логированием. Точно в срок, с учётом всех нюансов. Коммуникация чёткая, правки оперативно. Рекомендую!👍

Tarea técnica

!Только форекс. Не надо 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%) для проверки корректности работы механизма коррекции позиции. Уделите особое внимание защите от некорректных действий пользователя и нештатных ситуаций, так как интерфейс может использоваться непредсказуемо. Я проведу выборочное тестирование, включая сложные сценарии, но основная ответственность за всестороннее тестирование и качество кода лежит на вас.


Han respondido

1
Desarrollador 1
Evaluación
(298)
Proyectos
478
40%
Arbitraje
105
40% / 24%
Caducado
82
17%
Trabajando
Ha publicado: 2 ejemplos
2
Desarrollador 2
Evaluación
(28)
Proyectos
39
23%
Arbitraje
14
0% / 93%
Caducado
4
10%
Libre
3
Desarrollador 3
Evaluación
(22)
Proyectos
28
7%
Arbitraje
9
33% / 33%
Caducado
1
4%
Trabaja
4
Desarrollador 4
Evaluación
(42)
Proyectos
43
7%
Arbitraje
0
Caducado
0
Libre
Ha publicado: 2 artículos, 23 ejemplos

Información sobre el proyecto

Presupuesto
30 - 200 USD
Plazo límite de ejecución
de 1 a 5 día(s)