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

trailingstopfrcnsar.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 общих тегов
Вы автор или правообладатель?

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

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

О программе

Данный продукт представляет собой торговый советник для платформы MetaTrader 4, реализующий функцию трейлинга стоп-лосса. Советник автоматически перемещает стоп-лосс открытых позиций в зависимости от выбранного метода расчёта: по свечам, фракталам, пользовательскому индикатору Velosity или индикатору Parabolic SAR. Также доступен режим фиксированного расстояния в пунктах.

Советник обрабатывает все открытые ордера в цикле, проверяя условия по magic number и символу. Для каждой позиции BUY или SELL рассчитывается новый уровень стоп-лосса, после чего выполняется модификация ордера через стандартные торговые функции платформы. Доступны режимы ограничения трейлинга: только при наличии прибыли, без перевода в убыток, а также портфельный расчёт уровня безубыточности.

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

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

НастройкаОписание
0 off (TrailingStop) Метод трейлинга стоп-лосса: 0 — выключен, 1 — по свечам, 2 — по фракталам, 3 — по индикатору Velosity, 4 — по Parabolic SAR, больше 4 — фиксированное расстояние в пунктах.
?????? ?? ???????? ??? ????? ??? Parabolic (delta) Дополнительное смещение стоп-лосса в пунктах для методов фракталов и Parabolic SAR.
??????? ?????? ?????????? ?????? (only_Profit) Перемещение стоп-лосса только при наличии нереализованной прибыли на позиции.
?????? ?????? ?????? ?????????? ? ????????? (only_NoLoss) Запрет перемещения стоп-лосса в зону убытка. При включении стоп-лосс не сдвигается ниже уровня открытия.
??????? ?????? ?? ??????, ? ??????? ??? ???? SL (only_SL) Перемещение стоп-лосса только если он уже установлен на позиции. Если стоп-лосс отсутствует, модификация не выполняется.
???????? ??? ??????????? (SymbolAll) При включении трейлинг применяется ко всем символам, а не только к текущему графику.
?? ???????????? ??????? (Portfel) Включает портфельный режим, при котором уровень безубыточности рассчитывается по суммарному портфелю позиций.
Step Параметр шага для индикатора Parabolic SAR.
Maximum Параметр максимума для индикатора Parabolic SAR.
Magic Число-идентификатор для фильтрации позиций. При значении 0 обрабатываются все позиции.
visualization Отображение стрелок и уровней стоп-лосса на графике текущего символа.
VelosityPeriodBar Период расчёта пользовательского индикатора Velosity.
??????????? ?????????? ????????? ?? Velosity (K_Velosity) Множитель для расчёта смещения стоп-лосса по пользовательскому индикатору Velosity.
Получить полный код

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

#property show_inputs

extern string  parameters.trailing="0-off  1-Candle  2-Fractals  3-Velosity  4-Parabolic  >4-pips";
extern int     TrailingStop         = 2;     //0 off
extern int     delta                = 0;     //?????? ?? ???????? ??? ????? ??? Parabolic
extern bool    only_Profit          = true;  //??????? ?????? ?????????? ??????
extern bool    only_NoLoss          = false; //?????? ?????? ?????? ?????????? ? ?????????
extern bool    only_SL              = false; //??????? ?????? ?? ??????, ? ??????? ??? ???? SL
extern bool    SymbolAll            = true;  //???????? ??? ??????????? 
extern bool    Portfel              = true;  //?? ???????????? ???????
extern string parameters.Parabolic  = "";
extern double  Step                 = 0.02;
extern double  Maximum              = 0.2;
extern int     Magic                = 0;
extern bool    visualization        = true;
extern int     VelosityPeriodBar    = 30;
extern double  K_Velosity           = 1.0;    //??????????? ?????????? ????????? ?? Velosity

int  STOPLEVEL,n,DIGITS;
double BID,ASK,POINT;
string  SymbolTral,TekSymbol;

int start()                                  
{
      // код доступен только после оплаты
   }

void TrailingStop()
{
   int tip,Ticket;
   bool error;
   double StLo,OSL,OOP,NoLoss;
   n=0;
   for (int i=OrdersTotal(); i>=0; i--) 
   {  if (OrderSelect(i, SELECT_BY_POS)==true)
      {  tip = OrderType();
         TekSymbol=OrderSymbol();
         if (tip<2 && (TekSymbol==SymbolTral || SymbolAll) && (OrderMagicNumber()==Magic || Magic==0))
         {
/*            if (visualization && TekSymbol==SymbolTral)
            {
               ObjectDelete("SL Buy");     ObjectDelete("STOPLEVEL-");
               ObjectDelete("SL Sell");    ObjectDelete("STOPLEVEL+");
               ObjectDelete("NoLossSell"); ObjectDelete("NoLossBuy");
               ObjectDelete("NoLossSell_");ObjectDelete("NoLossBuy_");
            }*/
            POINT  = MarketInfo(TekSymbol,MODE_POINT);
            DIGITS = MarketInfo(TekSymbol,MODE_DIGITS);
            BID    = MarketInfo(TekSymbol,MODE_BID);
            ASK    = MarketInfo(TekSymbol,MODE_ASK);
            OSL    = OrderStopLoss();
            OOP    = OrderOpenPrice();
            Ticket = OrderTicket();
            if (tip==OP_BUY)             
            {  n++;
               if (Portfel) NoLoss = TProfit(1,TekSymbol);
               OrderSelect(i, SELECT_BY_POS);
               StLo = SlLastBar(1,BID); 
               if ((StLo < NoLoss && Portfel) || NoLoss==0) continue;
               if (StLo < OOP && only_Profit && !Portfel) continue;
               if (OSL  >= OOP && only_NoLoss) continue;
               if (OSL  == 0 && only_SL) continue;
               if (StLo > OSL)
               {  error=OrderModify(Ticket,OOP,NormalizeDouble(StLo,DIGITS),OrderTakeProfit(),0,White);
                  Comment(TekSymbol,"  TrailingStop ",Ticket," ",TimeToStr(TimeCurrent(),TIME_MINUTES));
                  if (!error) Print(TekSymbol,"  Error order ",Ticket," TrailingStop ",
                              GetLastError(),"   ",SymbolTral,"   SL ",StLo);
               }
            }                                         
            if (tip==OP_SELL)        
            {  n++;
               if (Portfel) NoLoss = TProfit(-1,TekSymbol); 
               OrderSelect(i, SELECT_BY_POS);
               StLo = SlLastBar(-1,ASK);  
               if (StLo > NoLoss && Portfel) continue;
               if (StLo==0) con

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

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

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

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

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

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

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