Pattern Recognition Hammer & Shooting ShootStar v1.0
Сообщите нам, если считаете, что материал размещён без разрешения.
Сообщить о материале
Обращение по товару «pattern_recognition_master_v7.mq5» отправится на рассмотрение. Укажите контакт для ответа и опишите причину.
О программе
Индикатор для MetaTrader 4, предназначенный для обнаружения и визуализации классических свечных паттернов на графике цены. Код основан на логике Jason Robinson с доработками формул Carl Sanders и исправлениями ошибок. Индикатор отрисовывает текстовые метки и стрелки для каждого обнаруженного паттерна непосредственно на ценном графике.
Поддерживается распознавание медвежьих паттернов (Shooting Star, Evening Star, Evening Doji Star, Dark Cloud Cover, Bearish Engulfing) и бычьих паттернов (Hammer, Morning Star, Morning Doji Star, Piercing Line, Bullish Engulfing). Для каждого паттерна предусмотрены три варианта обнаружения с различными пороговыми соотношениями длины тела свечи к теням.
Индикатор работает на всех таймфреймах (от M1 до MN), при этом параметры смещений и длин свечей адаптируются автоматически в зависимости от текущего периода. При обнаружении паттерна возможна отправка звукового уведомления через функцию Alert(). Вся логика расчёта выполняется в функции start() при каждом новом баре.
Настройки программы
| Настройка | Описание |
|---|---|
| Show_Alert | Показывать оповещения — Включает или отключает отправку звуковых уведомлений Alert при обнаружении любого паттерна |
| Display_ShootStar_2 | Отображение Shooting Star 2 — Включает или отключает отображение метки паттерна Shooting Star с соотношением верхней тени 1/2 на графике |
| Show_ShootStar_Alert_2 | Оповещение Shooting Star 2 — Включает или отключает отправку уведомления при обнаружении паттерна Shooting Star с соотношением тени 1/2 |
| Display_ShootStar_3 | Отображение Shooting Star 3 — Включает или отключает отображение метки паттерна Shooting Star с соотношением верхней тени 1/3 на графике |
| Show_ShootStar_Alert_3 | Оповещение Shooting Star 3 — Включает или отключает отправку уведомления при обнаружении паттерна Shooting Star с соотношением тени 1/3 |
| Display_ShootStar_4 | Отображение Shooting Star 4 — Включает или отключает отображение метки паттерна Shooting Star с соотношением верхней тени 1/4 на графике |
| Show_ShootStar_Alert_4 | Оповещение Shooting Star 4 — Включает или отключает отправку уведомления при обнаружении паттерна Shooting Star с соотношением тени 1/4 |
| Color_ShootStar | Цвет Shooting Star — Цвет меток и стрелок паттерна Shooting Star на графике |
| Display_Hammer_2 | Отображение Hammer 2 — Включает или отключает отображение метки паттерна Hammer с соотношением нижней тени 1/2 на графике |
| Show_Hammer_Alert_2 | Оповещение Hammer 2 — Включает или отключает отправку уведомления при обнаружении паттерна Hammer с соотношением тени 1/2 |
| Display_Hammer_3 | Отображение Hammer 3 — Включает или отключает отображение метки паттерна Hammer с соотношением нижней тени 1/3 на графике |
| Show_Hammer_Alert_3 | Оповещение Hammer 3 — Включает или отключает отправку уведомления при обнаружении паттерна Hammer с соотношением тени 1/3 |
| Display_Hammer_4 | Отображение Hammer 4 — Включает или отключает отображение метки паттерна Hammer с соотношением нижней тени 1/4 на графике |
| Show_Hammer_Alert_4 | Оповещение Hammer 4 — Включает или отключает отправку уведомления при обнаружении паттерна Hammer с соотношением тени 1/4 |
| Color_Hammer | Цвет Hammer — Цвет меток и стрелок паттерна Hammer на графике |
| Display_Doji | Отображение Doji — Включает или отключает отображение меток паттерна Doji Star (Evening и Morning) на графике |
| Show_Doji_Alert | Оповещение Doji — Включает или отключает отправку уведомления при обнаружении паттерна Doji Star |
| Color_Doji | Цвет Doji — Цвет меток и стрелок паттерна Doji Star на графике |
| Display_Stars | Отображение Star — Включает или отключает отображение меток паттернов Star (Evening Star и Morning Star) на графике |
| Show_Stars_Alert | Оповещение Star — Включает или отключает отправку уведомления при обнаружении паттерна Star (Evening/Morning Star) |
| Star_Body_Length | Длина тела Star — Максимальная длина тела свечи (в пунктах) для квалификации свечи как Star-паттерна |
| Color_Star | Цвет Star — Цвет меток и стрелок паттерна Star (Evening/Morning Star) на графике |
| Display_Dark_Cloud_Cover | Отображение Dark Cloud Cover — Включает или отключает отображение метки паттерна Dark Cloud Cover на графике |
| Show_DarkCC_Alert | Оповещение Dark Cloud Cover — Включает или отключает отправку уведомления при обнаружении паттерна Dark Cloud Cover |
| Color_DarkCC | Цвет Dark Cloud Cover — Цвет меток и стрелок паттерна Dark Cloud Cover на графике |
| Display_Piercing_Line | Отображение Piercing Line — Включает или отключает отображение метки паттерна Piercing Line на графике |
| Show_Piercing_Line_Alert | Оповещение Piercing Line — Включает или отключает отправку уведомления при обнаружении паттерна Piercing Line |
| Color_Piercing_Line | Цвет Piercing Line — Цвет меток и стрелок паттерна Piercing Line на графике |
| Display_Bearish_Engulfing | Отображение Bearish Engulfing — Включает или отключает отображение метки паттерна Bearish Engulfing на графике |
| Show_Bearish_Engulfing_Alert | Оповещение Bearish Engulfing — Включает или отключает отправку уведомления при обнаружении паттерна Bearish Engulfing |
| Color_Bearish_Engulfing | Цвет Bearish Engulfing — Цвет меток и стрелок паттерна Bearish Engulfing на графике |
| Display_Bullish_Engulfing | Отображение Bullish Engulfing — Включает или отключает отображение метки паттерна Bullish Engulfing на графике |
| Show_Bullish_Engulfing_Alert | Оповещение Bullish Engulfing — Включает или отключает отправку уведомления при обнаружении паттерна Bullish Engulfing |
| Color_Bullish_Engulfing | Цвет Bullish Engulfing — Цвет меток и стрелок паттерна Bullish Engulfing на графике |
Поиск по коду файла
#property indicator_chart_window
#property indicator_buffers 2
#property indicator_color1 Yellow
#property indicator_color2 Yellow
extern bool Show_Alert = true;
extern bool Display_ShootStar_2 = true;
extern bool Show_ShootStar_Alert_2 = true;
extern bool Display_ShootStar_3 = true;
extern bool Show_ShootStar_Alert_3 = true;
extern bool Display_ShootStar_4 = true;
extern bool Show_ShootStar_Alert_4 = true;
extern color Color_ShootStar = Red;
int Text_ShootStar = 8;
extern bool Display_Hammer_2 = true;
extern bool Show_Hammer_Alert_2 = true;
extern bool Display_Hammer_3 = true;
extern bool Show_Hammer_Alert_3 = true;
extern bool Display_Hammer_4 = true;
extern bool Show_Hammer_Alert_4 = true;
extern color Color_Hammer = Aqua;
int Text_Hammer = 8;
extern bool Display_Doji = true;
extern bool Show_Doji_Alert = true;
extern color Color_Doji = Red;
int Text_Doji = 8;
extern bool Display_Stars = true;
extern bool Show_Stars_Alert = true;
extern int Star_Body_Length = 5;
extern color Color_Star = Aqua;
int Text_Star = 8;
extern bool Display_Dark_Cloud_Cover = true;
extern bool Show_DarkCC_Alert = true;
extern color Color_DarkCC = Red;
int Text_DarkCC = 8;
extern bool Display_Piercing_Line = true;
extern bool Show_Piercing_Line_Alert = true;
extern color Color_Piercing_Line = Aqua;
int Text_Piercing_Line = 8;
extern bool Display_Bearish_Engulfing = true;
extern bool Show_Bearish_Engulfing_Alert = true;
extern color Color_Bearish_Engulfing = Red;
int Text_Bearish_Engulfing = 8;
extern bool Display_Bullish_Engulfing = true;
extern bool Show_Bullish_Engulfing_Alert = true;
extern color Color_Bullish_Engulfing = Aqua;
int Text_Bullish_Engulfing = 8;
double Pip;
int RoundTo;
double upArrow[];
double downArrow[];
int init() {
// код доступен только после оплаты
}
int deinit() {
ObjectsDeleteAll(0, OBJ_TEXT);
return(0);
}
int start(){
// код доступен только после оплаты
}
Comment("\n", "\n", "Bearish",
"\n", "SS 2,3,4 - Shooting Star",
"\n", "E_Star - Evening Star",
"\n", "E_Doji - Evening Doji Star",
"\n", "DCC - Dark Cloud Pattern",
"\n", "S_E - Bearish Engulfing Pattern",
"\n", "\n", "Bullish",
"\n", "HMR 2,3,4 - Bullish Hammer",
"\n", "M_Star - Morning Star",
"\n", "M_Doji - Morning Doji Star",
"\n", "P_L - Piercing Line Pattern",
"\n", "L_E - Bullish Engulfing Pattern");
double Range, AvgRange;
int counter, setalert;
static datetime prevtime = 0;
int shift;
int shift1;
int shift2;
int shift3;
int shift4;
string pattern, period;
int setPattern = 0;
int alert = 0;
int arrowShift;
int textShift;
double O, O1, O2, C, C1, C2, C3, L, L1, L2, L3, H, H1, H2, H3;
double CL, CLmin, CL1, CL2, BL, BLa, BL90, BL1, BL2, UW, UWa, UW1, UW2, LW, LWa, LW1, LW2, BodyHigh, BodyLow;
BodyHigh = 0;
BodyLow = 0;
double Doji_Star_Ratio = 0;
double Doji_MinLength = 0;
double Star_MinLength = 0;
int Pointer_Offset = 0; // The offset value for the arrow to be located off the candle high or low point.
int High_Offset = 0; // The offset value added to the high arrow pointer for correct plotting of the pattern label.
int Offset_ShootStar = 0; // The offset value of the shooting star above or below the pointer arrow.
int Offset_Hammer = 0; // The offset value of the hammer above or below the pointer arrow.
int Offset_Doji = 0; // The offset value of the doji above or below the pointer arrow.
int Offset_Star = 0; // The offset value of the star above or below the pointer arrow.
int Offset_Piercing_Line = 0; // The offset value of the piercing line above or below the pointer arrow.
int Offset_DarkCC = 0; // The offset value of the dark cloud cover above or below the pointer arrow.
int Offset_Bullish_Engulfing = 0;
int Offset_Bearish_Engulfing = 0;
int CumOffset = 0; // The counter value to be added to as more candle types are met.
int IncOffset = 0; // The offset value that is added to a cummaltive offset value for each pass through the routine so any
double Piercing_Line_Ratio = 0;
int Piercing_Candle_Length = 0;
int Engulfing_Length = 0;
double Candle_WickBody_Percent = 0;
int CandleLength = 0;
if(prevtime == Time[0]) {
return(0);
}
prevtime = Time[0];
switch (Period()) {
case 1:
period = "M1";
Doji_Star_Ratio = 0;
Piercing_Line_Ratio = 0.5;
Piercing_Candle_Length = 10;
Engulfing_Length = 10;
Candle_WickBody_Percent = 0.9;
CandleLength = 12;
Pointer_Offset = 9;
High_Offset = 15;
Offset_Hammer = 5;
Offset_ShootStar = 5;
Offset_Doji = 5;
Offset_Star = 5;
Offset_Piercing_Line = 5;
Offset_DarkCC = 5;
Offset_Bearish_Engulfing = 5;
Offset_Bullish_Engulfing = 5;
Text_ShootStar = 8;
Text_Hammer = 8;
Text_Star = 8;
Text_DarkCC = 8;
Text_Piercing_Line = 8;
Text_Bearish_Engulfing = 8;
Text_Bullish_Engulfing = 8;
IncOffset = 16;
break;
case 5:
period = "M5";
Doji_Star_Ratio = 0;
Piercing_Line_Ratio = 0.5;
Piercing_Candle_Length = 10;
Engulfing_Length = 10;
Candle_WickBody_Percent = 0.9;
CandleLength = 12;
Pointer_Offset = 9;
High_Offset = 15;
Offset_Hammer = 5;
Offset_ShootStar = 5;
Offset_Doji = 5;
Offset_Star = 5;
Offset_Piercing_Line = 5;
Offset_DarkCC = 5;
Offset_Bearish_Engulfing = 5;
Offset_Bullish_Engulfing = 5;
Text_ShootStar = 8;
Text_Hammer = 8;
Text_Star = 8;
Text_DarkCC = 8;
Text_Piercing_Line = 8;
Text_Bearish_Engulfing = 8;
Text_Bullish_Engulfing = 8;
IncOffset = 16;
break;
case 15:
period = "M15";
Doji_Star_Ratio = 0;
Piercing_Line_Ratio = 0.5;
Piercing_Candle_Length = 10;
Engulfing_Length = 0;
Candle_WickBody_Percent = 0.9;
CandleLength = 12;
Pointer_Offset = 9;
High_Offset = 15;
Offset_Hammer = 5;
Offset_ShootStar = 5;
Offset_Doji = 5;
Offset_Star = 5;
Offset_Piercing_Line = 5;
Offset_DarkCC = 5;
Offset_Bearish_Engulfing = 5;
Offset_Bullish_Engulfing = 5;
Text_ShootStar = 8;
Text_Hammer = 8;
Text_Star = 8;
Text_DarkCC = 8;
Text_Piercing_Line = 8;
Text_Bearish_Engulfing = 8;
Text_Bullish_Engulfing = 8;
IncOffset = 16;
break;
case 30:
period = "M30";
Doji_Star_Ratio = 0;
Piercing_Line_Ratio = 0.5;
Piercing_Candle_Length = 10;
Engulfing_Length = 15;
Candle_WickBody_Percent = 0.9;
CandleLength = 12;
Pointer_Offset = 9;
High_Offset = 15;
Offset_Hammer = 5;
Offset_ShootStar = 5;
Offset_Doji = 5;
Offset_Star = 5;
Offset_Piercing_Line = 5;
Offset_DarkCC = 5;
Offset_Bearish_Engulfing = 5;
Offset_Bullish_Engulfing = 5;
Text_ShootStar = 8;
Text_Hammer = 8;
Text_Star = 8;
Text_DarkCC = 8;
Text_Piercing_Line = 8;
Text_Bearish_Engulfing = 8;
Text_Bullish_Engulfing = 8;
IncOffset = 16;
break;
case 60:
period = "H1";
Doji_Star_Ratio = 0;
Piercing_Line_Ratio = 0.5;
Piercing_Candle_Length = 10;
Engulfing_Length = 25;
Candle_WickBody_Percent = 0.9;
CandleLength = 12;
Pointer_Offset = 9;
High_Offset = 20;
Offset_Hammer = 8;
Offset_ShootStar = 8;
Offset_Doji = 8;
Offset_Star = 8;
Offset_Piercing_Line = 8;
Offset_DarkCC = 8;
Offset_Bearish_Engulfing = 8;
Offset_Bullish_Engulfing = 8;
Text_ShootStar = 8;
Text_Hammer = 8;
Text_Star = 8;
Text_DarkCC = 8;
Text_Piercing_Line = 8;
Text_Bearish_Engulfing = 8;
Text_Bullish_Engulfing = 8;
IncOffset = 18;
break;
case 240:
period = "H4";
Doji_Star_Ratio = 0;
Piercing_Line_Ratio = 0.5;
Piercing_Candle_Length = 10;
Engulfing_Length = 20;
Candle_WickBody_Percent = 0.9;
CandleLength = 12;
Pointer_Offset = 20;
High_Offset = 40;
Offset_Hammer = 10;
Offset_ShootStar = 10;
Offset_Doji = 10;
Offset_Star = 10;
Offset_Piercing_Line = 10;
Offset_DarkCC = 10;
Offset_Bearish_Engulfing = 10;
Offset_Bullish_Engulfing = 10;
Text_ShootStar = 8;
Text_Hammer = 8;
Text_Star = 8;
Text_DarkCC = 8;
Text_Piercing_Line = 8;
Text_Bearish_Engulfing = 8;
Text_Bullish_Engulfing = 8;
IncOffset = 25;
break;
case 1440:
period = "D1";
Doji_Star_Ratio = 0;
Piercing_Line_Ratio = 0.5;
Piercing_Candle_Length = 10;
Engulfing_Length = 30;
Candle_WickBody_Percent = 0.9;
CandleLength = 12;
Pointer_Offset = 9;
High_Offset = 80;
Offset_Hammer = 15;
Offset_ShootStar = 15;
Offset_Doji = 15;
Offset_Star = 15;
Offset_Piercing_Line = 15;
Offset_DarkCC = 15;
Offset_Bearish_Engulfing = 15;
Offset_Bullish_Engulfing = 15;
Text_ShootStar = 8;
Text_Hammer = 8;
Text_Star = 8;
Text_DarkCC = 8;
Text_Piercing_Line = 8;
Text_Bearish_Engulfing = 8;
Text_Bullish_Engulfing = 8;
IncOffset = 60;
break;
case 10080:
period = "W1";
Doji_Star_Ratio = 0;
Piercing_Line_Ratio = 0.5;
Piercing_Candle_Length = 10;
Engulfing_Length = 40;
Candle_WickBody_Percent = 0.9;
CandleLength = 12;
Pointer_Offset = 9;
High_Offset = 35;
Offset_Hammer = 20;
Offset_ShootStar = 20;
Offset_Doji = 20;
Offset_Star = 20;
Offset_Piercing_Line = 20;
Offset_DarkCC = 20;
Offset_Bearish_Engulfing = 20;
Offset_Bullish_Engulfing = 20;
Text_ShootStar = 8;
Text_Hammer = 8;
Text_Star = 8;
Text_DarkCC = 8;
Text_Piercing_Line = 8;
Text_Bearish_Engulfing = 8;
Text_Bullish_Engulfing = 8;
IncOffset = 35;
break;
case 43200:
period = "MN";
Doji_Star_Ratio = 0;
Piercing_Line_Ratio = 0.5;
Piercing_Candle_Length = 10;
Engulfing_Length = 50;
Candle_WickBody_Percent = 0.9;
CandleLength = 12;
Pointer_Offset = 9;
High_Offset = 45;
Offset_Hammer = 30;
Offset_ShootStar = 30;
Offset_Doji = 30;
Offset_Star = 30;
Offset_Piercing_Line = 30;
Offset_DarkCC = 30;
Offset_Bearish_Engulfing = 30;
Offset_Bullish_Engulfing = 30;
Text_ShootStar = 8;
Text_Hammer = 8;
Text_Star = 8;
Text_DarkCC = 8;
Text_Piercing_Line = 8;
Text_Bearish_Engulfing = 8;
Text_Bullish_Engulfing = 8;
IncOffset = 45;
break;
}
for (shift = 0; shift < Bars; shift++) {
CumOffset = 0;
setalert = 0;
counter=shift;
Range=0;
AvgRange=0;
for (counter=shift ;counter<=shift+9;counter++) {
AvgRange=AvgRange+MathAbs(NormalizeDouble(High[counter],RoundTo)-NormalizeDouble(Low[counter],RoundTo));
}
Range=AvgRange/10;
shift1 = shift + 1;
shift2 = shift + 2;
shift3 = shift + 3;
shift4 = shift + 4;
O = NormalizeDouble(Open[shift1],RoundTo);
O1 = NormalizeDouble(Open[shift2],RoundTo);
O2 = NormalizeDouble(Open[shift3],RoundTo);
H = NormalizeDouble(High[shift1],RoundTo);
H1 = NormalizeDouble(High[shift2],RoundTo);
H2 = NormalizeDouble(High[shift3],RoundTo);
H3 = NormalizeDouble(High[shift4],RoundTo);
L = NormalizeDouble(Low[shift1],RoundTo);
Показано первые 50% кода (символов: 18655)
Открыть по тарифу
Купите тариф с пакетом открытий или войдите, если тариф уже есть. Открытый файл останется в вашем кабинете навсегда.
Разовая покупка файла
На этой странице откроется полный исходный код файла вместо ознакомительного фрагмента.
Зачем нужен email? После подтверждения оплаты файл сохранится в кабинете на этот email. Если аккаунта ещё нет, мы создадим его и пришлём ссылку для задания пароля. Если аккаунт уже есть, покупка добавится в него. Укажите адрес, к которому у вас есть доступ.
Чтобы оформить заказ, введите email и перейдите к оплате.