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

simple-macd-ea.mq4

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

#1.mtf_collider_h4_close_13_v18bar.mq4MQL4 / MetaTrader 4 · 2 общих теговea robofibo source v.11.2.mq4MQL4 / MetaTrader 4 · 2 общих теговgeniusv101-ecn.mq4MQL4 / MetaTrader 4 · 2 общих теговmarket crusher ea guidlines.txtMQL · 2 общих тегов2 to 1 strategy with signals.pineTradingView · 2 общих теговfresh algo signals & overlays v25_6334471093901859175.pineTradingView · 2 общих тегов
Вы автор или правообладатель?

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

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

О программе

Простой MACD-EA — это торговый советник для платформы MetaTrader 4, написанный на языке MQL4. Советник анализирует ценовые данные, вычисляя разницу между двумя экспоненциальными скользящими средними (EMA) на таймфрейме M1, и определяет направление тренда на основе знака полученного значения.

При смене направления тренда советник автоматически открывает ордера на покупку или продажу с заданным объёмом лотов. Для управления открытыми позициями реализован механизм трейлинг-стопа, который перемещает стоп-лосс при достижении определённой прибыли, а также условное закрытие ордеров при достижении лимита шагов или времени.

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

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

НастройкаОписание
number of lots to trade (usually, 1 lot is $100k) (unlimited) (Lots) Лот — Объём сделки в лотах. Определяет размер каждой открываемой позиции.
the amount of the trailing stop needed to maximize profit (unlimited) (TrailingStop) Трейлинг-стоп — Расстояние трейлинг-стопа в пунктах. Определяет минимальную прибыль в пунктах для активации перемещения стоп-лосса.
(1-12) [low works for GBPUSD], high works for others. (MACD_level) Период MACD — Период EMA, используемый в качестве основного периода для расчёта MACD-показателя на таймфрейме M1.
MAGIC Магический номер — Магический номер, присваиваемый ордерам для их идентификации среди других ордеров на счёте.
tp_limit Лимит трейлинг-стопа — Лимит количества шагов трейлинг-стопа. После достижения лимита ордер закрывается по стоп-лоссу.
wait_time_b4_SL Время ожидания перед закрытием — Время ожидания (в тиках) перед условным закрытием позиции, если она остаётся без движения в нужном направлении.
Получить полный код

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

extern double    Lots=1;  // number of lots to trade (usually, 1 lot is $100k) (unlimited)
extern double     TrailingStop=55;   // the amount of the trailing stop needed to maximize profit (unlimited)
extern int MACD_level=500; //(1-12) [low works for GBPUSD], high works for others.
extern int MAGIC=123456;
extern int tp_limit=100;
int limit=1000;
int gap=1;
extern int wait_time_b4_SL=10000;

int      trend=0,last_trend=0, pending_time, ticket, total, pace, tp_cnt;
bool     sell_flag, buy_flag, find_highest=false, find_lowest=false;
double   MACD_Strength=0;

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

int deinit()
  {
   return(0);
  }

int best_deal()
  {
   double MACDSignal1,MACDSignal2;

   MACDSignal2=iMA(NULL,PERIOD_M1,MACD_level,0,MODE_EMA,Close[0],0)-iMA(NULL,PERIOD_M1,MACD_level+1,0,MODE_EMA,Close[0],0);
   MACDSignal1=iMA(NULL,PERIOD_M1,MACD_level,0,MODE_EMA,Close[gap],gap)-iMA(NULL,PERIOD_M1,MACD_level+1,0,MODE_EMA,Close[gap],gap);

   if ((find_highest && Close[0]>OrderOpenPrice()+Point*5) && MACDSignal2<MACDSignal1)
     { find_highest=false; return (1); } 

   else if ((find_lowest && Close[0]<OrderOpenPrice()-Point*5) && MACDSignal2>MACDSignal1)
     { find_lowest=false; return (1); } 

   return (0);
  }

int MACD_Direction ()
  {
   double MACDSignal1,MACDSignal2,ind_buffer1[100], Signal1, Signal2;

   MACDSignal2=iMA(NULL,PERIOD_M1,100,0,MODE_EMA,Close[0],0)-iMA(NULL,PERIOD_M1,MACD_level,0,MODE_EMA,Close[0],0);
   MACDSignal1=iMA(NULL,PERIOD_M1,100,0,MODE_EMA,Close[gap],gap)-iMA(NULL,PERIOD_M1,MACD_level,0,MODE_EMA,Close[gap],gap);

   MACD_Strength=MACDSignal2-MACDSignal1; if (MACD_Strength<0) MACD_Strength=MACD_Strength*(-1);

   if(MACDSignal1<0) return (-1); 
   if(MACDSignal1>0) return (1); 
   else return (0);  
  }

void ClosePending()
 {
     if(OrderType()<=OP_SELL && OrderSymbol()==Symbol()) 
        {
          if(OrderType()==OP_BUY)
             {  
               OrderClose(OrderTicket(),OrderLots(),Bid,3,Violet); 
               pending_time=0; 
             }  
          else
             {
               OrderClose(OrderTicket(),OrderLots(),Ask,3,Violet); 
               pending_time=0; 
             }  
        }
 }

void do_order(int type)
 {
   if (type==1)
      {
             ticket=OrderSend(Symbol(),OP_BUY,Lots,Ask,3,0,0,"PM",MAGIC,0,White); // buy
             if(ticket>0)
                     { 
                        if(OrderSelect(ticket,SELECT_BY_TICKET,MODE_TRADES))
                           { Print("BUY order opened : ",OrderOpenPrice()); } // buy order successful
                        pace=tp_limit; tp_cnt=0; pending_time=0;  find_highest=true;
                     }
              else Print("Error opening SELL order : ",GetLastError());
              buy_flag=false;
      }
  else if (type==2)
      {
             ticket=OrderSend(Symbol(),OP_SELL,Lots,Bid,3,0,0,"PM",MAGIC,0,Red);
             if(ticket>0)
                     {
                       if(OrderSelect(ticket,SELECT_BY_TICKET,MODE_TRADES))
                         { Print("SELL order opened : ",OrderOpenPrice()); }
                       pace=tp_limit; tp_cnt=0; pending_time=0; find_lowest=true;
                     }
             else Print("Error opening SELL order : ",GetLastError());
             sell_flag=false;
      }

 }

int trailing_stop(int type)
 {
     pace++;
     if(TrailingStop>0 && type==1 && pace>tp_limit && tp_cnt<tp_limit) // check for trailing stop value
        { 
         if(Bid-OrderOpenPrice()>Point*TrailingStop)
      

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

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

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

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

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

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

Стоимость полного кода
447,40₽ ≈ $5.47