dynamic_zone_rsi_of_macd_nmc.mq5
Похожие материалы по тегам
Сообщите нам, если считаете, что материал размещён без разрешения.
Сообщить о материале
Обращение по товару «dynamic_zone_rsi_of_macd_nmc.mq5» отправится на рассмотрение. Укажите контакт для ответа и опишите причину.
О программе
Данный продукт представляет собой пользовательский индикатор для платформы MetaTrader 5, который рассчитывает показатель RSI не по ценовым данным, а по значениям линии MACD. Индикатор отображает результат в отдельном окне и использует четыре буфера данных для визуализации различных зон и уровней.
Индикатор реализует концепцию динамических зон, используя внешнюю библиотеку dynamicZone.dll для расчёта зон покупки и продажи на основе заданных вероятностей. Также отображаются уровней перекупленности и перепроданности, при достижении которых буфер среднего значения устанавливается в граничные значения.
Поддерживается работа на различных таймфреймах с возможностью переключения между ними. Индикатор имеет настройку интерполяции, которая позволяет сглаживать данные при работе на таймфреймах, меньших, чем текущий график.
Настройки программы
| Настройка | Описание |
|---|---|
| TimeFrame | Таймфрейм расчёта — Выбирает таймфрейм, на котором выполняется расчёт индикатора. |
| MacdFastPeriod | Период быстрой линии MACD — Задаёт период быстрой скользящей средней для расчёта MACD. |
| MacdSlowPeriod | Период медленной линии MACD — Задаёт период медленной скользящей средней для расчёта MACD. |
| MacdPrice | Тип цены для MACD — Определяет тип цены, используемой при расчёте MACD. |
| RsiPeriod | Период RSI — Задаёт период расчёта показателя RSI. |
| DzShowZeroLine | Отображение линии нулевого уровня — Переключает отображение линии среднего значения и граничных зон на графике. |
| DzLookBackBars | Количество баров для динамических зон — Задаёт количество баров, используемых для расчёта динамических зон. |
| DzStartBuyProbability | Начальная вероятность покупки — Устанавливает начальную вероятность для расчёта зоны покупки. |
| DzStartSellProbability | Начальная вероятность продажи — Устанавливает начальную вероятность для расчёта зоны продажи. |
| OBLevel | Уровень перекупленности — Устанавливает верхний уровень, при превышении которого значение среднего буфера фиксируется на максимуме. |
| OSLevel | Уровень перепроданности — Устанавливает нижний уровень, при достижении которого значение среднего буфера фиксируется на минимуме. |
| Interpolate | Интерполяция значений — Включает или отключает интерполяцию значений между барами при работе на меньших таймфреймах. |
Поиск по коду файла
#property indicator_separate_window
#property indicator_buffers 4
#property indicator_color1 DeepSkyBlue
#property indicator_color2 LimeGreen
#property indicator_color3 DimGray
#property indicator_color4 Red
#property indicator_style3 STYLE_DOT
#property indicator_width1 2
#property indicator_minimum 0
#property indicator_maximum 100
#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 MacdFastPeriod = 12;
extern int MacdSlowPeriod = 26;
extern int MacdPrice = PRICE_CLOSE;
extern int RsiPeriod = 14;
extern bool DzShowZeroLine = true;
extern int DzLookBackBars = 60;
extern double DzStartBuyProbability = 0.10;
extern double DzStartSellProbability = 0.10;
extern double OBLevel = 90;
extern double OSLevel = 10;
extern bool Interpolate = true;
double Rsi[];
double upBuffer[];
double miBuffer[];
double dnBuffer[];
double macd[];
int timeFrame;
string IndicatorFileName;
bool CalculatingRsi;
bool ReturningBars;
int init()
{
// код доступен только после оплаты
}
int deinit()
{
return(0);
}
int start()
{
// код доступен только после оплаты
}
int counted_bars=IndicatorCounted();
int i,limit;
if(counted_bars < 0) return(-1);
if(counted_bars > 0) counted_bars--;
limit = MathMin(Bars-counted_bars,Bars-1);
if (ReturningBars) { Rsi[0] = limit+1; return(0); }
if (CalculatingRsi || timeFrame==Period())
{
for(i=limit; i>=0; i--)
{
macd[i] = iMACD(NULL,0,MacdFastPeriod,MacdSlowPeriod,1,MacdPrice,MODE_MAIN,i);
double macdU = 0;
double macdD = 0;
if (macd[i]>macd[i+1]) macdU = macd[i]-macd[i+1];
if (macd[i]<macd[i+1]) macdD = macd[i+1]-macd[i];
double up = Wilders(macdU,0,RsiPeriod,i);
double dn = Wilders(macdD,2,RsiPeriod,i);
if ((up+dn)!=0)
Rsi[i] = 100.0*up/(dn+up);
else Rsi[i] = 50.0;
if (DzStartBuyProbability > 0) dnBuffer[i] = dzBuy (Rsi, DzStartBuyProbability, DzLookBackBars, Bars, i);
if (DzStartSellProbability > 0) upBuffer[i] = dzSell(Rsi, DzStartSellProbability, DzLookBackBars, Bars, i);
if (DzShowZeroLine)
{
miBuffer[i] = dzSell(Rsi,0.5,DzLookBackBars,Bars,i);
if (Rsi[i]>OBLevel) miBuffer[i] = 100;
if (Rsi[i]<OSLevel) miBuffer[i] = 0;
}
}
return(0);
}
limit = MathMax(limit,MathMin(Bars-1,iПоказано первые 50% кода (символов: 5289)
Открыть по тарифу
Купите тариф с пакетом открытий или войдите, если тариф уже есть. Открытый файл останется в вашем кабинете навсегда.
Разовая покупка файла
На этой странице откроется полный исходный код файла вместо ознакомительного фрагмента.
Зачем нужен email? После подтверждения оплаты файл сохранится в кабинете на этот email. Если аккаунта ещё нет, мы создадим его и пришлём ссылку для задания пароля. Если аккаунт уже есть, покупка добавится в него. Укажите адрес, к которому у вас есть доступ.
Чтобы оформить заказ, введите email и перейдите к оплате.