mymacd4ver2.mq4
Похожие материалы по тегам
Сообщите нам, если считаете, что материал размещён без разрешения.
Сообщить о материале
Обращение по товару «mymacd4ver2.mq4» отправится на рассмотрение. Укажите контакт для ответа и опишите причину.
О программе
Советник для платформы MetaTrader 4, использующий индикаторы MACD и экспоненциальную скользящую среднюю для анализа ценовых данных и формирования торговых сигналов. Перед открытием сделок выполняет проверку временного окна, количества баров на графике, доступного маржи и текущего числа открытых позиций. Поддерживает установку тейк-профита и трейлинг-стопа для управления позициями. При наступлении условий закрытия происходит закрытие текущих позиций и модификация стоп-лосса в соответствии с заданными параметрами.
Настройки программы
| Настройка | Описание |
|---|---|
| TakeProfit | Тейк-профит — Уровень фиксации прибыли в пунктах, устанавливаемый при открытии позиции. |
| Lots | Объём сделки — Размер лота, используемый при открытии новых позиций. |
| TrailingStop | Трейлинг-стоп — Расстояние в пунктах для трейлинг-стопа, применяемого к открытым позициям. |
| MACDOpenLevel | Уровень MACD для входа — Пороговое значение MACD, используемое при формировании условий открытия позиции. |
| MACDCloseLevel | Уровень MACD для закрытия — Пороговое значение MACD, предназначенное для условий закрытия позиции. |
| MATrendPeriod | Период скользящей средней — Период расчёта экспоненциальной скользящей средней, используемой для определения направления тренда. |
| OpenTimeStart | Начало окна открытия — Время начала допустимого интервала для открытия новых позиций в формате ЧЧММ. |
| OpenTimeEnd | Конец окна открытия — Время окончания допустимого интервала для открытия новых позиций в формате ЧЧММ. |
| CloseTime | Время закрытия — Параметр времени, связанный с логикой закрытия позиций. |
| mytime | Текущее время — Внутренний параметр, хранящий текущее время в формате ЧЧММ, используемый для проверки временных условий. |
Поиск по коду файла
extern double TakeProfit = 50;
extern double Lots = 1.0;
extern double TrailingStop = 30;
extern double MACDOpenLevel=3;
extern double MACDCloseLevel=2;
extern double MATrendPeriod=26;
extern double OpenTimeStart=1530;
extern double OpenTimeEnd=1730;
extern double CloseTime=2300;
extern int mytime = -1;
int init()
{
// код доступен только после оплаты
}
bool CheckMargin()
{
if(AccountFreeMargin()<(1000*Lots))
{
Print("We have no money. Free Margin = ", AccountFreeMargin());
return(0);
}
else return(1);
}
bool CheckBars()
{
if(Bars<100)
{
Print("bars less than 100");
return(0);
}
else return(1);
}
bool CheckProfit()
{
if(TakeProfit<10)
{
Print("TakeProfit less than 10");
return(0);
}
else return(1);
}
int PrintTime()
{
Print("Time:",mytime);
}
bool CheckTime()
{
if(mytime < OpenTimeStart || mytime > OpenTimeEnd)
{
return(0);
}
else return(1);
}
bool BuyConditionsMet()
{
double MacdCurrent, MacdPrevious, SignalCurrent;
double SignalPrevious, MaCurrent, MaPrevious;
MacdCurrent=iMACD(NULL,0,12,26,9,PRICE_CLOSE,MODE_MAIN,0);
MacdPrevious=iMACD(NULL,0,12,26,9,PRICE_CLOSE,MODE_MAIN,1);
SignalCurrent=iMACD(NULL,0,12,26,9,PRICE_CLOSE,MODE_SIGNAL,0);
SignalPrevious=iMACD(NULL,0,12,26,9,PRICE_CLOSE,MODE_SIGNAL,1);
MaCurrent=iMA(NULL,0,MATrendPeriod,0,MODE_EMA,PRICE_CLOSE,0);
MaPrevious=iMA(NULL,0,MATrendPeriod,0,MODE_EMA,PRICE_CLOSE,1);
if(
MacdCurrent<0 &&
MacdCurrent>SignalCurrent &&
MacdPrevious<SignalPrevious &&
MathAbs(MacdCurrent)>(MACDOpenLevel*Point) &&
MaCurrent>MaPrevious //&&
)
{return (1);}
else
{return (0);}
}
bool SellConditionsMet()
{
double MacdCurrent, MacdPrevious, SignalCurrent;
double SignalPrevious, MaCurrent, MaPrevious;
MacdCurrent=iMACD(NULL,0,12,26,9,PRICE_CLOSE,MODE_MAIN,0);
MacdPrevious=iMACD(NULL,0,12,26,9,PRICE_CLOSE,MODE_MAIN,1);
SignalCurrent=iMACD(NULL,0,12,26,9,PRICE_CLOSE,MODE_SIGNAL,0);
SignalPrevious=iMACD(NULL,0,12,26,9,PRICE_CLOSE,MODE_SIGNAL,1);
MaCurrent=iMA(NULL,0,MATrendPeriod,0,MODE_EMA,PRICE_CLOSE,0);
MaPrevious=iMA(NULL,0,MATrendPeriod,0,MODE_EMA,PRICE_CLOSE,1);
if(
MacdCurrent>0 &&
MacdCurrent<SignalCurrent &&
MacdPrevious>SignalPrevious &&
MacdCurrent>(MACDOpenLevel*Point) &&
MaCurrent>MaPrevious //&&
)
{return(1);}
else
{return(0);}
}
bool CheckOpenOrders()
{
if (OrdersTotal()> 1)
{
return(0);
}
else return(1);
}
int OpenBuyOrder()
{
int ticket = 0;
ticket=OrderSend(Symbol(),OP_BUY,Lots,Ask,3,0,Ask+TakeProfit*Point,"macd sample",16384,0,Green);
Print("BuyTime: ",mytime);
if(ticket>0)
{
if(OrderSelect(ticket,SELECT_BY_TICKET,MODE_TRADES))
{
Print("BUY order openedПоказано первые 50% кода (символов: 4349)
Открыть по тарифу
Купите тариф с пакетом открытий или войдите, если тариф уже есть. Открытый файл останется в вашем кабинете навсегда.
Разовая покупка файла
На этой странице откроется полный исходный код файла вместо ознакомительного фрагмента.
Зачем нужен email? После подтверждения оплаты файл сохранится в кабинете на этот email. Если аккаунта ещё нет, мы создадим его и пришлём ссылку для задания пароля. Если аккаунт уже есть, покупка добавится в него. Укажите адрес, к которому у вас есть доступ.
Чтобы оформить заказ, введите email и перейдите к оплате.