qqe histo - alerts & mtf.mq5
Похожие материалы по тегам
Сообщите нам, если считаете, что материал размещён без разрешения.
Сообщить о материале
Обращение по товару «qqe histo - alerts & mtf.mq5» отправится на рассмотрение. Укажите контакт для ответа и опишите причину.
О программе
Индикатор «QQE histo» отображает гистограмму на основе метода QQE (Quantitative Qualitative Estimation) в отдельном окне графика. Он рассчитывает три столбца гистограммы: верхний (зелёный), средний (золотой) и нижний (красный), а также рисует линии RSI-средней и тренда. Расчёт основан на сглаженном RSI с экспоненциальными скользящими средними и заданным коэффициентом детализации.
Индикатор поддерживает работу на разных таймфреймах: можно выбрать любой из стандартных периодов или оставить текущий. При необходимости значения интерполируются между барами для более плавного отображения. Это позволяет анализировать ценовые данные и технические показатели на выбранном временном интервале.
Встроена система уведомлений: индикатор может отправлять всплывающие сообщения, звуковые сигналы и электронные письма при пересечении линии QQE сигнальной линии или уровня 50. Условия срабатывания и типы оповещений настраиваются отдельно. Параметры можно задавать как для текущего бара, так и для предыдущего.
Настройки программы
| Настройка | Описание |
|---|---|
| TimeFrame | Выбранный таймфрейм для расчёта и отображения индикатора. Можно указать любой стандартный период или оставить текущий. |
| SF | Коэффициент сглаживания экспоненциальной скользящей средней, применяемой при расчёте QQE. |
| RSIPeriod | Период расчёта индекса относительной силы (RSI), используемого в формуле QQE. |
| WP | Множитель, определяющий амплитуду отклонения линии QQE от предыдущего значения при расчёте тренда. |
| UpperBound | Верхняя граница диапазона для определения верхнего столбца гистограммы. Значения RSI-средней выше этой границы отображаются как верхний столбец. |
| LowerBound | Верхняя граница диапазона для определения нижнего столбца гистограммы. Значения RSI-средней ниже этой границы отображаются как нижний столбец. |
| Interpolate | Включает или отключает интерполяцию значений между барами для более плавного отображения индикатора на графике. |
| alertsOn | Главный переключатель, включающий или отключающий всю систему уведомлений индикатора. |
| alertsSignalLineCross | При включении уведомления срабатывают при пересечении линии QQE сигнальной линией. При выключении — при пересечении уровня 50. |
| alertsOnCurrent | Определяет, на каком баре проверять условие уведомления: на текущем или на предыдущем. |
| alertsMessage | Включает или отключает всплывающие сообщения на графике при срабатывании условия уведомления. |
| alertsSound | Включает или отключает звуковой сигнал при срабатывании условия уведомления. |
| alertsEmail | Включает или отключает отправку электронных писем при срабатывании условия уведомления. |
Поиск по коду файла
#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 RSIPeriod = 14;
extern double WP = 4.236;
extern double UpperBound = 60;
extern double LowerBound = 40;
extern bool Interpolate = true;
extern bool alertsOn = true;
extern bool alertsSignalLineCross = false;
extern bool alertsOnCurrent = true;
extern bool alertsMessage = true;
extern bool alertsSound = false;
extern bool alertsEmail = false;
double RsiMa[];
double Trend[];
double HistoU[];
double HistoM[];
double HistoD[];
double work[][6];
string indicatorFileName;
bool calculateValue;
bool returnBars;
int timeFrame;
int init()
{
// код доступен только после оплаты
}
#define iEma 0
#define iEmm 1
#define iQqe 2
#define iRsi 3
#define tQqe 4
#define tQqs 5
int start()
{
// код доступен только после оплаты
}
int counted_bars=IndicatorCounted();
int i,n,k,r,limit;
if(counted_bars < 0) return(-1);
if(counted_bars > 0) counted_bars--;
limit = MathMin(Bars-counted_bars,Bars-1);
if (returnBars) { HistoU[0] = limit+1; return(0); }
if (calculateValue || timeFrame==Period())
{
if (ArrayRange(work,0) != Bars) ArrayResize(work,Bars);
double alpha1 = 2.0/(SF+1.0);
double alpha2 = 2.0/(RSIPeriod*2.0);
for (i=limit, r=Bars-i-1; i>=0; i--,r++)
{
work[r][iRsi] = work[r-1][iRsi] + alpha1*(iRSI(NULL,0,RSIPeriod,PRICE_CLOSE,i) - work[r-1][iRsi]);
work[r][iEma] = work[r-1][iEma] + alpha2*(MathAbs(work[r-1][iRsi]-work[r][iRsi]) - work[r-1][iEma]);
work[r][iEmm] = work[r-1][iEmm] + alpha2*(work[r][iEma] - work[r-1][iEmm]);
double rsi0 = work[r ][iRsi];
double rsi1 = work[r-1][iRsi];
double dar = work[r ][iEmm]*WP;
double tr = work[r-1][iQqe];
double dv = tr;
if (rsi0 < tr) { tr = rsi0 + dar; if ((rsi1 < dv) && (tr > dv)) tr = dv; }
if (rsi0 > tr) { tr = rsi0 - dar; if ((rsi1 > dv) && (tr < dv)) tr = dv; }
work[r][iQqe] = tr;
work[r][tQqe] = work[r-1][tQqe];
work[r][tQqs] = work[r-1][tQqs];
RsiMa[i] = work[r][iRsi]-50;
Trend[i] = tr -50;
HistoU[i] = EMPTY_VALUE;
HistoM[i] = EMPTY_VALUE;
HistoD[i] = EMPTY_VALUE;
if (RsiMa[i] > (UpperBound-50)) HistoU[i] = RsiMa[i];
if (RsiMa[i] < (LowerBound-50)) HistoD[i] = RsiMa[i];
if (HistoU[i] == EMPTY_VALUE && HistoD[i] == EMPTY_VALUE) HistoM[i] = RsiMa[i];
if (RsiMa[i] > 0) work[r][tQqe] = 1;
if (RsiMa[i] < 0) work[r][tQqe] = -1;
if (RsiMa[i] > Trend[i]) work[r][tQqs] = 1;
if (RsiMa[i] < Trend[i]) work[r][tQqs] = -1;
}
manageAlerts();
return(0);
}
if (ArrayRange(work,0) != Bars) ArrayResize(work,Bars);
limit = MathMax(limit,MathMin(Bars,iCustom(NULL,timeFrame,indicatorFileName,"returnBars",0,0)*timeFrame/Period()));
for (i=limit, Показано первые 50% кода (символов: 6121)
Открыть по тарифу
Купите тариф с пакетом открытий или войдите, если тариф уже есть. Открытый файл останется в вашем кабинете навсегда.
Разовая покупка файла
На этой странице откроется полный исходный код файла вместо ознакомительного фрагмента.
Зачем нужен email? После подтверждения оплаты файл сохранится в кабинете на этот email. Если аккаунта ещё нет, мы создадим его и пришлём ссылку для задания пароля. Если аккаунт уже есть, покупка добавится в него. Укажите адрес, к которому у вас есть доступ.
Чтобы оформить заказ, введите email и перейдите к оплате.