TMA bands
Сообщите нам, если считаете, что материал размещён без разрешения.
Сообщить о материале
Обращение по товару «price border mt4 source code @fundedmillionairess.mq5» отправится на рассмотрение. Укажите контакт для ответа и опишите причину.
О программе
Данный продукт представляет собой пользовательский индикатор для платформы MetaTrader 4, написанный на языке MQL4. Он рассчитывает и отображает на графике ценовые полосы на основе скользящей средней с треугольным сглаживанием, где ширина канала определяется через средний истинный диапазон (ATR).
Индикатор использует три визуальных буфера: центральную линию, верхнюю и нижнюю границы канала, а также дополнительный буфер сигналов, фиксирующий пробои границ ценой. Поддерживается работа на различных таймфреймах, включая межтаймфреймный анализ с возможностью интерполяции данных.
Встроена система уведомлений с настраиваемыми условиями срабатывания: всплывающие сообщения, звуковые сигналы и email-оповещения. Пользователь может задавать параметры периода, множителя ATR, типа цены и поведения алертов.
Настройки программы
| Настройка | Описание |
|---|---|
| TimeFrame | Таймфрейм — Строковый параметр, задающий таймфрейм для анализа (например, M1, H1, D1 или All tf). |
| HalfLength | Половина длины — Целочисленный параметр, задающий половину длины сглаживания moving average. |
| Price | Тип цены — Целочисленный параметр, определяющий тип цены для расчёта индикатора. |
| ATRMultiplier | Множитель ATR — Числовой множитель, определяющий ширину ценового канала относительно ATR. |
| ATRPeriod | Период ATR — Целочисленный период расчёта среднего истинного диапазона. |
| Interpolate | Интерполяция — Логический переключатель, включающий интерполяцию данных при межтаймфреймовом анализе. |
| alertsOn | Алерты включены — Главный логический переключатель, активирующий систему уведомлений в целом. |
| alertsOnCurrent | Алерты на текущий бар — Логический переключатель, задающий проверку алертов по текущему бару. |
| alertsOnHighLow | Пробой по High/Low — Логический переключатель, определяющий, что условие пробоя проверяется по ценам High/Low вместо Close. |
| alertsMessage | Текстовые уведомления — Логический переключатель, включающий всплывающие текстовые уведомления. |
| alertsSound | Звуковые уведомления — Логический переключатель, включающий звуковой сигнал при срабатывании алерта. |
| alertsEmail | Email-алерты — Логический переключатель, включающий отправку email-уведомлений при срабатывании алерта. |
Поиск по коду файла
#property indicator_chart_window
#property indicator_buffers 3
#property indicator_color1 Lime
#property indicator_color2 Red
#property indicator_color3 DodgerBlue
extern string TimeFrame = "All tf";
extern int HalfLength = 61;
extern int Price = 0;
extern double ATRMultiplier = 2.6;
extern int ATRPeriod = 110;
extern bool Interpolate = TRUE;
extern bool alertsOn = FALSE;
extern bool alertsOnCurrent = FALSE;
extern bool alertsOnHighLow = FALSE;
extern bool alertsMessage = FALSE;
extern bool alertsSound = FALSE;
extern bool alertsEmail = FALSE;
double G_ibuf_132[];
double G_ibuf_136[];
double G_ibuf_140[];
double G_ibuf_144[];
string Gs_148;
bool G_bool_156;
bool G_bool_160;
int G_timeframe_164;
string Gs_nothing_168 = "nothing";
datetime G_time_176;
string Gsa_180[] = {"M1", "M5", "M15", "M30", "H1", "H4", "D1", "W1", "MN"};
int Gia_184[] = {1, 5, 15, 30, 60, 240, 1440, 10080, 43200};
int init() {
// код доступен только после оплаты
}
int deinit() {
return (0);
}
int start() {
// код доступен только после оплаты
}
int Li_8;
double Ld_20;
double Ld_28;
double Ld_36;
int shift_44;
int datetime_48;
int Li_0 = IndicatorCounted();
if (Li_0 < 0) return (-1);
if (Li_0 > 0) Li_0--;
int Li_16 = MathMin(Bars - 1, Bars - Li_0 + HalfLength);
if (G_bool_160) {
G_ibuf_132[0] = Li_16 + 1;
return (0);
}
if (G_bool_156 || G_timeframe_164 == Period()) {
for (int Li_4 = Li_16; Li_4 >= 0; Li_4--) {
Ld_20 = (HalfLength + 1) * iMA(NULL, 0, 1, 0, MODE_SMA, Price, Li_4);
Ld_28 = HalfLength + 1;
Li_8 = 1;
for (int Li_12 = HalfLength; Li_8 <= HalfLength; Li_12--) {
Ld_20 += Li_12 * iMA(NULL, 0, 1, 0, MODE_SMA, Price, Li_4 + Li_8);
Ld_28 += Li_12;
if (Li_8 <= Li_4) {
Ld_20 += Li_12 * iMA(NULL, 0, 1, 0, MODE_SMA, Price, Li_4 - Li_8);
Ld_28 += Li_12;
}
Li_8++;
}
Ld_36 = iATR(NULL, 0, ATRPeriod, Li_4 + 10) * ATRMultiplier;
G_ibuf_132[Li_4] = Ld_20 / Ld_28;
G_ibuf_136[Li_4] = G_ibuf_132[Li_4] + Ld_36;
G_ibuf_140[Li_4] = G_ibuf_132[Li_4] - Ld_36;
G_ibuf_144[Li_4] = 0;
if (alertsOnHighLow) {
if (High[Li_4] > G_ibuf_136[Li_4]) G_ibuf_144[Li_4] = 1;
if (Low[Li_4] < G_ibuf_140[Li_4]) G_ibuf_144[Li_4] = -1;
} else {
if (Close[Li_4] > G_ibuf_136[Li_4]) G_ibuf_144[LПоказано первые 50% кода (символов: 5367)
Открыть по тарифу
Купите тариф с пакетом открытий или войдите, если тариф уже есть. Открытый файл останется в вашем кабинете навсегда.
Разовая покупка файла
На этой странице откроется полный исходный код файла вместо ознакомительного фрагмента.
Зачем нужен email? После подтверждения оплаты файл сохранится в кабинете на этот email. Если аккаунта ещё нет, мы создадим его и пришлём ссылку для задания пароля. Если аккаунт уже есть, покупка добавится в него. Укажите адрес, к которому у вас есть доступ.
Чтобы оформить заказ, введите email и перейдите к оплате.