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

managetakeprofit.mq4

Вы автор или правообладатель?

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

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

О программе

Советник для MetaTrader 4, предназначенный для управления открытыми торговыми позициями. Он отслеживает все активные ордера BUY и SELL на текущем символе и при достижении заданного уровня прибыли в пунктах выполняет частичное закрытие позиции указанным объёмом лотов. После каждого успешного закрытия целевой уровень прибыли увеличивается на заданный инкремент.

При активации соответствующей настройки советник способен также перемещать стоп-лосс в сторону убытка (в пользу трейдера), когда цена достигает определённого порогового уровня в пунктах. Перемещение стоп-лосса происходит на заданное расстояние, что позволяет фиксировать часть прибыли при движении рынка в нужном направлении.

Советник запускается при инициализации и работает на каждом тике, вызывая два основных блока логики: частичное закрытие позиций и перемещение стоп-лоссов. Состояние текущих целевых уровней хранится в глобальных переменных и сбрасывается при деинициализации.

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

НастройкаОписание
First_Target Начальный уровень цели по прибыли в пунктах, при достижении которого происходит частичное закрытие позиции.
Target_Increment Прирост уровня цели по прибыли в пунктах после каждого успешного частичного закрытия позиции.
Close_Lots Объём лотов для частичного закрытия позиции при достижении целевого уровня прибыли.
First_Stop Начальный уровень в пунктах, при достижении которого возможно перемещение стоп-лосса в сторону прибыли.
Stop_Differential Расстояние в пунктах, на которое перемещается стоп-лосс в сторону прибыли при активированном перемещении.
Move_Stops Переключатель, определяющий, разрешено ли автоматическое перемещение стоп-лосса при достижении заданного порога.
Получить полный код

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

extern int First_Target = 10;
extern int Target_Increment = 6;
extern double Close_Lots = 0.1;
extern int First_Stop = 10;
extern int Stop_Differential = 0;
extern bool Move_Stops = true;

int ft;  //This variable will be incremented by the target increment after every successful take profit.
int fs; // This variable will change as the trade progresses if Move_Stops is true.
int curPipValue;  // Checks to see the difference between the open price and current price in pips.

void ManageTrade()
{

   int ti=Target_Increment; //This variable will not change.
   double cl=Close_Lots; // This variable will not change.

   int trange = 0; // Use a range versus a specific pip amount as prices may get jumped.
   int totalorders = OrdersTotal(); // Calls a function to get all the open orders.

  for(int j=0; j<totalorders;j++)
  {  

   OrderSelect(j, SELECT_BY_POS, MODE_TRADES);
   if(ft == 0) ft = First_Target;

   if(OrderType()==OP_BUY && OrderSymbol()==Symbol())
      {

      curPipValue = (Bid - OrderOpenPrice())/Point;     
      if(ft == 0) ft = First_Target;
      trange=ft+5;

      if(curPipValue >= ft-1 && curPipValue <= trange)         
         {               

            if(OrderClose(OrderTicket(), cl, Bid, 3, YellowGreen))
               {

                  ft += ti;             
                  Comment(ft);
                  return(0);
               }
          }
      }
   else if(OrderType()==OP_SELL && OrderSymbol()==Symbol())
      {

      curPipValue = (OrderOpenPrice()-Ask)/Point;  
      if(ft == 0) ft = First_Target;
      trange=ft+5;

      if(curPipValue >= ft-1 && curPipValue <= trange)
         {                     
            if(Ord

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

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

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

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

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

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

Стоимость полного кода
225,10₽ ≈ $2.75