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

TripleMA Crossover EA

triplema_crossover_expert2.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, основанный на стратегии пересечения трёх скользящих средних (Fast, Middle, Slow). Открытие позиции BUY происходит при пересечении быстрой средней сверху средней с учётом распространённости и одновременном пересечении средней сверху медленной; для SELL условия инвертированы. Советник поддерживает несколько методов расчёта скользящих средних, включая пользовательскую реализацию LSMA (наименьших квадратов).

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

Система управления рисками включает стоп-лосс, тейк-профит и многоуровневый трейлинг-стоп с тремя типами и тремя уровнями фиксации прибыли. Все позиции идентифицируются магическим числом, а входные параметры проверяются на корректность перед началом торговой сессии. Советник обрабатывает события тиков через функцию start().

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

НастройкаОписание
MagicNumber Магическое число — Магическое число для идентификации позиций, открытых советником.
Change to false to shutdown money management controls. (MoneyManagement) Управление денежными средствами — Переключатель управления денежными средствами. При значении false размер лота фиксируется равным Lots.
Change to whatever percent of equity you wish to risk. (TradeSizePercent) Процент риска от баланса — Процент баланса счёта, рискуемый на одну позицию при включённом управлении денежными средствами.
standard lot size. (Lots) Размер лота — Стандартный размер лота при отключённом управлении денежными средствами.
MaxLots Максимальный размер лота — Максимально допустимый размер лота при расчёте через управление денежными средствами.
0=sma, 1=ema, 2=smma, 3=lwma , 4=LSMA (FastMA_Method) Метод быстрой СС — Метод расчёта быстрой скользящей средней: 0=SMA, 1=EMA, 2=SMMA, 3=LWMA, 4=LSMA.
FastMAPeriod Период быстрой СС — Период расчёта быстрой скользящей средней.
FastMA_Shift Сдвиг быстрой СС — Сдвиг быстрой скользящей средней в барах.
0=close, 1=open, 2=high, 3=low, 4=median((h+l/2)), 5=typical((h+l+c)/3), 6=weighted((h+l+c+c)/4) (FastMA_AppliedPrice) Применяемая цена быстрой СС — Тип цены для быстрой скользящей средней: 0=close, 1=open, 2=high, 3=low, 4=median, 5=typical, 6=weighted.
0=sma, 1=ema, 2=smma, 3=lwma, 4=LSMA (MiddleMA_Method) Метод средней СС — Метод расчёта средней скользящей средней: 0=SMA, 1=EMA, 2=SMMA, 3=LWMA, 4=LSMA.
MiddleMAPeriod Период средней СС — Период расчёта средней скользящей средней.
MiddleMA_Shift Сдвиг средней СС — Сдвиг средней скользящей средней в барах.
0=close, 1=open, 2=high, 3=low, 4=median((h+l/2)), 5=typical((h+l+c)/3), 6=weighted((h+l+c+c)/4) (MiddleMA_AppliedPrice) Применяемая цена средней СС — Тип цены для средней скользящей средней: 0=close, 1=open, 2=high, 3=low, 4=median, 5=typical, 6=weighted.
0=sma, 1=ema, 2=smma, 3=lwma, 4=LSMA (SlowMA_Method) Метод медленной СС — Метод расчёта медленной скользящей средней: 0=SMA, 1=EMA, 2=SMMA, 3=LWMA, 4=LSMA.
SlowMAPeriod Период медленной СС — Период расчёта медленной скользящей средней.
SlowMA_Shift Сдвиг медленной СС — Сдвиг медленной скользящей средней в барах.
0=close, 1=open, 2=high, 3=low, 4=median((h+l/2)), 5=typical((h+l+c)/3), 6=weighted((h+l+c+c)/4) (SlowMA_AppliedPrice) Применяемая цена медленной СС — Тип цены для медленной скользящей средней: 0=close, 1=open, 2=high, 3=low, 4=median, 5=typical, 6=weighted.
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) Расстояние трейлинг-стопа — Расстояние трейлинг-стопа в пунктах для типов 1 и 2.
Type 3 first level pip gain (TRStopLevel_1) Уровень 1 фиксации прибыли — Первый уровень фиксации прибыли в пунктах для трейлинг-стопа типа 3.
Move Stop to Breakeven (TrailingStop1) Фиксация стопа на уровне 1 — Расстояние фиксации стопа в пунктах при достижении первого уровня прибыли для типа 3.
Type 3 second level pip gain (TRStopLevel_2) Уровень 2 фиксации прибыли — Второй уровень фиксации прибыли в пунктах для трейлинг-стопа типа 3.
Move stop to lock is profit (TrailingStop2) Фиксация стопа на уровне 2 — Расстояние фиксации стопа в пунктах при достижении второго уровня прибыли для типа 3.
type 3 third level pip gain (TRStopLevel_3) Уровень 3 фиксации прибыли — Третий уровень фиксации прибыли в пунктах для трейлинг-стопа типа 3.
Move stop and trail from there (TrailingStop3) Фиксация стопа на уровне 3 — Расстояние фиксации стопа и трейлинга в пунктах при достижении третьего уровня прибыли для типа 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 , 4=LSMA
extern int FastMAPeriod =   9;
extern int FastMA_Shift = 0;
extern int FastMA_AppliedPrice = 0;       // 0=close, 1=open, 2=high, 3=low, 4=median((h+l/2)), 5=typical((h+l+c)/3), 6=weighted((h+l+c+c)/4)
extern int MiddleMA_Method = 0; //0=sma, 1=ema, 2=smma, 3=lwma, 4=LSMA
extern int MiddleMAPeriod =   14;
extern int MiddleMA_Shift = 0;
extern int MiddleMA_AppliedPrice = 0;       // 0=close, 1=open, 2=high, 3=low, 4=median((h+l/2)), 5=typical((h+l+c)/3), 6=weighted((h+l+c+c)/4)
extern int SlowMA_Method = 0; //0=sma, 1=ema, 2=smma, 3=lwma, 4=LSMA
extern int SlowMAPeriod =   29;
extern int SlowMA_Shift = 0;
extern int SlowMA_AppliedPrice = 0;       // 0=close, 1=open, 2=high, 3=low, 4=median((h+l/2)), 5=typical((h+l+c)/3), 6=weighted((h+l+c+c)/4)
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()
  {
  }

double LSMA(int Rperiod,int prMode, int TimeFrame, int mshift)
{
   int i;
   double sum, price;
   int length;
   double lengthvar;
   double tmp;
   double wt;

   length = Rperiod;

   sum = 0;
   for(i = length; i >= 1  ; i--)
   {
     lengthvar = length + 1;
     lengthvar /= 3;
     tmp = 0;
     switch (prMode)
     {
     case 0: price = iClose(NULL,TimeFrame,length-i+mshift);break;
     case 1: price = iOpen(NULL,TimeFrame,length-i+mshift);break;
     case 2: price = iHigh(NULL,TimeFrame,length-i+mshift);break;
     case 3: price = iLow(NULL,TimeFrame,length-i+mshift);break;
     case 4: price = (iHigh(NULL,TimeFrame,length-i+mshift) + iLow(NULL,TimeFrame,length-i+mshift))/2;break;
     case 5: price = (iHigh(NULL,TimeFrame,length-i+mshift) + iLow(NULL,TimeFrame,length-i+mshift) + iClose(NULL,TimeFrame,length-i+mshift))/3;break;
     case 6: price = (iHigh(NULL,TimeFrame,length-i+mshift) + iLow(NULL,TimeFrame,length-i+mshift) + iClose(NULL,TimeFrame,length-i+mshift) + iClose(NULL,TimeFrame,length-i+mshift))/4;break;
     }
     tmp = ( i - lengthvar)*price;
     sum+=tmp;
    }
    wt = sum*6/(length*(length+1));

    return(wt);
}

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

   YesClose = false;
   if (FastMA_Method == 4)
   {
     fMA = LSMA(FastMAPeriod,FastMA_AppliedPrice,0,SignalCandle);
   }
   else
   {
     fMA = iMA(NULL, 0, FastMAPeriod, FastMA_Shift, FastMA_Method, FastMA_AppliedPrice, SignalCandle);
   }
   if (SlowMA_Method == 4)
   {
     mMA = LSMA(MiddleMAPeriod,MiddleMA_AppliedPrice,0,SignalCandle);
   }
   else
   {
     mMA = iMA(NULL, 0, MiddleMAPeriod, MiddleMA_Shift, MiddleMA_Method, FastMA_AppliedPrice, 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;
   if (FastMA_Method == 4)
   {
     fMA = LSMA(FastMAPeriod,FastMA_AppliedPrice,0,SignalCandle);
   }
   else
   {
     fMA = iMA(NULL, 0, FastMAPeriod, FastMA_Shift, FastMA_Method, FastMA_AppliedPrice, SignalCandle);
   }
   if (MiddleMA_Method == 4)
   {
     mMA = LSMA(MiddleMAPeriod,MiddleMA_AppliedPrice,0,SignalCandle);
   }
   else
   {
     mMA = iMA(NULL, 0, MiddleMAPeriod, MiddleMA_Shift, MiddleMA_Method, FastMA_AppliedPrice, SignalCandle);
   }
   if (SlowMA_Method == 4)
   {
     sMA = LSMA(SlowMAPeriod,SlowMA_AppliedPrice,0,SignalCandle);
   }
   else
   {
     sMA = iMA(NULL, 0, SlowMAPeriod, SlowMA_Shift, SlowMA_Method, FastMA_AppliedPrice, 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();
     

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

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

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

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

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

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

Стоимость полного кода
961₽ ≈ $11.75