candlestick alerts.mq5
Сообщите нам, если считаете, что материал размещён без разрешения.
Сообщить о материале
Обращение по товару «candlestick alerts.mq5» отправится на рассмотрение. Укажите контакт для ответа и опишите причину.
О программе
Индикатор для MetaTrader 4, который обнаруживает классические свечные паттерны разворота на графике цены. Он распознаёт бычьи паттерны (Engulfing, Piercing, Morning Star, Hammer, Harami, Cross) и медвежьи паттерны (Engulfing, Dark Cloud, Evening Star, Shooting Star, Harami, Cross), отображая их в виде стрелок, текстовых меток и трендовых линий непосредственно на ценовом графике.
Для определения текущего тренда индикатор использует скользящую среднюю EMA с периодом 5, а для позиционирования меток и стрелок применяется ATR. Параметр step задаёт глубину анализа баров. Логика распознавания различает бычьи и медвежьи паттерны в зависимости от направления тренда.
Индикатор оснащён системой уведомлений: всплывающие сообщения, push-уведомления, email-рассылка и звуковые сигналы — каждый из типов можно включить или отключить отдельно. Также доступна настройка отображения линий, удаления объектов при развороте тренда и выбора цветов для бычьих и медвежьих маркеров.
Настройки программы
| Настройка | Описание |
|---|---|
| lines | lines — Включает или отключает отображение трендовых линий на графике |
| step | step — Целочисленный параметр, задающий глубину анализа баров |
| Dell | Dell — Включает или отключает автоматическое удаление объектов при развороте тренда |
| ___ | ___ — Текстовый параметр с значением по умолчанию "Alerts" |
| displayAlert | displayAlert — Включает или отключает отображение всплывающих алертов при обнаружении паттерна |
| alertsMessage | alertsMessage — Включает или отключает всплывающие сообщения на графике |
| alertsSound | alertsSound — Включает или отключает звуковые оповещения |
| alertsNotify | alertsNotify — Включает или отключает push-уведомления |
| alertsEmail | alertsEmail — Включает или отключает отправку email-уведомлений при обнаружении паттерна |
| alertsSoundName | alertsSoundName — Имя звукового файла для воспроизведения при оповещении |
| arrowDisplacement | arrowDisplacement — Смещение стрелок относительно уровня цены в пунктах |
| textDisplacement | textDisplacement — Смещение текстовых меток относительно уровня цены в пунктах |
| lineUpColor | lineUpColor — Цвет линий и меток для бычьих паттернов |
| lineDnColor | lineDnColor — Цвет линий и меток для медвежьих паттернов |
Поиск по коду файла
#property indicator_chart_window
#property indicator_buffers 2
#property indicator_color1 clrLime
#property indicator_color2 clrRed
extern bool lines = true;
extern int step = 500;
extern bool Dell = true;
extern string ___ = "Alerts";
extern bool displayAlert = true;
extern bool alertsMessage = true;
extern bool alertsSound = true;
extern bool alertsNotify = false;
extern bool alertsEmail = false;
extern string alertsSoundName = "alert1.wav";
extern double arrowDisplacement = 1.0;
extern double textDisplacement = 1.5;
extern color lineUpColor = clrLimeGreen;
extern color lineDnColor = clrRed;
double ExtMapBuffer1[];
double ExtMapBuffer2[];
int init()
{
// код доступен только после оплаты
}
int deinit()
{
ObjectsDeleteAll(0,OBJ_TEXT);
ObjectsDeleteAll(0,OBJ_ARROW);
ObjectsDeleteAll(0,OBJ_TREND);
return(0);
}
void SetArrow(int sh, datetime tm, double pr, int cod,color clr)
{
ObjectCreate("Arrow-"+sh,OBJ_ARROW,0,tm,pr);
ObjectSet("Arrow-"+sh,OBJPROP_ARROWCODE,cod);
ObjectSet("Arrow-"+sh,OBJPROP_COLOR,clr);
}
void SetArrow1(int sh, datetime tm, double pr, int cod,color clr)
{
ObjectCreate("Arrow+"+sh,OBJ_ARROW,0,tm,pr);
ObjectSet("Arrow+"+sh,OBJPROP_ARROWCODE,cod);
ObjectSet("Arrow+"+sh,OBJPROP_COLOR,clr);
}
void SetText(int sh,datetime tm,double pr,string text,color clr)
{
ObjectCreate("x"+sh,OBJ_TEXT,0,tm,pr);
ObjectSetText("x"+sh,text);
ObjectSet("x"+sh,OBJPROP_COLOR,clr);
}
void SetText1(int sh,datetime tm,double pr,string text,color clr)
{
ObjectCreate("y"+sh,OBJ_TEXT,0,tm,pr);
ObjectSetText("y"+sh,text);
ObjectSet("y"+sh,OBJPROP_COLOR,clr);
}
void Setline(int sh,datetime tm,double pr,datetime tm1,double pr1, color clr)
{
ObjectCreate("-"+sh,OBJ_TREND,0,tm,pr,tm1,pr1,clr);
ObjectSet("-"+sh,7,STYLE_SOLID);
ObjectSet("-"+sh,10,false);
ObjectSet("-"+sh,6,clr);
}
void Setline1(int sh,datetime tm,double pr,datetime tm1,double pr1, color clr)
{
ObjectCreate("+"+sh,OBJ_TREND,0,tm,pr,tm1,pr1,clr);
ObjectSet("+"+sh,7,STYLE_SOLID);
ObjectSet("+"+sh,10,false);
ObjectSet("+"+sh,6,clr);
}
int start()
{
// код доступен только после оплаты
}
int counted_bars=IndicatorCounted();
int myBars=0, StartBar=0;//, Kedip(false);
int shift=0, shift1=0, shift2=0, shift3=0;
bool BullEngulf=False, MorningStar=False, BullPierce=False, Hammer=False,Name=false,Arrow=false;
bool BearEngulf=False, EveningStar=False, DarkCloud=False, Shooter=False,Name1=false,Arrow1=false;
bool BullHarami=False, BearHarami=false, BullCross=false, BearCross=false,up=false,down=false;
int limit,n,a,b,x, doji=false;
double l[1000] ,h[1000];
int p3[100],x1[100];
p3[1]=0;
if(myBars!=Bars)
{
myBars=Bars;
}
limit=step;//Bars-counted_bars;
for(shift=limit;shift>=0;shift--)
{
shift1=shift+1;
shift2=shift+2;
shift3=shift+3;
if ((iMA(NULL,0,5,0,MODE_EMA,PRICE_CLOSE,shift)>iMA(NULL,0,5,0,MODE_EMA,PRICE_CLOSE,shift1)) &&
(iMA(NULL,0,5,0,MODE_EMA,PRICE_CLOSE,shift1)>iMA(NULL,0,5,0,MODE_EMA,PRICE_CLOSE,shift2)) &&
(iMA(NULL,0,5,0,MODE_EMA,PRICE_CLOSE,shift2)>iMA(NULL,0,5,0,MODE_EMA,PRICE_CLOSE,shift3))) up=true;
else up=false;
if ((iMA(NULL,0,5,0,MODE_EMA,PRICE_CLOSE,shift)<iMA(NULL,0,5,0,MODE_EMA,PRICE_CLOSE,shift1)) &&
(iMA(NULL,0,5,0,MODE_EMA,PRICE_CLOSE,shift1)<iMA(NULL,0,5,0,MODE_EMA,PRICE_CLOSE,shift2)) &&
(iMA(NULL,0,5,0,MODE_EMA,PRICE_CLOSE,shift2)<iMA(NULL,0,5,0,MODE_EMA,PRICE_CLOSE,shift3))) down=true;
else down=false;
if (5 == Period()){a=7; b=3;} //a=text b= arrows
if (15 == Period()){a=15; b=5;}
if (60 == Period()){a=25; b=15;}
if (240 == Period()){a=30; b=20;}
if (1440 == Period()){a=35; b=25;}
if ((down)&&(Open[shift2]>Close[shift2]) && (Open[shift1]>Close[shift2]) && (Close[shift1]<Open[shift2]) &&
(Close[shift1]>Open[shift1]))
BullHarami=true;
else BullHarami=false;
if ((Open[shift2]>Close[shift2]) && (Open[shift1]>Close[shift2])&& (Open[shift1]<Open[shift2])&& (Close[shift1]>Open[shift2]))
BullCross=true;
else BullCross=false;
if((Close[shift2]<Open[shift2]) && (Open[shift1]<Close[shift2]) && //| l[shift1] < l[shift2]) &
(Close[shift1]>Open[shift2]))
BullEngulf=True;
else
BullEngulf=False;
if(!BullEngulf)
{
if((Close[shift2]<Open[shift2]) && (Close[shift1]>Open[shift1]) &&
((Open[shift1]<Close[shift2]) /*|| (Low[shift1]<Low[shift2])*/) &&
(Close[shift1]>Close[shift2]+((Open[shift2]-Close[shift2])/2)))
BullPierce=True;
else
BullPierce=False;
}
else
{
BullPierce=False;
}
if((Close[shift3]<Open[shift3]) && (Open[shift2]<Close[shift3]) && (Close[shift2]<Close[shift3]) &&
((Open[shift1]>Close[shift2]) && (Open[shift1]>Open[shift2])) && (Close[shift1]>=Close[shift3]))
MorningStar=True;
else
MorningStar=False;
if((Open[shift1]-Low[shift1]>MathMax(High[shift1]-Close[shift1],Close[shift1]-Open[shift1])*3) &&
(Close[shift1]-Low[shift1]>MathMax(High[shift1]-Close[shift1],Close[shift1]-Open[shift1])*3))
Hammer=True;
else
Hammer=False;
if ((up)&&(Open[shift2]<Close[shift2]) && (Open[shift1]<Close[shift2]) && (Close[shift1]>Open[shift2]) &&
(Close[shift1]<Open[shift1]))
BearHarami=true;
else BearHarami=false;
if ((Open[shift2]<Close[shift2]) && (Open[shift1]<Close[shift2])&&(Open[shift1]>Open[shift2])&& (Close[shift1]<Open[shift2]))
BearCross=true;
else BearCross=false;
if((Close[shift2]>Open[shift2]) && (Close[shift1]<Open[shift1]) && (Open[shift1]>Close[shift2]) &&
((Close[shift1]<Open[shift2]) ))
BearEngulf=True;
else
BearEngulf=False;
if(!BearEngulf)
{
if((Close[shift2]>Open[shift2]) && ((Open[shift1]>Close[shift2]) /*|| (High[shift1]>High[shift2]*/) &&
(Close[shift1]<Close[shift2]-((Close[shift2]-Open[shift2])/2)))
DarkCloud=True;
else
DarkCloud=False;
}
else
{
DarkCloud=False;
}
if((Close[shift3]>Open[shift3]) && (Open[shift2]>Close[shift3]) && (Close[shift2]>Close[shift3]) &&
((Open[shift1]<Close[shift2]) && (Open[shift1]<Open[shift2])) && (Close[shift1]<Close[shift3]))
EveningStar=True;
else
EveningStar=False;
if((up)&&(High[shift1]-Open[shift1]>MathMax(Close[shift1]-Low[shift1],Open[shift1]-Close[shift1])*3)&&
(High[shift1]-Close[shift1]>MathMax(Close[shift1]-Low[shift1],Open[shift1]-Close[shift1])*3))
Shooter=True;
else
Shooter=False;
if( (BullEngulf || BullPierce || MorningStar || BullHarami || BullCross ) &&
(Close[shift]>Close[shift1])&& Close[shift]>Open[shift1]){
Name=true;
Arrow=true;
}
else
{ExtMapBuffer1[shift] = 0.0; Name=false; Arrow=false; }
if( (BearEngulf || DarkCloud || EveningStar || Shooter || BearHarami || BearCross) &&
(Close[shift]<Close[shift1])&& Close[shift]<Open[shift1]){
Name1=true;
Arrow1=true;
}
else
{ExПоказано первые 50% кода (символов: 12045)
Открыть по тарифу
Купите тариф с пакетом открытий или войдите, если тариф уже есть. Открытый файл останется в вашем кабинете навсегда.
Разовая покупка файла
На этой странице откроется полный исходный код файла вместо ознакомительного фрагмента.
Зачем нужен email? После подтверждения оплаты файл сохранится в кабинете на этот email. Если аккаунта ещё нет, мы создадим его и пришлём ссылку для задания пароля. Если аккаунт уже есть, покупка добавится в него. Укажите адрес, к которому у вас есть доступ.
Чтобы оформить заказ, введите email и перейдите к оплате.