Смотри, как бесплатно скачать роботов
Ищи нас в Telegram!
Ставь лайки и следи за новостями
Интересный скрипт?
Поставь на него ссылку - пусть другие тоже оценят
Понравился скрипт?
Оцени его работу в терминале MetaTrader 5
Библиотеки

nModify Orders - библиотека для MetaTrader 5

Просмотров:
67
Опубликован:
Обновлен:
MQL5 Фриланс Нужен робот или индикатор на основе этого кода? Закажите его на бирже фрилансеров Перейти на биржу


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:

  1. Перебор всех открытых позиций в обратном порядке

  2. Фильтрация позиций по символу и Magic Number

  3. Проверка дополнительных условий (тип позиции, прибыльность)

  4. Расчет новых значений SL/TP:

    • Для режима  "Value" : цена ± (значение × Point)

    • Для режима  "Price" : прямое присвоение значения

  5. Отправка команды модификации через OrderSend()


Алгоритм Modify_Order:

  1. Перебор всех отложенных ордеров

  2. Фильтрация по символу, Magic Number и типу ордера

  3. Модификация указанного параметра (цена, SL или TP)

  4. Сохранение неизмененных параметров

  5. Отправка команды модификации


Особенности реализации

Безопасность и надежность:

  1. Двойная проверка типов ордеров - по строковому параметру и реальному типу из системы

  2. Комплексная фильтрация - гарантирует воздействие только на целевые позиции/ордера

  3. Сохранение неизменных параметров - при изменении 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: рекомендуется использовать уникальные значения для каждого эксперта

Преимущества библиотеки

  1. Универсальность - работает с любыми торговыми инструментами

  2. Гибкость - 18 различных режимов фильтрации позиций

  3. Простота использования - интуитивно понятный интерфейс

  4. Надежность - комплексные проверки перед модификацией

  5. Эффективность - минимальные затраты вычислительных ресурсов

nProfit and Loss Positions nProfit and Loss Positions

Калькулятор прибыли/убытка позиций (открытых ордеров)

nClose Orders nClose Orders

Функция для закрытия позиций и удаления ордеров

YURAZ_RSAXEL Скрипт рисует уровни Рудолфа Акселя YURAZ_RSAXEL Скрипт рисует уровни Рудолфа Акселя

Скрипт рисует уровни Рудолфа Акселя

YURAZ_MCCH YURAZ_MCCH

Индикатор рассчитывает % роста или падения относительно CLOSE, написан с применением ООП, и легко интегрируется в любой советник или иной индикатор.