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

RoNz Auto SL n TP

ronz_auto_sl-ts-tp.mq4

Похожие материалы по тегам

#1.mtf_collider_h4_close_13_v18bar.mq4MQL4 / MetaTrader 4 · 1 общих теговea robofibo source v.11.2.mq4MQL4 / MetaTrader 4 · 1 общих теговsma crossover scalper ea for mt4.mq4MQL4 / MetaTrader 4 · 1 общих теговr15 pivot points expert advisor by @fundedmillionairess.mq4MQL4 / MetaTrader 4 · 1 общих теговnewstrader.mq5MQL5 / MetaTrader 5 · 1 общих теговmm3.0_flip_codepro_v3.1_with_cooldown@lifeindreamsworld.mq5MQL5 / MetaTrader 5 · 1 общих тегов
Вы автор или правообладатель?

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

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

О программе

RoNz Auto SL n TP — торговый советник для платформы MetaTrader 4, предназначенный для автоматического управления уровнями стоп-лосса и тейк-профитом на открытых ордерах. Советник поддерживает два режима работы с SL и TP: серверный (ордера размещаются на сервере с видимыми уровнями) и клиентский (скрытые уровни, при которых позиции закрываются программно при достижении заданных ценовых условий).

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

Советник обрабатывает открытые ордера на каждом тике, работая как с текущим графиком, так и со всеми открытыми ордерами. В тестовом режиме платформы предусмотрена демонстрационная логика открытия позиций для проверки функций управления ордерами.

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

НастройкаОписание
TakeProfit Тейк-профит — Уровень тейк-профита в пунктах, автоматически устанавливаемый на открытых позициях.
StopLoss Стоп-лосс — Уровень стоп-лосса в пунктах, автоматически устанавливаемый на открытых позициях.
SLnTPMode Режим SL и TP — Режим размещения стоп-лосса и тейк-профита: серверный (видимый на сервере) или клиентский (скрытый).
Target Pips to Lock Profit (LockProfitAfter) LockProfitAfter — Целевое количество пунктов прибыли, после которого активируется фиксация прибыли и/или Trailing Stop.
Profit To Lock (ProfitLock) ProfitLock — Количество пунктов фиксации прибыли — расстояние перемещения стоп-лосса в безубыточную зону.
Trailing Method (TrailingStopMethod) Метод Trailing Stop — Метод работы Trailing Stop: классический, с сохранением дистанции или пошаговый.
Trailing Stop (TrailingStop) Trailing Stop — Дистанция Trailing Stop в пунктах для автоматического перемещения стоп-лосса.
Trailing Stop Step (TrailingStep) Шаг Trailing Stop — Шаг Trailing Stop в пунктах, используемый в зависимости от выбранного метода.
ChartSymbolSelection Выбор символа — Выбор символа для обработки ордеров: только текущий график или все открытые ордера.
Enable Alert (inpEnableAlert) Включить уведомления — Включает уведомления при закрытии позиций скрытыми стоп-лоссом или тейк-профитом.
Получить полный код

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

#property version   "2.05"
#property strict

/* 
   v1.0
   + Auto SL and TP

   v1.22
   + Correcting Min Stop Level

   v2.0
   + Added modes for SL and TP (Hidden or Placed)
   + Added profit lock
   + Added stepping Trailing Stop

   v2.01
   + Added option to enable/disable alert when closed by hidden sl/tp

   v2.03
   + Fixed initial locking profit
   + Fixed trailing stop

   v2.04
   + Fixed trailing stop step
   + Rearrange lock profit to a function

   v2.05
   + Added Trailing Stop Method (Classic, Step Keep Distance, Step By Step)

  NOTE:
  + First of all, your orders SL and TP must be set to 0, then this EA will set appropriate SL and TP.
  + To disable SL, TP, Profit Lock, and Trailing Stop, set its value to 0.
*/

enum ENUM_CHARTSYMBOL
  {
   CurrentChartSymbol=0,//Current Chart Only
   AllOpenOrder=1,//All Opened Orders
  };

enum ENUM_SLTP_MODE
  {
   Server=0,//Place SL n TP
   Client=1,//Hidden SL n TP
  };

enum ENUM_TRAILINGSTOP_METHOD
  {
   TS_NONE=0,//No Trailing Stop
   TS_CLASSIC=1,//Classic
   TS_STEP_DISTANCE=2,//Step Keep Distance
   TS_STEP_BY_STEP=3, //Step By Step
  };
string STR_OPTYPE[]={"Buy","Sell","Buy Limit","Sell Limit","Buy Stop","Sell Stop"};

input int   TakeProfit=500;
input int   StopLoss=250;
input ENUM_SLTP_MODE SLnTPMode=Client;
input int   LockProfitAfter=100;//Target Pips to Lock Profit
input int   ProfitLock=60;//Profit To Lock
input ENUM_TRAILINGSTOP_METHOD TrailingStopMethod=TS_STEP_DISTANCE;//Trailing Method
input int   TrailingStop=50;//Trailing Stop
input int   TrailingStep=10;//Trailing Stop Step
input ENUM_CHARTSYMBOL  ChartSymbolSelection=AllOpenOrder;
input bool   inpEnableAlert=false;//Enable Alert

int CalculateCurrentOrders()
  {
   int buys=0,sells=0;

   for(int i=0;i<OrdersTotal();i++)
     {
      if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES)==false) break;
      if(ChartSymbolSelection==CurrentChartSymbol && OrderSymbol()!=Symbol()) continue;
      if(OrderType()==OP_BUY)
         buys++;
      if(OrderType()==OP_SELL)
         sells++;
     }

   if(buys>0) return(buys);
   else       return(-sells);

  }

bool LockProfit(int TiketOrder,int TargetPoints,int LockedPoints)
  {
   if(TargetPoints==0 || LockedPoints==0) return false;

   if(OrderSelect(TiketOrder,SELECT_BY_TICKET,MODE_TRADES)==false) return false;

   double CurrentSL=(OrderStopLoss()!=0)?OrderStopLoss():OrderOpenPrice();
   double point=MarketInfo(OrderSymbol(),MODE_POINT);
   int digits=(int)MarketInfo(OrderSymbol(),MODE_DIGITS);
   double minstoplevel=MarketInfo(OrderSymbol(),MODE_STOPLEVEL);
   double ask=MarketInfo(OrderSymbol(),MODE_ASK);
   double bid=MarketInfo(OrderSymbol(),MODE_BID);
   double PSL=0;

   if((OrderType()==OP_BUY) && (bid-OrderOpenPrice()>=TargetPoints*point) && (CurrentSL<=OrderOpenPrice()))
     {
      PSL=NormalizeDouble(OrderOpenPrice()+(LockedPoints*point),digits);
     }
   else if((OrderType()==OP_SELL) && (OrderOpenPrice()-ask>=TargetPoints*point) && (CurrentSL>=OrderOpenPrice()))
     {
      PSL=NormalizeDouble(OrderOpenPrice()-(LockedPoints*point),digits);
     }
   else
      return false;

   Print(STR_OPTYPE[OrderType()]," #",OrderTicket()," ProfitLock: OP=",OrderOpenPrice()," CSL=",CurrentSL," PSL=",PSL," LP=",LockedPoints);

   if(OrderModify(OrderTicket(),OrderOpenPrice(),PSL,OrderTakeProfit(),0,clrRed))
      return true;
   else
      return false;

   return false;
  }

bool RZ_TrailingStop(int TiketOrder,int JumlahPoin,int Step=1,ENUM_TRAILINGSTOP_METHOD Method=TS_STEP_DISTANCE)
  {
   if(JumlahPoin==0) return false;

   if(OrderSelect(TiketOrder,SELECT_BY_TICKET,MODE_TRADES)==false) return false;

   double CurrentSL=(OrderStopLoss()!=0)?OrderStopLoss():OrderOpenPrice();
   double point=MarketInfo(OrderSymbol(),MODE_POINT);
   int digits=(int)MarketInfo(OrderSymbol(),MODE_DIGITS);
   double minstoplevel=MarketInfo(OrderSymbol(),MODE_STOPLEVEL);
   double ask=MarketInfo(OrderSymbol(),MODE_ASK);
   double bid=MarketInfo(OrderSymbol(),MODE_BID);
   double TSL=0;

   JumlahPoin=JumlahPoin+(int)minstoplevel;

   if((OrderType()==OP_BUY) && (bid-OrderOpenPrice()>JumlahPoin*point))
     {
      if(CurrentSL<OrderOpenPrice())
         CurrentSL=OrderOpenPrice();

      if((bid-CurrentSL)>=JumlahPoin*point)
        {
         switch(Method)
           {
            case TS_CLASSIC://Classic, no step
               TSL=NormalizeDouble(bid-(JumlahPoin*point),digits);
               break;
            case TS_STEP_DISTANCE://Step keeping distance
               TSL=NormalizeDouble(bid-((JumlahPoin-Step)*point),digits);
               break;
            case TS_STEP_BY_STEP://Step by step (slow)
               TSL=NormalizeDouble(CurrentSL+(Step*point),digits);
               break;
            default:
               TSL=0;
           }
        }
     }

   else if((OrderType()==OP_SELL) && (OrderOpenPrice()-ask>JumlahPoin*point))
     {
      i

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

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

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

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

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

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

Стоимость полного кода
753,30₽ ≈ $9.21