dynamic_zones_pa_composite_rsi_nmc.mq5
Похожие материалы по тегам
Сообщите нам, если считаете, что материал размещён без разрешения.
Сообщить о материале
Обращение по товару «dynamic_zones_pa_composite_rsi_nmc.mq5» отправится на рассмотрение. Укажите контакт для ответа и опишите причину.
О программе
Индикатор для MetaTrader 4, рассчитывающий составной RSI с динамической зоной вероятности. Использует преобразование Хилберта для определения периода и скользящие средние для сглаживания цены. Отображает три линии в отдельном окне: зону покупок, зону продаж и промежуточную линию, а также значения RSI и направление тренда.
В основе расчёта лежит составной RSI, период которого определяется автоматически на основе фазового анализа цены. Динамические зоны формируются с помощью внешней DLL-библиотеки, которая вычисляет вероятностные уровни на основе заданных параметров вероятности и глубины анализа. Индикатор отслеживает направление изменения RSI и отмечает точки разворота на графике.
Параметры позволяют настроить количество циклов анализа, фильтрацию, источник цены для RSI, глубину расчёта, тип сглаживания, длину окна для динамических зон и пороги вероятности для сигналов покупки и продажи.
Настройки программы
| Настройка | Описание |
|---|---|
| PaCycles | Циклы PA — Задаёт количество циклов для анализа фазового детектора при расчёте динамического периода RSI. |
| PaFilter | Фильтр PA — Определяет коэффициент фильтрации для сглаживания фазового сигнала перед определением периода. |
| RsiPrice | Цена RSI — Выбирает тип цены или буфера, используемого в качестве исходного значения для расчёта RSI. |
| RsiDepth | Глубина RSI — Задаёт глубину (количество уровней) сравнения при расчёте составного RSI. |
| RsiFast | Быстрый RSI — Переключатель между стандартным и ускоренным методом расчёта составного RSI. |
| DzLookBack | Глубина динамической зоны — Определяет количество баров, используемых для формирования динамических зон вероятности. |
| DzBuyProbability | Вероятность покупки — Порог вероятности для формирования сигнальной зоны покупок динамической зоны. |
| DzSellProbability | Вероятность продажи — Порог вероятности для формирования сигнальной зоны продаж динамической зоны. |
Поиск по коду файла
#property indicator_separate_window
#property indicator_buffers 6
#property indicator_color1 DarkGray
#property indicator_color2 PaleVioletRed
#property indicator_color3 LimeGreen
#property indicator_color4 LimeGreen
#property indicator_color5 PaleVioletRed
#property indicator_color6 PaleVioletRed
#property indicator_style1 STYLE_DOT
#property indicator_style2 STYLE_DOT
#property indicator_style3 STYLE_DOT
#property indicator_width4 2
#property indicator_width5 2
#property indicator_width6 2
#property indicator_minimum -0.1
#property indicator_maximum 1.1
#property indicator_levelcolor DarkGray
#import "dynamicZone.dll"
double dzBuyP(double& sourceArray[],double probabiltyValue, int lookBack, int bars, int i, double precission );
double dzSellP(double& sourceArray[],double probabiltyValue, int lookBack, int bars, int i, double precission );
#import
extern double PaCycles = 1.0;
extern double PaFilter = 1.0;
extern int RsiPrice = 0;
extern int RsiDepth = 10;
extern bool RsiFast = false;
extern int DzLookBack = 35;
extern double DzBuyProbability = 0.90;
extern double DzSellProbability = 0.90;
double rsi[];
double zli[];
double bli[];
double sli[];
double rsiDa[];
double rsiDb[];
double slope[];
int init()
{
// код доступен только после оплаты
}
int deinit() { return(0); }
int start()
{
// код доступен только после оплаты
}
double workCompRsi[][26];
double iCompRsi(double price, double period, int depth, bool fast, int i, int instanceNo=0)
{
if (ArrayRange(workCompRsi,0) !=Bars) ArrayResize(workCompRsi,Bars);
if (!fast)
double alpha = 2.0/(1.0 + period);
else alpha = 2.0/(2.0 + (period-1.0)/2.0);
instanceNo *= 26; i = Bars-i-1;
double CU = 0;
double CD = 0;
for (int k=0; k<=depth; k++)
{
if (i == 0)
workCompRsi[i][instanceNo+k] = price;
else workCompRsi[i][instanceNo+k] = workCompRsi[i-1][instanceNo+k]+alpha*(price-workCompRsi[i-1][instanceNo+k]);
price = workCompRsi[i][k+instanceNo];
if (k>0)
if (workCompRsi[i][instanceNo+k-1] >= workCompRsi[i][instanceNo+k])
CU += workCompRsi[i][Показано первые 50% кода (символов: 5443)
Открыть по тарифу
Купите тариф с пакетом открытий или войдите, если тариф уже есть. Открытый файл останется в вашем кабинете навсегда.
Разовая покупка файла
На этой странице откроется полный исходный код файла вместо ознакомительного фрагмента.
Зачем нужен email? После подтверждения оплаты файл сохранится в кабинете на этот email. Если аккаунта ещё нет, мы создадим его и пришлём ссылку для задания пароля. Если аккаунт уже есть, покупка добавится в него. Укажите адрес, к которому у вас есть доступ.
Чтобы оформить заказ, введите email и перейдите к оплате.