dynamic zone - inverse fisher transform of rsi smoothed.mq5
Похожие материалы по тегам
Сообщите нам, если считаете, что материал размещён без разрешения.
Сообщить о материале
Обращение по товару «dynamic zone - inverse fisher transform of rsi smoothed.mq5» отправится на рассмотрение. Укажите контакт для ответа и опишите причину.
О программе
Пользовательский индикатор для платформы MetaTrader 4, отображаемый в отдельном окне графика. Рассчитывает значения на основе индикатора RSI с последующим применением пользовательской функции сглаживания и обратного преобразования Фишера.
Для генерации аналитических зон используется внешняя библиотека dynamicZone.dll, предоставляющая функции расчёта зон покупки и продажи на основе массива значений и заданных вероятностей. Результаты отрисовываются в виде точек тренда и зон на графике.
Индикатор поддерживает работу на различных таймфреймах, включая возможность интерполяции данных при переходе между периодами. Доступны режимы расчёта значений и возврата количества баров для интеграции с другими инструментами.
Настройки программы
| Настройка | Описание |
|---|---|
| TimeFrame | TimeFrame — Выбор таймфрейма для расчёта индикатора. Поддерживается задача переключения между таймфреймами и специальное значение для возврата количества баров. |
| RSIPeriod | RSIPeriod — Период расчёта индикатора RSI, используемый в качестве исходных данных для дальнейшей обработки. |
| RSIPrice | RSIPrice — Тип цены, применяемый при расчёте RSI (например, закрытие). |
| SmoothLength | SmoothLength — Длина сглаживания, определяющая глубину фильтрации исходного сигнала RSI перед преобразованием. |
| SmoothPhase | SmoothPhase — Фаза сглаживания, влияющая на скорость реакции фильтра на изменение цены. |
| SmoothDouble | SmoothDouble — Переключатель двойного сглаживания. При активации применяется два последовательных этапа фильтрации. |
| DzLookBackBars | DzLookBackBars — Количество баров назад, используемое для расчёта динамических зон вероятности. |
| DzStartBuyProbability | DzStartBuyProbability — Начальное значение вероятности для расчёта зоны покупки (нижней границы). |
| DzStartSellProbability | DzStartSellProbability — Начальное значение вероятности для расчёта зоны продажи (верхней границы). |
| Interpolate | Interpolate — Переключатель интерполяции значений между барами при работе на разных таймфреймах. |
Поиск по коду файла
#property indicator_separate_window
#property indicator_buffers 8
#property indicator_color1 DimGray
#property indicator_color2 PaleVioletRed
#property indicator_color3 PaleVioletRed
#property indicator_color4 DeepSkyBlue
#property indicator_color5 DeepSkyBlue
#property indicator_color6 PaleVioletRed
#property indicator_color7 DeepSkyBlue
#property indicator_color8 DimGray
#property indicator_width2 2
#property indicator_width3 2
#property indicator_width4 2
#property indicator_width5 2
#property indicator_style8 STYLE_DOT
#property indicator_maximum 1
#property indicator_minimum -1
#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 = 5;
extern int RSIPrice = PRICE_CLOSE;
extern double SmoothLength = 9;
extern double SmoothPhase = 0;
extern bool SmoothDouble = false;
extern int DzLookBackBars = 70;
extern double DzStartBuyProbability = 0.15;
extern double DzStartSellProbability = 0.15;
extern bool Interpolate = true;
double ifishua[];
double ifishub[];
double ifishda[];
double ifishdb[];
double ifisher[];
double sli[];
double bli[];
double zli[];
string indicatorFileName;
bool returnBars;
bool calculateValue;
int timeFrame;
int init()
{
// код доступен только после оплаты
}
int deinit()
{
return(0);
}
double trend[];
int start()
{
// код доступен только после оплаты
}
int limit,i,r,counted_bars=IndicatorCounted();
if(counted_bars<0) return(-1);
if(counted_bars>0) counted_bars--;
limit=MathMin(Bars-counted_bars,Bars-1);
if (returnBars) { ifisher[0] = limit+1; return(0); }
if (calculateValue || timeFrame==Period())
{
if (ArraySize(trend)!=Bars) ArrayResize(trend,Bars);
if (!calculateValue) if (trend[Bars-limit-1]== 1) CleanPoint(limit,ifishua,ifishub);
if (!calculateValue) if (trend[Bars-limit-1]==-1) CleanPoint(limit,ifishda,ifishdb);
for(i=limit, r=Bars-i-1; i>=0; i--,r++)
{
double avgRsi = iDSmooth(0.1*(iRSI(NULL,0,RSIPeriod,RSIPrice,i)-50),SmoothLength,SmoothPhase,i);
ifisher[i] = (MathExp(2*avgRsi)-1)/(MathExp(2*avgRsi)+1);
bli[i] = dzBuy (ifisher, DzStartBuyProbability, DzLookBackBars, Bars, i);
sli[i] = dzSell(ifisher, DzStartSellProbability, DzLookBackBars, Bars, i);
zli[i] = dzSell(ifisher, 0.5, DzLookBackBars, Bars, i);
if (calculateValue) continue;
trend[r] = trend[r-1];
if (ifisher[i] < sli[i] && ifisher[i] > bli[i]) trend[r] = 0;
if (ifisher[i] > sli[i]) trend[r] = 1;
if (ifisher[i] < bli[i]) trend[r] = -1;
ifishda[i] = EMPTY_VALUE; ifishdb[i] = EMPTY_VALUE;
ifishua[i] = EMPTY_VALUE; ifishub[i] = EMPTY_VALUE;
if (trend[r]== 1) PlotPoint(i,ifishua,ifishub,ifisher);
if (trend[r]==-1) PlotPoint(i,ifishda,ifishdb,ifisher);
}
return(0);
}
limit = MathMax(limit,MathMin(Bars-1,iCustom(NULL,timeFrame,indicatorFileName,"returnBars",0,0)*timeFrame/Period()));
if (ArraySize(trend)!=Bars) ArrayResize(trend,Bars);
if (trend[Bars-limit-1]== 1) CleanPoint(limit,ifishua,ifishub);
if (trend[Bars-limit-1]==-1) CleanPoint(limit,ifishda,ifishdb);
for(i=limit, r=Bars-i-1; i>=0; i--,r++)
{
int y = iBarShift(NULL,timeFrame,Time[i]);
ifishda[i] = EMPTY_VALUE;
ifishdb[i] = EMPTY_VALUE;
ifishua[i] = EMPTY_VALUE;
ifishub[i] = EMPTY_VALUE;
ifisher[i] = iCustom(NULL,timeFrame,indicatorFileName,"calculateValue",RSIPeriod,RSIPrice,SmoothLength,SmoothPhase,SmoothDouble,DzLookBackBars,DzStartBuyProbability,DzStartSellProbability,0,y);
bli[i] = iCustom(NULL,timeFrame,indicatorFileName,"calculateValue",RSIPeriod,RSIPrice,SmoothLength,SmoothPhase,SmoothDouble,DzLookBackBars,DzStartBuyProbability,DzStartSellProbability,5,y);
sli[i] = iCustom(NULL,timeFrame,indicatorFileName,"calculateValue",RSIPeriod,RSIPrice,SmoothLength,SmoothPhase,SmoothDouble,DzLookBackBars,DzStartBuyProbability,DzStartSellProbability,6,y);
zli[i] = iCustom(NULL,timeFrame,indicatorFileName,"calculateValue",RSIPeriod,RSIPrice,SmoothLength,SmoothPhase,SmoothDouble,DzLookBackBars,DzStartBuyProbability,DzStartSellProbability,7,y);
if (ifisher[i] < sli[i] && ifisher[i] > bli[i]) trend[r] = 0;
Показано первые 50% кода (символов: 8097)
Открыть по тарифу
Купите тариф с пакетом открытий или войдите, если тариф уже есть. Открытый файл останется в вашем кабинете навсегда.
Разовая покупка файла
На этой странице откроется полный исходный код файла вместо ознакомительного фрагмента.
Зачем нужен email? После подтверждения оплаты файл сохранится в кабинете на этот email. Если аккаунта ещё нет, мы создадим его и пришлём ссылку для задания пароля. Если аккаунт уже есть, покупка добавится в него. Укажите адрес, к которому у вас есть доступ.
Чтобы оформить заказ, введите email и перейдите к оплате.