rsioma prp_mtf+alerts.mq5
Похожие материалы по тегам
Сообщите нам, если считаете, что материал размещён без разрешения.
Сообщить о материале
Обращение по товару «rsioma prp_mtf+alerts.mq5» отправится на рассмотрение. Укажите контакт для ответа и опишите причину.
О программе
Представлен пользовательский индикатор для MetaTrader 5, построенный на основе осциллятора, сочетающего скользящую среднюю цены и индикатор относительной силы (RSI). Индикатор отображает четыре буфера в отдельном окне и поддерживает работу на различных таймфреймах.
Основная функциональность заключается в расчёте сглаженного RSI с последующим наложением дополнительной скользящей средней на результат. Индикатор отслеживает направление изменения значений и соотношение с дополнительной средней, визуализируя точки пересечения и смену тренда.
Индикатор оснащён системой уведомлений, которая срабатывает при смене состояния тренда на текущем или заданном таймфрейме. Поддерживаются звуковые, почтовые и текстовые уведомления, а также воспроизведение звукового файла.
Настройки программы
| Настройка | Описание |
|---|---|
| TimeFrame | Задаёт таймфрейм для расчёта индикатора. Может принимать название таймфрейма (например, M1, H1, D1) или специальные значения для внутреннего режима работы. |
| RsiOma_Period | Период расчёта скользящей средней, применяемой перед вычислением RSI. |
| RsiOma_Price | Тип цены, используемой при расчёте скользящей средней перед RSI. |
| RsiOma_Mode | Режим (тип) скользящей средней, применяемой при расчёте предварительной средней для RSI. |
| MaPeriod | Период дополнительной скользящей средней, накладываемой на значения RSI. |
| MaType | Режим (тип) дополнительной скользящей средней, применяемой к результату RSI. |
| levelOb | Верхний уровень осциллятора, обозначающий зону перекупленности. |
| levelOs | Нижний уровень осциллятора, обозначающий зону перепроданности. |
| alertsOn | Включает или отключает систему уведомлений индикатора. |
| alertsOnCurrent | Определяет, отслеживать ли изменения на текущем графике или на указанном таймфрейме. |
| alertsMessage | Включает отправку текстовых уведомлений (алертов) в окно терминала. |
| alertsSound | Включает воспроизведение звукового сигнала при срабатывании уведомления. |
| alertsEmail | Включает отправку уведомлений по электронной почте. |
| soundfile | Путь к звуковому файлу, который воспроизводится при срабатывании звукового уведомления. |
Поиск по коду файла
#property indicator_separate_window
#property indicator_buffers 4
#property indicator_color1 LimeGreen
#property indicator_color2 Red
#property indicator_color3 Red
#property indicator_color4 White
#property indicator_width1 2
#property indicator_width2 2
#property indicator_width3 2
#property indicator_width4 2
#property indicator_levelcolor MediumOrchid
extern string TimeFrame = "Current time frame";
extern int RsiOma_Period = 14;
extern int RsiOma_Price = 0;
extern int RsiOma_Mode = MODE_LWMA;
extern int MaPeriod = 10;
extern int MaType = MODE_LWMA;
extern double levelOb = 70;
extern double levelOs = 30;
extern string note = "turn on Alert = true; turn off = false";
extern bool alertsOn = true;
extern bool alertsOnCurrent = true;
extern bool alertsMessage = true;
extern bool alertsSound = false;
extern bool alertsEmail = false;
extern string soundfile = "alert2.wav";
double rsi[];
double rsida[];
double rsidb[];
double ma[];
double mab[];
double trend[];
double slope[];
string indicatorFileName;
int timeFrame;
bool returnBars;
bool calculateValue;
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 (returnBars) { rsi[0] = limit+1; return(0); }
if (calculateValue || timeFrame==Period())
{
if (slope[limit] == -1) ClearPoint(limit,rsida,rsidb);
for (i=limit; i >= 0; i--) mab[i] = iMA(NULL,0,RsiOma_Period,0,RsiOma_Mode,RsiOma_Price,i);
for (i=limit; i >= 0; i--) rsi[i] = iRSIOnArray(mab,0,RsiOma_Period,i);
for (i=limit; i >= 0; i--)
{
ma[i] = iMAOnArray(rsi,0,MaPeriod,0,MaType,i);
rsida[i] = EMPTY_VALUE;
rsidb[i] = EMPTY_VALUE;
slope[i] = slope[i+1];
trend[i] = trend[i+1];
if (rsi[i] > rsi[i+1]) slope[i]= 1;
if (rsi[i] < rsi[i+1]) slope[i]=-1;
if (rsi[i] > ma[i]) trend[i]= 1;
if (rsi[i] < ma[i]) trend[i]=-1;
if (slope[i] == -1) PlotPoint(i,rsida,rsidb,rsi);
}
manageAlerts();
return(0);
}
limit = MathMax(limit,MathMin(Bars-1,iCustom(NULL,timeFrame,indicatorFileName,"returnBars",0,0)*timeFrame/Period()));
if (slope[limit]==-1) ClearPoint(limit,rsida,rsidb);
for (i=limit;i>=0; i--)
{
int y = iBarShift(NULL,timeFrame,Time[i]);
rsi[i] = iCustom(NULL,timeFrame,indicatorFileName,"calculateValue",RsiOma_Period,RsiOma_Price,RsiOma_Mode,MaPeriod,MaПоказано первые 50% кода (символов: 5241)
Открыть по тарифу
Купите тариф с пакетом открытий или войдите, если тариф уже есть. Открытый файл останется в вашем кабинете навсегда.
Разовая покупка файла
На этой странице откроется полный исходный код файла вместо ознакомительного фрагмента.
Зачем нужен email? После подтверждения оплаты файл сохранится в кабинете на этот email. Если аккаунта ещё нет, мы создадим его и пришлём ссылку для задания пароля. Если аккаунт уже есть, покупка добавится в него. Укажите адрес, к которому у вас есть доступ.
Чтобы оформить заказ, введите email и перейдите к оплате.