frama of rsi.mq5
Похожие материалы по тегам
Сообщите нам, если считаете, что материал размещён без разрешения.
Сообщить о материале
Обращение по товару «frama of rsi.mq5» отправится на рассмотрение. Укажите контакт для ответа и опишите причину.
О программе
Индикатор «Frama of RSI» предназначен для платформы MetaTrader 5 и рассчитывает значение RSI с последующей адаптивной фильтрацией по методу Frama (Fractal Adaptive Moving Average). Основная линия индикатора представляет собой сглаженное значение RSI, что позволяет снизить шум и лучше выявлять трендовые изменения.
Индикатор поддерживает выбор различных ценовых типов для расчёта RSI: стандартные (Close, Open, High, Low, Median, Typical, Weighted, Average), а также цены Хейкин Аши. Это расширяет возможности анализа и позволяет использовать индикатор в различных торговых стратегиях.
Доступна опциональная фильтрация значений. Фильтр может применяться к значению RSI, к линии Frama или к обоим одновременно. При этом фильтр использует статистическую оценку стандартного отклонения изменения цены для определения значимости текущего движения.
Индикатор отображает три буфера: основную линию Frama от RSI и две вспомогательные линии, которые отображают точки разворота тренда. Вспомогательные линии рисуются только при изменении направления склона основной линии, что помогает визуально определять точки смены тренда.
Настройки программы
| Настройка | Описание |
|---|---|
| RsiPeriod | Период расчёта индикатора RSI (количество баров). |
| RsiPrice | Тип цены, используемый для расчёта RSI (Close, Open, High, Low и другие, включая цены Хейкин Аши). |
| FramaPeriod | Период сглаживания адаптивной скользящей средней Frama. |
| Filter | Пороговое значение фильтра (если <= 0, фильтрация не применяется). |
| FilterPeriod | Период расчёта фильтра (если <= 0, используется период Frama). |
| FilterOn | Определяет, к чему применяется фильтр: к значению RSI, к линии Frama или к обоим одновременно. |
Поиск по коду файла
#property strict
#property indicator_separate_window
#property indicator_buffers 4
#property indicator_color1 clrSilver
#property indicator_color2 clrDeepSkyBlue
#property indicator_color3 clrSandyBrown
#property indicator_color4 clrSandyBrown
#property indicator_width2 2
#property indicator_width3 2
#property indicator_width4 2
enum enPrices
{
pr_close, // Close
pr_open, // Open
pr_high, // High
pr_low, // Low
pr_median, // Median
pr_typical, // Typical
pr_weighted, // Weighted
pr_average, // Average (high+low+open+close)/4
pr_medianb, // Average median body (open+close)/2
pr_tbiased, // Trend biased price
pr_haclose, // Heiken ashi close
pr_haopen , // Heiken ashi open
pr_hahigh, // Heiken ashi high
pr_halow, // Heiken ashi low
pr_hamedian, // Heiken ashi median
pr_hatypical, // Heiken ashi typical
pr_haweighted, // Heiken ashi weighted
pr_haaverage, // Heiken ashi average
pr_hamedianb, // Heiken ashi median body
pr_hatbiased // Heiken ashi trend biased price
};
enum enFilterWhat
{
flt_prc, // Filter the rsi
flt_val, // Filter the frama
flt_both // Filter both
};
extern int RsiPeriod = 14; // RSI period
extern enPrices RsiPrice = pr_close; // RSI price
extern int FramaPeriod = 14; // Frama period
extern double Filter = 0; // Filter to use for filtering (<=0 - no filtering)
extern int FilterPeriod = 0; // Filter period (0<= use frama period)
extern enFilterWhat FilterOn = flt_val; // Apply filter to :
double rsi[],frmBuffer[],frmBufferda[],frmBufferdb[],slope[],prices[];
int init()
{
// код доступен только после оплаты
}
int deinit()
{
return(0);
}
int start()
{
// код доступен только после оплаты
}
#define framaInstances 1
double workFrama[][framaInstances*2];
double iFrama(double price, int fperiod, int i, int instanceNo=0)
{
if (fperiod<=1) return(price);
if (ArrayRange(workFrama,0)!=Bars) ArrayResize(workFrama,Bars); int r = Bars-i-1; instanceNo*=2;
workFrama[r][instanceNo+0] = price;
if (r<1) workFrama[r][instanceNo+1] = price;
else
{
int halfPeriod = fperiod/2,k;
double hh = workFrama[r][instanceNo+0],ll=workFrama[r][instanceNo+0];
for (k=1; k<fperiod && (r-k)>=0; k++)
{
hh = MathMax(workFrama[r-k][instanceNo+0],hh);
ll = MathMin(workFrama[r-k][instanceNo+0],ll);
}
double n3 = (hh-ll)/(double)fperiod;
hh = ll = workFrama[r][instanceNo+0];
for (k=1; k<halfPeriod && (r-k)>=0; k++)
{
hh = MathMax(workFrama[r-k][instanceNo+0],hh);
ll = MathMin(workFrama[r-k][instanceNo+0],ll);
}
double n1 = (hh-ll)/(double)halfPeriod;
hh = ll = workFrama[MathMax(r-halfPeriod,0)][instanceNo+0];
for (k=halfPeriod+1; k<fperiod && (r-k)>=0; k++)
{
hh = MathMax(workFrama[r-k][instanceNo+0],hh);
ll = MathMin(workFrama[r-k][instanceNo+0],ll);
}
double n2 = (hh-ll)/(double)halfPeriod;
double dimen = 0;
if ((n1+n2)>0 && n3>0) dimen = (MathLog(n1+n2)-MathLog(n3))/MathLog(2.0);
double alpha = MathMin(MПоказано первые 50% кода (символов: 7083)
Открыть по тарифу
Купите тариф с пакетом открытий или войдите, если тариф уже есть. Открытый файл останется в вашем кабинете навсегда.
Разовая покупка файла
На этой странице откроется полный исходный код файла вместо ознакомительного фрагмента.
Зачем нужен email? После подтверждения оплаты файл сохранится в кабинете на этот email. Если аккаунта ещё нет, мы создадим его и пришлём ссылку для задания пароля. Если аккаунт уже есть, покупка добавится в него. Укажите адрес, к которому у вас есть доступ.
Чтобы оформить заказ, введите email и перейдите к оплате.