ea_xo_mt4 full.mq4
Сообщите нам, если считаете, что материал размещён без разрешения.
Сообщить о материале
Обращение по товару «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? После подтверждения оплаты файл сохранится в кабинете на этот email. Если аккаунта ещё нет, мы создадим его и пришлём ссылку для задания пароля. Если аккаунт уже есть, покупка добавится в него. Укажите адрес, к которому у вас есть доступ.
Чтобы оформить заказ, введите email и перейдите к оплате.