bettervolumeticks_ alerts + text.mq4
Сообщите нам, если считаете, что материал размещён без разрешения.
Сообщить о материале
Обращение по товару «bettervolumeticks_ alerts + text.mq4» отправится на рассмотрение. Укажите контакт для ответа и опишите причину.
О программе
Данный продукт представляет собой пользовательский индикатор для платформы MetaTrader 4, написанный на языке MQL4. Он выполняет расчёт аналитических показателей на основе данных тикового объёма и отображает результаты в отдельном окне с использованием девяти индикаторных буферов.
Индикатор идентифицирует ряд специфических объёмных условий: клаймаксы высокого и низкого объёма, бары с низким объёмом, бары с высокой перегрузкой (churn) и нейтральные бары. Каждое из этих условий визуализируется отдельной гистограммой с собственным цветом. Для сглаживания данных применяются функции Jurik-фазовой сглаживающей обработки с возможностью двойного сглаживания.
Продукт оснащён системой уведомлений, которая срабатывает при появлении новых объёмных сигналов на заданном баре. Уведомления могут отправляться в виде всплывающих сообщений, звуковых сигналов, электронных писем или push-уведомлений. Также индикатор отображает на графике метки с текущим соотношением объёма покупок и продаж.
Настройки программы
| Настройка | Описание |
|---|---|
| VolPeriod | Период сглаживания объёма — Целочисленный параметр периода сглаживания объёма |
| Jurik phase (VolPhase) | Фаза сглаживания Jurik — Числовой параметр фазы сглаживания Jurik |
| Jurik smooth double (VolDouble) | Jurik двойное сглаживание — Переключатель Jurik-двойного сглаживания |
| LookBack | Глубина анализа — Целочисленный параметр, задающий глубину анализа для поиска минимального и максимального объёма |
| BuySellDistance | Расстояние покупок и продаж — Числовой параметр, задающий расстояние для разделения покупок и продаж |
| alertsOn | Включить уведомления — Главный переключатель, включающий или отключающий все уведомления |
| alertsOnCurrent | Уведомлять о текущем баре — Переключатель, определяющий, уведомлять ли о сигнале на текущем баре |
| alertsMessage | Всплывающие сообщения — Переключатель отображения всплывающих сообщений-уведомлений |
| alertsSound | Звуковой сигнал — Переключатель воспроизведения звукового сигнала при уведомлении |
| alertsEmail | Уведомления по электронной почте — Переключатель отправки уведомлений по электронной почте |
| alertsNotify | Push-уведомления — Переключатель отправки push-уведомлений |
| soundFile | Файл звукового уведомления — Текстовый параметр, указывающий путь к звуковому файлу уведомления |
| ShowLabels | Показывать метки — Переключатель, определяющий отображение меток покупок и продаж на графике |
| labelsIdentifier | Идентификатор меток — Текстовый параметр, задающий идентификатор меток для их поиска и удаления |
| fontSize | Размер шрифта меток — Целочисленный параметр размера шрифта меток на графике |
| xDistance | Горизонтальное смещение меток — Целочисленный параметр горизонтального смещения меток от угла графика |
| yDistance | Вертикальное смещение меток — Целочисленный параметр вертикального смещения меток от угла графика |
| LabelsColorUp | Цвет меток покупателей — Цвет меток, отображающих преобладание покупателей |
| LabelsColorNeutral | Цвет нейтральных меток — Цвет меток, отображающих нейтральное соотношение объёмов |
| LabelsColorDown | Цвет меток продавцов — Цвет меток, отображающих преобладание продавцов |
Поиск по коду файла
#property indicator_separate_window
#property indicator_buffers 9
#property indicator_color1 clrRed
#property indicator_color2 clrDarkGray
#property indicator_color3 clrYellow
#property indicator_color4 clrLime
#property indicator_color5 clrWhite
#property indicator_color6 clrMagenta
#property indicator_color7 clrLime
#property indicator_color8 clrRed
#property indicator_color9 clrRed
#property indicator_width1 2
#property indicator_width2 2
#property indicator_width3 2
#property indicator_width4 2
#property indicator_width5 2
#property indicator_width6 2
#property indicator_width7 2
#property indicator_width8 2
#property indicator_width9 2
input int VolPeriod = 15;
input double VolPhase = 0.0; // Jurik phase
input bool VolDouble = false; // Jurik smooth double
input int LookBack = 7;
input double BuySellDistance = 50;
input string note = "turn on Alert = true; turn off = false";
input bool alertsOn = true;
input bool alertsOnCurrent = true;
input bool alertsMessage = true;
input bool alertsSound = true;
input bool alertsEmail = false;
input bool alertsNotify = false;
input string soundFile = "alert2.wav";
input bool ShowLabels = true;
input string labelsIdentifier = "better volume1";
input int fontSize = 8;
input int xDistance = 10;
input int yDistance = 10;
input color LabelsColorUp = clrLimeGreen;
input color LabelsColorNeutral = clrDimGray;
input color LabelsColorDown = clrRed;
double modifier = 1,ClimaxHi[],Neutral[],LoVolume[],Churn[],ClimaxLo[],ClimaxChurn[],AvgVol[],avda[],avdb[],UpTicks[],DnTicks[],VolRange[],VolSort[],slope[];
string symbol,shortName;
int digits;
int OnInit()
{
// код доступен только после оплаты
}
void OnDeinit(const int reason)
{
string lookFor = labelsIdentifier+":";
int lookForLength = StringLen(lookFor);
for (int i=ObjectsTotal()-1; i>=0; i--)
{
string objectName = ObjectName(i);
if (StringSubstr(objectName,0,lookForLength) == lookFor) ObjectDelete(objectName);
}
}
int OnCalculate(const int rates_total,const int prev_calculated,const datetime &time[],
const double &open[],
const double &high[],
const double &low[],
const double &close[],
const long &tick_volume[],
const long &volume[],
const int &spread[])
{
// код доступен только после оплаты
}
int i=rates_total-prev_calculated+1; if (i>=rates_total) i=rates_total-1;
if (slope[i] == -1) CleanPoint(i,avda,avdb);
for (; i>=0 && !_StopFlag; i--)
{
VolSort[i] = tick_volume[i]/modifier;
AvgVol[i] = iDSmooth(VolSort[i],VolPeriod,VolPhase,VolDouble,i);
double Range = high[i]-low[i];
double CountUp = (tick_volume[i]+(close[i]-open[i])/_Point)/2;
double CountDn = tick_volume[i]-CountUp;
double diff = fabs(CountUp-CountDn);
slope[i] = (i<rates_total-1) ? (AvgVol[i]>AvgVol[i+1]) ? 1 : (AvgVol[i]<AvgVol[i+1]) ? -1 : slope[i+1] : 0;
avda[i] = avdb[i] = EMPTY_VALUE; if (slope[i] == -1) PlotPoint(i,avda,avdb,AvgVol);
UpTicks[i] = CountUp*Range;
DnTicks[i] = CountDn*Range;
if (Range != 0) { VolRange[i] = tick_volume[i]/Range; }
double LoVol = tick_volume[iLowest(NULL, 0,MODE_VOLUME,LookBack,i)];
double HiVol = tick_volume[iHighest(NULL,0,MODE_VOLUME,LookBack,i)];
double HiUpTick = UpTicks[FindMaxUp(i)];
double HiDnTick = DnTicks[FindMaxDn(i)];
double MaxVol = VolRange[FindMaxVol(i)];
Neutral[i] = tick_volume[i]/modifier;
ClimaxHi[i] = EMPTY_VALUE;
ClimaxLo[i] = EMPTY_VALUE;
Churn[i] = EMPTY_VALUE;
LoVolume[i] = EMPTY_VALUE;
ClimaxChurn[i] = EMPTY_VALUE;
if (tick_volume[i] == LoVol)
{
LoVolume[i] = tick_volume[i]/modifier;
Neutral[i] = EMPTY_VALUE;
}
if (VolRange[i] == MaxVol)
{
Churn[i] = tick_volume[i]/modifier;
Neutral[i] = EMPTY_VALUE;
LoVolume[i] = EMPTY_VALUE;
}
if (UpTicks[i] == HiUpTick && close[i] >= (high[i]+low[i])*0.5)
{
ClimaxHi[i] = tick_volume[i]/modifier;
Neutral[i] = EMPTY_VALUE;
LoVolume[i] = EMPTY_VALUE;
Churn[i] = EMPTY_VALUE;
}
if (DnTicks[i] == HiDnTick && close[i] <= (high[i]+low[i])*0.5)
{
ClimaxLo[i] = tick_volume[i]/modifier;
Neutral[i] = EMPTY_VALUE;
LoVolume[i] = EMPTY_VALUE;
Churn[i] = EMPTY_VALUE;
}
if (VolRange[i] == MaxVol && (ClimaxHi[i] != EMPTY_VALUE || ClimaxLo[i] != EMPTY_VALUE))
{
ClimaxChurn[i] = tick_volume[i]/modifier;
ClimaxHi[i] = EMPTY_VALUE;
ClimaxLo[i] = EMPTY_VALUE;
Churn[i] = EMPTY_VALUE;
Neutral[i] = EMPTY_VALUE;
}
}
if (alertsOn)
{
int whichBar = 1; if (alertsOnCurrent) whichBar = 0;
static datetime time1 = 0;
static string mess1 = "";
Показано первые 50% кода (символов: 10246)
Открыть по тарифу
Купите тариф с пакетом открытий или войдите, если тариф уже есть. Открытый файл останется в вашем кабинете навсегда.
Разовая покупка файла
На этой странице откроется полный исходный код файла вместо ознакомительного фрагмента.
Зачем нужен email? После подтверждения оплаты файл сохранится в кабинете на этот email. Если аккаунта ещё нет, мы создадим его и пришлём ссылку для задания пароля. Если аккаунт уже есть, покупка добавится в него. Укажите адрес, к которому у вас есть доступ.
Чтобы оформить заказ, введите email и перейдите к оплате.