inverse_fisher_transform_of_rsi.mq5
Похожие материалы по тегам
Сообщите нам, если считаете, что материал размещён без разрешения.
Сообщить о материале
Обращение по товару «inverse_fisher_transform_of_rsi.mq5» отправится на рассмотрение. Укажите контакт для ответа и опишите причину.
О программе
Данный продукт представляет собой пользовательский индикатор для платформы MetaTrader 4, отображаемый в отдельном окне. Он берёт значения RSI с настраиваемым периодом и типом цены, применяет к ним скользящее среднее заданного типа и периода, а затем преобразует результат в нормированный осциллятор с диапазоном от -1 до 1. Тренд определяется по трём настраиваемым пороговым уровням.
Индикатор поддерживает работу на различных таймфреймах, включая возможность отображения данных старшего таймфрейма на младшем графике. Доступна интерполяция значений между барами для более плавной визуализации. Внутренние вспомогательные функции обеспечивают корректную отрисовку точек тренда и очистку предыдущих расчётов.
Автор индикатора — mladen. Продукт не содержит торговых функций и работает исключительно в аналитическом режиме, предоставляя визуальные данные о динамике осциллятора и направлении тренда.
Настройки программы
| Настройка | Описание |
|---|---|
| TimeFrame | TimeFrame — Таймфрейм, на котором выполняется расчёт индикатора. Поддерживаются обозначения M1, M5, M15, M30, H1, H4, D1, W1, MN, а также специальное значение Current time frame. |
| RSIPeriod | RSIPeriod — Период расчёта индикатора RSI. |
| RSIPrice | RSIPrice — Тип цены, используемый при расчёте RSI (например, Close). |
| MAPeriod | MAPeriod — Период скользящего среднего, применяемого к обработанным значениям RSI. |
| MAMode | MAMode — Режим скользящего среднего, применяемого при обработке значений RSI (например, линейно-взвешенное). |
| Level1 | Level1 — Верхний пороговый уровень для определения направления тренда осциллятора. |
| Level2 | Level2 — Средний пороговый уровень для определения направления тренда осциллятора. |
| Level3 | Level3 — Нижний пороговый уровень для определения направления тренда осциллятора. |
| Interpolate | Interpolate — Включает или отключает интерполяцию значений индикатора между барами при работе на старших таймфреймах. |
Поиск по коду файла
#property indicator_separate_window
#property indicator_buffers 5
#property indicator_color1 DimGray
#property indicator_color2 Red
#property indicator_color3 Red
#property indicator_color4 DeepSkyBlue
#property indicator_color5 DeepSkyBlue
#property indicator_width2 2
#property indicator_width3 2
#property indicator_width4 2
#property indicator_width5 2
#property indicator_maximum 1
#property indicator_minimum -1
extern string TimeFrame = "Current time frame";
extern int RSIPeriod = 5;
extern int RSIPrice = PRICE_CLOSE;
extern int MAPeriod = 9;
extern int MAMode = MODE_LWMA;
extern double Level1 = 0.5;
extern double Level2 = 0.0;
extern double Level3 = -0.5;
extern bool Interpolate = true;
double ifishua[];
double ifishub[];
double ifishda[];
double ifishdb[];
double ifisher[];
double rsi[];
double avg[];
double trend[];
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) { ifisher[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--) rsi[i] = 0.1*(iRSI(NULL,0,RSIPeriod,RSIPrice,i)-50);
for(i=limit; i>=0; i--)
{
avg[i] = iMAOnArray(rsi,0,MAPeriod,0,MAMode,i);
ifisher[i] = (MathExp(2*avg[i])-1)/(MathExp(2*avg[i])+1);
trend[i] = trend[i+1];
if (ifisher[i] < Level1 && ifisher[i] > Level3) trend[i] = 0;
if (ifisher[i] > Level1) trend[i] = 1;
if (ifisher[i] < Level3) trend[i] = -1;
if (calculateValue) continue;
ifishda[i] = EMPTY_VALUE; ifishdb[i] = EMPTY_VALUE;
ifishua[i] = EMPTY_VALUE; ifishub[i] = EMPTY_VALUE;
if (tПоказано первые 50% кода (символов: 4873)
Открыть по тарифу
Купите тариф с пакетом открытий или войдите, если тариф уже есть. Открытый файл останется в вашем кабинете навсегда.
Разовая покупка файла
На этой странице откроется полный исходный код файла вместо ознакомительного фрагмента.
Зачем нужен email? После подтверждения оплаты файл сохранится в кабинете на этот email. Если аккаунта ещё нет, мы создадим его и пришлём ссылку для задания пароля. Если аккаунт уже есть, покупка добавится в него. Укажите адрес, к которому у вас есть доступ.
Чтобы оформить заказ, введите email и перейдите к оплате.