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

High Low Trailing Stop

mqlta mt4 high low trailing stop.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 общих тегов
Вы автор или правообладатель?

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

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

О программе

High Low Trailing Stop — это торговый советник для MetaTrader 4, который автоматически перемещает стоп-лосс активных ордеров на основе недавних максимумов и минимумов цены. Для BUY-позиций стоп-лосс привязывается к минимуму за указанное число баров, а для SELL-позиций — к максимуму, что позволяет защитить прибыль при движении рынка в нужном направлении.

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

Программа обрабатывает событие OnTick, периодически проверяя все подходящие активные ордера и модифицируя их стоп-лоссы и тейк-профиты через торговое API MetaTrader 4. При недостатке исторических данных советник выводит предупреждение и прекращает обработку до загрузки свечей.

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

НастройкаОписание
Expert Advisor Settings (Comment_1) Разделитель настроек советника — Разделитель в настройках (визуальный)
Bars To Scan (5=Last Five Candles) (BarsToScan) Баров для сканирования — Количество баров для сканирования при определении уровня стоп-лосса (по умолчанию 5 последних свечей)
Orders Filtering Options (Comment_2) Разделитель фильтров ордеров — Разделитель в настройках (визуальный)
Apply To (OnlyType) Применять к типу ордера — Тип ордеров, к которым применяется трейлинг: все, только BUY или только SELL
Filter By Magic Number (UseMagic) Фильтровать по магическому числу — Включает или отключает фильтрацию ордеров по магическому числу
Magic Number (if above is true) (MagicNumber) Магическое число — Магическое число для фильтрации ордеров при включённом фильтре по магическому числу
Filter By Comment (UseComment) Фильтровать по комментарию — Включает или отключает фильтрацию ордеров по комментарию
Comment (if above is true) (CommentFilter) Фильтр по комментарию — Текстовый фильтр комментария для выбора ордеров, к которым применяется трейлинг
Enable Trailing Stop (EnableTrailingParam) Включить трейлинг стоп-лосса — Включает или отключает функцию автоматического трейлинга стоп-лосса
Notification Options (Comment_3) Разделитель настроек уведомлений — Разделитель в настройках (визуальный)
Enable Notifications feature (EnableNotify) Включить уведомления — Включает или отключает систему уведомлений при обновлении стоп-лосса
Send Alert********(SendAlert) Отправить звуковое оповещение — Отправка звукового оповещения при обновлении стоп-лосса ордера
Send********to Mobile (SendApp) Отправить уведомление на мобильное устройство — Отправка push-уведомления на мобильное устройство MetaTrader при обновлении стоп-лосса
Send********via Email (SendEmail) Отправить уведомление по email — Отправка email-уведомления при обновлении стоп-лосса ордера
Graphical Window (Comment_3a) Разделитель настроек графического окна — Разделитель в настройках (визуальный)
Show Graphical Panel (ShowPanel) Показать графическую панель — Отображение графической панели на графике с информацией о состоянии трейлинга
Indicator Name (to name the objects) (IndicatorName) Имя индикатора — Имя объекта-индикатора, используемое для наименования графических элементов на графике
Horizontal spacing for the control panel (Xoff) Горизонтальное смещение панели — Горизонтальное смещение графической панели от левого края графика
Vertical spacing for the control panel (Yoff) Вертикальное смещение панели — Вертикальное смещение графической панели от верхнего края графика
Получить полный код

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

#property version       "1.01"
#property strict

#property description   "This Expert Advisor will Trail the Stop Loss Price" 
#property description   "setting it to a recent High Or Low."
#property description   " "
#property description   "WARNING : You use this software at your own risk."
#property description   "The creator of these plugins cannot be held responsible for any damage or loss."
#property description   " "
#property description   "Find More on EarnForex.com"
#property icon          "\\Files\\EF-Icon-64x64px.ico"

#include <MQLTA ErrorHandling.mqh>
#include <MQLTA Utils.mqh>

enum ENUM_CONSIDER{
   All=-1,        //ALL ORDERS
   Buy=OP_BUY,    //BUY ONLY
   Sell=OP_SELL,  //SELL ONLY
};

enum ENUM_CUSTOMTIMEFRAMES{
   CURRENT=PERIOD_CURRENT,             //CURRENT PERIOD
   M1=PERIOD_M1,                       //M1
   M5=PERIOD_M5,                       //M5
   M15=PERIOD_M15,                     //M15
   M30=PERIOD_M30,                     //M30
   H1=PERIOD_H1,                       //H1
   H4=PERIOD_H4,                       //H4
   D1=PERIOD_D1,                       //D1
   W1=PERIOD_W1,                       //W1
   MN1=PERIOD_MN1,                     //MN1
};

input string Comment_1="====================";     //Expert Advisor Settings
input int BarsToScan=5;                                //Bars To Scan (5=Last Five Candles)
input string Comment_2="====================";           //Orders Filtering Options
bool OnlyCurrentSymbol=true;                       //Apply To Current Symbol Only
input ENUM_CONSIDER OnlyType=All;                        //Apply To
input bool UseMagic=false;                               //Filter By Magic Number
input int MagicNumber=0;                                 //Magic Number (if above is true)
input bool UseComment=false;                             //Filter By Comment
input string CommentFilter="";                           //Comment (if above is true)
input bool EnableTrailingParam=false;                    //Enable Trailing Stop
input string Comment_3="====================";     //Notification Options
input bool EnableNotify=false;                    //Enable Notifications feature
input bool SendAlert=true;                        //Send Alert Notification
input bool SendApp=true;                          //Send**************to Mobile
input bool SendEmail=true;                        //Send**************via Email
input string Comment_3a="====================";           //Graphical Window
input bool ShowPanel=true;                              //Show Graphical Panel
input string IndicatorName="MQLTA-HLTS";          //Indicator Name (to name the objects)
input int Xoff=20;                                //Horizontal spacing for the control panel
input int Yoff=20;                                //Vertical spacing for the control panel

int OrderOpRetry=5;
int SuperTrendShift=0;

double TrendUpTmp[], TrendDownTmp[];
int changeOfTrend;
int MaxBars=BarsToScan+1;
bool EnableTrailing=EnableTrailingParam;

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

void OnDeinit(const int reason){
   CleanPanel();

}

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

void OnChartEvent(const int id,
                  const long &lparam,
                  const double &dparam,
                  const string &sparam){

   if(id==CHARTEVENT_OBJECT_CLICK){
      if(sparam==PanelEnableDisable){
         ChangeTrailingEnabled();
      }
   }
   if(id==CHARTEVENT_KEYDOWN){
      if(lparam==27){
         if(MessageBox("Are you sure you want to close the EA?","EXIT ?",MB_YESNO)==IDYES){
            ExpertRemove();
         }
      }
   }

}

double GetStopLossBuy(){
   double SLValue=iLow(Symbol(),PERIOD_CURRENT,iLowest(Symbol(),PERIOD_CURRENT,MODE_LOW,BarsToScan,0));
   return SLValue;
}

double GetStopLossSell(){
   double SLValue=iHigh(Symbol(),PERIOD_CURRENT,iHighest(Symbol(),PERIOD_CURRENT,MODE_HIGH,BarsToScan,0));
   return SLValue;
}

void TrailingStop(){
   for(int i=0;i<OrdersTotal();i++) {
      if(OrderSelect( i, SELECT_BY_POS, MODE_TRADES ) == false ) {
         int Error=GetLastError();
         string ErrorText=GetLastErrorText(Error);
         Print("ERROR - Unable to select the order - ",Error);
         Print("ERROR - ",ErrorText);
         break;
      }
      if(OnlyCurrentSymbol && OrderSymbol()!=Symbol()) continue;
      if(UseMagic && OrderMagicNumber()!=MagicNumber) continue;
      if(UseComment && StringFind(OrderComment(),CommentFilter)<0) continue;
      if(OnlyType!=All &&OrderType()!=OnlyType) continue;

      double NewSL=0;
      double NewTP=0;
      string Instrument=OrderSymbol();
      double SLBuy=GetStopLossBuy();
      double SLSell=GetStopLossSell();
      if(SLBuy==0 || SLSell==0){
         Print("Not enough historical data, please load more candles for The selected timeframe");
         return;
      }

      int eDigits = (int)MarketInfo(Instrument,MODE_DIGITS);
      double SLPrice=NormalizeDouble(OrderStopLoss(),eDigits);
      double TPPrice=NormalizeDouble(OrderTakeProfit(),eDigits);
      double Spread=MarketInfo(Instrument,MODE_SPREAD)*MarketInfo(Instrument,MODE_POINT);
      double StopLevel=MarketInfo(Instrument,MODE_STOPLEVEL)*MarketInfo(Instrument,MODE_POINT);

      if(OrderType()==OP_BUY && SLBuy<MarketInfo(Instrument,MODE_BID)-StopLevel){
         NewSL=NormalizeDouble(SLBuy,eDigits);
         NewTP=TPPrice;

         if(NewSL>SLPrice+StopLevel || SLPrice==0){
            ModifyOrder(OrderTicket(),OrderOpenPrice(),NewSL,NewTP);
         }
      }
      if(OrderType()==OP_SELL &

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

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

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

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

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

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

Стоимость полного кода
862,90₽ ≈ $10.55