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

doublema_breakout_ea.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, работающий на языке MQL4. Использует две скользящие средние — быструю и медленную — для анализа ценовых данных и формирования торговых сигналов на основе их пересечения. При выполнении условий открытия советник размещает стоп-заказы Buy Stop и Sell Stop на определённом расстоянии от текущей цены.

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

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

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

НастройкаОписание
Change to false to shutdown money management controls. (MoneyManagement) Управление рисками — Включает или отключает автоматический расчёт размера лота на основе свободного маржи и заданного процента риска.
Change to whatever percent of equity you wish to risk. (TradeSizePercent) Процент риска — Процент от свободного капитала, используемый для расчёта размера лота при включённом управлении рисками.
standard lot size. (Lots) Размер лота — Фиксированный стандартный размер лота, используемый при отключённом управлении рисками.
MaxLots Максимальный лот — Максимально допустимый размер лота для одной позиции.
0=sma, 1=ema, 2=smma, 3=lwma, 4=LSMA (FastMA_Mode) Тип быстрой MA — Тип скользящей средней для быстрой MA: 0 — SMA, 1 — EMA, 2 — SMMA, 3 — LWMA, 4 — LSMA.
FastMA_Period Период быстрой MA — Период расчёта быстрой скользящей средней.
FastMA_Shift Сдвиг быстрой MA — Горизонтальный сдвиг быстрой скользящей средней по графику.
0=close, 1=open, 2=high, 3=low, 4=median((h+l/2)), 5=typical((h+l+c)/3), 6=weighted((h+l+c+c)/4) (FastMA_AppliedPrice) Цена для быстрой MA — Тип цены для расчёта быстрой MA: 0 — close, 1 — open, 2 — high, 3 — low, 4 — median, 5 — typical, 6 — weighted.
0=sma, 1=ema, 2=smma, 3=lwma, 4=LSMA (SlowMA_Mode) Тип медленной MA — Тип скользящей средней для медленной MA: 0 — SMA, 1 — EMA, 2 — SMMA, 3 — LWMA, 4 — LSMA.
SlowMA_Period Период медленной MA — Период расчёта медленной скользящей средней.
SlowMA_Shift Сдвиг медленной MA — Горизонтальный сдвиг медленной скользящей средней по графику.
0=close, 1=open, 2=high, 3=low, 4=median((h+l/2)), 5=typical((h+l+c)/3), 6=weighted((h+l+c+c)/4) (SlowMA_AppliedPrice) Цена для медленной MA — Тип цены для расчёта медленной MA: 0 — close, 1 — open, 2 — high, 3 — low, 4 — median, 5 — typical, 6 — weighted.
Start trade after breakout is reached (BreakOutLevel) Уровень пробоя — Расстояние в пунктах от текущей цены, на котором размещается стоп-заказ для входа в позицию.
SignalCandle Свеча сигнала — Номер свечи, на которой рассчитываются скользящие средние для формирования сигнала.
Maximum pips willing to lose per position. (StopLoss) Стоп-лосс — Максимальное количество пунктов убытка на позицию.
UseTrailingStop Трейлинг-стоп — Включает или отключает трейлинг-стоп для управления открытыми позициями.
Type 1 moves stop immediately, Type 2 waits til value of TS is reached (TrailingStopType) Тип трейлинг-стопа — Тип трейлинг-стопа: 1 — немедленное движение, 2 — ожидание достижения значения, 3 — трёхуровневый.
Change to whatever number of pips you wish to trail your position with. (TrailingStop) Трейлинг-стоп — Расстояние в пунктах для трейлинг-стопа при типах 1 и 2.
Type 3 first level pip gain (TRStopLevel_1) Первый уровень трейлинг-стопа — Уровень прибыли в пунктах, при достижении которого активируется первый уровень трейлинг-стопа.
Move Stop to Breakeven (TrailingStop1) Сдвиг стопа на уровне 1 — Величина сдвига стопа на первом уровне, обычно для перевода в безубыток.
Type 3 second level pip gain (TRStopLevel_2) Второй уровень трейлинг-стопа — Уровень прибыли в пунктах для активации второго уровня трейлинг-стопа.
Move stop to lock is profit (TrailingStop2) Сдвиг стопа на уровне 2 — Величина сдвига стопа на втором уровне для фиксации части прибыли.
type 3 third level pip gain (TRStopLevel_3) Третий уровень трейлинг-стопа — Уровень прибыли в пунктах для активации третьего уровня трейлинг-стопа.
Move stop and trail from there (TrailingStop3) Сдвиг стопа на уровне 3 — Величина сдвига стопа на третьем уровне с последующим трейлингом.
Maximum profit level achieved. (TakeProfit) Тейк-профит — Уровень фиксации прибыли в пунктах.
Expert will stop trading if equity level decreases to that level. (Margincutoff) Порог маржи — Минимальный уровень свободного маржи, при достижении которого советник прекращает торговлю.
Possible fix for not getting closed (Slippage) Проскальзывание — Допустимое проскальзывание в пунктах при закрытии позиций.
Получить полный код

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

#include <stdlib.mqh>

extern bool AccountIsMini = false;       // Change to true if trading mini account
extern bool MoneyManagement = false;     // Change to false to shutdown money management controls.

extern double TradeSizePercent = 5;      // Change to whatever percent of equity you wish to risk.
extern double Lots = 3;             // standard lot size. 
extern double MaxLots = 100;

extern int FastMA_Mode = 0;          //0=sma, 1=ema, 2=smma, 3=lwma, 4=LSMA
extern int FastMA_Period =   2;
extern int FastMA_Shift = 0;
extern int FastMA_AppliedPrice = 0;  // 0=close, 1=open, 2=high, 3=low, 4=median((h+l/2)), 5=typical((h+l+c)/3), 6=weighted((h+l+c+c)/4)
extern int SlowMA_Mode = 0;           //0=sma, 1=ema, 2=smma, 3=lwma, 4=LSMA
extern int SlowMA_Period =   5;
extern int SlowMA_Shift = 0;
extern int SlowMA_AppliedPrice = 0;     // 0=close, 1=open, 2=high, 3=low, 4=median((h+l/2)), 5=typical((h+l+c)/3), 6=weighted((h+l+c+c)/4)
extern double BreakOutLevel = 45;       // Start trade after breakout is reached
extern int SignalCandle=1;

extern double StopLoss = 250;       // Maximum pips willing to lose per position.
extern bool UseTrailingStop = false;
extern int TrailingStopType = 3;        // Type 1 moves stop immediately, Type 2 waits til value of TS is reached
extern double TrailingStop = 40;        // Change to whatever number of pips you wish to trail your position with.
extern double TRStopLevel_1 = 20;       // Type 3  first level pip gain
extern double TrailingStop1 = 20;       // Move Stop to Breakeven
extern double TRStopLevel_2 = 30;       // Type 3 second level pip gain
extern double TrailingStop2 = 20;       // Move stop to lock is profit
extern double TRStopLevel_3 = 50;       // type 3 third level pip gain
extern double TrailingStop3 = 20;       // Move stop and trail from there
extern int TakeProfit = 0;          // Maximum profit level achieved.
extern double Margincutoff = 800;   // Expert will stop trading if equity level decreases to that level.
extern int Slippage = 10;           // Possible fix for not getting closed    

bool UseTimeLimit = true;
int StartHour =11;     // Start trades after time
int StopHour = 16;      // Stop trading after time
bool UseFridayCloseAll = true;
string FridayCloseTime = "21:30";
bool UseFridayStopTrading = false;
string FridayStopTradingTime = "19:00";

int MagicNumber;
string setup;
bool YesStop;
double lotMM;
int TradesInThisSymbol;

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

int deinit()
  {
  }

double LSMA(int Rperiod,int prMode, int TimeFrame, int mshift)
{
   int i;
   double sum, price;
   int length;
   double lengthvar;
   double tmp;
   double wt;

   length = Rperiod;

   sum = 0;
   for(i = length; i >= 1  ; i--)
   {
     lengthvar = length + 1;
     lengthvar /= 3;
     tmp = 0;
     switch (prMode)
     {
     case 0: price = iClose(NULL,TimeFrame,length-i+mshift);break;
     case 1: price = iOpen(NULL,TimeFrame,length-i+mshift);break;
     case 2: price = iHigh(NULL,TimeFrame,length-i+mshift);break;
     case 3: price = iLow(NULL,TimeFrame,length-i+mshift);break;
     case 4: price = (iHigh(NULL,TimeFrame,length-i+mshift) + iLow(NULL,TimeFrame,length-i+mshift))/2;break;
     case 5: price = (iHigh(NULL,TimeFrame,length-i+mshift) + iLow(NULL,TimeFrame,length-i+mshift) + iClose(NULL,TimeFrame,length-i+mshift))/3;break;
     case 6: price = (iHigh(NULL,TimeFrame,length-i+mshift) + iLow(NULL,TimeFrame,length-i+mshift) + iClose(NULL,TimeFrame,length-i+mshift) + iClose(NULL,TimeFrame,length-i+mshift))/4;break;
     }
     tmp = ( i - lengthvar)*price;
     sum+=tmp;
    }
    wt = sum*6/(length*(length+1));

    return(wt);
}

bool CheckExitCondition(string TradeType)
{
   bool YesClose;
   double fMA, sMA;

   YesClose = false;
   if (FastMA_Mode == 4)
   {
     fMA = LSMA(FastMA_Period,FastMA_AppliedPrice,0,SignalCandle);
   }
   else
   {
     fMA = iMA(NULL, 0, FastMA_Period, FastMA_Shift, FastMA_Mode, FastMA_AppliedPrice, SignalCandle);
   }
   if (SlowMA_Mode == 4)
   {
     sMA = LSMA(SlowMA_Period,SlowMA_AppliedPrice,0,SignalCandle);
   }
   else
   {
     sMA = iMA(NULL, 0, SlowMA_Period, SlowMA_Shift, SlowMA_Mode, SlowMA_AppliedPrice, SignalCandle);
   }

   if (TradeType == "BUY" && fMA - sMA < 0) YesClose = true;

   if (TradeType == "SELL" && fMA - sMA > 0) YesClose = true;

   return (YesClose);
}

bool CheckEntryCondition(string TradeType)
{
   bool YesTrade;
   double fMA, sMA;

   YesTrade = false;
   if (FastMA_Mode == 4)
   {
     fMA = LSMA(FastMA_Period,FastMA_AppliedPrice,0,SignalCandle);
   }
   else
   {
     fMA = iMA(NULL, 0, FastMA_Period, FastMA_Shift, FastMA_Mode, FastMA_AppliedPrice, SignalCandle);
   }
   if (SlowMA_Mode == 4)
   {
     sMA = LSMA(SlowMA_Period,SlowMA_AppliedPrice,0,SignalCandle);
   }
   else
   {
     sMA = iMA(NULL, 0, SlowMA_Period, SlowMA_Shift, SlowMA_Mode, SlowMA_AppliedPrice, SignalCandle);
   }

   if (TradeType == "BUY" && fMA - sMA > 0)  YesTrade = true;

   if (TradeType == "SELL" && fMA - sMA < 0 ) YesTrade = true;

   return (YesTrade);
}

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

void OpenBuyStopOrder()
{
   int err,ticket;
   double myStopLoss = 0, myTakeProfit = 0;

   double LongTradeRate = Ask + BreakOutLevel*Point;
   myStopLoss = 0;
   if ( StopLoss > 0 ) myStopLoss = LongTradeRate-Point*StopLoss ;
   myTakeProfit = 0;
   if (TakeProfit>0) myTakeProfit = LongTradeRate+Point*TakeProfit;
   ticket=OrderSend(Symbol(),OP_BUYSTOP,lotMM,LongTradeRate,0,myStopLoss,myTakeProfit,setup,MagicNumber,0,Green); 
   if(ticket<=0)
   {
      err = GetLastError();
      Print("Error opening BUY STOP order [" + setup + "]: (" + err + ") " + ErrorDescription(err)); 
   }
}

void OpenSellStopOrder()
{
   int err, ticket;
   double myStopLoss = 0, myTakeProfit = 0;

   double ShortTradeRate = Bid - BreakOutLevel * Point;
   myStopLoss = 0;
   if ( StopLoss > 0 ) myStopLoss = ShortTradeRate+Point*StopLoss ;
   myTakeProfit = 0;
   if (TakeProfit > 0) myTakeProfit = ShortTradeRate-Point*TakeProfit;
   ticket=OrderSend(Symbol(),OP_SELLSTOP,lotMM,ShortTradeRate,0,myStopLoss,myTakeProfit,setup,MagicNumber,0,Red); 
   if(ticket<=0)
   {
      err = GetLastError();
      Print("Error opening Sell order [" + setup + "]: (" + err + ") " + ErrorDescription(err)); 
   }
}

int openPositions(  )
  {  int op =0;
     for(int i=OrdersTotal()-1;i>=0;i--)                                // scan all orders and positions...
      {
        OrderSelect(i, SELECT_BY_POS, MODE_TRADES);
        if (OrderMagicNumber() != MagicNumber) continue;
        if ( OrderSymbol()==Symbol() )
         {  
          if ( OrderType() == OP_BUY ) op++; 
          if ( OrderType() == OP_SELL ) op++; 
         }
      } 
   return(op);
  }

int openStops()
  {  int op =0;
     for(int i=OrdersTotal()-1;i>=0;i--)                                // scan all orders and positions...
      {
        OrderSelect(i, SELECT_BY_POS,MODE_TRADES);
        if (OrderMagicNumber() != MagicNumber) continue;
        if ( OrderSymbol()==Symbol() )
         {  
          if ( OrderType() == OP_BUYSTOP ) op++; 
          if ( OrderType() == OP_SELLSTOP ) op++; 
         }
      } 
   return(op);
  }

int HandleOpenPositions()
{
   int cnt;
   bool YesClose;
   double pt;

   for(cnt=OrdersTotal()-1;cnt>=0;cnt--)
   {
      OrderSelect (cnt, SELECT_BY_POS, MODE_TRADES);
      if ( OrderSymbol() != Symbol()) continue;
      if ( OrderMagicNumber() != MagicNumber)  continue;

      if(OrderType() == OP_BUY)
      {

         if (CheckExitCondition("BUY"))
          {
               CloseOrder(OrderTicket(),OrderLots(),Bid);
          }
     

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

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

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

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

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

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

Стоимость полного кода
1 157,10₽ ≈ $14.14