Ставь лайки и следи за новостями
Поставь на него ссылку - пусть другие тоже оценят
Оцени его работу в терминале MetaTrader 5
- Просмотров:
- 67
- Опубликован:
- Обновлен:
-
Нужен робот или индикатор на основе этого кода? Закажите его на бирже фрилансеров Перейти на биржу
Modify_Orders.mqh предназначена для управления позициями и ордерами в MetaTrader 5
Назначение
Modify_Orders.mqh предоставляет две мощные функции для управления открытыми позициями и отложенными ордерами в торговых экспертах и индикаторах на платформе MetaTrader 5. Она предназначена для автоматизации рутинных операций по модификации уровней Stop Loss, Take Profit и цен ордеров.
Основные возможности:
-
Модификация Stop Loss и Take Profit для открытых позиций
-
Изменение цен отложенных ордеров
-
Гибкая фильтрация по типам позиций, прибыльности и символам
-
Поддержка различных режимов расчета значений (в пунктах или абсолютных ценах)
Структура
Функция Modify_Position()
Предназначена для модификации уровней Stop Loss и Take Profit открытых позиций.
void Modify_Position( string tp_and_sl, // "SL" или "TP" - что изменяем string price_and_value, // "Value" или "Price" - тип значения string type_position, // Фильтр по типу позиции double price_tp_and_sl, // Значение для установки string symb, // Символ торгового инструмента long magicNumber // Magic Number эксперта );
Параметры фильтрации позиций:
| Параметр type_position | Описание |
|---|---|
| "All" | Все позиции |
| "All Profit" | Только прибыльные позиции |
| "All Loss" | Только убыточные позиции |
| "Buy" | Только Buy позиции |
| "Buy Profit" | Только прибыльные Buy позиции |
| "Buy Loss" | Только убыточные Buy позиции |
| "Sell" | Только Sell позиции |
| "Sell Profit" | Только прибыльные Sell позиции |
| "Sell Loss" | Только убыточные Sell позиции |
Примеры использования:
// Установить SL на 1000 пунктов для всех позиций Modify_Position("SL", "Value", "All", 1000, _Symbol, 0); // Установить TP на цену 1.2345 для прибыльных Buy позиций Modify_Position("TP", "Price", "Buy Profit", 1.2345, _Symbol, 12345); // Установить SL на 500 пунктов для убыточных Sell позиций Modify_Position("SL", "Value", "Sell Loss", 500, "EURUSD", 98765);
Функция Modify_Order()
Предназначена для модификации отложенных ордеров (Stop и Limit ордеров).
void Modify_Order( string tp_sl_price, // "Price", "SL" или "TP" string type_order, // Тип ордера для фильтрации double price_tp_sl_price, // Новое значение string symb, // Символ торгового инструмента long magicNumber // Magic Number эксперта );
Поддерживаемые типы ордеров:
-
"Buy Stop" - отложенный ордер Buy Stop
-
"Buy Limit" - отложенный ордер Buy Limit
-
"Sell Stop" - отложенный ордер Sell Stop
-
"Sell Limit" - отложенный ордер Sell Limit
Примеры использования:
// Изменить цену Buy Stop ордера Modify_Order("Price", "Buy Stop", 1.2345, _Symbol, 0); // Установить Stop Loss для Sell Limit ордера Modify_Order("SL", "Sell Limit", 1.2350, "GBPUSD", 12345); // Изменить Take Profit для Buy Limit ордера Modify_Order("TP", "Buy Limit", 1.2300, "EURUSD", 98765);
Принцип работы
Алгоритм Modify_Position:
-
Перебор всех открытых позиций в обратном порядке
-
Фильтрация позиций по символу и Magic Number
-
Проверка дополнительных условий (тип позиции, прибыльность)
-
Расчет новых значений SL/TP:
-
Для режима "Value" : цена ± (значение × Point)
-
Для режима "Price" : прямое присвоение значения
-
-
Отправка команды модификации через OrderSend()
Алгоритм Modify_Order:
-
Перебор всех отложенных ордеров
-
Фильтрация по символу, Magic Number и типу ордера
-
Модификация указанного параметра (цена, SL или TP)
-
Сохранение неизмененных параметров
-
Отправка команды модификации
Особенности реализации
Безопасность и надежность:
-
Двойная проверка типов ордеров - по строковому параметру и реальному типу из системы
-
Комплексная фильтрация - гарантирует воздействие только на целевые позиции/ордера
-
Сохранение неизменных параметров - при изменении SL сохраняется TP и наоборот
Математические расчеты:
Для Buy позиций:
-
Stop Loss: Текущая цена - (Значение × Point)
-
Take Profit: Текущая цена + (Значение × Point)
Для Sell позиций:
-
Stop Loss: Текущая цена + (Значение × Point)
-
Take Profit: Текущая цена - (Значение × Point)
Рекомендации по использованию
Для торговых экспертов:
#include <Modify_Order.mqh> // В функции OnTick() или по условию: if(Условие_для_трейлинга) { // Подтягиваем SL к цене при движении в нужную сторону Modify_Position("SL", "Value", "All Profit", 500, _Symbol, ExpertMagic); }
Для скриптов ручного управления:
// Скрипт для быстрого выставления SL на все позиции void OnStart() { Modify_Position("SL", "Value", "All", 1000, _Symbol, 0); }
Оптимальные параметры:
-
Таймфрейм: любой (функции не зависят от таймфрейма)
-
Инструменты: любые валютные пары, металлы, индексы
-
Magic Number: рекомендуется использовать уникальные значения для каждого эксперта
Преимущества библиотеки
-
Универсальность - работает с любыми торговыми инструментами
-
Гибкость - 18 различных режимов фильтрации позиций
-
Простота использования - интуитивно понятный интерфейс
-
Надежность - комплексные проверки перед модификацией
-
Эффективность - минимальные затраты вычислительных ресурсов
nProfit and Loss Positions
Калькулятор прибыли/убытка позиций (открытых ордеров)
nClose Orders
Функция для закрытия позиций и удаления ордеров
YURAZ_RSAXEL Скрипт рисует уровни Рудолфа Акселя
Скрипт рисует уровни Рудолфа Акселя
YURAZ_MCCH
Индикатор рассчитывает % роста или падения относительно CLOSE, написан с применением ООП, и легко интегрируется в любой советник или иной индикатор.
