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

Moving Average

moving averagecross_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, основанного на стратегии пересечения цены со скользящей средней. Советник анализирует значения Open[1] и Close[1] предыдущего бара относительно настраиваемой скользящей средней и при пересечении генерирует сигналы на покупку или продажу.

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

Для информирования трейдера реализованы звуковые, email и всплывающие уведомления при открытии и закрытии позиций. Доступен режим «только уведомления», при котором советник не открывает реальных позиций, а лишь сигнализирует о событиях. Поддерживаются настраиваемые уровни тейк-профита, стоп-лосса и проскальзывания.

Советник работает на языке MQL4 и обрабатывает событие OnTick, проверяя условия открытия и закрытия ордеров при каждом новом тике. Торговые операции выполняются через стандартные API MetaTrader 4 (OrderSend, OrderModify, OrderClose).

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

НастройкаОписание
MagicNumber Номер магии — Номер магии для идентификации ордеров, открытых советником, среди всех ордеров на счёте.
AlertOnly Только уведомления — Переключатель режима только уведомлений. При включении советник генерирует алерты, но не открывает реальных торговых позиций.
0 = disabled (SoundAlert) Звуковые уведомления — Переключатель включения звуковых уведомлений при сигналах. 0 — отключено.
EmailAlert Email-уведомления — Переключатель включения email-уведомлений о сигналах на покупку и продажу.
UserComment Комментарий к ордерам — Текстовый комментарий, добавляемый к ордерам советника.
mm Управление рисками — Группа настроек управления рисками и размером лота.
Lots Размер лота — Начальный фиксированный размер лота, используемый при расчёте оптимального размера позиции.
MaximumRisk Максимальный риск — Максимальный процент риска от свободных средств счёта, используемый при расчёте размера лота.
DecreaseFactor Коэффициент уменьшения лота — Коэффициент уменьшения лота при наличии серии убыточных ордеров в истории. Используется для риск-менеджмента.
m0 Настройки скользящей средней — Группа настроек скользящей средней.
MA_Period Период скользящей средней — Период (количество баров) расчёта скользящей средней.
m1 Режимы скользящей средней — Группа режимов скользящей средней.
m2 Описание режимов скользящей средней — Описание режимов: 0=SMA, 1=EMA, 2=SMMA, 3=LWMA.
MA_Mode Режим скользящей средней — Режим скользящей средней: 0 — SMA, 1 — EMA, 2 — SMMA, 3 — LWMA.
ap0 Применяемая цена — Группа настроек применяемой цены для скользящей средней.
ap1 Варианты применяемой цены — Описание вариантов применяемой цены: 0=Close, 1=Open, 2=High, 3=Low, 4=Median, 5=Typical, 6=Weighted.
ap2 Дополнительные варианты цены — Дополнительные варианты применяемой цены для расчёта скользящей средней.
MA_Price Применяемая цена для скользящей средней — Тип цены для расчёта скользящей средней: 0 — Close, 1 — Open, 2 — High, 3 — Low и другие варианты.
MA_Shift Сдвиг скользящей средней — Сдвиг скользящей средней в барах.
TakeProfit Тейк-профит — Тейк-профит в пунктах.
0= no stoploss (StopLoss) Стоп-лосс — Стоп-лосс в пунктах. Значение 0 означает отсутствие стоп-лосса.
Slippage Проскальзывание — Допустимое проскальзывание цены при исполнении ордеров, в пунктах.
ts0 Настройки трейлинг-стопа — Группа настроек трейлинг-стопа.
ts1 Метод трейлинг-стопа: нет — Описание метода трейлинг-стопа: 1. Нет.
ts2 Метод трейлинг-стопа: стандартный — Описание метода трейлинг-стопа: 2. Стандартный по входу.
ts3 Метод трейлинг-стопа: немедленный — Описание метода трейлинг-стопа: 3. Немедленный.
TrailingStopMethod Метод трейлинг-стопа — Метод трейлинг-стопа: 1 — нет, 2 — отложенный (ожидает смещения цены), 3 — немедленный.
ts12 Настройки отложенного трейлинг-стопа — Настройки для метода трейлинг-стопа 2 (отложенный).
TrailingStop Расстояние трейлинг-стопа — Расстояние трейлинг-стопа в пунктах, используемое в режимах 2 и 3.
Получить полный код

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

#include <stdlib.mqh>
#include <stderror.mqh> 

extern int MagicNumber = 20050610;

extern bool AlertOnly = false;
extern bool SoundAlert  =    true; // 0 = disabled
extern bool EmailAlert  =    true;
extern string UserComment = "MA_EA";
extern string mm                 = "MoneyManagement settings";
extern double Lots               = 0.1;
extern double MaximumRisk        = 0.02;
extern double DecreaseFactor     = 3;
extern string m0                 = "Moving Average Settings";
extern double MA_Period          = 12;
extern string m1                 = " Modes";
extern string m2                 = "0=sma, 1=ema, 2=smma, 3=lwma";
extern int    MA_Mode            = 1;
extern string ap0                = "Applied Price";
extern string ap1                = "0=close, 1=open, 2=high, 3=low, 4=median((h+l/2))";
extern string ap2 =              ", 5=typical((h+l+c)/3), 6=weighted((h+l+c+c)/4)";
extern int    MA_Price           = 0;
extern double MA_Shift           = 0;

extern int     TakeProfit = 130;
extern int     StopLoss=60;//  0= no stoploss
extern int     Slippage = 3;

extern string  ts0 = "---TrailingStopLoss---";
extern string  ts1 = " 1. None";
extern string  ts2 = " 2. Standard at input";
extern string  ts3 = " 3. Trail immediately";
extern int     TrailingStopMethod = 2;
extern string  ts12 = "Settings for Type 2";
extern double  TrailingStop = 20;

double   myPoint;

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

void DoAlerts(int cmd)
{
   if (cmd == OP_BUY)
   {
     if (SoundAlert) Alert(Symbol(),"  Price Cross MA  Up @  Hour ",Hour(),"  Minute ",Minute());
     if (EmailAlert) SendMail("BUY Alert for " + Symbol(), " Price Cross MA Up @  Hour " + Hour() + "  Minute " + Minute());
   }

   if (cmd == OP_SELL)
   {
      if (SoundAlert) Alert(Symbol()," Price Cross MA Down @  Hour ",Hour(),"  Minute ",Minute());
      if (EmailAlert) SendMail("SELL Alert for " + Symbol(), " Price Cross MA Down @  Hour " + Hour() + "  Minute " + Minute());
   }
}

void CheckForOpen()
  {
   double ma;

   if(Volume[0]>1) return;

   ma=iMA(NULL,0,MA_Period,MA_Shift,MA_Mode,MA_Price,0);

   if(Open[1]>ma && Close[1]<ma)  
     {
      DoAlerts(OP_SELL);
      if (!AlertOnly) OpenTrade(OP_SELL);
      return;
     }

   if(Open[1]<ma && Close[1]>ma)  
     {
      DoAlerts(OP_BUY);
      if (!AlertOnly) OpenTrade(OP_BUY);
      return;
     }

  }

void CheckForClose()
  {
   double ma;

   if(Volume[0]>1) return;

   ma=iMA(NULL,0,MA_Period,MA_Shift,MA_Mode,MA_Price,0);

   for(int i=0;i<OrdersTotal();i++)
     {
      if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES)==false)        break;
      if(OrderSymbol()!=Symbol()) continue;
      if(OrderMagicNumber()!=MagicNumber) continue;

      if(OrderType()==OP_BUY)
        {
         if(Open[1]>ma && Close[1]<ma)
           OrderClose(OrderTicket(),OrderLots(),Bid,3,White);
         else
           HandleTrailingStop(OP_BUY, OrderTicket(), OrderOpenPrice(), OrderStopLoss(), OrderTakeProfit());

        }
      if(OrderType()==OP_SELL)
        {
         if(Open[1]<ma && Close[1]>ma)
           OrderClose(OrderTicket(),OrderLots(),Ask,3,White);
         else
           HandleTrailingStop(OP_SELL, OrderTicket(), OrderOpenPrice(), OrderStopLoss(), OrderTakeProfit());
        }
     }

  }

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

void OpenTrade(int signal)
{  
  int res, err, ticket;
  double mLots;
  double TPprice,STprice;

   RefreshRates();

   mLots = LotsOptimized();

   if (signal==OP_BUY) 
   {
      res=OrderSend(Symbol(),OP_BUY,mLots,Ask,Slippage,0,0,UserComment,MagicNumber,0,Green);
      if (res > 0)
      {
         ticket = res;
         OrderSelect(ticket, SELECT_BY_TICKET, MODE_TRADES);
         if (StopLoss != 0 || TakeProfit != 0)
	      {
            TPprice = 0;
            if (TakeProfit > 0) TPprice=TakeLong(OrderOpenPrice(), TakeProfit);
            STprice = 0;
            if (StopLoss > 0)
            {
              STprice=StopLong(OrderOpenPrice(), StopLoss);
		        STprice = ValidStopLoss(OP_BUY,Bid, STprice);
		      }   

            if (Digits > 0) 
            {
              STprice = NormalizeDouble( STprice, Digits);
              TPprice = NormalizeDouble( TPprice, Digits); 
            }
		      ModifyOrder(ticket, OrderOpenPrice(), STprice, TPprice, LightGreen);
		   }

      }
   } 
   else if (signal==OP_SELL) 
   {
      res=OrderSend(Symbol(),OP_SELL,mLots,Bid,Slippage,0,0,UserComment,MagicNumber,0,Red);
      if (res > 0)
      {
         ticket = res;
         OrderSelect(ticket, SELECT_BY_TICKET, MODE_TRADES);
         if (StopLoss != 0 || TakeProfit != 0)
	      {
            TPprice = 0;
            if (TakeProfit > 0) TPprice=TakeShort(OrderOpenPrice(),TakeProfit);
            STprice = 0;
            if (StopLoss > 0)
            {
              STprice=StopShort(OrderOpenPrice() ,StopLoss);
		        STprice = ValidStopLoss(OP_SELL,Ask, STprice); 
		      }  

            if (Digits > 0) 
            {
               STprice = NormalizeDouble( STprice, Digits);
   

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

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

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

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

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

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

Стоимость полного кода
743,20₽ ≈ $9.08