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

mov_macd_ea_ar1.mq4

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

! macd+.mq5MQL5 / MetaTrader 5 · 1 общих тегов!!!macd_adx.mq4MQL4 / MetaTrader 4 · 1 общих теговxauusd_gold_perfect.mq4MQL4 / MetaTrader 4 · 1 общих теговtm sniper pro.pineTradingView · 1 общих теговsource code of grid with 100 pips stop loss.mq4MQL4 / MetaTrader 4 · 1 общих теговsniper pro.mq5MQL5 / MetaTrader 5 · 1 общих тегов
Вы автор или правообладатель?

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

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

О программе

Данный продукт представляет собой торговый советник для платформы MetaTrader 4, использующий индикатор MACD в сочетании со скользящей средней для фильтрации тренда. Советник анализирует текущие и предыдущие ценовые бары, формируя сигналы на открытие сделок в направлениях BUY и SELL.

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

На графике отображается информационная панель с данными о балансе, эквити, текущей прибыли, дневной и недельной доходности, а также спреде и времени. Советник способен автоматически закрывать все позиции при достижении заданной цели по прибыли в долларах.

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

НастройкаОписание
M Тип скользящей средней — Текстовый параметр, обозначающий тип применяемой скользящей средней.
EMA1 Период скользящей средней — Период скользящей средней, используемой для определения тренда и фильтрации сигналов открытия позиций.
shift1 Сдвиг скользящей средней — Сдвиг (баров) скользящей средней для определения значения тренда.
MODE_MA1 Метод скользящей средней — Метод расчёта скользящей средней (например, простая, экспоненциальная и другие доступные режимы).
apply1 Применяемая цена — Применяемая цена для расчёта скользящей средней (закрытие, открытие, высокая, низкая и другие).
MA Название индикатора — Текстовый параметр, задающий название применяемого технического индикатора.
Fast_Macd1 Быстрая линия MACD — Быстрая линия индикатора MACD, задающая параметр расчёта макродифференции.
Slow_Macd1 Медленная линия MACD — Медленная линия индикатора MACD, задающая параметр сглаживания.
Signal_Macd1 Период сигнальной линии MACD — Период сигнальной линии индикатора MACD.
Lot1 Фиксированный лот — Фиксированный размер лота для открытия позиций при отключённом автоматическом расчёте.
Auto_Lots Автоматический расчёт лота — Переключатель автоматического расчёта размера лота на основе заданного риска от баланса счёта. При включении лот вычисляется пропорционально балансу и параметру MaxRisk.
MaxRisk Максимальный риск — Максимальный риск в процентах от баланса счёта, используемый при автоматическом расчёте размера лота.
TakeProfit Тейк-профит — Уровень тейк-профита в пунктах для каждой открытой позиции.
StopLoss Стоп-лосс — Уровень стоп-лосса в пунктах для каждой открытой позиции.
win_USD Целевая прибыль в долларах — Целевая прибыль в долларах. При достижении указанной суммы все открытые позиции закрываются автоматически.
Max_SPREAD Максимальный спред — Максимально допустимый спред в пунктах для открытия новых позиций.
Time_Start Время начала торговли — Время начала торгового окна в формате ЧЧ:ММ. Позиции не открываются до указанного времени.
Time_End Время окончания торговли — Время окончания торгового окна в формате ЧЧ:ММ. Позиции не открываются после указанного времени.
Multiplication Масштабирование лотов — Переключатель, активирующий режим масштабирования лотов при добавлении позиций.
Multiplication_info Информация о масштабировании — Текстовая подсказка с описанием доступных режимов масштабирования лотов.
Multiplication_Mode Режим масштабирования — Режим расчёта лота при масштабировании: фиксированный, аддитивный или мультипликативный.
Step Шаг для дополнительных ордеров — Шаг в пунктах, при достижении которого открываются дополнительные позиции в режиме масштабирования.
Max_Open Максимальное количество ордеров — Максимальное количество дополнительных ордеров, допускаемых в режиме масштабирования позиций.
MagicNumber Магический номер — Уникальный магический номер для идентификации ордеров, открытых данным советником.
Получить полный код

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

#property version   "1.00"
#property strict
extern string M="Moving Average";
extern int EMA1 = 50;
extern int shift1=0;
input ENUM_MA_METHOD MODE_MA1 = 0;
input ENUM_APPLIED_PRICE apply1=PRICE_CLOSE;
 input string MA="MACD";
 input int Fast_Macd1=12;
 input int Slow_Macd1=26;
 input int Signal_Macd1=9;

extern double Lot1=0.1;
extern bool Auto_Lots=false;
extern double  MaxRisk = 0.01;    
extern int  TakeProfit=30;
extern int StopLoss=0;
 extern int win_USD=0;
 input double Max_SPREAD=5;
 extern string Time_Start="00:00";
extern string Time_End="23:59"; 
extern bool Multiplication=true;
input string Multiplication_info = "0=1,1,1,1....    1=1,2,3,4,5....    2=1,2,4,8,16....    3=1,3,9,27....";
extern int Multiplication_Mode = 2;
input int Step=20;
input int Max_Open=20;
extern int MagicNumber=452;

double ST;
double pt,pr;
string nam_B,nam_S,nam_B1,nam_S1;
double Price_S,openprice,LB1,lotall,lota2; 
color color_pofet,clr,color_pofet2,color_pofet3,color_pofet4;
int OP,Type;string T;
double Profit;
datetime TB,TS,TA1,TA2,TB2,TS2;
double P;
double lotaB,lotaS,LS1;

double openpriceb,openprices;
double DD;
datetime TIMx,TIM,TIMXW,TIMXW2,TSC,TBC;
int BB,SS,BBX,SSX,QQ;
double Step1,ST1,ST2,ST3,ST4,ST5,ST6,ST7,ST8,ST9,ST10,ST11,ST12,ST13,ST14,ST15,ST16,ST17,ST18,ST19,ST20;
 double Buy_Line,Sell_Line;
double buy_Take,sell_Take;

 double Price_buy,Price_sell,slx,tpx;
int Ticket_b,Ticket_s,GG;
double EMA1_M1,EMA1_M0;

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

void OnDeinit(const int reason)
  {
Comment("");
  for(int i=ObjectsTotal()-1;i>=0;i--)
  {
   string name=ObjectName(0,i);
   if(StringSubstr(name,0,6)=="Panel_")
   {
    ObjectDelete(0,name);
   }
  }

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

int open(int ty,double lott,double prc,int pof,int sll)
   {
     double sl=0,tp=0;

     bool modi;

     if(ty==OP_BUY || ty==OP_BUYSTOP || ty==OP_BUYLIMIT)
        {
         if(sll>0){sl=prc-(sll*pt);}else{sl=0;}
         if(pof>0){tp=prc+(pof*pt);}else{tp=0;}
         clr=Green;
         T="Ask ";
         pr=NormalizeDouble(Ask,Digits);
        }
     if(ty==OP_SELL || ty==OP_SELLSTOP || ty==OP_SELLLIMIT)
       { 
         if(sll>0){sl=prc+(sll*pt);}else{sl=0;}
         if(pof>0){tp=prc-(pof*pt);}else{tp=0;}
         clr=Red;
         T="Bid";
         pr=NormalizeDouble(Bid,Digits);
       }     
         int tik=OrderSend(Symbol()
                ,ty
                ,lott
                ,NormalizeDouble(prc,Digits)
                ,10
                ,0
                ,0
                ,""
                ,MagicNumber
                ,0
                ,clr);
          string t;
            if(ty==OP_BUY)t="BUY";if(ty==OP_SELL)t="SELL";if(ty==OP_BUYSTOP)t="BUY STOP";if(ty==OP_SELLSTOP)t="SELL STOP";if(ty==OP_BUYLIMIT)t="BUY LIMIT";if(ty==OP_SELLLIMIT)t="SELL LIMIT";
      if(tik>0&&OrderModifyCheck(tik,prc,sl,tp)&&(CheckStopLoss_Takeprofit(ORDER_TYPE_BUY,sl,tp)||CheckStopLoss_Takeprofit(ORDER_TYPE_SELL,sl,tp)))
         {
          if(tp>0 || sl>0)modi=OrderModify(tik,prc,NormalizeDouble(sl,Digits),NormalizeDouble(tp,Digits),0,CLR_NONE);   else modi=true;
          if(!modi){Print("Modify Err#= ",GetLastError(),"   ",Symbol()," ",Period(),"   Open Price= ",DoubleToStr(prc,Digits),"   SL= ",DoubleToStr(sl,Digits),"   Tp= ",DoubleToStr(tp,Digits));} 
           Print("Order Opened successfully   " ,"Type   ",t,"  LotSize   ",lott,"  Price   ",DoubleToStr(prc,Digits),"  TP   ",DoubleToStr(tp,Digits),"  SL   ",DoubleToStr(sl,Digits));
         }
         else
           {
            Print("OrderSend failed with error #",GetLastError(), " Type ",t,"   LotSize= ",lott,"   ",T,"Now= ",DoubleToStr(pr,Digits),"   Price= ",DoubleToStr(prc,Digits),"   TP= ",DoubleToStr(tp,Digits),"   SL= ",DoubleToStr(sl,Digits),"   Spread= ",MarketInfo(Symbol(),MODE_SPREAD));
           }

         return(tik);

}  

 int ordestotal1_2(int type)//Function controlling the number of trades
{ 
int total_2=0; 
for(int b=0;b<OrdersTotal();b++){ 
if(OrderSelect(b,SELECT_BY_POS,MODE_TRADES))
if(OrderSymbol()==Symbol()&&MagicNumber==OrderMagicNumber()&&OrderType()==type){ 
total_2++; 
} 
} 
return(total_2); 
} 

int ordestotal1()
{ 
int total_2=0; 
for(int b=0;b<OrdersTotal();b++){ 
if(OrderSelect(b,SELECT_BY_POS,MODE_TRADES))
if(OrderSymbol()==Symbol()&&MagicNumber==OrderMagicNumber()){ 
total_2++; 
} 
} 
return(total_2); 
} 

int ordestotal1_3()
{ 
int total_2=0; 
for(int b=0;b<OrdersTotal();b++){ 
if(OrderSelect(b,SELECT_BY_POS,MODE_TRADES))
if(MagicNumber==OrderMagicNumber()){ 
total_2++; 
} 
} 
return(total_2); 
} 

 bool CloseDeleteAll()//Function to close trades together
{
    int total  = OrdersTotal();
      for (int cnt = total-1 ; cnt >=0 ; cnt--)
      {
         if(OrderSelect(cnt,SELECT_BY_POS,MODE_TRADES))

         if(OrderSelect(cnt,SELECT_BY_POS,MODE_TRADES)) 
         {
         if(OrderSymbol()==Symbol()&&MagicNumber==OrderMagicNumber()){
            switch(OrderType())
            {
               case OP_BUY       :
               {
                  if(!OrderClose(OrderTicket(),OrderLots(),MarketInfo(OrderSymbol(),MODE_BID),0,Violet))
                     return(false);
               }break;                  
               case OP_SELL      :
               {
                  if(!OrderClose(OrderTicket(),OrderLots(),MarketInfo(OrderSymbol(),MODE_ASK),0,Violet))
                     return(false);
               }break;
            }             

            if(OrderType()==OP_BUYSTOP || OrderType()==OP_SELLSTOP || OrderType()==OP_BUYLIMIT || OrderType()==OP_SELLLIMIT)
               if(!OrderDelete(OrderTicket()))
               { 
                  Print("Error deleting " + (string)OrderType() + " order : ",GetLastError());
                  return (false);
             }  }
          }
      }
      return (true);
}

void line(string name, double pr1,color clrr, int style)
    {
     if(ObjectFind(name) != 0)
        {
         ObjectCreate(name, OBJ_HLINE, 0, 0,pr1);
         ObjectSet(name, OBJPROP_COLOR, clrr);
         ObjectSet(name, OBJPROP_STYLE, style);
       } 
       else{if(ObjectGet(name,OBJPROP_PRICE1)!=pr1)
         {ObjectDelete(name);}}
   }

 bool CloseDeleteAll2(int Typez)//Function to close trades together
{
    int total  = OrdersTotal();
      for (int cnt = total-1 ; cnt >=0 ; cnt--)
      {
         if(OrderSelect(cnt,SELECT_BY_POS,MODE_TRADES))

         if(OrderSelect(cnt,SELECT_BY_POS,MODE_TRADES)) 
         {
         if(OrderSymbol()==Symbol()&&MagicNumber==OrderMagicNumber()&&OrderType()==Typez){
            switch(OrderType())
            {
               case OP_BUY       :
               {
                  if(!OrderClose(OrderTicket(),OrderLots(),MarketInfo(OrderSymbol(),MODE_BID),0,Violet))
                     return(false);
               }break;                  
               case OP_SELL      :
               {
                  if(!OrderClose(OrderTicket(),OrderLots(),MarketInfo(OrderSymbol(),MODE_ASK),0,Violet))
                     return(false);
               }break;
            }             

            if(OrderType()==OP_BUYSTOP || OrderType()==OP_SELLSTOP || OrderType()==OP_BUYLIMIT || OrderType()==OP_SELLLIMIT)
               if(!OrderDelete(OrderTicket()))
               { 
                  Print("Error deleting " + (string)OrderType() + " order : ",GetLastError());
                  return (false);
             }  }
          }
      }
      return (true);
}

  double Lots(double risk)
   {
    double Lot;
    if(Auto_Lots)
       { 
        if(risk>1)risk=1;

        double Min_Lot = MarketInfo(Symbol(), MODE_MINLOT);
        double Max_Lot = MarketInfo(Symbol(), MODE_MAXLOT);
        double lot_step= MarketInfo(Symbol(), MODE_LOTSTEP);
        Lot=NormalizeDouble(AccountBalance()*risk/100/10,2);
        Lot=NormalizeDouble(Lot,2);
        Lot=NormalizeDouble(Lot/lot_step,0)*lot_step;
        if (Lot < Min_Lot) Lot = Min_Lot; 
        if (Lot > Max_Lot) Lot = Max_Lot;

       }
      else
      {
         if(Lot1>MarketInfo(Symbol(),MODE_MAXLOT))
            {Lot=MarketInfo(Symbol(),MODE_MAXLOT);}
         else if(Lot1<MarketInfo(Symbol(),MODE_MINLOT))
           {Lot=MarketInfo(Symbol(),MODE_MINLOT);}
         else if(MathMod(Lot1,MarketInfo(Symbol(),MODE_LOTSTEP))>0)
           {
            double R=MathMod(Lot1,MarketInfo(Symbol(),MODE_LOTSTEP))/100 ;
            Lot=NormalizeDouble(Lot1-R,2) ;
           }
         else
           {
            Lot=Lot1;
           }
      }

    return(Lot);
   }

  double pofet(){ //Function to determine the profit size of open trades

 double pr_2=0;
 for(int p=0;p<OrdersTotal();p++){
 if(OrderSelect(p,SELECT_BY_POS,MODE_TRADES))
 if(OrderSymbol()==Symbol()&&MagicNumber==OrderMagicNumber()){
 pr_2+=(OrderProfit()+OrderCommission()+OrderSwap());
}
 }return(pr_2);
 }

void samir(string a_name_0, double a_corner_8, int a_y_16, int a_x_20, string a_text_24, int a_fontsize_32, string a_fontname_36, color a_color_44) {
   ObjectCreate(a_name_0, OBJ_LABEL, 0, 0, 0);
   ObjectSetText(a_name_0, a_text_24, a_fontsize_32, a_fontname_36, a_color_44);
   ObjectSet(a_name_0, OBJPROP_CORNER, a_corner_8);
   ObjectSet(a_name_0, OBJPROP_XDISTANCE, a_x_20);
   ObjectSet(a_name_0, OBJPROP_YDISTANCE, a_

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

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

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

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

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

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

Стоимость полного кода
2 446₽ ≈ $29.89