qqe (vhf adaptive) 1_5.mq5
Похожие материалы по тегам
Сообщите нам, если считаете, что материал размещён без разрешения.
Сообщить о материале
Обращение по товару «qqe (vhf adaptive) 1_5.mq5» отправится на рассмотрение. Укажите контакт для ответа и опишите причину.
О программе
В основе расчёта лежит адаптивная версия RSI с выбором из нескольких вариантов расчёта и настройкой ценового источника, сглаживания и метода сглаживания. Результат RSI дополнительно сглаживается и используется для формирования двух линий тренда — быстрой и медленной, — между которыми определяется текущее направление. Индикатор позволяет настроить условия смены цвета линий, отображение стрелок на барах и отправку уведомлений через всплывающие сообщения, push-уведомления, звуковые сигналы и электронную почту.
Настройки программы
| Настройка | Описание |
|---|---|
| Time frame to use (TimeFrame) | Таймфрейм — Таймфрейм, на котором выполняется расчёт индикатора. |
| Rsi period (RsiPeriod) | Период RSI — Период расчёта RSI, используемый для определения краткосрочной волатильности и адаптивной подстройки. |
| Rsi price to use (RsiPrice) | Цена RSI — Ценовой источник или производная цена, используемая в качестве входных данных для расчёта RSI. |
| Rsi price smoothing (RsiPriceSmoothing) | Сглаживание цены RSI — Период дополнительного сглаживания ценового источника перед подачей в RSI. |
| Rsi price smoothing method (RsiPriceSmoothingMethod) | Метод сглаживания цены RSI — Метод сглаживания, применяемый к ценовому источнику перед расчётом RSI. |
| Rsi smoothing (RsiSmoothingFactor) | Фактор сглаживания RSI — Коэффициент, определяющий степень сглаживания основной линии RSI. |
| Rsi type (RsiType) | Тип RSI — Вариант алгоритма расчёта RSI из доступных типов. |
| WP fast coeff (WPFast) | Коэффициент быстрого WP — Множитель для расчёта быстрой линии тренда. |
| WP slow coeff (WPSlow) | Коэффициент медленного WP — Множитель для расчёта медленной линии тренда. |
| Change colors on : (ChangeColorOn) | Смена цвета при — Условие, при котором меняется цвет линий индикатора. |
| Turn alerts on? (alertsOn) | Включить уведомления — Включает или отключает отправку уведомлений при изменении направления тренда. |
| Alerts on current (still opened) bar? (alertsOnCurrent) | Уведомления на текущем баре — Определяет, срабатывают ли уведомления на ещё не закрытом текущем баре. |
| Alerts should show pop-up message? (alertsMessage) | Всплывающие сообщения — Включает отображение всплывающих окон с уведомлениями. |
| Alerts should send push notification? (alertsPushNotif) | Push-уведомления — Включает отправку push-уведомлений на мобильное устройство. |
| Alerts should play a sound? (alertsSound) | Звуковой сигнал — Включает воспроизведение звукового файла при срабатывании уведомления. |
| Alerts should send email? (alertsEmail) | Электронная почта — Включает отправку уведомлений на электронную почту. |
| Arrows visible? (arrowsVisible) | Отображение стрелок — Включает или отключает отрисовку стрелок на графике. |
| Arrows drawn on newst bar of higher time frame bar? (arrowsOnNewest) | Стрелки на новейшем баре — Размещает стрелки на самом правом баре более высокого таймфрейма. |
| Unique ID for arrows (arrowsIdentifier) | Идентификатор стрелок — Уникальный строковый идентификатор для объектов-стрелок на графике. |
| Upper arrow gap (arrowsUpperGap) | Отступ стрелок вверх — Множитель расстояния от верхней цены бара для размещения стрелки вверх. |
| Lower arrow gap (arrowsLowerGap) | Отступ стрелок вниз — Множитель расстояния от нижней цены бара для размещения стрелки вниз. |
| Up arrow color (arrowsUpColor) | Цвет стрелок вверх — Цвет стрелок, указывающих на восходящее направление тренда. |
| Down arrow color (arrowsDnColor) | Цвет стрелок вниз — Цвет стрелок, указывающих на нисходящее направление тренда. |
| Up arrow code (arrowsUpCode) | Код стрелки вверх — Код символа стрелки вверх из библиотеки символов MetaTrader. |
| Down arrow code (arrowsDnCode) | Код стрелки вниз — Код символа стрелки вниз из библиотеки символов MetaTrader. |
| Interpolate | Интерполяция — Включает интерполяцию значений индикатора между барами при работе на более высоких таймфреймах. |
Поиск по коду файла
#property indicator_separate_window
#property indicator_buffers 7
#property indicator_color1 clrDeepSkyBlue
#property indicator_color2 clrSandyBrown
#property indicator_color3 clrSilver
#property indicator_color4 clrDodgerBlue
#property indicator_color5 clrDodgerBlue
#property indicator_color6 clrSandyBrown
#property indicator_color7 clrSandyBrown
#property indicator_width3 2
#property indicator_width4 2
#property indicator_width5 2
#property indicator_width6 2
#property indicator_width7 2
#property indicator_style1 STYLE_DOT
#property indicator_style2 STYLE_DOT
#property strict
enum enPrices
{
pr_close, // Close
pr_open, // Open
pr_high, // High
pr_low, // Low
pr_median, // Median
pr_typical, // Typical
pr_weighted, // Weighted
pr_average, // Average (high+low+open+close)/4
pr_medianb, // Average median body (open+close)/2
pr_tbiased, // Trend biased price
pr_haclose, // Heiken ashi close
pr_haopen , // Heiken ashi open
pr_hahigh, // Heiken ashi high
pr_halow, // Heiken ashi low
pr_hamedian, // Heiken ashi median
pr_hatypical, // Heiken ashi typical
pr_haweighted, // Heiken ashi weighted
pr_haaverage, // Heiken ashi average
pr_hamedianb, // Heiken ashi median body
pr_hatbiased // Heiken ashi trend biased price
};
enum enRsiTypes
{
rsi_rsi, // Regular RSI
rsi_wil, // Slow RSI
rsi_rap, // Rapid RSI
rsi_har, // Harris RSI
rsi_rsx, // RSX
rsi_cut // Cuttlers RSI
};
enum enColorOn
{
onSlopeChange, // Change color on slope change
onFastCross, // Change color on fast trend cross
onSlowCross, // Change color on slow trend cross
onBothCross // Change color on crossing of both values
};
extern ENUM_TIMEFRAMES TimeFrame = PERIOD_CURRENT; // Time frame to use
extern int RsiPeriod = 14; // Rsi period
extern enPrices RsiPrice = pr_close; // Rsi price to use
extern int RsiPriceSmoothing = 0; // Rsi price smoothing
extern ENUM_MA_METHOD RsiPriceSmoothingMethod = MODE_EMA; // Rsi price smoothing method
extern int RsiSmoothingFactor = 5; // Rsi smoothing
extern enRsiTypes RsiType = rsi_rsx; // Rsi type
extern double WPFast = 2.618; // WP fast coeff
extern double WPSlow = 4.236; // WP slow coeff
extern enColorOn ChangeColorOn = onBothCross; // Change colors on :
extern bool alertsOn = false; // Turn alerts on?
extern bool alertsOnCurrent = true; // Alerts on current (still opened) bar?
extern bool alertsMessage = true; // Alerts should show pop-up message?
extern bool alertsPushNotif = false; // Alerts should send push notification?
extern bool alertsSound = false; // Alerts should play a sound?
extern bool alertsEmail = false; // Alerts should send email?
extern bool arrowsVisible = false; // Arrows visible?
extern bool arrowsOnNewest = false; // Arrows drawn on newst bar of higher time frame bar?
extern string arrowsIdentifier = "aqqe Arrows1"; // Unique ID for arrows
extern double arrowsUpperGap = 1.0; // Upper arrow gap
extern double arrowsLowerGap = 1.0; // Lower arrow gap
extern color arrowsUpColor = clrLimeGreen; // Up arrow color
extern color arrowsDnColor = clrOrange; // Down arrow color
extern int arrowsUpCode = 241; // Up arrow code
extern int arrowsDnCode = 242; // Down arrow code
extern bool Interpolate = true;
double RsiMa[];
double RsiMada[];
double RsiMadb[];
double RsiMaua[];
double RsiMaub[];
double TrendFast[];
double TrendSlow[];
double trend[];
double prices[];
string indicatorFileName;
bool returnBars;
int init()
{
// код доступен только после оплаты
}
int deinit()
{
string lookFor = arrowsIdentifier+":";
int lookForLength = StringLen(lookFor);
for (int i=ObjectsTotal()-1; i>=0; i--)
{
string objectName = ObjectName(i);
if (StringSubstr(objectName,0,lookForLength) == lookFor) ObjectDelete(objectName);
}
return(0);
}
double emas[][5];
#define iEma 0
#define iEmm 1
#define iEmf 2
#define iEms 3
#define _prict 4
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 (returnBars) { TrendSlow[0] = limit+1; return(0); }
if (TimeFrame == Period())
{
double alpha1 = 2.0/(RsiSmoothingFactor+1.0);
if (ArrayRange(emas,0) != Bars) ArrayResize(emas,Bars);
if (trend[limit]==-1) CleanPoint(limit,RsiMada,RsiMadb);
if (trend[limit]== 1) CleanPoint(limit,RsiMaua,RsiMaub);
for (i=limit; i>=0; i-- ) prices[i] = getPrice(RsiPrice,Open,Close,High,Low,i);
for (i=limit, r=Bars-i-1; i>=0; i--,r++)
{
emas[r][_prict] = iMAOnArray(prices,0,RsiPriceSmoothing,0,RsiPriceSmoothingMethod,i);
double noise = 0, vhf = 0;
double max = emas[r][_prict];
double min = emas[r][_prict];
for (int k=0; k<RsiPeriod && (r-k-1)>=0; k++)
{
noise += MathAbs(emas[r-k][_prict]-emas[r-k-1][_prict]);
max = MathMax(emas[r-k][_prict],max);
min = MathMin(emas[r-k][_prict],min);
}
if (noise>0) vhf = (max-min)/noise;
double rsiPeriod = -MathLog(vhf)*RsiPeriod;
if (r==0) continue;
double alpha2 = 1.0/(MathMax(rsiPeriod,1));
RsiMa[i] = RsiMa[i+1] + alpha1*(iRsi(emas[r][_prict],rsiPeriod,RsiType,i) - RsiMa[i+1]);
emas[r][iEma] = emas[r-1][iEma] + alpha2*(MathAbs(RsiMa[i+1]-RsiMa[i]) - emas[r-1][iEma]);
emas[r][iEmm] = emas[r-1][iEmm] + alpha2*(emas[r][iEma] - emas[r-1][iEmm]);
emas[r][iEmf] = emas[r][iEmm]*WPFast;
emas[r][iEms] = emas[r][iEmm]*WPSlow;
double tr = TrendSlow[i+1];
double dv = tr;
if (RsiMa[i] < tr) { tr = RsiMa[i] + emas[r][iEms]; if ((RsiMa[i+1] < dv) && (tr > dv)) tr = dv; }
if (RsiMa[i] > tr) { tr = RsiMa[i] - emas[r][iEms]; if ((RsiMa[i+1] > dv) && (tr < dv)) tr = dv; }
TrendSlow[i] = tr;
tr = TrendFast[i+1];
dv = tr;
if (RsiMa[i] < tr) { tr = RsiMa[i] + emas[r][iEmf]; if ((RsiMa[i+1] < dv) && (tr > dv)) tr = dv; }
if (RsiMa[i] > tr) { tr = RsiMa[i] - emas[r][iEmf]; if ((RsiMa[i+1] > dv) && (tr < dv)) tr = dv; }
TrendFast[i] = tr;
switch (ChangeColorOn)
{
case onBothCross :
trend[i] = 0;
if (RsiMa[i] > TrendSlow[i] && RsiMa[i] > TrendFast[i]) trend[i] = 1;
if (RsiMa[i] < TrendSlow[i] && RsiMa[i] < TrendFast[i]) trend[i] = -1;
break;
case onFastCross :
trend[i] = trend[i+1];
if (RsiMa[i] > TrendFast[i]) trend[i] = 1;
if (RsiMa[i] < TrendFast[i]) trend[i] = -1;
break;
case onSlowCross :
trend[i] = trend[i+1];
if (RsiMa[i] > TrendSlow[i]) trend[i] = 1;
if (RsiMa[i] < TrendSlow[i]) trend[i] = -1;
break;
default :
trend[i] = trend[i+1];
if (RsiMa[i] > RsiMa[i+1]) trend[i] = 1;
if (RsiMa[i] < RsiMa[i+1]) trend[i] = -1;
break;
}
RsiMada[i] = EMPTY_VALUE;
RsiMadb[i] = EMPTY_VALUE;
RsiMaua[i] = EMPTY_VALUE;
RsiMaub[i] = EMPTY_VALUE;
if (trend[i]==-1) PlotPoint(i,RsiMada,RsiMadb,RsiMa);
if (trend[i]== 1) PlotPoint(i,RsiMaua,RsiMaub,RsiMa);
if (arrowsVisible)
{
string lookFor = arrowsIdentifier+":"+(string)Time[i]; ObjectDelete(lookFor);
if (trend[i] != trend[i+1])
{
if (trend[i] == 1) drawArrow(i,arrowsUpColor,arrowsUpCode,false);
if (trend[i] ==-1) drawArrow(i,arrowsDnColor,arrowsDnCode, true);
}
}
}
if (alertsOn)
{
int whichBar = 1; if (alertsOnCurrent) whichBar = 0;
if (trend[whichBar] != trend[whichBar+1])
{
if (trend[whichBar] == 1) doAlert(whichBar,"up");
if (trend[whichBar] == -1) doAlert(whichBar,"down");
}
}
return(0);
}
limit = (int)MathMax(limit,MathMin(Bars-1,iCustom(NULL,TimeFrame,indicatorFileName,-99,0,0)*TimeFrame/Period()));
if (trend[limit]==-1) CleanPoint(limit,RsiMada,RsiMadb);
if (trend[limit]== 1) CleanPoint(limit,RsiMaua,RsiMaub);
for(i=limit; i>=0; i--)
{
int y = iBarShift(NULL,TimeFrame,Time[i]);
RsiMa[i] = iCustom(NULL,TimeFrame,indicatorFileName,PERIOD_CURRENT,RsiPeriod,RsiPrice,RsiPriceSmoothing,RsiPriceSmoothingMethod,RsiSmoothingFactor,RsiType,WPFast,WPSlow,ChangeColorOn,alertsOn,alertsOnCurrent,alertsMessage,alertsPushNotif,alertsSound,alertsEmail,arrowsVisible,arrowsOnNewest,arrowsIdentifier,arrowsUpperGap,arrowsLowerGap,arrowsUpColor,arrowsDnColor,arrowsUpCode,arrowsDnCode,2,y);
TrendSlow[i] = iCustom(NULL,TimeFrame,indicatorFileName,PERIOD_CURRENT,RsiPeriod,RsiPrice,RsiPriceSmoothing,RsiPriceSmoothingMethod,RsiSmoothingFactor,RsiType,WPFast,WPSlow,ChangeColorOn,alertsOn,alertsOnCurrent,alertsMessage,alertsPushNotif,alertsSound,alertsEmail,arrowsVisible,arrowsOnNewest,arrowsIdentifier,arrowsUpperGap,arrowsLowerGap,arrowsUpColor,arrowsDnColor,arrowsUpCode,arrowsDnCode,0,y);
TrendFast[i] = iCustom(NULL,TimeFrame,indicatorFileName,PERIOD_CURRENT,RsiPeriod,RsiPrice,RsiPriceSmoothing,RsiPriceSmoothingMethod,RsiSmoothingFactor,RsiType,WPFast,WPSlow,ChangeColorOn,alertsПоказано первые 50% кода (символов: 15729)
Открыть по тарифу
Купите тариф с пакетом открытий или войдите, если тариф уже есть. Открытый файл останется в вашем кабинете навсегда.
Разовая покупка файла
На этой странице откроется полный исходный код файла вместо ознакомительного фрагмента.
Зачем нужен email? После подтверждения оплаты файл сохранится в кабинете на этот email. Если аккаунта ещё нет, мы создадим его и пришлём ссылку для задания пароля. Если аккаунт уже есть, покупка добавится в него. Укажите адрес, к которому у вас есть доступ.
Чтобы оформить заказ, введите email и перейдите к оплате.