Extreme TMA System
Похожие материалы по тегам
Сообщите нам, если считаете, что материал размещён без разрешения.
Сообщить о материале
Обращение по товару «! mth_fasttmaline.mq4» отправится на рассмотрение. Укажите контакт для ответа и опишите причину.
О программе
Данный продукт представляет собой пользовательский индикатор для MetaTrader 4, написанный на языке MQL4. Индикатор отображает в окне графика центральную линию, рассчитанную по алгоритму треугольной скользящей средней, а также верхнюю и нижнюю границы, построенные с использованием волатильности. Центральная линия может менять цвет в зависимости от направления и силы наклона, что позволяет визуально оценивать преобладающий тренд.
Индикатор поддерживает работу на нескольких таймфреймах: можно выбрать таймфрейм, отличный от текущего, и данные будут пересчитываться соответствующим образом. При этом индикатор не отображается на графиках с более старшим периодом, чем заданный таймфрейм. Предусмотрена возможность обновления конечной точки индикатора на каждом тике без полного пересчёта, что может быть полезно для быстрой реакции на изменения цены.
В индикаторе реализована система оповещений: при пробое ценой верхней или нижней границы могут отправляться сообщения во всплывающем окне, по электронной почте и/или сопровождаться звуковым сигналом. Все оповещения настраиваются и по умолчанию отключены. Индикатор не является торговым советником и не выполняет автоматических торговых операций.
Настройки программы
| Настройка | Описание |
|---|---|
| TimeFrame | Таймфрейм, на котором рассчитывается индикатор. Может быть указан как строка (например, "Current", "M15", "H1") или числом минут. |
| TMAPeriod | Период треугольной скользящей средней, используемый для расчёта центральной линии. |
| Price | Тип цены, используемый для расчёта индикатора (например, Close, Open, High, Low, Median, Typical, Weighted). |
| ATRMultiplier | Множитель для значения ATR, определяющий ширину верхней и нижней границ относительно центральной линии. |
| ATRPeriod | Период усреднения для расчёта ATR, используемого при построении границ. |
| TrendThreshold | Пороговое значение наклона центральной линии для определения направления тренда и смены цвета. |
| ShowCenterLine | Включает отображение центральной линии индикатора. |
| alertsOn | Включает систему оповещений о пробое ценой верхней или нижней границы. |
| alertsMessage | Разрешает вывод всплывающих сообщений при пробое границ. |
| alertsSound | Разрешает звуковое сопровождение оповещений при пробое границ. |
| alertsEmail | Разрешает отправку оповещений по электронной почте при пробое границ. |
| 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 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 ttma;
if(inx >= TMAPeriod)
ttma = CalcPureTma(inx);
else
ttma = CalcTmaEstimate(inx);
return( ttma );
}
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) + iCloseПоказано первые 50% кода (символов: 10102)
Открыть по тарифу
Купите тариф с пакетом открытий или войдите, если тариф уже есть. Открытый файл останется в вашем кабинете навсегда.
Разовая покупка файла
На этой странице откроется полный исходный код файла вместо ознакомительного фрагмента.
Зачем нужен email? После подтверждения оплаты файл сохранится в кабинете на этот email. Если аккаунта ещё нет, мы создадим его и пришлём ссылку для задания пароля. Если аккаунт уже есть, покупка добавится в него. Укажите адрес, к которому у вас есть доступ.
Чтобы оформить заказ, введите email и перейдите к оплате.