Rsiv
Сообщите нам, если считаете, что материал размещён без разрешения.
Сообщить о материале
Обращение по товару «dynamic zone rsiv - smoothed.mq5» отправится на рассмотрение. Укажите контакт для ответа и опишите причину.
О программе
Индикатор RSIV для MetaTrader 4 рассчитывает модифицированный осциллятор на основе сравнения простого скользящего среднего и линейной регрессии ценовых данных. Полученное значение отражает направление и силу ценового импульса, после чего пропускается через пользовательский алгоритм сглаживания с возможностью двойного сглаживания.
На основе сглаженного RSIV рассчитываются динамические зоны вероятностей с помощью внешней DLL-библиотеки, определяющей уровни верхней, нижней и средней границ. Индикатор отображает четыре буфера в отдельном окне: верхнюю зону, нижнюю зону, среднюю линию и саму кривую RSIV.
Настройки позволяют задать периоды расчёта, пороговые вероятности для динамических зон, параметры сглаживания и тип цены. Индикатор предназначен для технического анализа и визуализации зон вероятностных уровней на графике.
Настройки программы
| Настройка | Описание |
|---|---|
| RsivPeriod | Период RSIV — Период расчёта RSIV-осциллятора |
| LinearRegressionPeriod | Период линейной регрессии — Период линейной регрессии, используемой при расчёте импульса |
| Price | Тип цены — Тип цены, используемой в расчётах (например, PRICE_CLOSE) |
| DzLookBackBars | Количество баров для динамических зон — Количество баров для расчёта динамических зон вероятности |
| DzStartBuyProbability | Начальная вероятность покупки — Начальная вероятность для расчёта верхней (покупательской) динамической зоны |
| DzStartSellProbability | Начальная вероятность продажи — Начальная вероятность для расчёта нижней (продажной) динамической зоны |
| Smooth | Длина сглаживания — Длина сглаживания RSIV-значения |
| SmoothPhase | Фаза сглаживания — Фазовый параметр алгоритма сглаживания |
| SmoothDouble | Двойное сглаживание — Включает или отключает двойное сглаживание RSIV |
Поиск по коду файла
#property indicator_separate_window
#property indicator_buffers 4
#property indicator_color1 PaleVioletRed
#property indicator_color2 DeepSkyBlue
#property indicator_color3 DimGray
#property indicator_color4 DeepSkyBlue
#property indicator_width4 2
#property indicator_style3 STYLE_DOT
#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 RsivPeriod = 30;
extern int LinearRegressionPeriod = 40;
extern int Price = PRICE_CLOSE;
extern int DzLookBackBars = 35;
extern double DzStartBuyProbability = 0.16;
extern double DzStartSellProbability = 0.16;
extern double Smooth = 5;
extern double SmoothPhase = 0;
extern bool SmoothDouble = true;
double bufferUp[];
double bufferDn[];
double bufferMi[];
double rsiv[];
int init()
{
// код доступен только после оплаты
}
int deinit() { return(0); }
double work[][6];
#define _diff 0
#define _upScore 1
#define _upDiff 2
#define _dnScore 3
#define _dnDiff 4
#define _lrValue 5
int start()
{
// код доступен только после оплаты
}
int counted_bars=IndicatorCounted();
int limit,r,i;
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);
for(i=limit, r=Bars-i-1; i>=0; i--, r++)
{
double price = iMA(NULL,0,1,0,MODE_SMA,Price,i);
work[r][_lrValue] = 3.0*iMA(NULL,0,LinearRegressionPeriod,0,MODE_LWMA,Price,i)-2.0*iMA(NULL,0,LinearRegressionPeriod,0,MODE_SMA,Price,i);
work[r][_diff] = price - work[r][_lrValue];
work[r][_upScore] = 0;
work[r][_upDiff] = 0;
work[r][_dnScore] = 0;
work[r][_dnDiff] = 0;
if (work[r][_diff]>work[r-1][_diff])
{
work[r][_upScore] = 1;
work[r][_upDiff] = work[r][_diff]-work[r-1][_diff];
}
if (work[r][_diff]<work[r-1][_diff])
{
work[r][_dnScore] = 1;
work[r][_dnDiff] = work[r-1][_diff]-work[r][_diff];
}
double pos = 0;
double neg = 0;
double posDiff = 0;
double negDiff = 0;
for (int k=0; k<RsivPeriod && (r-k)>=0; k++)
{
pos += work[r-k][_upScore]; posDiff += work[r-k][_upDiff];
neg += work[r-k][_dnScore]; negDiff += work[r-k][_dnDiff];
}
rsiv[i] = iDSmooth(100-(100.0/(1.0+(pos*posDiff/(neПоказано первые 50% кода (символов: 4380)
Открыть по тарифу
Купите тариф с пакетом открытий или войдите, если тариф уже есть. Открытый файл останется в вашем кабинете навсегда.
Разовая покупка файла
На этой странице откроется полный исходный код файла вместо ознакомительного фрагмента.
Зачем нужен email? После подтверждения оплаты файл сохранится в кабинете на этот email. Если аккаунта ещё нет, мы создадим его и пришлём ссылку для задания пароля. Если аккаунт уже есть, покупка добавится в него. Укажите адрес, к которому у вас есть доступ.
Чтобы оформить заказ, введите email и перейдите к оплате.