Dynamic zone RSI of MACD
Похожие материалы по тегам
Сообщите нам, если считаете, что материал размещён без разрешения.
Сообщить о материале
Обращение по товару «dynamic zone rsi of macd.mq5» отправится на рассмотрение. Укажите контакт для ответа и опишите причину.
О программе
Dynamic zone RSI of MACD — пользовательский индикатор для MetaTrader 4, отображаемый в отдельном окне. Он рассчитывает RSI по значениям MACD и строит четыре буферные линии: основную линию RSI of MACD и дополнительные динамические границы. Индикатор поддерживает работу на текущем или заданном таймфрейме, а также режимы вспомогательного расчёта и возврата количества баров для использования из других индикаторов через iCustom.
Входные параметры позволяют задать таймфрейм, периоды быстрой и медленной EMA для MACD, цену расчёта MACD, период RSI, отображение средней линии, глубину анализа, стартовые вероятности покупки и продажи, уровни перекупленности и переподкупленности, а также интерполяцию значений на младших таймфреймах. Расчёт опирается на встроенный индикатор iMACD и внешнюю библиотеку dynamicZone.dll, предоставляющую функции dzBuy и dzSell.
Индикатор не содержит торговых операций и не даёт гарантий прибыли; его назначение — визуализация аналитической кривой и динамических зон на графике.
Настройки программы
| Настройка | Описание |
|---|---|
| TimeFrame | Таймфрейм — Таймфрейм для расчёта индикатора; значение "current time frame" означает текущий таймфрейм, также поддерживаются специальные режимы. |
| MacdFastPeriod | Период быстрой EMA MACD — Период быстрой скользящей средней для расчёта MACD. |
| MacdSlowPeriod | Период медленной EMA MACD — Период медленной скользящей средней для расчёта MACD. |
| MacdPrice | Цена MACD — Цена, по которой рассчитывается MACD. |
| RsiPeriod | Период RSI — Период расчёта RSI по значениям MACD. |
| 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Показано первые 50% кода (символов: 5280)
Открыть по тарифу
Купите тариф с пакетом открытий или войдите, если тариф уже есть. Открытый файл останется в вашем кабинете навсегда.
Разовая покупка файла
На этой странице откроется полный исходный код файла вместо ознакомительного фрагмента.
Зачем нужен email? После подтверждения оплаты файл сохранится в кабинете на этот email. Если аккаунта ещё нет, мы создадим его и пришлём ссылку для задания пароля. Если аккаунт уже есть, покупка добавится в него. Укажите адрес, к которому у вас есть доступ.
Чтобы оформить заказ, введите email и перейдите к оплате.