extreme_spike.mq5
Сообщите нам, если считаете, что материал размещён без разрешения.
Сообщить о материале
Обращение по товару «extreme_spike.mq5» отправится на рассмотрение. Укажите контакт для ответа и опишите причину.
О программе
Extreme Spike — индикатор для MetaTrader 4, отображающий аналитические данные о ценовых экстремумах в отдельном окне. Он отслеживает формирование major и minor верхних и нижних экстремумов, отрисовывая их различными визуальными элементами (гистограммы, линии и тени) на основе заданных пороговых параметров.
Индикатор предоставляет настраиваемые уведомления о ключевых событиях: обнаружении major и minor верхних и нижних экстремумов, а также о моменте стабилизации, когда экстремум больше не перерисовывается. Режим без перерисовки позволяет контролировать отрисовку только подтверждённых уровней.
Расчёт основывается на усреднённом диапазоне цены с использованием встроенного индикатора ATR. Визуализация включает пять буферов отрисовки, каждый из которых соответствует определённому типу линии или уровня.
Настройки программы
| Настройка | Описание |
|---|---|
| NoRepaint | Без перерисовки — Переключает режим отрисовки без перерисовки (при активном режиме вводится задержка отрисовки) |
| MinorMinExtremeHeightATRs | Мин. высота экстремума (малый, ATR) — Минимальная высота малого экстремума в единицах ATR |
| MajorToMinorHeightRatio | Соотношение высот major/minor — Коэффициент соотношения минимальной высоты major экстремума к minor |
| MinorMinExtremeWidth | Мин. ширина экстремума (малый) — Минимальная ширина малого экстремума в барах |
| MajorMinExtremeWidth | Мин. ширина экстремума (major) — Минимальная ширина major экстремума в барах |
| AlertMajorBottomEnabled | Уведомления Major Bottom — Включает уведомления при обнаружении major нижнего экстремума |
| AlertMajorTopEnabled | Уведомления Major Top — Включает уведомления при обнаружении major верхнего экстремума |
| AlertMinorTopEnabled | Уведомления Minor Top — Включает уведомления при обнаружении minor верхнего экстремума |
| AlertMinorBottomEnabled | Уведомления Minor Bottom — Включает уведомления при обнаружении minor нижнего экстремума |
| AlertStableEnabled | Уведомления Stable — Включает уведомления при стабилизации экстремума (когда он больше не перерисовывается) |
Поиск по коду файла
#property indicator_separate_window
#property indicator_minimum -1.2
#property indicator_maximum +1.2
#property indicator_buffers 5
#property indicator_color1 Red
#property indicator_width1 3
#property indicator_style1 STYLE_SOLID
#property indicator_color2 DodgerBlue
#property indicator_width2 3
#property indicator_style2 STYLE_SOLID
#property indicator_color3 DimGray
#property indicator_width3 0
#property indicator_color4 White
#property indicator_width4 1
#property indicator_style4 STYLE_SOLID
#property indicator_color5 White
#property indicator_width5 2
#property indicator_style5 STYLE_SOLID
#define ALERT_TOP 1
#define ALERT_BOTTOM 2
#define ALERT_STABLE 3
#define LINE_MINOR 1
#define LINE_MAJOR 2
#define LINE_SHADOW 3
#define LINE_STABLE 4
#define LINE_VALUE_UP 1.0
#define LINE_VALUE_FLAT 0.0
#define LINE_VALUE_DOWN -1.0
#define MODE_LOOKING_FOR_BOTTOM 1
#define MODE_LOOKING_FOR_TOP -1
#define MODE_UNDETERMINED 0
extern bool NoRepaint = FALSE;
extern double MinorMinExtremeHeightATRs = 2.0;
extern double MajorToMinorHeightRatio = 2.5;
extern int MinorMinExtremeWidth = 2;
extern int MajorMinExtremeWidth = 2;
extern bool AlertMajorBottomEnabled = FALSE;
extern bool AlertMajorTopEnabled = FALSE;
extern bool AlertMinorTopEnabled = FALSE;
extern bool AlertMinorBottomEnabled = FALSE;
extern bool AlertStableEnabled = FALSE;
double line1[]; // lineMajorUp
double line2[]; // lineMajorDown
double line3[]; // lineShadowUp, lineShadowDown
double line4[]; // lineStableUp, lineStableDown
double line5[]; // lineMinorUp, lineMinorDown
int MinorLowExtremeIdx = 1;
bool MinorFirstLow = TRUE;
int MinorHiExtremeIdx = 1;
bool MinorFirstHigh = TRUE;
int MinorExtremeMode = 0;
double MinorLowExtremePrice;
double MinorHiExtremePrice;
int MajorLowExtremeIdx = 1;
bool MajorFirstLow = TRUE;
int MajorHiExtremeIdx = 1;
bool MajorFirstHigh = TRUE;
int MajorExtremeMode = 0;
double MajorLowExtremePrice;
double MajorHiExtremePrice;
double MinorMinExtremeHeight;
double MajorMinExtremeHeight;
datetime AlertMinorTopIdx;
datetime AlertMinorBottomIdx;
datetime AlertMajorTopIdx;
datetime AlertMajorBottomIdx;
datetime AlertStableIdx;
string periodName;
int BarNumber;
#define RANGE_AVERAGING_PERIOD 250
int init() {
// код доступен только после оплаты
}
int deinit() {
return(0);
}
int start() {
// код доступен только после оплаты
}
void processBar() {
switch( BarNumber ) {
case 0:
break;
case 1:
periodName = getPeriodName();
AlertMinorTopIdx = Time[Bars-1];
AlertMinorBottomIdx = Time[Bars-1];
AlertMajorTopIdx = Time[Bars-1];
AlertMajorBottomIdx = Time[Bars-1];
MinorLowExtremePrice = getLow();
MinorHiExtremePrice = getHigh();
MajorLowExtremePrice = getLow();
MajorHiExtremePrice = getHigh();
break;
default:
MinorMinExtremeHeight = average() * MinorMinExtremeHeightATRs;
MajorMinExtremeHeight = MinorMinExtremeHeight * MajorToMinorHeightRatio;
checkForExtremes( MinorLowExtremeIdx, MinorLowExtremePrice, MinorFirstLow,
MinorHiExtremeIdx, MinorHiExtremePrice, MinorFirstHigh,
MinorExtremeMode, MinorMinExtremeHeight, MinorMinExtremeWidth, LINE_MINOR );
checkForExtremes( MajorLowExtremeIdx, MajorLowExtremePrice, MajorFirstLow,
MajorHiExtremeIdx, MajorHiExtremePrice, MajorFirstHigh,
MajorExtremeMode, MajorMinExtremeHeight, MajorMinExtremeWidth, LINE_MAJOR );
break;
}
return (0);
}
void checkForExtremes( int& lowExtremeIdx, double& lowExtremePrice, bool& firstLow,
int& hiExtremeIdx, double& hiExtremePrice, bool& firstHigh,
int& extremeMode, double MinExtremeHeight, int MinExtremeWidth, int lineType ) {
if( extremeMode > -1 ) {
if( getLow() < lowExtremePrice ) {
if( !firstLow )
eraseExtreme( lineType, lowExtremeIdx, LINE_VALUE_DOWN ); // to repaint (erase) the spike
lowExtremePrice = getLow(); // set LowestLow to this low (getLow)
lowExtremeIdx = BarNumber; // remember the LL bar number
firstLow = FALSE; // the was a Bottom
}
else
if( getLow() > lowExtremePrice ) { // higher low (getLow) - not necesserally higher than the last bar - could be lower than the last bar, but still higher than the bottom
drawExtreme( lineType, lowExtremeIdx, LINE_VALUE_DOWN ); // update LowestLow bar with the spike DOWN and mark it as unstable
alert( ALERT_BOTTOM, lineType, lowExtremeIdx );
firstLow = FALSE;
if( ((getLow() - lowExtremePrice) >= MinExtremeHeight) // the bottom was distinct enough (difference between it and price is big enough)
&& ((BarNumber - lowExПоказано первые 50% кода (символов: 8310)
Открыть по тарифу
Купите тариф с пакетом открытий или войдите, если тариф уже есть. Открытый файл останется в вашем кабинете навсегда.
Разовая покупка файла
На этой странице откроется полный исходный код файла вместо ознакомительного фрагмента.
Зачем нужен email? После подтверждения оплаты файл сохранится в кабинете на этот email. Если аккаунта ещё нет, мы создадим его и пришлём ссылку для задания пароля. Если аккаунт уже есть, покупка добавится в него. Укажите адрес, к которому у вас есть доступ.
Чтобы оформить заказ, введите email и перейдите к оплате.