RSI slope divergence
Похожие материалы по тегам
Сообщите нам, если считаете, что материал размещён без разрешения.
Сообщить о материале
Обращение по товару «dynamic_double_zone_smooth_rsi_slope_divergence.mq5» отправится на рассмотрение. Укажите контакт для ответа и опишите причину.
О программе
Данный индикатор работает в отдельном окне MetaTrader 4 и рассчитывает сглаженную версию RSI с поддержкой нескольких вариантов расчёта (стандартный RSI, Wilder RSI, RSX, Cuttler RSI). К значениям RSI применяется собственный алгоритм двойного сглаживания, а также строится экспоненциальная скользящая средняя от сглаженного RSI.
Индикатор интегрирует анализ динамических зон через внешнюю библиотеку dynamicZone.dll, вычисляя зоны покупательской и продавательской вероятности на основе настраиваемых порогов и глубины анализа. Дополнительно рассчитывается линия медианной вероятности.
Также выполняется линейная регрессия для сглаженного RSI и опорной цены (SMA), по результатам которой рисуются трендовые линии и каналы с доверительными полосами в виде графических объектов на графике. Параметры позволяют настраивать периоды, цвета, стили линий и ширину канала регрессии.
Настройки программы
| Настройка | Описание |
|---|---|
| RsiPeriod | Период расчёта RSI — Период расчёта RSI |
| RsiPrice | Тип цены для расчёта RSI — Тип цены для расчёта RSI |
| _rsimethods | Справочник методов RSI — Справочник методов RSI: 0=rsi, 1=wilder rsi, 2=rsx, 3=cuttler rsi |
| RsiMethod | Метод расчёта RSI — Метод расчёта RSI (0=RSI, 1=Wilder RSI, 2=RSX, 3=Cuttler RSI) |
| SmoothLength | Длина сглаживания — Длина сглаживания |
| SmoothPhase | Фаза сглаживания — Фаза сглаживания |
| SmoothDouble | Переключатель двойного сглаживания — Переключатель двойного сглаживания |
| MaPeriod | Период скользящей средней от RSI — Период скользящей средней от RSI |
| MaType | Тип скользящей средней от RSI — Тип скользящей средней от RSI |
| DzLookBackBars | Количество баров для анализа динамических зон — Количество баров для анализа динамических зон |
| DzStartBuyProbability1 | Порог вероятности покупки для первой зоны покупки — Порог вероятности покупки для первой зоны покупки |
| DzStartBuyProbability2 | Порог вероятности покупки для второй зоны покупки — Порог вероятности покупки для второй зоны покупки |
| DzStartSellProbability1 | Порог вероятности продажи для первой зоны продажи — Порог вероятности продажи для первой зоны продажи |
| DzStartSellProbability2 | Порог вероятности продажи для второй зоны продажи — Порог вероятности продажи для второй зоны продажи |
| LinearRegressionLength | Длина периода линейной регрессии — Длина периода линейной регрессии |
| LinearRegressionChannelWidth | Множитель ширины канала линейной регрессии — Множитель ширины канала линейной регрессии |
| IndicatorUniqueID | Уникальный идентификатор индикатора — Уникальный идентификатор индикатора для именования графических объектов |
| ChartLineColor | Цвет линии регрессии цены — Цвет линии регрессии цены |
| ChartLineMiddleStyle | Стиль средней линии тренда цены — Стиль средней линии тренда цены |
| ChartLineStyle | Стиль линии тренда цены — Стиль линии тренда цены |
| RsiLineColor | Цвет линии RSI — Цвет линии RSI |
| RsiLineMiddleStyle | Стиль средней линии RSI — Стиль средней линии RSI |
| RsiLineStyle | Стиль линии RSI — Стиль линии RSI |
Поиск по коду файла
#property indicator_separate_window
#property indicator_buffers 7
#property indicator_color1 LimeGreen
#property indicator_color2 Red
#property indicator_color3 DeepSkyBlue
#property indicator_color4 DeepSkyBlue
#property indicator_color5 PaleVioletRed
#property indicator_color6 PaleVioletRed
#property indicator_color7 DarkSlateGray
#property indicator_style4 STYLE_DOT
#property indicator_style5 STYLE_DOT
#property indicator_style7 STYLE_DASH
#property indicator_width1 2
#property indicator_style2 STYLE_DASH
#import "dynamicZone.dll"
double dzBuyP(double& sourceArray[], double probabiltyValue, int lookBack, int bars, int i, double precision);
double dzSellP(double& sourceArray[],double probabiltyValue, int lookBack, int bars, int i, double precision);
#import
extern int RsiPeriod = 2;
extern int RsiPrice = PRICE_CLOSE;
extern string _rsimethods = "0=rsi,1=wilder rsi,2=rsx,3=cuttler rsi ";
extern int RsiMethod = 0;
extern double SmoothLength = 9;
extern double SmoothPhase = 0;
extern bool SmoothDouble = false;
extern int MaPeriod = 7;
extern int MaType = MODE_LWMA;
extern int DzLookBackBars = 70;
extern double DzStartBuyProbability1 = 0.025;
extern double DzStartBuyProbability2 = 0.15;
extern double DzStartSellProbability1 = 0.025;
extern double DzStartSellProbability2 = 0.15;
extern int LinearRegressionLength = 50;
extern double LinearRegressionChannelWidth = 2.0;
extern string IndicatorUniqueID = "RSI slope divergence";
extern color ChartLineColor = DarkGray;
extern int ChartLineMiddleStyle = STYLE_DOT;
extern int ChartLineStyle = STYLE_SOLID;
extern color RsiLineColor = Gold;
extern int RsiLineMiddleStyle = STYLE_DOT;
extern int RsiLineStyle = STYLE_SOLID;
double rsi[];
double ema[];
double bl1[];
double bl2[];
double sl2[];
double sl1[];
double zli[];
string shortName;
int init()
{
// код доступен только после оплаты
}
int deinit()
{
for (int i=ObjectsTotal(); i>=0; i--)
{
string name = ObjectName(i); if (StringFind(name,IndicatorUniqueID)==0) ObjectDelete(name);
}
return(0);
}
int start()
{
// код доступен только после оплаты
}
void createLine(int window, double price1, double price2, string addName, color theColor, int theStyle, int theMiddleStyle, double error)
{
string name = IndicatorUniqueID+addName;
if (ObjectFind(name)==-1)
ObjectCreate(name,OBJ_TREND,window,0,0,0,0);
ObjectSet(name,OBJPROP_PRICE1,price1);
ObjectSet(name,OBJPROP_PRICE2,price2);
ObjectSet(name,OBJPROP_TIME1,Time[0]);
ObjectSet(name,OBJPROP_TIME2,Time[LinearRegressionLength-1]);
ObjectSet(name,OBJPROP_RAY,false);
ObjectSet(name,OBJPROP_COLOR,theColor);
ObjectSet(name,OBJPROP_STYLE,theMiddleStyle);
if (error<=0) return;
name = IndicatorUniqueID+addName+"up";
if (ObjectFind(name)==-1)
ObjectCreate(name,OBJ_TREND,window,0,0,0,0);
ObjectSet(name,OBJPROP_PRICE1,price1+error);
ObjectSet(name,OBJPROP_PRICE2,price2+error);
ObjectSet(name,OBJPROP_TIME1,Time[0]);
ObjectSet(name,OBJPROP_TIME2,Time[LinearRegressionLength-1]);
ObjectSet(name,OBJPROP_RAY,false);
ObjectSet(name,OBJPROP_COLOR,theColor);
ObjectSet(name,OBJPROP_STYLE,theStyle);
name = IndicatorUniqueID+addName+"down";
if (ObjectFind(name)==-1)
ObjectCreate(name,OBJ_TREND,window,0,0,0,0);
ObjectSet(name,OBJPROP_PRICE1,price1-error);
ObjectSet(name,OBJPROP_PRICE2,price2-error);
ObjectSet(name,OBJPROP_TIME1,Time[0]);
ObjectSet(name,OBJPROP_TIME2,Time[LinearRegressionLength-1]);
ObjectSet(name,OBJPROP_RAY,false);
ObjectSet(name,OBJPROP_COLOR,theColor);
ObjectSet(name,OBJPROP_STYLE,theStyle);
}
double workLr[][2];
void fillLrArray(int i, int instanceNo, double value)
{
if (ArrayRange(workLr,0)!=Bars) ArrayResize(workLr,Bars); i = Bars-i-1; workLr[i][instanceNo] = value;
}
double iLrValue(double value, int period, double& slope, double& error, int r, int instanceNo=0)
{
if (ArrayRange(workLr,0)!=Bars) ArrayResize(workLr,Bars); r = Bars-r-1; workLr[r][instanceNo] = value;
if (r<period || period<2) return(value);
double sumx=0, sumxx=0, sumxy=0, sumy=0, sumyy=0;
for (int k=0; k<period; k++)
{
double price = workПоказано первые 50% кода (символов: 10440)
Открыть по тарифу
Купите тариф с пакетом открытий или войдите, если тариф уже есть. Открытый файл останется в вашем кабинете навсегда.
Разовая покупка файла
На этой странице откроется полный исходный код файла вместо ознакомительного фрагмента.
Зачем нужен email? После подтверждения оплаты файл сохранится в кабинете на этот email. Если аккаунта ещё нет, мы создадим его и пришлём ссылку для задания пароля. Если аккаунт уже есть, покупка добавится в него. Укажите адрес, к которому у вас есть доступ.
Чтобы оформить заказ, введите email и перейдите к оплате.