Effective Volume
Сообщите нам, если считаете, что материал размещён без разрешения.
Сообщить о материале
Обращение по товару «effective volume all.mq5» отправится на рассмотрение. Укажите контакт для ответа и опишите причину.
О программе
Индикатор Effective Volume для MetaTrader 5 рассчитывает аналитические данные на основе соотношения цены и объёма на минутном уровне внутри торговых сессий. Он разделяет объём на крупный и мелкий компоненты, позволяя визуально оценить активность крупных участников рынка. Результаты отображаются в отдельном окне в виде трёх графических линий.
Индикатор использует настраиваемые фильтры объёма и цены, а также параметры торговой сессии для корректной обработки данных. Поддерживается работа с несколькими днями истории и возможность задания времени закрытия сессии. Все расчёты выполняются автоматически при обновлении графика.
Три линии индикатора отображаются в отдельном подокне графика: крупный объём (зелёный), мелкий объём (красный) и суммарный объём (синий). Индикатор предназначен для аналитических целей и не выполняет автоматическую торговлю.
Настройки программы
| Настройка | Описание |
|---|---|
| volume_filter | Порог фильтрации объёма в процентах. Определяет минимальный объём сделки для учёта в расчётах. |
| price_filter | Порог фильтрации по цене в процентах. Свечи с изменением цены меньше указанного значения исключаются из расчётов. |
| smallest_price_increment | Минимальный инкремент цены, используемый для нормализации расчётов. |
| Size | Масштабный коэффициент для отображения значений объёма на графике. |
| total_days | Количество дней истории, используемых для расчёта индикатора. |
| multiple_days | Переключатель, определяющий, учитывать ли данные нескольких торговых дней при расчёте. |
| session_close | Время закрытия торговой сессии в формате ЧЧММСС (например, 170000 — 17:00:00). |
Поиск по коду файла
#property version "1.1"
#property strict
#property indicator_separate_window
#property indicator_buffers 3
#property indicator_color1 Green
#property indicator_label1 "PlotLEV"
#property indicator_color2 Red
#property indicator_label2 "PlotSEV"
#property indicator_color3 Blue
#property indicator_label3 "Total"
extern int volume_filter = 5; // VolumeFilter %
extern int price_filter = 1; // PriceFilter %
extern double smallest_price_increment = 0.01; // Smallest Price Increment
extern double Size = 0.001; // Size
extern int total_days = 15; // Total Days
extern bool multiple_days = true; // Multiple days
extern string session_close = "170000"; // Session close
double PlotLEV[], PlotSEV[], xDayCount[], TotalEffectiveVolume[], LargeEffectiveVolume[], SmallEffectiveVolume[], total[];
double aEffectiveVolume[1440], aTmp[1440];
string IndicatorName;
string IndicatorObjPrefix;
string GenerateIndicatorName(const string target)
{
string name = target;
int try = 2;
while (WindowFind(name) != -1)
{
name = target + " #" + IntegerToString(try++);
}
return name;
}
int _total_days;
int SessionEndTime;
int ParseTime(const string time, string &error)
{
int time_parsed = (int)StringToInteger(time);
int seconds = time_parsed % 100;
if (seconds > 59)
{
error = "Incorrect number of seconds in " + time;
return -1;
}
time_parsed /= 100;
int minutes = time_parsed % 100;
if (minutes > 59)
{
error = "Incorrect number of minutes in " + time;
return -1;
}
time_parsed /= 100;
int hours = time_parsed % 100;
if (hours > 23)
{
error = "Incorrect number of hours in " + time;
return -1;
}
return (hours * 60 + minutes) * 60 + seconds;
}
int init()
{
// код доступен только после оплаты
}
int deinit()
{
ObjectsDeleteAll(ChartID(), IndicatorObjPrefix);
return(0);
}
int start()
{
// код доступен только после оплаты
}
if (Bars <= 1)
return 0;
int ExtCountedBars = IndicatorCounted();
if (ExtCountedBars < 0)
return -1;
double DayCount = 0;
int NumBars = 0;
datetime StartDate = iTime(NULL, PERIOD_D1, 0) - (_total_days + 2) * 86400;
int limit = Bars - 2;
int i = limit;
long TotalDailyVolume = 0;
double VolumeFilter = 0;
double TotalDailyEV = 0;
while (i >= 0)
{
if (Time[i] >= StartDate)
{
TotalDailyVolume += Volume[i];
if (DayCount == 0)
{
NumBars = 0;
LargeEffectiveVolume[i] = 0;
SmallEffectiveVolume[i] = 0;
PlotLEV[i] = EMPTY_VALUE;
PlotSEV[i] = EMPTY_VALUE;
total[i] = EMPTY_VALUE;
}
else
{
NumBars++;
double EffectiveVolume = GetEffectiveVolume(i, VolumeFilter);
Показано первые 50% кода (символов: 5157)
Открыть по тарифу
Купите тариф с пакетом открытий или войдите, если тариф уже есть. Открытый файл останется в вашем кабинете навсегда.
Разовая покупка файла
На этой странице откроется полный исходный код файла вместо ознакомительного фрагмента.
Зачем нужен email? После подтверждения оплаты файл сохранится в кабинете на этот email. Если аккаунта ещё нет, мы создадим его и пришлём ссылку для задания пароля. Если аккаунт уже есть, покупка добавится в него. Укажите адрес, к которому у вас есть доступ.
Чтобы оформить заказ, введите email и перейдите к оплате.