← К каталогу
Исходный код · ID 604

Modify_All_TP_SL

set tp (price).mq4
Вы автор или правообладатель?

Сообщите нам, если считаете, что материал размещён без разрешения.

Краткий обзор

О программе

Скрипт Modify_All_TP_SL предназначен для массовой модификации всех активных ордеров (рыночных и отложенных) на текущем символе в MetaTrader 4. Он позволяет одновременно изменить уровни Take Profit и Stop Loss у всех открытых позиций и отложенных ордеров.

При запуске скрипт перебирает все ордера, отфильтровывая только те, что принадлежат текущему символу. Для каждого ордера проверяются тип (BUY, SELL, отложенные) и корректность заданных уровней прибыли и убытка. Если значения Take Profit или Stop Loss не заданы (равны нулю или не соответствуют условиям), используются текущие уровни ордера.

Модификация выполняется через функцию OrderModify с автоматическим повтором при ошибке и ожиданием обновления котировок. Скрипт работает только с ордерами, у которых ещё не наступило время закрытия.

Настройки программы

НастройкаОписание
TakeProfit Уровень Take Profit (цена) для модификации ордеров. Если значение равно 0 или не соответствует условиям по стороне ордера, используется текущий Take Profit ордера.
StopLoss Уровень Stop Loss (цена) для модификации ордеров. Если значение равно 0 или не соответствует условиям по стороне ордера, используется текущий Stop Loss ордера.
Получить полный код

Поиск по коду файла

#property version       "2.00"
#property description   "The script modifies all orders (market and pending) on the symbol Take Profit and Stop Loss."
#property script_show_inputs
#property strict

input double TakeProfit=0; //Take Profit (price)
input double StopLoss=0;   //Stop Loss (price)

void OnStart()
  {
      // код доступен только после оплаты
   }
   if(OrdersTotal()>0)
     {
      for(int i=OrdersTotal()-1; i>=0; i--)
        {
         if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES))
           {
            double tp=NormalizeDouble(TakeProfit,_Digits);
            double sl=NormalizeDouble(StopLoss,_Digits);

            if(OrderSymbol()==Symbol())
              {
               int ticket=OrderTicket();
               if(tp<=0) tp=OrderTakeProfit();
               if(sl<=0) sl=OrderStopLoss();
               if(OrderType()==OP_SELL || OrderType()==OP_SELLLIMIT || OrderType()==OP_SELLSTOP)
                 {
                  if(OrderType()==OP_SELL)
                    {
                     if(tp>Ask) tp=OrderTakeProfit();
                     if(sl<Ask) sl=OrderStopLoss();
                    }
                  else
                    {
                     if(tp>=OrderOpenPrice()) tp=OrderTakeProfit();
              

Показано первые 50% кода (символов: 1434)

Открыть по тарифу

Купите тариф с пакетом открытий или войдите, если тариф уже есть. Открытый файл останется в вашем кабинете навсегда.

Разовая покупка файла

На этой странице откроется полный исходный код файла вместо ознакомительного фрагмента.

Чтобы оформить заказ, введите email и перейдите к оплате.

Стоимость полного кода
143,40₽ ≈ $1.75