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

triplema_crossover_expert1.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, использует три скользящие средние для генерации торговых сигналов на покупку и продажу. Анализирует пересечения быстрой, средней и медленной MA на текущем или предшествующем баре. Поддерживает управление размером позиции через процент риска от депозита или фиксированный лот. Реализует стоп-лосс, тейк-профит и три режима трейлинг-стопа с настраиваемыми уровнями. Советник проверяет допустимость входных параметров и контролирует свободный маржинал перед открытием новых позиций.

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

НастройкаОписание
MagicNumber Магический номер — Идентификатор ордера для фильтрации позиций советника на графике.
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 (FastMA_Method) Метод быстрой MA — Тип расчёта быстрой скользящей средней: 0 — SMA, 1 — EMA, 2 — SMMA, 3 — LWMA.
FastMAPeriod Период быстрой MA — Период расчёта быстрой скользящей средней.
FastMA_Shift Сдвиг быстрой MA — Горизонтальный сдвиг быстрой скользящей средней по графику.
0=sma, 1=ema, 2=smma, 3=lwma (MiddleMA_Method) Метод средней MA — Тип расчёта средней скользящей средней: 0 — SMA, 1 — EMA, 2 — SMMA, 3 — LWMA.
MiddleMAPeriod Период средней MA — Период расчёта средней скользящей средней.
MiddleMA_Shift Сдвиг средней MA — Горизонтальный сдвиг средней скользящей средней по графику.
0=sma, 1=ema, 2=smma, 3=lwma (SlowMA_Method) Метод медленной MA — Тип расчёта медленной скользящей средней: 0 — SMA, 1 — EMA, 2 — SMMA, 3 — LWMA.
SlowMAPeriod Период медленной MA — Период расчёта медленной скользящей средней.
SlowMA_Shift Сдвиг медленной MA — Горизонтальный сдвиг медленной скользящей средней по графику.
Fast_MiddleSpread Разрыв быстрая-средняя — Допустимый зазор в пунктах между быстрой и средней скользящей при формировании сигнала.
Middle_SlowSpread Разрыв средняя-медленная — Допустимый зазор в пунктах между средней и медленной скользящей при формировании сигнала.
Which candle to use for signal - 0 for current, 1 for prior (SignalCandle) Свеча сигнала — Номер свечи для расчёта сигнала: 0 — текущая, 1 — предыдущая.
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) Трейлинг-стоп — Расстояние для трейлинга стоп-лосса в пунктах.
Type 3 first level pip gain (TRStopLevel_1) Уровень 1 трейлинга — Первый порог прибыли в пунктах для активации первого уровня трейлинг-стопа.
Move Stop to Breakeven (TrailingStop1) Сдвиг стопа уровень 1 — Величина сдвига стоп-лосса на первом уровне трейлинга в пунктах.
Type 3 second level pip gain (TRStopLevel_2) Уровень 2 трейлинга — Второй порог прибыли в пунктах для активации второго уровня трейлинг-стопа.
Move stop to lock is profit (TrailingStop2) Сдвиг стопа уровень 2 — Величина сдвига стоп-лосса на втором уровне трейлинга в пунктах.
type 3 third level pip gain (TRStopLevel_3) Уровень 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 int MagicNumber = 3333;

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 = 10;                 // standard lot size. 
extern double MaxLots = 100;

extern int FastMA_Method = 0; //0=sma, 1=ema, 2=smma, 3=lwma
extern int FastMAPeriod =   9;
extern int FastMA_Shift = 0;
extern int MiddleMA_Method = 0; //0=sma, 1=ema, 2=smma, 3=lwma
extern int MiddleMAPeriod =   14;
extern int MiddleMA_Shift = 0;
extern int SlowMA_Method = 0; //0=sma, 1=ema, 2=smma, 3=lwma
extern int SlowMAPeriod =   29;
extern int SlowMA_Shift = 0;
extern int Fast_MiddleSpread=0;
extern int Middle_SlowSpread=0;
extern int SignalCandle=1;      // Which candle to use for signal - 0 for current, 1 for prior

extern double StopLoss = 0;             // 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    

string setup;
double lotMM;
int TradesInThisSymbol;

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

int deinit()
  {
  }

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

   YesClose = false;
   fMA = iMA(NULL, 0, FastMAPeriod, FastMA_Shift, FastMA_Method, PRICE_CLOSE, SignalCandle);
   mMA = iMA(NULL, 0, MiddleMAPeriod, MiddleMA_Shift, MiddleMA_Method, PRICE_CLOSE, SignalCandle);

   if (TradeType == "BUY" && fMA < mMA) YesClose = true;

   if (TradeType == "SELL" && fMA > mMA) YesClose =true;

   return (YesClose);
}

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

   YesTrade = false;
   fMA = iMA(NULL, 0, FastMAPeriod, FastMA_Shift, FastMA_Method, PRICE_CLOSE, SignalCandle);
   mMA = iMA(NULL, 0, MiddleMAPeriod, MiddleMA_Shift, MiddleMA_Method, PRICE_CLOSE, SignalCandle);
   sMA = iMA(NULL, 0, SlowMAPeriod, SlowMA_Shift, SlowMA_Method, PRICE_CLOSE, SignalCandle);

   if (TradeType == "BUY" && fMA > (mMA + Fast_MiddleSpread*Point) && mMA > (sMA + Middle_SlowSpread * Point))  YesTrade = true;

   if (TradeType == "SELL" && fMA < (mMA - Fast_MiddleSpread*Point) && mMA < (sMA - Middle_SlowSpread * Point) ) YesTrade = true;

   return (YesTrade);
}

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

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

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

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

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

int CheckOpenPositions()
{
   int cnt, NumPositions;
   int NumBuyTrades, NumSellTrades;   // Number of buy and sell trades in this symbol

   NumBuyTrades = 0;
   NumSellTrades = 0;
   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 )  NumBuyTrades++;
      if(OrderType() == OP_SELL ) NumSellTrades++;

     }
     NumPositions = NumBuyTrades + NumSellTrades;
     return (NumPositions);
}

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);
          }
          else

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

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

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

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

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

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

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