cfb_adaptive_qqe_histo__alertsarrows.mq5
Похожие материалы по тегам
Сообщите нам, если считаете, что материал размещён без разрешения.
Сообщить о материале
Обращение по товару «cfb_adaptive_qqe_histo__alertsarrows.mq5» отправится на рассмотрение. Укажите контакт для ответа и опишите причину.
О программе
Индикатор для MetaTrader 4, отображающий гистограмму QQE (Quantitative Qualitative Estimation) с адаптивной сглаживающей CFB. Рассчитывает RSI-подобные значения с выбором метода расчёта и динамически подстраивает период под волатильность рынка. Отображает три зоны гистограммы (выше верхней границы, между границами, ниже нижней границы), трендовую линию и визуальные стрелки сигналов. Поддерживает мультитаймфреймовый анализ с интерполяцией, а также настраиваемые оповещения о ключевых пересечениях.
Настройки программы
| Настройка | Описание |
|---|---|
| TimeFrame | Таймфрейм — Выбор таймфрейма для расчётов или специальный режим работы индикатора |
| SF | SF — Коэффициент сглаживания, влияющий на скорость реакции QQE-линии |
| CfbPrice | CfbPrice — Тип цены, используемый для расчёта адаптивного сглаживания CFB |
| CfbDepth | CfbDepth — Глубина анализа для адаптивного сглаживания CFB |
| CfbNormLength | CfbNormLength — Длина нормализации для адаптивного сглаживания CFB |
| CfbSmooth | CfbSmooth — Параметр сглаживания адаптивного фильтра CFB |
| CfbSmoothLength | CfbSmoothLength — Длина сглаживания адаптивного фильтра CFB |
| CfbSmoothPhase | CfbSmoothPhase — Фазовый сдвиг сглаживания адаптивного фильтра CFB |
| CfbSmoothDouble | CfbSmoothDouble — Включает двойное сглаживание в адаптивном фильтре CFB |
| ShortLimit | ShortLimit — Минимальный период для адаптивного расчёта RSI |
| LongLimit | LongLimit — Максимальный период для адаптивного расчёта RSI |
| RsiPrice | RsiPrice — Тип цены, используемый для расчёта RSI |
| _rsimethods | Методы RSI — Список доступных методов расчёта RSI для выбора параметром RsiMethod |
| RsiMethod | RsiMethod — Выбор метода расчёта RSI (RSI, Wilder RSI, RSX, Cuttler RSI) |
| WP | WP — Коэффициент веса для расчёта QQE-линии |
| UpperBound | UpperBound — Верхняя граница зоны перекупленности гистограммы |
| LowerBound | LowerBound — Нижняя граница зоны перепроданности гистограммы |
| Interpolate | Интерполяция — Включает интерполяцию значений между барами при мультитаймфреймовом анализе |
| _ | Разделитель настроек оповещений — Текстовый разделитель в панели настроек |
| alertsOn | Оповещения включены — Включает или отключает все типы оповещений индикатора |
| alertsOnZeroCross | Оповещения при пересечении нуля — Срабатывает оповещение при пересечении нулевой линии |
| alertsOnSignalCross | Оповещения при пересечении границ — Срабатывает оповещение при пересечении верхней или нижней границы |
| alertsOnRsiMaCross | Оповещения при пересечении RSI-линии — Срабатывает оповещение при пересечении RSI-линии и трендовой линии |
| alertsOnCurrent | Оповещения на текущем баре — Направляет оповещения на текущий бар вместо предыдущего |
| alertsMessage | Оповещения в виде сообщений — Включает вывод pop-up сообщений при срабатывании оповещений |
| alertsSound | Оповещения звуком — Включает воспроизведение звукового сигнала при срабатывании оповещений |
| alertsEmail | Оповещения по email — Включает отправку email-уведомлений при срабатывании оповещений |
| arrowsVisible | Стрелки видимы — Включает или отключает отображение стрелок сигналов на графике |
| arrowsIdentifier | Идентификатор стрелок — Префикс имени объектов-стрелок для их идентификации на графике |
| arrowsDisplacement | Смещение стрелок — Величина смещения стрелок от ценового уровня в пунктах |
Поиск по коду файла
#property indicator_separate_window
#property indicator_buffers 5
#property indicator_color1 Green
#property indicator_color2 Gold
#property indicator_color3 Red
#property indicator_color4 DimGray
#property indicator_color5 Lime
#property indicator_width1 2
#property indicator_width2 2
#property indicator_width3 2
#property indicator_width4 2
#property indicator_width5 2
#property indicator_levelcolor DimGray
extern string TimeFrame = "Current time frame";
extern int SF = 5;
extern int CfbPrice = 5;
extern int CfbDepth = 1;
extern int CfbNormLength = 50;
extern int CfbSmooth = 8;
extern int CfbSmoothLength = 10;
extern double CfbSmoothPhase = 0.0;
extern bool CfbSmoothDouble = false;
extern int ShortLimit = 10;
extern int LongLimit = 20;
extern int RsiPrice = 0;
extern string _rsimethods = "0=rsi,1=wilder rsi,2=rsx,3=cuttler rsi ";
extern int RsiMethod = 0;
extern double WP = 4.236;
extern double UpperBound = 60;
extern double LowerBound = 40;
extern bool Interpolate = true;
extern string _ = "Alerts Settings";
extern bool alertsOn = true;
extern bool alertsOnZeroCross = false;
extern bool alertsOnSignalCross = false;
extern bool alertsOnRsiMaCross = true;
extern bool alertsOnCurrent = false;
extern bool alertsMessage = true;
extern bool alertsSound = true;
extern bool alertsEmail = false;
extern bool arrowsVisible = true;
extern string arrowsIdentifier = "qqe cfb adapt Arrows1";
extern double arrowsDisplacement = 1.0;
extern bool arrowsOnZeroCross = false;
extern color arrowsUpZeroCrossColor = DeepSkyBlue;
extern color arrowsDnZeroCrossColor = Red;
extern int arrowsUpZeroCrossCode = 233;
extern int arrowsDnZeroCrossCode = 234;
extern int arrowsUpZeroCrossSize = 1;
extern int arrowsDnZeroCrossSize = 1;
extern bool arrowsOnSignalCross = false;
extern color arrowsUpSignalCrossColor = DeepSkyBlue;
extern color arrowsDnSignalCrossColor = Red;
extern int arrowsUpSignalCrossCode = 119;
extern int arrowsDnSignalCrossCode = 119;
extern int arrowsUpSignalCrossSize = 1;
extern int arrowsDnSignalCrossSize = 1;
extern bool arrowsOnRsiMaCross = true;
extern color arrowsUpRsiMaCrossColor = LimeGreen;
extern color arrowsDnRsiMaCrossColor = Red;
extern int arrowsUpRsiMaCrossCode = 119;
extern int arrowsDnRsiMaCrossCode = 119;
extern int arrowsUpRsiMaCrossSize = 2;
extern int arrowsDnRsiMaCrossSize = 2;
double RsiMa[];
double cfb[];
double Trend[];
double HistoU[];
double HistoM[];
double HistoD[];
double work[][6];
double trends[][3];
#define _tmi1 0
#define _tup1 1
#define _tdn1 2
string indicatorFileName;
int timeFrame;
bool returnBars;
bool calculateValue;
int init()
{
// код доступен только после оплаты
}
int deinit() { if (!calculateValue && arrowsVisible) deleteArrows(); return(0); }
#define iEma 0
#define iEmm 1
#define iQqe 2
#define iRsi 3
#define tQqe 4
#define tQqs 5
int start()
{
// код доступен только после оплаты
}
string sTfTable[] = {"M1","M5","M15","M30","H1","H4","D1","W1","MN"};
int iTfTable[] = {1,5,15,30,60,240,1440,10080,43200};
int stringToTimeFrame(string tfs)
{
tfs = stringUpperCase(tfs);
for (int i=ArraySize(iTfTable)-1; i>=0; i--)
if (tfs==sTfTable[i] || tfs==""+iTfTable[i]) return(MathMax(iTfTable[i],Period()));
return(Period());
}
string timeFrameToString(int tf)
{
for (int i=ArraySize(iTfTable)-1; i>=0; i--)
if (tf==iTfTable[i]) return(sTfTable[i]);
return("");
}
string stringUpperCase(string str)
{
string s = str;
for (int length=StringLen(str)-1; length>=0; length--)
{
int char = StringGetChar(s, length);
if((char > 96 && char < 123) || (char > 223 && char < 256))
s = StringSetChar(s, length, char - 32);
else if(char > -33 && char < 0)
s = StringSetChar(s, length, char + 224);
}
return(s);
}
void setTrends(int i, int r)
{
trends[r][_tmi1] = trends[r-1][_tmi1];
trends[r][_tup1] = trends[r-1][_tup1];
trends[r][_tdn1] = trends[r-1][_tdn1];
if (RsiMa[i] > 0) trends[r][_tmi1] = 1;
if (RsiMa[i] < 0) trends[r][_tmi1] = -1;
if (RsiMa[i] > (UpperBound-50)) trends[r][_tup1] = 1;
if (RsiMa[i] < (LowerBound-50)) trends[r][_tup1] = -1;
if (RsiMa[i] > Trend[i]) trends[r][_tdn1] = 1;
if (RsiMa[i] < Trend[i]) trends[r][_tdn1] = -1;
}
void manageAlerts()
{
if (!calculateValue && alertsOn)
{
if (alertsOnCurrent)
int whichBar = 0;
else whichBar = 1; whichBar = iBarShift(NULL,0,iTime(NULL,timeFrame,whichBar));
whichBar = Bars-whichBar-1;
static datetime time1 = 0;
static string mess1 = "";
if (alertsOnZeroCross && trends[whichBar][_tmi1] != trends[whichBar-1][_tmi1])
{
if (trends[whichBar][_tmi1] == 1) doAlert(time1,mess1,whichBar,"Cross zero line up");
if (trends[whichBar][_tmi1] == -1) doAlert(time1,mess1,whichBar,"Cross zero line down");
}
static datetime time2 = 0;
static string mess2 = "";
if (alertsOnSignalCross && trends[whichBar][_tup1] != trends[whichBar-1][_tup1])
{
if (trends[whichBar][_tup1] == 1) doAlert(time2,mess2,whichBar,"Cross Upper Bound up");
if (trends[whichBar][_tup1] == -1) doAlert(time2,mess2,whichBar,"Cross Lower Bound down");
}
static datetime time3 = 0;
static string mess3 = "";
if (alertsOnRsiMaCross && trends[whichBar][_tdn1] != trends[whichBar-1][_tdn1])
{
if (trends[whichBar][_tdn1] == 1) doAlert(time3,mess3,whichПоказано первые 50% кода (символов: 17197)
Открыть по тарифу
Купите тариф с пакетом открытий или войдите, если тариф уже есть. Открытый файл останется в вашем кабинете навсегда.
Разовая покупка файла
На этой странице откроется полный исходный код файла вместо ознакомительного фрагмента.
Зачем нужен email? После подтверждения оплаты файл сохранится в кабинете на этот email. Если аккаунта ещё нет, мы создадим его и пришлём ссылку для задания пароля. Если аккаунт уже есть, покупка добавится в него. Укажите адрес, к которому у вас есть доступ.
Чтобы оформить заказ, введите email и перейдите к оплате.