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

MQL5 エキスパート

仕事が完了した

実行時間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 codes
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 articles, 23 codes

プロジェクト情報

予算
30 - 200 USD
締め切り
最低 1 最高 5 日