fractals_adjustable_period_alerts_&_price_&_mtf_1_01.mq5
Сообщите нам, если считаете, что материал размещён без разрешения.
Сообщить о материале
Обращение по товару «fractals_adjustable_period_alerts_&_price_&_mtf_1_01.mq5» отправится на рассмотрение. Укажите контакт для ответа и опишите причину.
О программе
Индикатор рассчитывает и отображает на графике уровни верхних и нижних фракталов с настраиваемым периодом. Верхний фрактал определяется путём сравнения простых скользящих средних цен High в заданном окне, нижний — аналогично для цен Low. При обнаружении фрактала на графике отображаются стрелки, смещённые от цены на величину, пропорциональную ATR.
Поддерживается многотаймфреймовый анализ: индикатор способен рассчитывать фракталы на отличном от графика таймфрейме. Для межиндикаторного взаимодействия предусмотрены специальные режимы передачи данных.
Система уведомлений позволяет оповещать пользователя о появлении или изменении фрактальных сигналов. Доступны экранные сообщения, звуковые сигналы и email-уведомления, каждый из которых можно включить или отключить отдельно.
Настройки программы
| Настройка | Описание |
|---|---|
| TimeFrame | Таймфрейм — Таймфрейм для расчёта индикатора. Может быть задан как строковое обозначение (например, H1, D1) или ключевое слово Current Time Frame. |
| FractalPeriod | Период фрактала — Период расчёта фрактала. Если значение чётное, автоматически увеличивается на единицу до нечётного. |
| PriceHigh | Цена для верхнего фрактала — Тип цены, используемый для расчёта верхнего фрактала (по умолчанию PRICE_HIGH — максимальная цена свечи). |
| PriceLow | Цена для нижнего фрактала — Тип цены, используемый для расчёта нижнего фрактала (по умолчанию PRICE_LOW — минимальная цена свечи). |
| UpperArrowDisplacement | Смещение верхней стрелки — Величина смещения стрелки верхнего фрактала от цены, выраженная в единицах ATR(20). |
| LowerArrowDisplacement | Смещение нижней стрелки — Величина смещения стрелки нижнего фрактала от цены, выраженная в единицах ATR(20). |
| DotsNumber | Номер стрелки — Номер смещения стрелки фрактала, определяющий визуальный стиль маркера на графике. |
| alertsOn | Уведомления включены — Главный переключатель системы уведомлений. При отключении все типы оповещений деактивируются. |
| alertsMessage | Сообщения на графике — Включает или отключает отображение всплывающих сообщений на графике при фрактальных сигналах. |
| alertsSound | Звуковые уведомления — Включает или отключает звуковой сигнал при появлении фрактальных сигналов. |
| alertsEmail | Email-уведомления — Включает или отключает отправку email-уведомлений при появлении фрактальных сигналов. |
Поиск по коду файла
#property indicator_chart_window
#property indicator_buffers 2
#property indicator_color1 DeepSkyBlue
#property indicator_color2 PaleVioletRed
#property indicator_width1 2
#property indicator_width2 2
extern string TimeFrame = "Current Time Frame";
extern int FractalPeriod = 21;
extern int PriceHigh = PRICE_HIGH;
extern int PriceLow = PRICE_LOW;
extern double UpperArrowDisplacement = 0.2;
extern double LowerArrowDisplacement = 0.2;
extern int DotsNumber = 0;
extern bool alertsOn = true;
extern bool alertsMessage = true;
extern bool alertsSound = true;
extern bool alertsEmail = false;
double UpperBuffer[];
double LowerBuffer[];
string indicatorFileName;
int timeFrame;
bool returnBars;
bool calculateValue;
int init()
{
// код доступен только после оплаты
}
int deinit() { return(0); }
int start()
{
// код доступен только после оплаты
}
int counted_bars=IndicatorCounted();
if(counted_bars<0) return(-1);
if(counted_bars>0) counted_bars--;
int limit=MathMin(MathMax(Bars-counted_bars,FractalPeriod),Bars-1);
if (returnBars) { UpperBuffer[0] = MathMin(limit+1,Bars-1); return(0); }
if (calculateValue || timeFrame == Period())
{
int half = FractalPeriod/2;
for(int i=limit; i>=0; i--)
{
bool found = true;
double compareTo = iMA(NULL,0,1,0,MODE_SMA,PriceHigh,i);
for (int k=1;k<=half;k++)
{
if ((i+k)<Bars && iMA(NULL,0,1,0,MODE_SMA,PriceHigh,i+k)> compareTo) { found=false; break; }
if ((i-k)>=0 && iMA(NULL,0,1,0,MODE_SMA,PriceHigh,i-k)>=compareTo) { found=false; break; }
}
if (found)
UpperBuffer[i]=High[i]+iATR(NULL,0,20,i)*UpperArrowDisplacement;
else UpperBuffer[i]=EMPTY_VALUE;
found = true;
compareTo = iMA(NULL,0,1,0,MODE_SMA,PriceLow,i);
for (k=1;k<=half;k++)
{
if ((i+k)<Bars && iMA(NULL,0,1,0,MODE_SMA,PriceLow,i+k)< compareTo) { found=false; break; }
if ((i-k)>=0 && iMA(NULL,0,1,0,MODE_SMA,PriceLow,i-k)<=compareTo) { found=false; break; }
}
if (found)
LowerBuffer[i]=Low[i]-iATR(NULL,0,20,i)*LowerArrowDisplacement;
else LowerBuffer[i]=EMPTY_VALUE;
}
static datetime previousLevel = -1; static int previousSignal = 0;
if (alertsOn)
{
int currentBar=-1;
for (i=0; i<Bars-1; i++) if (LowerBuffer[i]!=EMPTY_VALUE || UpperBuffer[i]!=EMPTY_VALUE) { currentBar = i; break; }
if (currentBar>-1) checkAlert(currentBar,previousLevel,previousSignal,UpperBuffer,LowerBuffer ,"");
}
return(0);
}
limit = MathMax(liПоказано первые 50% кода (символов: 4991)
Открыть по тарифу
Купите тариф с пакетом открытий или войдите, если тариф уже есть. Открытый файл останется в вашем кабинете навсегда.
Разовая покупка файла
На этой странице откроется полный исходный код файла вместо ознакомительного фрагмента.
Зачем нужен email? После подтверждения оплаты файл сохранится в кабинете на этот email. Если аккаунта ещё нет, мы создадим его и пришлём ссылку для задания пароля. Если аккаунт уже есть, покупка добавится в него. Укажите адрес, к которому у вас есть доступ.
Чтобы оформить заказ, введите email и перейдите к оплате.