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

MQL5 EA

작업 종료됨

실행 시간 19 일
고객의 피드백
Александр — MQL5-спец! Чистый код с визуалом и логированием. Точно в срок, с учётом всех нюансов. Коммуникация чёткая, правки оперативно. Рекомендую!👍
피고용인의 피드백
Понятное ТЗ, оперативные ответы на текущие вопросы, никаких дополнительных хотелок, всё только в рамках ТЗ. Однозначно рекомендую!

명시

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


응답함

1
개발자 1
등급
(298)
프로젝트
477
40%
중재
105
40% / 24%
기한 초과
81
17%
로드됨
게재됨: 2 코드
2
개발자 2
등급
(28)
프로젝트
39
23%
중재
14
0% / 93%
기한 초과
4
10%
무료
3
개발자 3
등급
(19)
프로젝트
24
8%
중재
9
33% / 33%
기한 초과
1
4%
로드됨
4
개발자 4
등급
(42)
프로젝트
43
7%
중재
0
기한 초과
0
무료
게재됨: 2 기고글, 23 코드

프로젝트 정보

예산
30 - 200 USD
기한
에서 1  5 일