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

ea_xo_mt4 full.mq4

Вы автор или правообладатель?

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

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

О программе

Данный код представляет собой торговый советник для платформы MetaTrader 4, написанный на языке MQL4. Советник автоматически анализирует сигналы пользовательского индикатора XOIndAlerts и на их основе открывает или закрывает торговые позиции Buy и Sell.

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

Встроена система уведомлений: советник способен отправлять звуковые, текстовые и email-уведомления о событиях. Также реализована обработка ошибок торговых операций с повторными попытками выполнения.

Советник работает с ордерами типа Buy, Sell, BuyStop, SellStop, BuyLimit и SellLimit, поддерживая установку стоп-лосса и тейк-профита при открытии позиций. Время работы и параметры входа/выхода настраиваются пользователем.

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

НастройкаОписание
HourStart Час начала — Час начала разрешённой торговой сессии (от 0 до 24).
HourEnd Час окончания — Час окончания разрешённой торговой сессии (от 0 до 24).
Slippage Проскальзывание — Допустимое проскальзывание цены при выполнении торговых операций.
percent_lot Процент лота от маржи — Процент свободного маржинала, используемый для автоматического расчёта размера лота.
kLots Множитель лота — Множитель лота, используемый при увеличении объёма позиции при наличии открытых ордеров.
Enter Режим входа — Параметр, определяющий режим входа в позицию (целочисленное значение от 1 до 5).
Exit Режим выхода — Параметр, определяющий режим выхода из позиции (целочисленное значение от 1 до 5).
StopLoss Стоп-лосс — Уровень стоп-лосса в пунктах для открытых позиций.
TakeProfit Тейк-профит — Уровень тейк-профита в пунктах для открытых позиций.
MAGICMA Магический номер — Магический номер для идентификации ордеров, управляемых советником.
TimeFrame_EA Таймфрейм советника — Таймфрейм работы советника (строковое представление, например, "30").
TimeFrame Таймфрейм сигналов — Таймфрейм для анализа сигналов индикатора (строковое представление, например, "30").
BoxSize Размер бокса — Размер бокса, используемый для расчёта сигналов индикатора XOIndAlerts.
Получить полный код

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

???#property copyright "Ex4toMq4Decompiler MT4 Expert Advisors and Indicators Base of Source Codes"

extern int HourStart                =0;            
extern int HourEnd                  =24;           
extern double Slippage              = 3;           
extern double percent_lot           = 1;           
extern double kLots                 = 1.5;         
extern int Enter                    = 4;          
extern int Exit                     = 1;           
extern int StopLoss                 = 0;           
extern int TakeProfit               = 0;          
extern double MAGICMA               = 123;         

extern string TimeFrame_EA          = "30";
extern string TimeFrame             = "30";
extern double BoxSize               = 30;
bool   ShowArrows            = false;
string arrowsIdentifier      = "XOIndAlerts";
color  arrowsUpColor         = DeepSkyBlue;
color  arrowsDnColor         = PaleVioletRed;
bool   alertsOn              = false;
bool   alertsOnCurrent       = false;
bool   alertsMessage         = false;
bool   alertsSound           = false;
bool   alertsEmail           = false;

int iDigitLot;                                     // 
int iTicket; 
int iTF;                                      // 
double StopL,TakeP, Lot;
double min_lot, max_lot;
bool  errInit=false;

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

int deinit()
  {
   ObjectDelete("lot");
	return(0);
  }

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

double CalcLot(){
 double Free_margin = AccountFreeMargin();
 double One_Lot_cost = MarketInfo(Symbol(),MODE_MARGINREQUIRED);
 double Step_lot = MarketInfo(Symbol(),MODE_LOTSTEP);
 double lots = MathFloor(Free_margin*percent_lot/100/One_Lot_cost/Step_lot)*Step_lot;
 if (lots<min_lot) lots=min_lot;
 if (lots>max_lot) lots=max_lot;   
 return (lots);
} 

void comments(string name, int x, int y, int coin, string texto, color couleur){
    if(ObjectFind(name) == -1){ObjectCreate(name,OBJ_LABEL,0,0,0);}
    ObjectSet(name,OBJPROP_XDISTANCE,x);
    ObjectSet(name,OBJPROP_YDISTANCE,y);
    ObjectSet(name,OBJPROP_CORNER,coin);
    ObjectSetText(name,texto,10,"Times New Roman",couleur);
}

string sSignal(int iType){

   int iUP = iCustom(Symbol(),0,"XOIndAlerts",TimeFrame,BoxSize,ShowArrows,arrowsIdentifier,arrowsUpColor,arrowsDnColor,
                     alertsOn,alertsOnCurrent,alertsMessage,alertsSound,alertsEmail,0,1);
   int iUP_2 = iCustom(Symbol(),0,"XOIndAlerts",TimeFrame,BoxSize,ShowArrows,arrowsIdentifier,arrowsUpColor,arrowsDnColor,
                     alertsOn,alertsOnCurrent,alertsMessage,alertsSound,alertsEmail,0,2);                  
   int iDN = iCustom(Symbol(),0,"XOIndAlerts",TimeFrame,BoxSize,ShowArrows,arrowsIdentifier,arrowsUpColor,arrowsDnColor,
                     alertsOn,alertsOnCurrent,alertsMessage,alertsSound,alertsEmail,1,1);
   int iDN_2 = iCustom(Symbol(),0,"XOIndAlerts",TimeFrame,BoxSize,ShowArrows,arrowsIdentifier,arrowsUpColor,arrowsDnColor,
                     alertsOn,alertsOnCurrent,alertsMessage,alertsSound,alertsEmail,1,2);                  

         if(iType==OP_BUY){
            if(Exit==1 && Enter==1 && iDN < 0 && iUP_2 > 0){return("Sell");}
            if(Exit==1 && Enter==2 && iDN==(-2) && iDN_2==(-1)){return("Sell");}  
            if((Exit==3 || Exit==4 || Exit==5) && Enter==1 && iDN < 0 && iUP_2 > 0){
               return("Sell");
            }else{   
               if((Exit==3 || Exit==4 || Exit==5) && Enter==2 && iDN==(-2) && iDN_2==(-1)){return("Sell");}
               if((Exit==3 || Exit==4 || Exit==5) && iDN < 0 && iUP_2 > 0){return("Close");}
               if(Exit==3 && iUP==3){return("Close");}
               if(Exit==4 && iUP==4){return("Close");} 
               if(Exit==5 && iUP==5){return("Close");}
               if(Exit==1 && iDN < 0 && iUP_2 > 0){return("Close");}        
            }

            if(Exit==1 && Enter==3 && iUP==3 && iUP_2==2){return("Buy");}
            if(Exit==1 && Enter==4 && iUP==3 && iUP_2==2){return("Buy");}
            if(Exit==1 && Enter==4 && iUP==4 && iUP_2==3){return("Buy");}
            if(Exit==1 && Enter==4 && iUP==5 && iUP_2==4){return("Buy");} 

         }else{
            if(iType==OP_SELL){
               if(Exit==1 && Enter==1 && iUP > 0 && iDN_2 < 0){return("Buy");}
               if(Exit==1 && Enter==2 && iUP==2 && iUP_2==1){return("Buy");}   
               if((Exit==3 || Exit==4 || Exit==5) && Enter==1 && iUP > 0 && iDN_2 < 0){
                  return("Buy");
               }else{
                  if((Exit==3 || Exit==4 || Exit==5) && Enter==2 && iUP==2 && iUP_2==1){return("Buy");}
                  if((Exit==3 || Exit==4 || Exit==5) && iUP > 0 && iDN_2 < 0){return("Close");}
                  if(Exit==3 && iDN==(-3)){return("Close");}
                  if(Exit==4 && iDN==(-4)){return("Close");} 
                  if(Exit==5 && iDN==(-5)){return("Close");}
                  if(Exit==1 && iUP > 0 && iDN_2 < 0){return("Close");}      
               }

               if(Exit==1 && Enter==3 && iDN==(-3) && iDN_2==(-1)){return("Sell");}
               if(Exit==1 && Enter==4 && iDN==(-3) && iDN_2==(-2)){return("Sell");}
               if(Exit==1 && Enter==4 && iDN==(-4) && iDN_2==(-3)){return("Sell");}
               if(Exit==1 && Enter==4 && iDN==(-5) && iDN_2==(-4)){return("Sell");} 

            }else{
               if(iType==(-1)){
                  if(Enter==1 && iDN < 0 && iUP_2 > 0){return("Sell");}   // Exit==1 && 
                  if(Enter==1 && iUP > 0 && iDN_2 < 0){return("Buy");} 
                  if(Enter==2 && iDN==(-2) && iDN_2==(-1)){return("Sell");}  // Exit==2 && 
                  if(Enter==2 && iUP==2 && iUP_2==1){return("Buy");}

                  if(Exit==1 && Enter==3 && iUP==3 && iUP_2==2){return("Buy");}
                  if(Exit==1 && Enter==4 && iUP==3 && iUP_2==2){return("Buy");}

                  if(Exit==1 && Enter==3 && iDN==(-3) && iDN_2==(-2)){return("Sell");}
                  if(Exit==1 && Enter==4 && iDN==(-3) && iDN_2==(-2)){return("Sell");}

               }   
            }

         }

     return("NOT");                   

}

bool InfoisNewBar(string _symbol, int _tf, bool _isCurNew){ static datetime sTimeBar = 0; if(sTimeBar==0 && !_isCurNew) sTimeBar = iTime(Symbol(),_tf,0); if(sTimeBar==0 || sTimeBar!=iTime(Symbol(),_tf,0)){ sTimeBar=iTime(Symbol(),_tf,0); return(true); } return(false); }

int InfoGetLotDigit(string symbol){ return(MathCeil(MathAbs(MathLog( MarketInfo(Symbol(), MODE_MINLOT) )/MathLog(10)))); }

int OrdersGetCount(string _symbol, int _type, int _magic, string _comm, datetime minOpenTime, datetime maxOpenTime){ int iCount=0; if(O

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

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

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

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

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

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

Стоимость полного кода
1 423,30₽ ≈ $17.40