dual stoch - divergences 2.1 (alerts).mq5
Сообщите нам, если считаете, что материал размещён без разрешения.
Сообщить о материале
Обращение по товару «dual stoch - divergences 2.1 (alerts).mq5» отправится на рассмотрение. Укажите контакт для ответа и опишите причину.
О программе
Данный пользовательский индикатор для MetaTrader 4 рассчитывает сравнительный стохастический осциллятор между текущим символом и заданной базовой парой. Для каждого символа строятся сглаженные скользящие средние, на основе которых нормализуются значения в диапазон 0–1; разница между ними дополнительно сглаживается и отображается в отдельном окне.
Индикатор выделяет точки при пересечении верхнего и нижнего пороговых значений, задаваемых пользователем. Доступна фильтрация по волатильности или изменению цены, а также несколько типов уведомлений: всплывающие сообщения, звуковые сигналы, push-уведомления и email-рассылка. Встроенная система алертов срабатывает при смене состояния осциллятора на текущем или предыдущем баре.
Весь расчёт выполняется на каждом тике в функции start(), используются пользовательские функции сглаживания и фильтрации. Результаты отрисовываются через пять буферов данных индикатора с настраиваемыми уровнями и цветами.
Настройки программы
| Настройка | Описание |
|---|---|
| Period (Length) | Период — Период расчёта сглаживающей скользящей средней и нормализации значений. |
| Price (Price) | Цена — Тип цены, используемой в расчётах (например, закрытие, открытие и т. д.). |
| Symbol to compare to (BaseSymbol) | Базовый символ — Символ, с которым сравнивается текущий инструмент при расчёте сравнительного стохастика. |
| Upper treshlod (TresholdUp) | Верхний порог — Верхний пороговый уровень, при пересечении которого осциллятор отмечается как пересечение верхней границы. |
| Lower treshlod (TresholdDn) | Нижний порог — Нижний пороговый уровень, при пересечении которого осциллятор отмечается как пересечение нижней границы. |
| Price smoothing period (PreSmooth) | Период сглаживания цены — Период сглаживания ценовых данных перед расчётом. |
| Price smoothing phase (PreSmoothPhase) | Фаза сглаживания цены — Фаза сглаживания ценовых данных. |
| Result smoothing period (PosSmooth) | Период сглаживания результата — Период дополнительной сглаживания итогового осциллятора. |
| Result smoothing phase (PosSmoothPhase) | Фаза сглаживания результата — Фаза сглаживания итогового осциллятора. |
| Filter to use for filtering (<=0 - no filtering) (Filter) | Фильтр — Параметр фильтрации. Если значение ≤ 0, фильтрация не применяется. |
| Filter on : (FilterWhat) | Фильтр по — Определяет, на что применяется фильтр: на цену, на значение или на оба одновременно. |
| Alerts true/false? (alertsOn) | Алерты включены — Включает или отключает систему алертов в целом. |
| Alerts open bar true/false? (alertsOnCurrent) | Алерты на текущем баре — Определяет, на каком баре отслеживать смену состояния: на текущем (0) или на предыдущем (1). |
| Alerts pop-up message true/false? (alertsMessage) | Всплывающие сообщения — Включает или отключает всплывающие сообщения при срабатывании алерта. |
| Alerts sound true/false? (alertsSound) | Звуковой сигнал — Включает или отключает звуковой сигнал при срабатывании алерта. |
| Alerts push notification true/false? (alertsNotify) | Push-уведомления — Включает или отключает push-уведомления при срабатывании алерта. |
| Alerts email true/false? (alertsEmail) | Email-алерт — Включает или отключает отправку email-уведомлений при срабатывании алерта. |
| Sound file (soundFile) | Звуковой файл — Имя звукового файла, воспроизводимого при включённом звуковом алерте. |
Поиск по коду файла
#property indicator_separate_window
#property indicator_buffers 5
#property indicator_color1 clrDarkGray
#property indicator_color2 clrLimeGreen
#property indicator_color3 clrLimeGreen
#property indicator_color4 clrOrange
#property indicator_color5 clrOrange
#property indicator_width1 2
#property indicator_width2 3
#property indicator_width3 3
#property indicator_width4 3
#property indicator_width5 3
#property indicator_minimum -0.1
#property indicator_maximum 1.1
#property strict
#define _fltPrc 0x01
#define _fltVal 0x10
enum enFltWhat
{
flt_01 = _fltPrc, // Filter the price
flt_02 = _fltVal, // Filter the value
flt_03 = _fltPrc+_fltVal // Filter the price and the value
};
input int Length = 30; // Period
input ENUM_APPLIED_PRICE Price = PRICE_CLOSE; // Price
input string BaseSymbol = "GBPUSD"; // Symbol to compare to
input double TresholdUp = 0.8; // Upper treshlod
input double TresholdDn = 0.2; // Lower treshlod
input int PreSmooth = 8; // Price smoothing period
input int PreSmoothPhase = 0; // Price smoothing phase
input int PosSmooth = 0; // Result smoothing period
input int PosSmoothPhase = 0; // Result smoothing phase
input double Filter = 0; // Filter to use for filtering (<=0 - no filtering)
input enFltWhat FilterWhat = _fltVal; // Filter on :
input bool alertsOn = true; // Alerts true/false?
input bool alertsOnCurrent = false; // Alerts open bar true/false?
input bool alertsMessage = true; // Alerts pop-up message true/false?
input bool alertsSound = false; // Alerts sound true/false?
input bool alertsNotify = false; // Alerts push notification true/false?
input bool alertsEmail = false; // Alerts email true/false?
input string soundFile = "alert2.wav"; // Sound file
double stoch[],stochua[],stochub[],stochda[],stochdb[],stocha[],stochb[],stochc[],pricesa[],pricesb[],state[];
int init()
{
// код доступен только после оплаты
}
int deinit()
{
return(0);
}
int start()
{
// код доступен только после оплаты
}
int counted_bars=IndicatorCounted();
if(counted_bars<0) return(-1);
if(counted_bars>0) counted_bars--;
int limit = MathMin(Bars-counted_bars,Bars-1);
double pfilter = ((FilterWhat&_fltPrc)==0) ? 0 : Filter;
double vfilter = ((FilterWhat&_fltVal)==0) ? 0 : Filter;
if (state[limit]== 1) CleanPoint(limit,stochua,stochub);
if (state[limit]==-1) CleanPoint(limit,stochda,stochdb);
for(int i=limit; i>=0; i--)
{
pricesa[i] = iSmooth(iFilter(iMA(NULL ,0,1,0,MODE_SMA,Price,i),pfilter,Length,i,0),PreSmooth,PreSmoothPhase,i,0);
pricesb[i] = iSmooth(iFilter(iMA(BaseSymbol,0,1,0,MODE_SMA,Price,i),pfilter,Length,i,1),PreSmooth,PreSmoothPhase,i,1);
stochda[i] = stochdb[i] = EMPTY_VALUE;
stochua[i] = stochub[i] = EMPTY_VALUE;
double min=0,max=0;
max = pricesa[ArrayMaximum(pricesa,Length,i)];
min = pricesa[ArrayMinimum(pricesa,Length,i)];
stocha[i] = (max!=min) ? (pricesa[i]-min)/(max-min) : 0.5;
max = pricesb[ArrayMaximum(pricesb,Length,i)];
min = pricesb[ArrayMinimum(pricesb,Length,i)];
stochb[i] = (max!=min) ? (pricesb[i]-min)/(max-min) : 0.5;
stochc[i] = stocha[i]-stochb[i];
max = stochc[ArrayMaximum(stochc,Length*10,i)];
min = stochc[ArrayMinimum(stochc,Length*10,i)];
stoch[i] = (max!=min) ? iFilter(fmax(fmin(iSmooth((stochc[i]-min)/(max-min),PosSmooth,PosSmoothPhase,i,2),1),0),vfilter,Length,i,2) :
iFilter(fmax(fmin(iSmooth(0.5 ,PosSmooth,PosSmoothPhase,i,2),1),0),vfilter,Length,i,2);
state[i] = (stoch[i]>TresholdUp) ? 1 : (stoch[i]<TresholdDn) ? -1 : 0;
if (state[i] == 1) PlotPoint(i,stochua,stochub,stoch);
if (state[i] == -1) PlotPoint(i,stochda,stochdb,stoch);
}
if (alertsOn)
{
int whichBar = (alertsOnCurrent) ? 0 : 1;
if (state[whichBar] != state[whichBar+1])
{
if (state[whichBar] == 1) doAlert(" crossing upper threshold");
if (state[whichBar] ==-1) doAlert(" crossing lower threshold");
}Показано первые 50% кода (символов: 7981)
Открыть по тарифу
Купите тариф с пакетом открытий или войдите, если тариф уже есть. Открытый файл останется в вашем кабинете навсегда.
Разовая покупка файла
На этой странице откроется полный исходный код файла вместо ознакомительного фрагмента.
Зачем нужен email? После подтверждения оплаты файл сохранится в кабинете на этот email. Если аккаунта ещё нет, мы создадим его и пришлём ссылку для задания пароля. Если аккаунт уже есть, покупка добавится в него. Укажите адрес, к которому у вас есть доступ.
Чтобы оформить заказ, введите email и перейдите к оплате.