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

ma_angle_eav2.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, работающий на основе угла наклона скользящей средней (включая LSMA). Он вычисляет угол между двумя значениями MA на заданном таймфрейме и открывает сделки при превышении пороговых значений. Используются стандартные торговые функции OrderSend, OrderClose и OrderModify для исполнения и управления позициями. Советник поддерживает управление рисками, стоп-лосс, тейк-профит, трейлинг-стоп и фильтрацию по торговым часам.

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

НастройкаОписание
Change to true to allow print (Debug) Отладка — Включает вывод отладочных сообщений в журнал терминала.
Change to false to shutdown money management controls. (MoneyManagement) Управление капиталом — Включает или отключает автоматический расчёт размера лота на основе риска.
Change to whatever percent of equity you wish to risk. (TradeSizePercent) Процент риска — Процент от баланса, который советник готов рисковать на одну сделку.
standard lot size. (Lots) Размер лота — Фиксированный размер лота при отключённом управлении капиталом.
MaxLots Максимальный лот — Ограничение максимального размера лота для открытой позиции.
Maximum pips willing to lose per position. (StopLoss) Стоп-лосс — Максимальное количество пунктов убытка на позицию.
UseTrailingStop Использовать трейлинг-стоп — Включает или отключает автоматическое перемещение стоп-лосса.
TrailingStopType Тип трейлинг-стопа — Номер типа алгоритма трейлинг-стопа (от 1 до 5).
Change to whatever number of pips you wish to trail your position with. (TrailingStop) Трейлинг-стоп — Расстояние в пунктах для трейлинга позиции.
Possible fix for not getting filled or closed (Slippage) Допустимое проскальзывание — Максимально допустимое проскальзывание при открытии или закрытии ордера.
TakeProfit Тейк-профит — Фиксированный уровень прибыли в пунктах на позицию.
Expert will stop trading if equity level decreases to that level. (Margincutoff) Порог маржи — Советник прекращает торговлю, если уровень средств опустится ниже этого значения.
SignalTimeFrame Таймфрейм сигнала — Таймфрейм, на котором рассчитываются значения скользящей средней.
MA_Period Период MA — Количество баров для расчёта скользящей средней.
m Разделитель типов MA — Текстовая метка группы типов скользящих средних.
m0 Тип MA 0 — Описание типа скользящей средней (SMA).
m1 Тип MA 1 — Описание типа скользящей средней (EMA).
m2 Тип MA 2 — Описание типа скользящей средней (SMMA).
m3 Тип MA 3 — Описание типа скользящей средней (LWMA).
m4 Тип MA 4 — Описание типа скользящей средней (LSMA).
0=SMA, 1=EMA, 2=SMMA, 3=LWMA, 4=LSMA (MA_Type) Тип MA — Выбранный тип скользящей средней: 0 — SMA, 1 — EMA, 2 — SMMA, 3 — LWMA, 4 — LSMA.
p Разделитель типов цены — Текстовая метка группы типов применяемой цены.
p0 Тип цены 0 — Применяемая цена — close.
p1 Тип цены 1 — Применяемая цена — open.
p2 Тип цены 2 — Применяемая цена — high.
p3 Тип цены 3 — Применяемая цена — low.
p4 Тип цены 4 — Применяемая цена — median(high+low)/2.
p5 Тип цены 5 — Применяемая цена — typical(high+low+close)/3.
p6 Тип цены 6 — Применяемая цена — weighted(high+low+close+close)/4.
MA_AppliedPrice Применяемая цена MA — Индекс типа цены, используемой для расчёта скользящей средней.
What size angle to trigger a trade (EntryAngle_Threshold) Порог входа — Минимальный угол наклона MA для открытия сделки.
ExitAngle_Threshold Порог выхода — Угол наклона MA, при достижении которого позиция закрывается.
PrevMAShift Сдвиг предыдущей MA — Смещение бара для расчёта предыдущего значения скользящей средней.
CurMAShift Сдвиг текущей MA — Смещение бара для расчёта текущего значения скользящей средней.
UseTradingHours Использовать торговые часы — Включает фильтрацию торгов по времени суток.
Start trades after time (StartHour) Час начала — Час, после которого советник начинает торговлю.
Stop trading after time (StopHour) Час окончания — Час, после которого советник прекращает торговлю.
Получить полный код

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

#include <stdlib.mqh>

#define UP 1
#define DOWN 2

#define SMA 0
#define EMA 1
#define SMMA 2
#define LWMA 3
#define LSMA 4

extern bool Debug = false;               // Change to true to allow print

extern bool AccountIsMini = true;      // Change to true if trading mini account

extern bool MoneyManagement = true; // Change to false to shutdown money management controls.

extern double TradeSizePercent = 10;      // Change to whatever percent of equity you wish to risk.
extern double Lots = 0.1;             // standard lot size. 
extern double MaxLots = 30;

extern double StopLoss = 0;        // Maximum pips willing to lose per position.
extern bool UseTrailingStop = false;
extern int TrailingStopType = 1;
extern double TrailingStop = 20;    // Change to whatever number of pips you wish to trail your position with.
 double FirstMove = 20;       // Type 3  first level pip gain
 double FirstStopLoss = 50;       // Move Stop to Breakeven
 double SecondMove = 30;       // Type 3 second level pip gain
 double SecondStopLoss = 30;       // Move stop to lock is profit
 double ThirdMove = 40;       // type 3 third level pip gain
 double TrailingStop3 = 20;       // Move stop and trail from there
extern int Slippage = 10;           // Possible fix for not getting filled or closed    
extern int TakeProfit = 0;
extern double Margincutoff = 800;   // Expert will stop trading if equity level decreases to that level.

 int SignalCandle = 1;
extern int     SignalTimeFrame = 60;

extern int     MA_Period=34;
extern string  m = "--Moving Average Types--";
extern string  m0 = " 0 = SMA";
extern string  m1 = " 1 = EMA";
extern string  m2 = " 2 = SMMA";
extern string  m3 = " 3 = LWMA";
extern string  m4 = " 4 = LSMA";
extern int     MA_Type = 1; //0=SMA, 1=EMA, 2=SMMA, 3=LWMA, 4=LSMA
extern string  p = "--Applied Price Types--";
extern string  p0 = " 0 = close";
extern string  p1 = " 1 = open";
extern string  p2 = " 2 = high";
extern string  p3 = " 3 = low";
extern string  p4 = " 4 = median(high+low)/2";
extern string  p5 = " 5 = typical(high+low+close)/3";
extern string  p6 = " 6 = weighted(high+low+close+close)/4";
extern int     MA_AppliedPrice = 0;
extern double  EntryAngle_Threshold=10;   // What size angle to trigger a trade
extern double  ExitAngle_Threshold=2;
extern int     PrevMAShift=3;
extern int     CurMAShift=1;

extern bool UseTradingHours = true;
extern int StartHour = 2;       // Start trades after time
extern int StopHour = 15;      // Stop trading after time

string setup;
double lotMM;
int TradesInThisSymbol;
int MagicNumber;
bool YesStop;

double MACurrent, MAPrevious;

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

int deinit()
  {
   return(0);
  }

double fLSMA(int Rperiod, int prMode, int shift)
{
   int i;
   double sum, pr;
   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: pr = iClose(NULL, SignalTimeFrame,length-i+shift);break;
     case 1: pr = iOpen(NULL, SignalTimeFrame,length-i+shift);break;
     case 2: pr = iHigh(NULL, SignalTimeFrame,length-i+shift);break;
     case 3: pr = iLow(NULL, SignalTimeFrame,length-i+shift);break;
     case 4: pr = (iHigh(NULL, SignalTimeFrame,length-i+shift) + iLow(NULL, SignalTimeFrame,length-i+shift))/2;break;
     case 5: pr = (iHigh(NULL, SignalTimeFrame,length-i+shift) + iLow(NULL, SignalTimeFrame,length-i+shift) + iClose(NULL, SignalTimeFrame,length-i+shift))/3;break;
     case 6: pr = (iHigh(NULL, SignalTimeFrame,length-i+shift) + iLow(NULL, SignalTimeFrame,length-i+shift) + iClose(NULL, SignalTimeFrame,length-i+shift) + iClose(NULL, SignalTimeFrame,length-i+shift))/4;break;
     }
     tmp = ( i - lengthvar)*pr;
     sum+=tmp;
    }
    wt = sum*6/(length*(length+1));

    return(wt);
}

double MA_Angle( int PrevShift, int CurShift, double fPrevMA, double fCurMA)
{
   double fAngle, mFactor;
   string Sym;
   int ShiftDif;

   mFactor = 100000.0;
   Sym = StringSubstr(Symbol(),3,3);
   if (Sym == "JPY") mFactor = 1000.0;
   ShiftDif = PrevShift-CurShift;
   mFactor /= ShiftDif; 

    fAngle = mFactor * (fCurMA - fPrevMA)/2.0;

    return(fAngle);
}

void GetMA(int MAPeriod, int Prev, int Cur)
{
   MACurrent=iMA(NULL,SignalTimeFrame,MAPeriod,0,MA_Type,MA_AppliedPrice,Cur);
   MAPrevious=iMA(NULL,SignalTimeFrame,MAPeriod,0,MA_Type,MA_AppliedPrice,Prev);
}

void GetLSMA(int MAPeriod, int Prev, int Cur)
{
   MACurrent=fLSMA(MAPeriod,MA_AppliedPrice,Cur);
   MAPrevious=fLSMA(MAPeriod,MA_AppliedPrice,Prev);
}

void GetMA_Trend (int TrendMethod, int myPeriod, int PrevShift, int CurShift)
{
   switch (TrendMethod)
   {
     case LSMA :  GetLSMA(myPeriod, PrevShift, CurShift);
                  break;
     default : GetMA( myPeriod, PrevShift, CurShift);
   }
}

bool CheckExitCondition(int cmd)
{
	double maAngle;

   GetMA_Trend(MA_Type, MA_Period , PrevMAShift, CurMAShift);
	maAngle = MA_Angle(PrevMAShift, CurMAShift, MAPrevious, MACurrent);
   switch (cmd)
   {
      case OP_BUY : if (maAngle < ExitAngle_Threshold) return(true);
                    break;
      case OP_SELL : if (maAngle > -ExitAngle_Threshold) return(true);
   }

   return(false);
}

bool CheckEntryCondition(int cmd)
{

	double maAngle;

   GetMA_Trend(MA_Type, MA_Period , PrevMAShift, CurMAShift);
	maAngle = MA_Angle(PrevMAShift, CurMAShift, MAPrevious, MACurrent);
   switch (cmd)
   {
      case OP_BUY : if (maAngle > EntryAngle_Threshold) return(true);
                    break;
      case OP_SELL : if (maAngle < -EntryAngle_Threshold) return(true);
   }

   return(false);

}

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

void OpenBuyOrder()
{
   int err,ticket, digits;
   double myPrice, myStopLoss = 0, myTakeProfit = 0;

   myPrice = MarketInfo(Symbol( ), MODE_ASK);
   myStopLoss = 0;
   if ( StopLoss > 0 ) myStopLoss = myPrice - StopLoss * Point ;
   myTakeProfit = 0;
   if (TakeProfit>0) myTakeProfit = myPrice + TakeProfit * Point;

   digits = MarketInfo(Symbol( ), MODE_DIGITS) ;
   if (digits > 0) 
   {
     myPrice = NormalizeDouble( myPrice, digits);
     myStopLoss = NormalizeDouble( myStopLoss, digits);
     myTakeProfit = NormalizeDouble( myTakeProfit, digits); 
   }
   ticket=OrderSend(Symbol(),OP_BUY,lotMM,myPrice,Slippage,myStopLoss,myTakeProfit,setup,MagicNumber,0,Green); 
	if (ticket > 0)
	{
		if (OrderSelect(ticket,SELECT_BY_TICKET,MODE_TRADES)) 
		{
		   if (Debug) Print("BUY order opened : ", OrderOpenPrice());

		}
	}
	else
	{ 
		   err = GetLastError();
         Print("Error opening BUY order [" + setup + "]: (" + err + ") " + ErrorDescription( err) );
   }
}

void OpenSellOrder()
{
   int err, ticket, digits;
   double myPrice, myStopLoss = 0, myTakeProfit = 0;

   myPrice = MarketInfo(Symbol( ), MODE_BID);
   myStopLoss = 0;
   if ( StopLoss > 0 ) myStopLoss = myPrice + StopLoss * Point;
   myTakeProfit = 0;
   if (TakeProfit > 0) myTakeProfit = myPrice - TakeProfit * Point;

   digits = MarketInfo(Symbol( ), MODE_DIGITS) ;
   if (digits > 0) 
   {
     myPrice = NormalizeDouble( myPrice, digits);
     myStopLoss = NormalizeDouble( myStopLoss, digits);
     myTakeProfit = Normaliz

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

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

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

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

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

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

Стоимость полного кода
1 136,60₽ ≈ $13.89