← К каталогу
Исходный код · ID 3112

extreme_spike mtf@fxsignalspot.com.mq5

Вы автор или правообладатель?

Сообщите нам, если считаете, что материал размещён без разрешения.

Краткий обзор

О программе

Индикатор Extreme Spike MTF предназначен для обнаружения и визуализации экстремальных разворотов цены — основных (major) и второстепенных (minor) верхов и донов — на графике актива. Он строит отдельные линии для каждого типа сигнала, позволяя трейдеру визуально отслеживать структуру рыночных разворотов. Поддерживается анализ на произвольном таймфрейме, что обеспечивает мультитаймфрейтное отображение экстремумов.

Индикатор предоставляет настраиваемую систему уведомлений: отдельные оповещения можно включить для обнаружения основных и малых верхов и донов, а также для момента, когда формирующаяся линия перестаёт перерисовываться (стабильная линия). Доступен режим без репейнта, при котором экстремумы фиксируются только после подтверждения, хотя это вносит задержку в отображение. Параметры минимальной высоты и ширины экстремумов позволяют настраивать чувствительность индикатора под конкретный торговый инструмент и стиль торговли.

В основе расчёта лежит сравнение текущей цены с предыдущими экстремумами и оценка их значимости на основе усреднённого диапазона цены (ATR). Индикатор работает в отдельном окне под графиком и отрисовывает пять линий различного цвета и стиля, соответствующих разным типам экстремумов и их состоянию.

Настройки программы

НастройкаОписание
timeFrame Таймфрейм анализа — Таймфрейм, на котором осуществляется анализ экстремумов. Если установлен в 0, используется таймфрейм текущего графика.
NoRepaint Без репейнта — Переключатель режима без репейнта. При включении экстремумы фиксируются только после подтверждения, что исключает их последующую перерисовку, но вносит задержку в отображении.
MinorMinExtremeHeightATRs Минимальная высота малого экстремума (в ATR) — Минимальная высота второстепенного экстремума, выраженная в кратности среднему истинному диапазону цены (ATR).
MajorToMinorHeightRatio Соотношение высот основного и малого экстремумов — Коэффициент, определяющий соотношение минимальной высоты основного экстремума к минимальной высоте второстепенного экстремума.
MinorMinExtremeWidth Минимальная ширина малого экстремума — Минимальное количество баров между двумя последовательными второстепенными экстремумами одного типа для подтверждения паттерна.
MajorMinExtremeWidth Минимальная ширина основного экстремума — Минимальное количество баров между двумя последовательными основными экстремумами одного типа для подтверждения паттерна.
AlertMajorBottomEnabled Уведомление основного дна — Включает или отключает уведомление при обнаружении основного дна (крупного разворота вниз).
AlertMajorTopEnabled Уведомление основного верха — Включает или отключает уведомление при обнаружении основного верха (крупного разворота вверх).
AlertMinorTopEnabled Уведомление малого верха — Включает или отключает уведомление при обнаружении второстепенного верха (мелкого разворота вверх).
AlertMinorBottomEnabled Уведомление малого дна — Включает или отключает уведомление при обнаружении второстепенного дна (мелкого разворота вниз).
AlertStableEnabled Уведомление стабильной линии — Включает или отключает уведомление при формировании стабильной линии экстремума, которая больше не перерисовывается.
WaitForClose Ожидание закрытия бара — При включении индикатор ожидает полного закрытия текущего бара перед началом пересчёта значений.
Получить полный код

Поиск по коду файла

#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 int     timeFrame = 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;
extern bool    WaitForClose = true;

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,indicatorFileName;
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;
}

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_D

Показано первые 50% кода (символов: 10036)

Открыть по тарифу

Купите тариф с пакетом открытий или войдите, если тариф уже есть. Открытый файл останется в вашем кабинете навсегда.

Разовая покупка файла

На этой странице откроется полный исходный код файла вместо ознакомительного фрагмента.

Чтобы оформить заказ, введите email и перейдите к оплате.

Стоимость полного кода
1 003,60₽ ≈ $12.27