digital fast tma line.mq4
Похожие материалы по тегам
Сообщите нам, если считаете, что материал размещён без разрешения.
Сообщить о материале
Обращение по товару «digital fast tma line.mq4» отправится на рассмотрение. Укажите контакт для ответа и опишите причину.
О программе
Индикатор для платформы MetaTrader 4, рассчитывающий и отображающий линию треугольного скользящего среднего (TMA) с верхней и нижней полосами отклонения. Полосы формируются на основе среднего истинного диапазона и позволяют визуально оценить волатильность и возможные уровни поддержки и сопротивления. Центральная линия окрашивается в зависимости от направления тренда, что помогает определить его характер на выбранном таймфрейме. Индикатор поддерживает работу на нескольких таймфреймах и встроенную систему уведомлений через всплывающие сообщения, звуковые сигналы или электронную почту при пробое ценой полос.
Настройки программы
| Настройка | Описание |
|---|---|
| TimeFrame | Таймфрейм — Выбирает таймфрейм, на котором выполняется расчёт индикатора. Может быть задан текстовым именем (например, M1, H1) или числовым значением. |
| TMAPeriod | Период TMA — Определяет период расчёта треугольного скользящего среднего, влияющий на сглаженность линии индикатора. |
| Price | Тип цены — Задаёт тип цены, используемой при расчёте: Close, Open, High, Low, среднее High/Low, среднее High/Low/Close или другие варианты. |
| ATRMultiplier | Множитель ATR — Множитель, применяемый к значению среднего истинного диапазона для определения ширины верхней и нижней полос индикатора. |
| ATRPeriod | Период ATR — Период расчёта среднего истинного диапазона, используемого для формирования полос отклонения. |
| TrendThreshold | Порог тренда — Пороговое значение наклона линии, определяющее отнесение текущего движения к бычьему, медвежьему или нейтральному тренду. |
| ShowCenterLine | Показать центральную линию — Включает или отключает отображение центральной линии TMA, раскрашиваемой в цвет в зависимости от направления тренда. |
| Interpolation | Интерполяция — Включает интерполяцию значений между основными барами при отображении на младшем таймфрейме для более плавной линии. |
| alertsOn | Алерты включены — Общий переключатель системы уведомлений. При отключении все остальные параметры алертов игнорируются. |
| alertsMessage | Сообщения — Включает отправку всплывающих уведомлений в терминал при пробое ценой верхней или нижней полосы. |
| alertsSound | Звуковой сигнал — Включает воспроизведение звукового файла при срабатывании условия алерта. |
| alertsEmail | Email-уведомления — Включает отправку электронного письма на заданный адрес при срабатывании условия алерта. |
| MoveEndpointEveryTick | Обновление конца при каждом тике — При включении конечная точка линии обновляется инкрементально при каждом новом тике без полного пересчёта. |
| MaxBarsBack | Максимум баров назад — Ограничивает количество баров, участвующих в расчёте индикатора, начиная от текущего. |
Поиск по коду файла
#property indicator_chart_window
#property indicator_buffers 6
#property indicator_color1 CLR_NONE
#property indicator_color2 HotPink
#property indicator_color3 SpringGreen
#property indicator_color4 Lime
#property indicator_color5 Red
#property indicator_color6 Gold
#property indicator_style2 STYLE_DOT
#property indicator_style3 STYLE_DOT
#property indicator_width1 1
#property indicator_width2 1
#property indicator_width3 1
#property indicator_width4 3
#property indicator_width5 3
#property indicator_width6 3
#define PIPSTOFORCERECALC 10
extern string TimeFrame = "Current";
extern int TMAPeriod = 17;
extern int Price = PRICE_CLOSE;
extern double ATRMultiplier = 1.7;
extern int ATRPeriod = 100;
extern double TrendThreshold = 0.25;
extern bool ShowCenterLine = true;
extern bool Interpolation = false;
extern bool alertsOn = false;
extern bool alertsMessage = false;
extern bool alertsSound = false;
extern bool alertsEmail = false;
extern bool MoveEndpointEveryTick = false;
extern int MaxBarsBack = 5000;
double tma[];
double upperBand[];
double lowerBand[];
double bull[];
double bear[];
double neutral[];
int TimeFrameValue,
FirstAvailableBar;
bool AlertHappened;
datetime AlertTime;
double TICK;
bool AdditionalDigit;
double SumTMAPeriod,
TickScaleFactor,
Threshold,
PriorTick,
FullSumW;
int init()
{
// код доступен только после оплаты
}
int deinit() { return(0); }
int start()
{
// код доступен только после оплаты
}
void DrawCenterLine(int shift, double slope)
{
bull[shift] = EMPTY_VALUE;
bear[shift] = EMPTY_VALUE;
neutral[shift] = EMPTY_VALUE;
if (ShowCenterLine)
{
if(slope > TrendThreshold)
{
bull[shift] = tma[shift];
}
else if(slope < -1 * TrendThreshold)
{
bear[shift] = tma[shift];
}
else
{
neutral[shift] = tma[shift];
}
}
}
double CalcTma( int inx )
{
double tmas;
if(inx >= TMAPeriod)
tmas = CalcPureTma(inx);
else
tmas = CalcTmaEstimate(inx);
return( tmas );
}
double CalcPureTma( int i )
{
int j = TMAPeriod + 1;
int k;
double sum=0;
switch (Price)
{
case 0:sum=j * iClose(NULL, TimeFrameValue, i);break;
case 1:sum=j * iOpen(NULL, TimeFrameValue, i);break;
case 2:sum=j * iHigh(NULL, TimeFrameValue, i);break;
case 3:sum=j * iLow(NULL, TimeFrameValue, i);break;
case 4:sum=j * (iHigh(NULL, TimeFrameValue, i)+iLow(NULL, TimeFrameValue, i))/2;break;
case 5:sum=j * (iHigh(NULL, TimeFrameValue, i)+iLow(NULL, TimeFrameValue, i)+iClose(NULL, TimeFrameValue, i))/3;break;
case 6:sum=j * (iHigh(NULL, TimeFrameValue, i)+iLow(NULL, TimeFrameValue, i)+iClose(NULL, TimeFrameValue, i)+iClose(NULL, TimeFrameValue, i))/4;break;
default :sum=j * iClose(NULL, TimeFrameValue, i);break;
}
for (k = 1; k <= TMAPeriod; k++)
{
switch(Price)
{
case 0:sum = sum + (j - k) * (iClose(NULL, TimeFrameValue, i+k) + iClose(NULL, TimeFrameValue, i-k));break;
case 1:sum = sum + (j - k) * (iOpen(NULL, TimeFrameValue, i+k) + iOpen(NULL, TimeFrameValue, i-k));break;
case 2:sum = sum + (j - k) * (iHigh(NULL, TimeFrameValue, i+k) + iHigh(NULL, TimeFrameValue, i-k));break;
case 3:sum = sum + (j - k) * (iLow(NULL, TimeFrameValue, i+k) + iLow(NULL, TimeFrameValue, i-k));break;
case 4:sum = sum + (j - k) * (
(iHigh(NULL, TimeFrameValue, i+k) + iLow(NULL, TimeFrameValue, i+k))/2 +
(iHigh(NULL, TimeFrameValue, i-k) + iLow(NULL, TimeFrameValue, i-k))/2
);break;
case 5:sum = sum + (j - k) * (
(iHigh(NULL, TimeFrameValue, i+k) + iLow(NULL, TimeFrameValue, i+k) + iClose(NULL, TimeFrameValue, i+k))/3 +
(iHigh(NULL, TimeFrameValue, i-k) + iLow(NULL, TimeFrameValue, i-k) + iClose(NULL, TimeFrameValue, i-k))/3
);break;
case 6:sum = sum + (j - k) * (
(iHigh(NULL, TimeFrameValue, i+k) + iLow(NULL, TimeFrameValue, i+k) + iClose(NULL, TimeFrameValue, i+k) + iClПоказано первые 50% кода (символов: 10110)
Открыть по тарифу
Купите тариф с пакетом открытий или войдите, если тариф уже есть. Открытый файл останется в вашем кабинете навсегда.
Разовая покупка файла
На этой странице откроется полный исходный код файла вместо ознакомительного фрагмента.
Зачем нужен email? После подтверждения оплаты файл сохранится в кабинете на этот email. Если аккаунта ещё нет, мы создадим его и пришлём ссылку для задания пароля. Если аккаунт уже есть, покупка добавится в него. Укажите адрес, к которому у вас есть доступ.
Чтобы оформить заказ, введите email и перейдите к оплате.