rsi ma simple+arrows 1.1.mq5
Похожие материалы по тегам
Сообщите нам, если считаете, что материал размещён без разрешения.
Сообщить о материале
Обращение по товару «rsi ma simple+arrows 1.1.mq5» отправится на рассмотрение. Укажите контакт для ответа и опишите причину.
О программе
Данный файл представляет собой пользовательский индикатор для MetaTrader 5, отображаемый в отдельном окне. Индикатор рассчитывает и визуализирует осциллятор RSI, построенный на основе выбранного метода сглаживания цены, а также дополнительную среднюю линию сигнала. В коде предусмотрены различные типы RSI и методы усреднения, что позволяет гибко настраивать отображение.
Индикатор поддерживает настройку цветов и стилей линий, горизонтальных уровней, а также опциональное отображение стрелок на графике при смене направления тренда. Кроме того, реализована система оповещений (всплывающее сообщение, звук, уведомление, email) при пересечении заданных уровней или сигнальной линии.
Все параметры вынесены в пользовательские настройки, что даёт возможность изменять период RSI, метод расчёта, цену, период и тип средней, уровни, цвета и параметры стрелок без изменения кода. Индикатор не содержит торговых функций и предназначен исключительно для аналитического отображения.
Настройки программы
| Настройка | Описание |
|---|---|
| RSI period (RsiPeriod) | Период RSI — Период расчёта RSI. |
| RSI method (RsiMethod) | Метод RSI — Выбор метода расчёта RSI. |
| Price to use (RsiPrice) | Цена для RSI — Цена, используемая для расчёта RSI. |
| Average signal period (AveragePeriod) | Период средней — Период для расчёта средней линии сигнала. |
| Average signal and MA-RSI type (AverageType) | Тип средней — Метод сглаживания, используемый для средней линии и для RSI. |
| Average signal are visible? (ShowAverage) | Показывать среднюю — Показывает или скрывает среднюю линию сигнала. |
| Average signal style? (Averagestyle) | Стиль средней — Стиль отображения средней линии сигнала. |
| Average signal color (Average_color_lines) | Цвет средней — Цвет средней линии сигнала. |
| RSI UP color (UpcolorRSI) | Цвет RSI вверх — Цвет линии RSI при восходящем тренде. |
| RSI DOWN color (DncolorRSI) | Цвет RSI вниз — Цвет линии RSI при нисходящем тренде. |
| RSI NEUTRAL color (NecolorRSI) | Цвет RSI нейтральный — Цвет линии RSI в нейтральной зоне. |
| RSI Lines width (LineWidthRSI) | Толщина линий RSI — Толщина линий RSI. |
| Horizontal Levels are visible? (ShowHorlev) | Показывать уровни — Показывает или скрывает горизонтальные уровни. |
| Zero level style? (levelstyle) | Стиль уровней — Стиль отображения горизонтальных уровней. |
| Levels color (Level_color_lines) | Цвет уровней — Цвет горизонтальных уровней. |
| UP level ? (LevelUp) | Верхний уровень — Значение верхнего горизонтального уровня. |
| DOWN level ? (LevelDown) | Нижний уровень — Значение нижнего горизонтального уровня. |
| Arrows on: (ColorOn) | Условие окраски — Определяет условие, по которому меняется цвет линий RSI и стрелок. |
| Turn alerts on? (AlertsOn) | Включить оповещения — Включает или выключает систему оповещений индикатора. |
| Alerts on still opened bar? (AlertsOnCurrent) | Оповещать на текущем баре — Если включено, оповещения срабатывают на текущем (ещё не закрытом) баре, иначе — только на закрытом. |
| Alerts should display message? (AlertsMessage) | Показывать сообщение — Разрешает вывод всплывающего сообщения при срабатывании оповещения. |
| Alerts should play a sound? (AlertsSound) | Проигрывать звук — Разрешает воспроизведение звукового файла при срабатывании оповещения. |
| Alerts should send a notification? (AlertsNotify) | Отправлять уведомление — Разрешает отправку push-уведомления на мобильное устройство при срабатывании оповещения. |
| Alerts should send an email? (AlertsEmail) | Отправлять email — Разрешает отправку email-сообщения при срабатывании оповещения. |
| Sound file (AlertsSoundFile) | Звуковой файл — Имя звукового файла, который воспроизводится при срабатывании оповещения. |
| Arrows visible true/false? (arrowsVisible) | Показывать стрелки — Показывает или скрывает стрелки на графике. |
| Unique ID for arrows (arrowsIdentifier) | Идентификатор стрелок — Уникальный идентификатор для имён объектов стрелок. |
| Upper arrow gap (arrowsUpperGap) | Отступ стрелки вверх — Отступ для стрелки вверх от максимума бара. |
| Lower arrow gap (arrowsLowerGap) | Отступ стрелки вниз — Отступ для стрелки вниз от минимума бара. |
| Up arrow color (arrowsUpColor) | Цвет стрелки вверх — Цвет стрелки вверх. |
| Down arrow color (arrowsDnColor) | Цвет стрелки вниз — Цвет стрелки вниз. |
| Up arrow code (arrowsUpCode) | Код стрелки вверх — Код символа для стрелки вверх. |
| Down arrow code (arrowsDnCode) | Код стрелки вниз — Код символа для стрелки вниз. |
| Up arrow size (arrowsUpSize) | Размер стрелки вверх — Размер стрелки вверх. |
| Down arrow size (arrowsDnSize) | Размер стрелки вниз — Размер стрелки вниз. |
Поиск по коду файла
#property indicator_separate_window
#property indicator_buffers 8
enum enRsiTypes
{
rsi_rsi, // Regular RSI
rsi_wil, // Slow RSI
rsi_rap, // Rapid RSI
rsi_har, // Harris RSI
rsi_rsx, // RSX
rsi_cut // Cuttlers RSI
};
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_tbiased2, // Trend biased (extreme) 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
pr_hatbiased2, // Heiken ashi trend biased (extreme) price
pr_habclose, // Heiken ashi (better formula) close
pr_habopen , // Heiken ashi (better formula) open
pr_habhigh, // Heiken ashi (better formula) high
pr_hablow, // Heiken ashi (better formula) low
pr_habmedian, // Heiken ashi (better formula) median
pr_habtypical, // Heiken ashi (better formula) typical
pr_habweighted,// Heiken ashi (better formula) weighted
pr_habaverage, // Heiken ashi (better formula) average
pr_habmedianb, // Heiken ashi (better formula) median body
pr_habtbiased, // Heiken ashi (better formula) trend biased price
pr_habtbiased2 // Heiken ashi (better formula) trend biased (extreme) price
};
enum enMaTypes
{
ma_sma, // Simple moving average
ma_ema, // Exponential moving average
ma_smma, // Smoothed MA
ma_lwma, // Linear weighted MA
ma_tema // Tripple exponential moving average
};
enum enArrowOn
{
cc_onRSIcrosslevel, // Color on RSI cross level
cc_RSIcrossMA, // Color on RSI cross MA
cc_onSLOPE, // Color on RSI slope
};
extern int RsiPeriod = 14; // RSI period
extern enRsiTypes RsiMethod = rsi_rsi; // RSI method
extern enPrices RsiPrice = pr_close; // Price to use
extern int AveragePeriod = 21; // Average signal period
extern enMaTypes AverageType = ma_ema; // Average signal and MA-RSI type
extern bool ShowAverage = true; // Average signal are visible?
input ENUM_LINE_STYLE Averagestyle = STYLE_DOT; // Average signal style?
input color Average_color_lines = clrLightYellow; // Average signal color
input color UpcolorRSI = clrSeaGreen; // RSI UP color
input color DncolorRSI = clrCrimson; // RSI DOWN color
input color NecolorRSI = clrGray; // RSI NEUTRAL color
extern int LineWidthRSI = 2; // RSI Lines width
extern bool ShowHorlev = true; // Horizontal Levels are visible?
input ENUM_LINE_STYLE levelstyle = STYLE_DOT; // Zero level style?
input color Level_color_lines = clrGray; // Levels color
input double LevelUp = 60; // UP level ?
input double LevelDown = 40; // DOWN level ?
extern enArrowOn ColorOn = cc_onRSIcrosslevel; // Arrows on:
extern bool AlertsOn = false; // Turn alerts on?
extern bool AlertsOnCurrent = false; // Alerts on still opened bar?
extern bool AlertsMessage = true; // Alerts should display message?
extern bool AlertsSound = false; // Alerts should play a sound?
extern bool AlertsNotify = false; // Alerts should send a notification?
extern bool AlertsEmail = false; // Alerts should send an email?
extern string AlertsSoundFile = "alert2.wav"; // Sound file
input bool arrowsVisible = false; // Arrows visible true/false?
input string arrowsIdentifier = " RSI MA"; // Unique ID for arrows
input double arrowsUpperGap = 1; // Upper arrow gap
input double arrowsLowerGap = 0.5; // Lower arrow gap
input color arrowsUpColor = clrMediumSeaGreen; // Up arrow color
input color arrowsDnColor = clrCrimson; // Down arrow color
input int arrowsUpCode = 233; // Up arrow code
input int arrowsDnCode = 234; // Down arrow code
input int arrowsUpSize = 2; // Up arrow size
input int arrowsDnSize = 2; // Down arrow size
string _avgNames[]={"SMA","EMA","SMMA","LWMA","TEMA"};
double rsi[];
double maDa[],maDb[],maUa[],maUb[],avg[],valup[],valdn[];
double trend[];
int init()
{
// код доступен только после оплаты
}
int deinit()
{
deleteArrows();
return(0);
}
int start()
{
// код доступен только после оплаты
}
#define _maInstances 2
#define _maWorkBufferx1 _maInstances
#define _maWorkBufferx3 _maInstances*3
double iCustomMa(int mode, double price, double length, int r, int bars, int instanceNo=0)
{
bars = Bars; r=bars-r-1;
switch (mode)
{
case ma_sma : return(iSma(price,(int)length,r,bars,instanceNo));
case ma_ema : return(iEma(price,length,r,bars,instanceNo));
case ma_smma : return(iSmma(price,(int)length,r,bars,instanceNo));
case ma_lwma : return(iLwma(price,(int)length,r,bars,instanceNo));
case ma_tema : return(iTema(price,(int)length,r,bars,instanceNo));
default : return(price);
}
}
double workSma[][_maWorkBufferx1];
double iSma(double price, int period, int r, int _bars, int instanceNo=0)
{
if (ArrayRange(workSma,0)!= _bars) ArrayResize(workSma,_bars);
workSma[r][instanceNo+0] = price;
double sma = price; int k=1; for(; k<period && (r-k)>=0; k++) sma += workSma[r-k][instanceNo+0]; sma /= (double)k;
return(sma);
}
double workEma[][_maWorkBufferx1];
double iEma(double price, double period, int r, int _bars, int instanceNo=0)
{
if (ArrayRange(workEma,0)!= _bars) ArrayResize(workEma,_bars);
workEma[r][instanceNo] = price;
if (r>0 && period>1)
workEma[r][instanceNo] = workEma[r-1][instanceNo]+(2.0/(1.0+period))*(price-workEma[r-1][instanceNo]);
return(workEma[r][instanceNo]);
}
double workSmma[][_maWorkBufferx1];
double iSmma(double price, double period, int r, int _bars, int instanceNo=0)
{
if (ArrayRange(workSmma,0)!= _bars) ArrayResize(workSmma,_bars);
workSmma[r][instanceNo] = price;
if (r>1 && period>1)
workSmma[r][instanceNo] = workSmma[r-1][instanceNo]+(price-workSmma[r-1][instanceNo])/period;
return(workSmma[r][instanceNo]);
}
double workLwma[][_maWorkBufferx1];
double iLwma(double price, double period, int r, int _bars, int instanceNo=0)
{
if (ArrayRange(workLwma,0)!= _bars) ArrayResize(workLwma,_bars);
workLwma[r][instanceNo] = price; if (period<1) return(price);
double sumw = period;
double sum = period*price;
for(int k=1; k<period && (r-k)>=0; k++)
{
double weight = period-k;
sumw += weight;
sum += weight*workLwma[r-k][instanceNo];
}
return(sum/sumw);
}
double workTema[][_maWorkBufferx3];
#define _tema1 0
#define _tema2 1
#define _tema3 2
double iTema(double price, double period, int r, int bars, int instanceNo=0)
{
if (ArrayRange(workTema,0)!= bars) ArrayResize(workTema,bars); instanceNo*=3;
workTema[r][_tema1+instanceNo] = price;
workTema[r][_tema2+instanceNo] = price;
workTema[r][_tema3+instanceNo] = price;
if (r>0 && period>1)
{
double alpha = 2.0 / (1.0+period);
workTema[r][_tema1+instanceNo] = workTema[r-1][_tema1+instanceNo]+alpha*(price -workTema[r-1][_tema1+instanceNo]);
workTema[r][_tema2+instanceNo] = workTema[r-1][_tema2+instanceNo]+alpha*(workTema[r][Показано первые 50% кода (символов: 15961)
Открыть по тарифу
Купите тариф с пакетом открытий или войдите, если тариф уже есть. Открытый файл останется в вашем кабинете навсегда.
Разовая покупка файла
На этой странице откроется полный исходный код файла вместо ознакомительного фрагмента.
Зачем нужен email? После подтверждения оплаты файл сохранится в кабинете на этот email. Если аккаунта ещё нет, мы создадим его и пришлём ссылку для задания пароля. Если аккаунт уже есть, покупка добавится в него. Укажите адрес, к которому у вас есть доступ.
Чтобы оформить заказ, введите email и перейдите к оплате.