QQE
Похожие материалы по тегам
Сообщите нам, если считаете, что материал размещён без разрешения.
Сообщить о материале
Обращение по товару «qqe new histo + alerts.mq5» отправится на рассмотрение. Укажите контакт для ответа и опишите причину.
О программе
Индикатор QQE рассчитывает сглаженный RSI с динамическим порогом на основе множителя WP и отображает результат в отдельном окне. Линия QQE и линия тренда рисуются поверх гистограмм, цвет которых зависит от положения значения относительно заданных верхней и нижней границ. Гистограммы окрашиваются в зелёный, золотой и красный цвета в зависимости от зоны.
Индикатор поддерживает систему уведомлений: текстовые алерты, звуковые сигналы и email-уведомления при пересечении сигнальной линии или уровня 50. Можно выбирать, на текущую или предыдущую свечу проверять условия срабатывания. Расчёт выполняется на каждом тике в функции start().
Внутренняя логика использует двойное экспоненциальное сглаживание RSI и вычисление динамического порога, который адаптируется к изменению значения RSI. Уровни индикатора смещаются на 50 единиц для отображения отклонений от центральной линии.
Настройки программы
| Настройка | Описание |
|---|---|
| SF | Коэффициент сглаживания для экспоненциального сглаживания значения RSI. |
| RSIPeriod | Период расчёта индикатора RSI, используемого в качестве основы для вычислений. |
| WP | Множитель, определяющий амплитуду динамического порога при расчёте линии QQE. |
| UpperBound | Верхняя граница для отображения гистограммы. Значения линии выше этой границы окрашиваются в зелёный цвет. |
| LowerBound | Нижняя граница для отображения гистограммы. Значения линии ниже этой границы окрашиваются в красный цвет. |
| alertsOn | Общий переключатель для включения или отключения всей системы уведомлений индикатора. |
| alertsSignalLineCross | При включённом значении алерты срабатывают при пересечении сигнальной линии. При выключенном — при пересечении уровня 50. |
| alertsOnCurrent | При включённом значении проверка условий алерта выполняется на текущей незавершённой свече, при выключенном — на предыдущей. |
| alertsMessage | Включает или отключает вывод текстовых оконных уведомлений при срабатывании условий алерта. |
| alertsSound | Включает или отключает воспроизведение звукового сигнала при срабатывании условий алерта. |
| alertsEmail | Включает или отключает отправку email-уведомлений при срабатывании условий алерта. |
Поиск по коду файла
#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 int SF = 5;
extern int RSIPeriod = 14;
extern double WP = 4.236;
extern double UpperBound = 60;
extern double LowerBound = 40;
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];
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,r,limit;
if(counted_bars < 0) return(-1);
if(counted_bars > 0) counted_bars--;
limit = MathMin(Bars-counted_bars,Bars-1);
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];
Показано первые 50% кода (символов: 3344)
Открыть по тарифу
Купите тариф с пакетом открытий или войдите, если тариф уже есть. Открытый файл останется в вашем кабинете навсегда.
Разовая покупка файла
На этой странице откроется полный исходный код файла вместо ознакомительного фрагмента.
Зачем нужен email? После подтверждения оплаты файл сохранится в кабинете на этот email. Если аккаунта ещё нет, мы создадим его и пришлём ссылку для задания пароля. Если аккаунт уже есть, покупка добавится в него. Укажите адрес, к которому у вас есть доступ.
Чтобы оформить заказ, введите email и перейдите к оплате.