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

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](RoNz Auto SL n TP) — это торговый советник для MetaTrader 4, предназначенный для автоматического управления стоп-лоссом и тейк-профитом на открытых позициях. Советник обрабатывает событие OnTick и анализирует текущие рыночные ордера, применяя к ним настроенные уровни SL и TP.

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

В советнике предусмотрена система уведомлений об закрытии позиций по виртуальным SL/TP, а также параметр выбора символа для обработки ордеров. В тестированной версии присутствует демонстрационная функция открытия сделок на основе скользящих средних.

Автор — Rony Nofrianto (2014–2018), версия 2.06. Советник работает на платформе MetaTrader 4 и ориентирован на автоматизацию управления рисками в торговых операциях.

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

НастройкаОписание
=[ SL & TP SETTINGS ]=- (note1) Настройки SL и TP — Разделитель настроек: SL и TP.
Take Profit (TakeProfit) Тейк-профит — Значение тейк-профита в пунктах.
Stop Loss (StopLoss) Стоп-лосс — Значение стоп-лосса в пунктах.
SL & TP Mode (SLnTPMode) Режим SL и TP — Режим работы стоп-лосса и тейк-профита: серверный (размещение на сервере) или скрытый (клиентский).
=[ PROFIT LOCK SETTINGS ]=- (note2) Настройки фиксации прибыли — Разделитель настроек: фиксация прибыли.
Enable/Disable Profit Lock (LockProfitEnable) Включение фиксации прибыли — Включает или отключает функцию фиксации прибыли.
Target Points to Lock Profit (LockProfitAfter) Пункты для активации фиксации прибыли — Количество пунктов прибыли, после достижения которого активируется фиксация прибыли или трейлинг-стоп.
Profit To Lock (ProfitLock) Размер фиксируемой прибыли — Количество пунктов фиксируемой прибыли при срабатывании условия.
=[ TRAILING STOP SETTINGS ]=- (note3) Настройки трейлинг-стопа — Разделитель настроек: трейлинг-стоп.
Trailing Method (TrailingStopMethod) Метод трейлинг-стопа — Метод трейлинг-стопа: без трейлинга, классический, с сохранением дистанции или пошаговый.
Trailing Stop (TrailingStop) Трейлинг-стоп — Расстояние трейлинг-стопа в пунктах.
Trailing Stop Step (TrailingStep) Шаг трейлинг-стопа — Шаг трейлинг-стопа, используемый в определённых методах управления.
=[ OTHER SETTINGS ]=- (note4) Прочие настройки — Разделитель настроек: прочие параметры.
ChartSymbolSelection Выбор символа графика — Определяет, какие ордера обрабатываются: только на текущем графике или по всем открытым ордерам.
Enable Alert (inpEnableAlert) Включение уведомлений — Включает или отключает уведомления при закрытии позиций по виртуальным SL/TP.
Получить полный код

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

#property version   "2.06"
#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)

   v2.06
   + Added Option to Enable/Disable Profit Lock

  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_LOCKPROFIT_ENABLE
  {
   LP_DISABLE=0,//Disable
   LP_ENABLE=1,//Enable
  };

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"};

sinput string note1="";//-=[ SL & TP SETTINGS ]=-
input int   TakeProfit=500;//Take Profit
input int   StopLoss=250;//Stop Loss
input ENUM_SLTP_MODE SLnTPMode=Client;//SL & TP Mode
sinput string note2="";//-=[ PROFIT LOCK SETTINGS ]=-
input ENUM_LOCKPROFIT_ENABLE LockProfitEnable=LP_ENABLE;//Enable/Disable Profit Lock
input int   LockProfitAfter=100;//Target Points to Lock Profit
input int   ProfitLock=60;//Profit To Lock
sinput string note3="";//-=[ TRAILING STOP SETTINGS ]=-
input ENUM_TRAILINGSTOP_METHOD TrailingStopMethod=TS_NONE;//Trailing Method
input int   TrailingStop=50;//Trailing Stop
input int   TrailingStep=10;//Trailing Stop Step
sinput string note4="";//-=[ OTHER SETTINGS ]=-
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(LockProfitEnable==False || 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)
        

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

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

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

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

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

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

Стоимость полного кода
796₽ ≈ $9.73