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

macd_ma ea (for fixing) 2.mq4

Похожие материалы по тегам

2 to 1 strategy with signals.pineTradingView · 2 общих теговmulti_lot_scalper_a.mq4MQL4 / MetaTrader 4 · 2 общих теговfresh algo signals & overlays v25_6334471093901859175.pineTradingView · 2 общих теговfresh algo v24 tradingview indicator_5918156155804195406.pineTradingView · 2 общих теговlinear regression channel.mq4MQL4 / MetaTrader 4 · 2 общих теговtrading criteria.mq4MQL4 / MetaTrader 4 · 2 общих тегов
Вы автор или правообладатель?

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

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

О программе

Данный продукт представляет собой торговый советник для платформы MetaTrader 4, написанный на языке MQL4. Советник использует индикатор MACD и скользящие средние (EMA) для определения направления торговли. Сигналы на открытие и закрытие позиций формируются на основе совпадения направлений MACD и скользящей средней на нескольких таймфреймах.

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

В качестве торговых операций используются стандартные функции MetaTrader 4: OrderSend для открытия позиций, OrderClose для закрытия и OrderModify для изменения стоп-лосса и тейк-профита. Советник может отправлять email-уведомления и воспроизводить звуковые сигналы при открытии сделок.

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

НастройкаОписание
Expert_Name Имя советника — Имя советника, отображаемое в заголовке
Получить полный код

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

#define SIGNAL_NONE 0
#define SIGNAL_BUY   1
#define SIGNAL_SELL  2
#define SIGNAL_CLOSEBUY 3
#define SIGNAL_CLOSESELL 4

extern string  Expert_Name    = "---- MACD Moving Av EA by TF ----";

extern string EA_Comment = "MACD MA" ;
extern int MagicNumber = 9219;
extern bool PlaySound_OnTrade_Open = False;
extern string SoundFile = "abc.wav" ;
extern bool ShowComments  = True;
extern bool SignalMail = False;

extern int Maximum_Spread = 8;
bool EachTickMode = True;

extern double TickMultiplier = 1.00;
extern string TickMultiplier1 = "TickMultiplier is the value of each Tick Move" ;
extern string TickMultiplier2 = "e.g. One tick move from 1665.25 to 1665.50= 25" ;
extern string TickMultiplier3 = "therefore TickMultiplierwill be = 25" ;
extern string TickMultiplier4 = "eg. Move from 1.9005 to 1.9006  = 1" ;
extern string TickMultiplier5 = "eg. Move from 5000 to 5001 = 1 " ;

extern string TradingParameters = "------Trading Parameters -------" ;
extern double Lots = 1.00;
bool StopLossMode = false;
extern int HardStopLoss = 300;
bool TakeProfitMode = false;
extern int TakeProfit = 250;
extern int Slippage = 3;

double MATrendPeriod = 8;
double MATrendPeriod_2 = 15; 

extern bool Close_Lots_Mode = True;
extern string DistributeAbove_Traded_Lots = "Fully distribute above Lots quantity " ;

extern double First_Close = 0.99 ;
extern double Second_Close = 0.01 ;
extern double Third_Close = 0.00 ;

extern int First_Close_TP = 30 ;
extern int Second_Close_TP = 250 ;
extern int Third_Close_TP = 350 ;

extern bool StealthStopLossMode = True;
extern int StealthStopLoss = 125;
bool TrailingStopMode = false;
int TrailingStop = 250;

bool MoveStopOnce = True;
extern int MoveStopWhenProfit = 20;
extern int MoveStopToProfitOf = 1;
bool CloseExcept = True;
extern double QtyForStopExcept = 0.01;
extern int StopWhenProfit = 12;
extern int SlippageForAbove = 3;
extern string IMPORTANT = "Above Slippage should ATLEAST be 1 ";
extern bool MoveStopOnceWhenQty = True;
extern double MoveStopWhenQty = 0.01;
extern int MoveStopBy = 500;

extern string  Trading_Hour_Parameters="--Trading Hour Parameters--";
extern string  Trading_Hour_Parameters_="Use Hours according to your own Broker";

int    UseTradingHours = 1;
extern string  Session1="Trade Session 1";

int    TradeSession1 = 1;
extern int     Session1Start = 230;       // Start trades after time
extern int     Session1Stop = 0930;      // Stop trading after time
extern string  Session2="Trade Session 2";

int    TradeSession2 = 1;
extern int     Session2Start = 0930;       // Start trades after time
extern int     Session2Stop = 1400;      // Stop trading after time
extern string  Session3="Trade Session 3";

int    TradeSession3 = 1;
extern int     Session3Start = 1400;       // Start trades after time
extern int     Session3Stop = 1900;      // Stop trading after time
extern string  Session4="Trade Session 4";

int    TradeSession4 = 0;
extern int     Session4Start = 1900;       // Start trades after time
extern int     Session4Stop = 2000;      // Stop trading after time
extern string  Session5="Trade Session 5";

int    TradeSession5 = 1;
extern int     Session5Start = 2000;       // Start trades after time
extern int     Session5Stop = 2359;      // Stop trading after time

bool     YesStop;
double   myPoint;

int BarCount;
int Current;
bool TickCheck = False;

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

int deinit() {
   return(0);
}

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

bool CheckOutsideSession(int SessionStart, int SessionStop, int ct)
{

   if (SessionStart < SessionStop)
   {
     if (ct >= SessionStart && ct <= SessionStop) return (false); else return(true);
   }
   else
   {
      if (ct > SessionStop && ct < SessionStart) return (true); else return(false);
   }
}

bool CheckTradingTimes()
{
   bool StopTrading;
   int ct;
   ct = Hour() * 100 + Minute();

     StopTrading = true;

     if (TradeSession1 == 1)
     {
        StopTrading = CheckOutsideSession(Session1Start, Session1Stop, ct);
     }
     if (StopTrading == true)
     {

       if (TradeSession2 == 1)
       {
         StopTrading = CheckOutsideSession(Session2Start, Session2Stop, ct);
       }
     }
     if (StopTrading == true)
     {

       if (TradeSession3 == 1)
       {
         StopTrading = CheckOutsideSession(Session3Start, Session3Stop, ct);
       }
     }
     if (StopTrading == true)
     {

       if (TradeSession4 == 1)
       {
         StopTrading = CheckOutsideSession(Session4Start, Session4Stop, ct);
       }
     }
     if (StopTrading == true)
     {

       if (TradeSession5 == 1)
       {
         StopTrading = CheckOutsideSession(Session5Start, Session5Stop, ct);
       }
     }

     return(StopTrading);
}

int CalculateCurrentOrders()
  {
   int buys = 0, sells = 0, num = 0;
   for(int i=0;i<OrdersTotal();i++)
     {
      OrderSelect(i,SELECT_BY_POS,MODE_TRADES);
      if(OrderSymbol()!= Symbol()) continue;
      if (OrderMagicNumber()!= MagicNumber) continue;
      if(OrderType() == OP_BUY)  buys++;
      if(OrderType() == OP_SELL) sells++;
     }

   num = buys + sells;
   return(num);
  }

void ClosePartialLots()
{
   int Total;
   double QtyOrders = 0.00;
   double QtyOrderSells = 0.00;

   double  _First_Close_TP_ =  First_Close_TP*TickMultiplier;
   double  _Second_Close_TP_  = Second_Close_TP*TickMultiplier;
   double  _Third_Close_TP_  =  Third_Close_TP*TickMultiplier;
   double  _Slippage_ =  Slippage*TickMultiplier;

   Total = OrdersTotal();

   bool IsTrade = False;

   for (int i = Total - 1; i >= 0; i --) {
      OrderSelect(i, SELECT_BY_POS, MODE_TRADES);

      if (OrderSymbol() != Symbol()) continue;
      if (OrderMagicNumber() != MagicNumber) continue;

      if(OrderType() <= OP_SELL)
      {
         IsTrade = True;

         if(OrderType() == OP_BUY) QtyOrders = OrderLots();

         if(OrderType() == OP_SELL) QtyOrderSells = OrderLots();

         if(OrderType() == OP_BUY) {

            if(QtyOrders == Lots)
            {                      
               if(Bid - OrderOpenPrice() > Point * _First_Close_TP_)
               {
                     OrderClose(OrderTicket(), First_Close , Bid, _Slippage_, MediumSeaGreen);
                     continue;
               }
            }           

            if( ( (QtyOrders - Third_Close) > 0.00 ) 
                && (QtyOrders - (Second_Close + Third_Close ) <=

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

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

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

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

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

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

Стоимость полного кода
2 292,40₽ ≈ $28.02