Psar marsi adaptive Macd
Похожие материалы по тегам
Сообщите нам, если считаете, что материал размещён без разрешения.
Сообщить о материале
Обращение по товару «!!parabolic_marsi_adaptive_macd_alerts_+_arrows_+_mtf.mq5» отправится на рассмотрение. Укажите контакт для ответа и опишите причину.
О программе
Данный продукт представляет собой пользовательский индикатор для MetaTrader 4, отображаемый в отдельном окне. Он объединяет несколько аналитических компонентов: расчёт MACD-подобного индикатора на основе пользовательских скользящих средних с RSI-сглаживанием, применение параболического SAR для определения трендов и визуализацию результатов через множество индикаторных буферов.
Индикатор поддерживает многотаймфреймный (MTF) режим с возможностью интерполяции данных между таймфреймами. В MTF-режиме значения рассчитываются на старшем таймфрейме и при необходимости сглаживаются для отображения на текущем графике. Также предусмотрены настраиваемые стрелки-метки для точек смены тренда и комплексная система уведомлений.
Система алертов позволяет настраивать отправку сообщений, звуковых сигналов, push-уведомлений и email-оповещений при смене тренда SAR. Линия сигнала поддерживает пять типов скользящих средних (SMA, EMA, SMMA, LWMA, TEMA), а параметры накопления управляют чувствительностью параболического SAR. Все визуальные и алертные параметы настраиваются пользователем.
Настройки программы
| Настройка | Описание |
|---|---|
| Time frame (TimeFrame) | TimeFrame — Таймфрейм для расчётов |
| First rsi period (RsiPeriod1) | RsiPeriod1 — Первый период RSI |
| First rsi speed (Speed1) | Speed1 — Скорость первой скользящей RSI |
| Second rsi period (RsiPeriod2) | RsiPeriod2 — Второй период RSI |
| Second rsi speed (Speed2) | Speed2 — Скорость второй скользящей RSI |
| Signal period (SignalPeriod) | SignalPeriod — Период сигнальной линии |
| Signal average type (SignalMethod) | SignalMethod — Тип скользящей средней для сигнальной линии |
| Accumulation step (AccStep) | AccStep — Шаг накопления для параболического SAR |
| Accumulation limit (AccLimit) | AccLimit — Предел накопления для параболического SAR |
| Turn alerts on? (alertsOn) | alertsOn — Включает систему оповещений |
| Alerts on still opened bar? (alertsOnCurrent) | alertsOnCurrent — Включает оповещения на текущей открытой свече |
| Alerts should display message? (alertsMessage) | alertsMessage — Включает отображение сообщений-оповещений |
| Alerts should play a sound? (alertsSound) | alertsSound — Включает воспроизведение звуковых оповещений |
| Alerts should send a notification? (alertsNotify) | alertsNotify — Включает отправку push-уведомлений |
| Alerts should send an email? (alertsEmail) | alertsEmail — Включает отправку email-оповещений |
| Sound file (soundFile) | soundFile — Файл звука для оповещений |
| Arrows visible true/false? (arrowsVisible) | arrowsVisible — Видимость стрелок на графике |
| Arrows drawn on newest bar of higher time frame bar true/false? (arrowsOnNewest) | arrowsOnNewest — Отрисовка стрелок на newest-свече старшего таймфрейма |
| Unique ID for arrows (arrowsIdentifier) | arrowsIdentifier — Уникальный идентификатор для стрелок на графике |
| Upper arrow gap (arrowsUpperGap) | arrowsUpperGap — Отступ верхней стрелки от цены |
| Lower arrow gap (arrowsLowerGap) | arrowsLowerGap — Отступ нижней стрелки от цены |
| Up arrow color (arrowsUpColor) | arrowsUpColor — Цвет стрелки для направления вверх |
| Down arrow color (arrowsDnColor) | arrowsDnColor — Цвет стрелки для направления вниз |
| Up arrow code (arrowsUpCode) | arrowsUpCode — Код стрелки для направления вверх |
| Down arrow code (arrowsDnCode) | arrowsDnCode — Код стрелки для направления вниз |
| Up arrow size (arrowsUpSize) | arrowsUpSize — Размер стрелки для направления вверх |
| Down arrow size (arrowsDnSize) | arrowsDnSize — Размер стрелки для направления вниз |
| Interpolate in mtf mode (Interpolate) | Interpolate — Включает интерполяцию данных в многотаймфреймном режиме |
Поиск по коду файла
#property indicator_separate_window
#property indicator_buffers 10
#property indicator_color1 clrLimeGreen
#property indicator_color2 clrLimeGreen
#property indicator_color3 clrPaleVioletRed
#property indicator_color4 clrPaleVioletRed
#property indicator_color5 clrDimGray
#property indicator_color6 clrGold
#property indicator_color7 clrBlue
#property indicator_color8 clrRed
#property indicator_color9 clrBlue
#property indicator_color10 clrRed
#property indicator_width1 2
#property indicator_width3 2
#property indicator_width5 2
#property indicator_width6 2
#property indicator_width9 3
#property indicator_width10 3
#property strict
enum enMaTypes
{
ma_sma, // Simple moving average
ma_ema, // Exponential moving average
ma_smma, // Smoothed MA
ma_lwma, // Linear weighted MA
ma_tema // Triple exponential moving average - TEMA
};
extern ENUM_TIMEFRAMES TimeFrame = PERIOD_CURRENT; // Time frame
extern int RsiPeriod1 = 14; // First rsi period
extern double Speed1 = 1.2; // First rsi speed
extern int RsiPeriod2 = 34; // Second rsi period
extern double Speed2 = 0.8; // Second rsi speed
extern int SignalPeriod = 9; // Signal period
extern enMaTypes SignalMethod = ma_sma; // Signal average type
extern double AccStep = 0.01; // Accumulation step
extern double AccLimit = 0.1; // Accumulation limit
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 soundFile = "alert2.wav"; // Sound file
input bool arrowsVisible = false; // Arrows visible true/false?
input bool arrowsOnNewest = false; // Arrows drawn on newest bar of higher time frame bar true/false?
input string arrowsIdentifier= "sar Arrows1"; // Unique ID for arrows
input double arrowsUpperGap = 1.0; // Upper arrow gap
input double arrowsLowerGap = 1.0; // Lower arrow gap
input color arrowsUpColor = clrBlue; // Up arrow color
input color arrowsDnColor = clrCrimson; // Down arrow color
input int arrowsUpCode = 221; // Up arrow code
input int arrowsDnCode = 222; // Down arrow code
input int arrowsUpSize = 2; // Up arrow size
input int arrowsDnSize = 2; // Down arrow size
extern bool Interpolate = true; // Interpolate in mtf mode
double machuu[],machud[],machdd[],machdu[],macd[],signal[],sarUp[],sarDn[],saraUp[],saraDn[],slope[],trend[],count[];
string indicatorFileName;
#define _mtfCall(_buff,_ind) iCustom(NULL,TimeFrame,indicatorFileName,PERIOD_CURRENT,RsiPeriod1,Speed1,RsiPeriod2,Speed2,SignalPeriod,SignalMethod,AccStep,AccLimit,alertsOn,alertsOnCurrent,alertsMessage,alertsSound,alertsNotify,alertsEmail,soundFile,arrowsVisible,arrowsOnNewest,arrowsIdentifier,arrowsUpperGap,arrowsLowerGap,arrowsUpColor,arrowsDnColor,arrowsUpCode,arrowsDnCode,arrowsUpSize,arrowsDnSize,_buff,_ind)
int init()
{
// код доступен только после оплаты
}
void OnDeinit(const int reason) { ObjectsDeleteAll(0,arrowsIdentifier+":"); }
int start()
{
// код доступен только после оплаты
}
int i,counted_bars=IndicatorCounted();
if(counted_bars<0) return(-1);
if(counted_bars>0) counted_bars--;
int limit = fmin(Bars-counted_bars,Bars-1); count[0]=limit;
if (TimeFrame!=_Period)
{
limit = (int)fmax(limit,fmin(Bars-1,_mtfCall(12,0)*TimeFrame/_Period));
for (i=limit;i>=0 && !_StopFlag; i--)
{
int y = iBarShift(NULL,TimeFrame,Time[i]);
int x = (i<Bars-1) ? iBarShift(NULL,TimeFrame,Time[i+1]) : y;
macd[i] = _mtfCall(4,y);
signal[i] = _mtfCall(5,y);
sarUp[i] = _mtfCall(6,y);
sarDn[i] = _mtfCall(7,y);
slope[i] = _mtfCall(10,y);
saraUp[i] = EMPTY_VALUE;
saraDn[i] = EMPTY_VALUE;
machuu[i] = EMPTY_VALUE;
machud[i] = EMPTY_VALUE;
machdd[i] = EMPTY_VALUE;
machdu[i] = EMPTY_VALUE;
if (x!=y)
{
saraUp[i] = _mtfCall(8,y);
saraDn[i] = _mtfCall(9,y);
}
if (!Interpolate || (i>0 && y==iBarShift(NULL,TimeFrame,Time[i-1]))) continue;
#define _interpolate(buff) buff[i+k] = buff[i]+(buff[i+n]-buff[i])*k/n
int n,k; datetime time = iTime(NULL,TimeFrame,y);
for(n = 1; (i+n)<Bars && Time[i+n] >= time; n++) continue;
for(k = 1; k<n && (i+n)<Bars && (i+k)<Bars; k++)
{
_interpolate(macd);
_interpolate(signal);
if (sarUp[i+n] != EMPTY_VALUE && sarUp[i] != EMPTY_VALUE) _interpolate(sarUp);
if (sarDn[i+n] != EMPTY_VALUE && sarDn[i] != EMPTY_VALUE) _interpolate(sarDn);
}
}
for(i=limit; i>=0; i--)
{
if (macd[i]>0)
if (slope[i]==1)
machuu[i] = macd[i];
else machud[i] = macd[i];
if (macd[i]<0)
if (slope[i]==1)
machdu[i] = macd[i];
else machdd[i] = macd[i];
}
return(0);
}
for(i=limit; i>=0; i--)
{
double sarClose,sarOpen,sarPosition,sarChange;
double macdHi = iMaRsi((int)High[i],RsiPeriod1,Speed1,i,0) - iMaRsi((int)High[i],RsiPeriod2,Speed2,i,1);
double macdLo = iMaRsi((int)Low[i], RsiPeriod1,Speed1,i,2) - iMaRsi((int)Low[i], RsiPeriod2,Speed2,i,3);
double macdMi = (macdHi+macdLo)*0.5;
macd[i] = iMaRsi((int)macdMi,RsiPeriod1,Speed1,i,4)-iMaRsi((int)macdMi,RsiPeriod2,Speed2,i,5);
signal[i] = iCustomMa(SignalMethod,macd[i],SignalPeriod,i);
iParabolic(macd[i],macd[i],AccStep,AccLimit,sarClose,sarOpen,sarPosition,sarChange,i);
sarUp[i] = sarDn[i] = saraUp[i] = saraDn[i] = EMPTY_VALUE;
machuu[i] = machud[i]= machdd[i] = machdu[i] = EMPTY_VALUE;
slope[i] = (i<Bars-1) ? (macd[i]>macd[i+1]) ? 1 : (macd[i]<macd[i+1]) ? -1 : slope[i+1] : 0;
if (macd[i]>0)
if (slope[i]==1)
machuu[i] = macd[i];
else machud[i] = macd[i];
if (macd[i]<0)
if (slope[i]==1)
machdu[i] = macd[i];
else machdd[i] = macd[i];
if (sarPosition==1)
sarUp[i] = sarClose;
else sarDn[i] = sarClose;
if (sarChange!=0)
if (sarPosition==1)
saraUp[i] = sarClose;
else saraDn[i] = sarClose;
trend[i] = (i<Bars-1) ? (saraUp[i]!=EMPTY_VALUE && saraUp[i+1]==EMPTY_VALUE) ? 1 :
(saraDn[i]!=EMPTY_VALUE && saraDn[i+1]==EMPTY_VALUE) ? -1 : trend[i+1] : 0;
if (arrowsVisible)
{
string lookFor = arrowsIdentifier+":"+(string)Time[i]; if (ObjectFind(0,lookFor)==0) ObjectDelete(0,lookFor);
if (i<(Bars-1) && trend[i] != trend[i+1])
{
if (trend[i] == 1) drawArrow(i,arrowsUpColor,arrowsUpCode,arrowsUpSize,false);
if (trend[i] ==-1) drawArrow(iПоказано первые 50% кода (символов: 13315)
Открыть по тарифу
Купите тариф с пакетом открытий или войдите, если тариф уже есть. Открытый файл останется в вашем кабинете навсегда.
Разовая покупка файла
На этой странице откроется полный исходный код файла вместо ознакомительного фрагмента.
Зачем нужен email? После подтверждения оплаты файл сохранится в кабинете на этот email. Если аккаунта ещё нет, мы создадим его и пришлём ссылку для задания пароля. Если аккаунт уже есть, покупка добавится в него. Укажите адрес, к которому у вас есть доступ.
Чтобы оформить заказ, введите email и перейдите к оплате.