RSI_2SigMA
Сообщите нам, если считаете, что материал размещён без разрешения.
Сообщить о материале
Обращение по товару «rsi_smoother_mtf__2_signals__histo.mq5» отправится на рассмотрение. Укажите контакт для ответа и опишите причину.
О программе
Индикатор RSI_2SigMA рассчитывает сглаженный RSI-показатель на основе собственной функции двойного экспоненциального сглаживания, а затем применяет к нему две скользящие средние с настраиваемыми периодами и методами. Разница между двумя скользящими средними используется для определения направления тренда и его изменения, что визуализируется четырьмя гистограммами разного цвета.
Поддерживается мультитаймфреймовый анализ: индикатор может отображать данные с любого выбранного таймфрейма на текущем графике. При необходимости расчёта значения можно использовать специальный режим, при котором на текущем графике вызывается копия самого себя для получения числового значения.
Индикатор отрисовывает 8 буферов в отдельном окне: четыре гистограммы (зелёная, пурпурная, серая и синяя) отражают комбинацию направления тренда и его ускорения, а также линия разницы между скользящими средними. Уровни 20 и -20 заданы как визуальные ориентиры.
Настройки программы
| Настройка | Описание |
|---|---|
| TimeFrame | Таймфрейм, с которого берутся данные для расчёта индикатора. Можно задать строковое обозначение (M1, M5, H1, D1 и т.д.) или «Current time frame» для текущего графика. Также поддерживаются режимы «returnBars» и «calculateValue». |
| RSI_Period | Период сглаживания, используемый при расчёте сглаженного RSI-показателя. По умолчанию 14. |
| RSI_Price | Тип цены (индекс), используемый в качестве исходных данных для расчёта RSI. По умолчанию 0 (Close). |
| MA1_Period | Период первой скользящей средней, применяемой к сглаженному RSI. По умолчанию 3. |
| MA1_Mode | Метод расчёта первой скользящей средней (0 — SMA, 1 — EMA, 2 — SMMA, 3 — LWMA). По умолчанию EMA. |
| MA2_Period | Период второй скользящей средней. По умолчанию 5. |
| MA2_Mode | Метод расчёта второй скользящей средней, применяемой к первой скользящей средней. (0 — SMA, 1 — EMA, 2 — SMMA, 3 — LWMA). По умолчанию EMA. |
| MA_Method_Price | Строковая таблица соответствия кодов ценовых типов для расчёта скользящих средних: 0 — Close, 1 — Open, 2 — High, 3 — Low, 4 — Median, 5 — Typical, 6 — Weighted Close. |
Поиск по коду файла
#property indicator_separate_window
#property indicator_buffers 8
#property indicator_color1 LimeGreen
#property indicator_color2 LimeGreen
#property indicator_color3 PaleVioletRed
#property indicator_color4 PaleVioletRed
#property indicator_color5 DimGray
#property indicator_color6 RoyalBlue
#property indicator_color7 Green
#property indicator_color8 Red
#property indicator_width1 2
#property indicator_width3 2
#property indicator_width6 3
#property indicator_width7 2
#property indicator_width8 2
#property indicator_level1 20
#property indicator_level2 0
#property indicator_level3 -20
#property indicator_levelcolor DarkOliveGreen
extern string TimeFrame = "Current time frame";
extern int RSI_Period = 14;
extern int RSI_Price = 0;
extern int MA1_Period = 3;
extern int MA1_Mode = 1;
extern int MA2_Period = 5;
extern int MA2_Mode = 1;
extern string TimeFrames="M1;5,15,30,60H1;240H4;1440D1;10080W1;43200MN|0-CurrentTF";
extern string MA_Method_Price="SMA0 EMA1 SMMA2 LWMA3||0C,1O 2H3L,4Md 5Tp 6WghC: Md(HL/2)4,Tp(HLC/3)5,Wgh(HLCC/4)6";
double RSI_Buffer[];
double MA1_Buffer[];
double MA2_Buffer[];
double hiUu[];
double hiUd[];
double hiDd[];
double hiDu[];
double hiLi[];
string indicatorFileName;
bool returnBars;
bool calculateValue;
int timeFrame;
int init()
{
// код доступен только после оплаты
}
int deinit()
{
return(0);
}
double work[][2];
#define _trend 0
#define _slope 1
int start()
{
// код доступен только после оплаты
}
int i,r,counted_bars=IndicatorCounted();
if(counted_bars<0) return(-1);
if(counted_bars>0) counted_bars--;
int limit=MathMin(Bars-counted_bars,Bars-1);
if (returnBars) { hiUu[0] = MathMin(limit+1,Bars-1); return(0); }
if (ArrayRange(work,0)!=Bars) ArrayResize(work,Bars);
if (calculateValue || timeFrame == Period())
{
for(i=limit; i>=0; i--)
{
double mom = iMA(NULL,0,1,0,MODE_SMA,RSI_Price,i)-iMA(NULL,0,1,0,MODE_SMA,RSI_Price,i+1);
double moa = MathAbs(mom);
double tmom = iSmooth(mom,RSI_Period,1,i,0);
double tmoa = iSmooth(moa,RSI_Period,1,i,1);
if (tmoa != 0)
RSI_Buffer[i] = MathMax(MathMin((tmom/tmoa+1.0)*50.0,100.00),0.00)-50;
else RSI_Buffer[i] = 0;
}
for(i=limit; i>=0;i--) MA1_Buffer[i] = iMAOnArray(RSI_Buffer,0,MA1_Period,0,MA1_Mode,i);
for(i=limit,r=Bars-i-1;i>=0;i--,r++){ MA2_Buffer[i] = iMAOnArray(MA1_Buffer,0,MA2_Period,0,MA2_Mode,i);
hiLi[i] = MA1_Buffer[i]-MA2_Buffer[i];
hiUu[i] = EMPTY_VALUE;
hiUd[i] = EMPTY_VALUE;
hiDd[i] = EMPTY_VALUE;
hiDu[i] = EMPTY_VALUE;
work[r][_trend] = work[r-1][_trend];
work[r][_slope] = work[r-1][_slope];
if (hiLi[i]>0) work[r][_trend] = 1;
if (hiLi[i]<0) work[r][_trend] = -1;
if (hiLi[i]>hiLi[i+1]) work[r][_slope] = 1;
if (hiLi[i]<hiLi[i+1]) work[r][_slope] = -1;
if (work[r][_trend]==1)
if (work[r][_slope]==1)
Показано первые 50% кода (символов: 5922)
Открыть по тарифу
Купите тариф с пакетом открытий или войдите, если тариф уже есть. Открытый файл останется в вашем кабинете навсегда.
Разовая покупка файла
На этой странице откроется полный исходный код файла вместо ознакомительного фрагмента.
Зачем нужен email? После подтверждения оплаты файл сохранится в кабинете на этот email. Если аккаунта ещё нет, мы создадим его и пришлём ссылку для задания пароля. Если аккаунт уже есть, покупка добавится в него. Укажите адрес, к которому у вас есть доступ.
Чтобы оформить заказ, введите email и перейдите к оплате.