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

MACD Not So Sample

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

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

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

О программе

MACD Not So Sample — это торговый советник для платформы MetaTrader 4, написанный на языке MQL4. Советник предназначен для автоматической торговли и работает исключительно с инструментом EURUSD на таймфрейме H4.

Советник использует индикатор MACD и скользящую среднюю EMA для анализа рыночной ситуации и принятия решений об открытии и закрытии позиций. Перед входом в сделку проверяется наличие достаточного свободного маржа на счёте.

Поддерживаются фиксированный и процентный режимы управления размером позиции. Реализованы механизмы фиксации прибыли через TakeProfit и защитное управление позициями через TrailingStop. Советник автоматически закрывает позиции при развороте сигнала MACD и корректирует стоп-лосс при движении цены в нужном направлении.

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

НастройкаОписание
12; (fast) fast — Период быстрой линии MACD
26; (slow) slow — Период медленной линии MACD
9; (sign) sign — Период сигнальной линии MACD
30; (TrailingStop) TrailingStop — Расстояние для трейлинг-стопа в пунктах
26; (MATrendPeriod) MATrendPeriod — Период скользящей средней EMA для определения тренда
3; (MACDOpenLevel) MACDOpenLevel — Уровень MACD для открытия позиции
2; (MACDCloseLevel) MACDCloseLevel — Уровень MACD для закрытия позиции
TakeProfit TakeProfit — Величина тейк-профита в пунктах
UseMM UseMM — Включение управления размером позиции пропорционально марже
PercentMM PercentMM — Процент свободной маржи для расчёта размера позиции
Lots Lots — Фиксированный размер лота для сделки
Получить полный код

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

#define MagicNum  10701

extern int     fast           = 47;//12;
extern int     slow           = 166;//26;
extern int     sign           = 11;//9;
extern double  TrailingStop   = 19;//30;
extern double  MATrendPeriod  = 8;//26;
extern double  MACDOpenLevel  = 1;//3;
extern double  MACDCloseLevel = 3;//2;

extern double  TakeProfit     = 550;
extern bool    UseMM          = false;
extern int     PercentMM      = 10;
extern double  Lots           = 0.1;

double GetLots()
 { 
   if (UseMM)
    {
      double a;
      a = NormalizeDouble((PercentMM * AccountFreeMargin() / 100000), 1);      
      if(a > 49.9) return(49.9);
      else if(a < 0.1)
       {
         Print("Lots < 0.1");
         return(0);
       }
      else return(a);
    }    
   else return(Lots);
 }

int CalculateCurrentOrders()
 {
   int orderT = OrdersTotal(), buys = 0, sells = 0;

   for(int i = 0; i < orderT; i++)
    {
      if(OrderSelect(i, SELECT_BY_POS, MODE_TRADES) == false) break;
      if(OrderSymbol() == Symbol() && OrderMagicNumber() == MagicNum)
       {
         if(OrderType() == OP_BUY)  buys++;
         if(OrderType() == OP_SELL) sells++;
       }
    }
   if(buys > 0) return(buys);
   else if(sells > 0) return(-sells);
   else return(0);
 }

int start()
 {
      // код доступен только после оплаты
   }
   if (Symbol() != "EURUSD")
    {
		Comment("Not a right Symbol: ", Symbol(), " <>  EURUSD");
		return(0);
	 }                           
   if (Period() != 240)
    {
		Comment("Not a right Period!!! It should be H4");
		return(0);	
	 }

   double MacdCurrent, MacdPrevious, SignalCurrent, SignalPrevious, MaCurrent, MaPrevious;
   int cnt, ticket, total;

   if(Bars < 100)
    {
      Print("Bars less than 100");
      return(0);  
    }
   if(TakeProfit < 10)
    {
      Print("TakeProfit less than 10");
      return(0); 
    }

   MacdCurrent = iMACD(NULL, 0, fast, slow, sign, PRICE_CLOSE, MODE_MAIN, 0);
   MacdPrevious = iMACD(NULL, 0, fast, slow, sign, PRICE_CLOSE, MODE_MAIN, 1);
   SignalCurrent = iMACD(NULL, 0, fast, slow, sign, PRICE_CLOSE, MODE_SIGNAL, 0);
   SignalPrevious = iMACD(NULL,0,fast, slow, sign, PRICE_CLOSE, MODE_SIGNAL, 1);
   MaCurrent = iMA(NULL, 0, MATrendPeriod, 0, MODE_EMA, PRICE_CLOSE, 0);
   MaPrevious = iMA(NULL, 0, MATrendPeriod, 0, MODE_EMA, PRICE_CLOSE, 1);

   if(CalculateCurrentOrders() == 0) 
    {
      if(AccountFreeMargin() < (1000 * GetLots()))
       {
         Print("We have no money. Free Margin = ", AccountFreeMargin());
         return(0);  
       }
      if(MacdCurrent < 0 && MacdCurrent > SignalCurrent && MacdPrevious < SignalPrevious && MathAbs(MacdCurrent) > (MACDOpenLevel*Point) && MaCurrent > MaPrevious)
       {
         ticket=OrderSend(Symbol(), OP_BUY, GetLots(), Ask, 3, 0

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

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

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

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

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

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

Стоимость полного кода
359,80₽ ≈ $4.40