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