dz_inverse_fisher_transform_of_oma_rsi
Похожие материалы по тегам
Сообщите нам, если считаете, что материал размещён без разрешения.
Сообщить о материале
Обращение по товару «dz_inverse_fisher_transform_of_oma_rsi.mq5» отправится на рассмотрение. Укажите контакт для ответа и опишите причину.
О программе
Представляет собой пользовательский технический индикатор для MetaTrader 4, который анализирует ценовые данные на основе адаптивно сглаженного RSI и отображает результаты в отдельном окне индикатора. Индикатор применяет обратное преобразование Фишера к сглаженным значениям RSI и использует внешнюю библиотеку Dynamic Zones для определения направления тренда и визуальной индикации зон вероятности. Поддерживает работу с несколькими таймфреймами и включает опцию интерполяции для плавного перехода между данными разных таймфреймов. Внешняя DLL (dynamicZone.dll) используется для расчёта зон покупки и продажи на основе заданных вероятностей и периода обзора.
Настройки программы
| Настройка | Описание |
|---|---|
| TimeFrame | Таймфрейм — Таймфрейм, на котором работает индикатор (например, M1, H4, D1 или Current time frame). |
| RSIPeriod | Период RSI — Период расчёта RSI. |
| RSIPrice | Цена RSI — Тип цены, используемой для расчёта RSI (например, закрытие). |
| OmaSpeed | Скорость OMA (RSI) — Коэффициент скорости сглаживания для расчёта RSI. |
| OmaAdaptive | Адаптивность OMA (RSI) — Переключатель адаптивного сглаживания для расчёта RSI. |
| SmoothPeriod | Период сглаживания — Период дополнительного сглаживания сигнальной линии. |
| SmoothSpeed | Скорость сглаживания — Коэффициент скорости дополнительного сглаживания. |
| SmoothAdaptive | Адаптивность сглаживания — Переключатель адаптивного сглаживания для дополнительной фильтрации сигнала. |
| DzLookBack | Период обзора Dz — Количество баров, учитываемых при расчёте динамических зон. |
| DzBuyProbability | Вероятность покупки Dz — Пороговая вероятность для зоны покупки, используемая при расчёте динамических зон через внешнюю библиотеку. |
| DzSellProbability | Вероятность продажи Dz — Пороговая вероятность для зоны продажи, используемая при расчёте динамических зон через внешнюю библиотеку. |
| Interpolate | Интерполяция — Переключатель интерполяции значений между барами при работе на старшем таймфрейме. |
Поиск по коду файла
#property indicator_separate_window
#property indicator_buffers 7
#property indicator_color1 DarkGray
#property indicator_color2 DarkGray
#property indicator_color3 DarkGray
#property indicator_color4 Orange
#property indicator_color5 Orange
#property indicator_color6 LimeGreen
#property indicator_color7 LimeGreen
#property indicator_width4 2
#property indicator_width5 2
#property indicator_width6 2
#property indicator_width7 2
#property indicator_maximum 1
#property indicator_minimum -1
#property indicator_style1 STYLE_DOT
#property indicator_style2 STYLE_DOT
#import "dynamicZone.dll"
double dzBuy(double& sourceArray[],double probabiltyValue, int lookBack, int bars, int i );
double dzSell(double& sourceArray[],double probabiltyValue, int lookBack, int bars, int i );
#import
extern string TimeFrame = "Current time frame";
extern int RSIPeriod = 32;
extern int RSIPrice = PRICE_CLOSE;
extern double OmaSpeed = 1.5;
extern bool OmaAdaptive = true;
extern double SmoothPeriod = 3;
extern double SmoothSpeed = 3;
extern bool SmoothAdaptive = true;
extern int DzLookBack = 35;
extern double DzBuyProbability = 0.15;
extern double DzSellProbability = 0.15;
extern bool Interpolate = true;
double ifishua[];
double ifishub[];
double ifishda[];
double ifishdb[];
double ifisher[];
double trend[];
double up[];
double dn[];
string indicatorFileName;
bool returnBars;
bool calculateValue;
int timeFrame;
int init()
{
// код доступен только после оплаты
}
int deinit()
{
return(0);
}
int start()
{
// код доступен только после оплаты
}
int limit, i;
int counted_bars=IndicatorCounted();
if(counted_bars<0) return(-1);
if(counted_bars>0) counted_bars--;
limit=MathMax(Bars-counted_bars,Bars-1);
if (returnBars) { up[0] = limit+1; return(0); }
if (calculateValue || timeFrame==Period())
{
if (!calculateValue) if (trend[limit]== 1) CleanPoint(limit,ifishua,ifishub);
if (!calculateValue) if (trend[limit]==-1) CleanPoint(limit,ifishda,ifishdb);
for(i=limit; i>=0; i--)
{
double rsi = 0.1*(iRsi(iMA(NULL,0,1,0,MODE_SMA,RSIPrice,i),RSIPeriod,OmaSpeed,OmaAdaptive,i)-50);
double avg = iOma(rsi,SmoothPeriod,SmoothSpeed,SmoothAdaptive,i,2);
ifisher[i] = (MathExp(2*avg)-1)/(MathExp(2*avg)+1);
trend[i] = trend[i+1];
up[i] = dzSell(ifisher, DzSellProbability, DzLookBack, Bars, i);
dn[i] = dzBuy (ifisher, DzBuyProbability, DzLookBack, Bars, i);
if (ifisher[i] < up[i] && ifisher[i] > dn[i]) trend[i] = 0;
if (ifisher[i] > up[i]) trend[i] = 1;
if (ifisher[i] < dn[i]) trend[i] = -1;
if (calculateValue) continue;
ifishda[i] = EMPTY_VALUE; ifishdb[i] = EMPTY_VALUE;
ifishua[i] = EMPTY_VALUE; ifishub[i] = EMPTY_VALUE;
if (trend[i]== 1) PlotPoint(i,ifishua,ifishub,ifisher);
if (trend[i]==-1) PlotPoint(i,ifishda,ifishdb,ifisher);
}
return(0);
}
limit = MathMax(limit,MathMin(Bars-1,iCustom(NULL,timeFrame,indicatorFileName,"returnBars",0,0)*timeFrame/Period()));
if (trend[limit]== 1) CleanPoint(limit,ifishua,ifishub);
if (trend[limit]==-1) CleanPoint(limit,ifishda,ifishdb);
for(i=limit; i>=0; i--)
{
int y = iBarShift(NULL,timeFrame,Time[i]);
trend[i] = iCustom(NULL,timeFrame,indicatorFileName,"calculateValue",RSIPeriod,RSIPrice,OmaSpeed,OmaAdaptive,SmoothPeriod,SmoothSpeed,SmoothAdaptive,DzLookBack,DzBuyProbability,DzSellProbability,7,y);
ifisher[i] = iCustom(NULL,timeFrame,indicatorFileName,"calculateValue",RSIPeriod,RSIPrice,OmaSpeed,OmaAdaptive,SmoothPeriod,SmoothSpeed,SmoothAdaptive,DzLookBack,DzBuyProbability,DzSellProbability,2,y);
up[i] = iCustom(NULL,timeFrame,indicatorFileName,"calculateValue",RSIPeriod,RSIPrice,OmaSpeed,OmaAdaptive,SmoothPeriod,SmoothSpeed,SmoothAdaptive,DzLookBack,DzBuyProbability,DzSellProbability,0,y);
dn[i] = iCustom(NULL,timeFrame,indicatorFileName,"calculateValue",RSIPeriod,RSIPrice,OmaSpeed,OmaAdaptive,SmoothPeriod,SmoothSpeed,SmoothAdaptive,DzLookBack,DzBuyProbability,DzSellProbability,1,y);
ifishda[i] = EMPTY_VALUE;
ifishdb[i] = EMPTY_VALUE;
ifishua[i] = EMPTY_VALUE;
ifishub[i] = EMPTY_VALUE; Показано первые 50% кода (символов: 7745)
Открыть по тарифу
Купите тариф с пакетом открытий или войдите, если тариф уже есть. Открытый файл останется в вашем кабинете навсегда.
Разовая покупка файла
На этой странице откроется полный исходный код файла вместо ознакомительного фрагмента.
Зачем нужен email? После подтверждения оплаты файл сохранится в кабинете на этот email. Если аккаунта ещё нет, мы создадим его и пришлём ссылку для задания пароля. Если аккаунт уже есть, покупка добавится в него. Укажите адрес, к которому у вас есть доступ.
Чтобы оформить заказ, введите email и перейдите к оплате.