FTLM
Сообщите нам, если считаете, что материал размещён без разрешения.
Сообщить о материале
Обращение по товару «ftlm hist arrows alerts mtf 1.02.mq5» отправится на рассмотрение. Укажите контакт для ответа и опишите причину.
О программе
FTLM — это аналитический индикатор для MetaTrader 5, отображающий расчётную линию тренда и импульс (Fast Trend Line Momentum) в отдельном окне в виде гистограмм. Поддерживается выбор различных типов цен, включая стандартные OHLC и варианты Heikin Ashi.
Индикатор работает в многотаймфреймовом режиме: расчёт может выполняться на таймфрейме, отличном от текущего графика, с возможностью интерполяции значений для сглаженного отображения между барами.
Продукт включает систему визуальных стрелок-меток, появляющихся при смене направления наклона тренда, а также гибкую систему уведомлений с поддержкой всплывающих сообщений, звуковых сигналов, push-уведомлений и email-рассылки.
Настройки программы
| Настройка | Описание |
|---|---|
| Time frame (TimeFrame) | Таймфрейм — Таймфрейм, на котором выполняется расчёт индикатора. |
| Price to use for FTLM calculation (Price) | Тип цены — Тип цены, используемый для расчёта FTLM. |
| Arrows visible? (arrowsVisible) | Отображать стрелки — Включает или отключает отображение стрелок-меток на графике. |
| Arrows shift? (arrowsOnFirst) | Смещение стрелок — Определяет смещение стрелок-меток на графике. |
| Unique ID for arrows (arrowsIdentifier) | Идентификатор стрелок — Уникальный идентификатор стрелок-меток на графике. |
| Upper arrow gap (arrowsUpperGap) | Отступ стрелки вверх — Отступ стрелки вверх от цены в единицах ATR. |
| Lower arrow gap (arrowsLowerGap) | Отступ стрелки вниз — Отступ стрелки вниз от цены в единицах ATR. |
| Up arrow color (arrowsUpColor) | Цвет стрелки вверх — Цвет стрелки для обозначения восходящего направления тренда. |
| Down arrow color (arrowsDnColor) | Цвет стрелки вниз — Цвет стрелки для обозначения нисходящего направления тренда. |
| Up arrow code (arrowsUpCode) | Код стрелки вверх — Код стрелки для обозначения восходящего направления тренда. |
| Down arrow code (arrowsDnCode) | Код стрелки вниз — Код стрелки для обозначения нисходящего направления тренда. |
| ArrowSize | Размер стрелки — Размер стрелок-меток на графике. |
| Turn alerts on? (alertsOn) | Уведомления включены — Включает или отключает систему уведомлений. |
| Alerts on still opened bar? (alertsOnCurrent) | Уведомления на текущем баре — Определяет, на какой баре срабатывают уведомления: на текущем открытом или на закрытом. |
| Alerts should display message? (alertsMessage) | Всплывающие сообщения — Включает или отключает отображение всплывающих сообщений при смене направления тренда. |
| Alerts should play a sound? (alertsSound) | Звуковой сигнал — Включает или отключает воспроизведение звукового сигнала при смене направления тренда. |
| Alerts should send a notification? (alertsNotify) | Push-уведомления — Включает или отключает отправку push-уведомлений при смене направления тренда. |
| Alerts should send an email? (alertsEmail) | Email-уведомления — Включает или отключает отправку email-уведомлений при смене направления тренда. |
| Sound file (soundFile) | Звуковой файл — Путь к звуковому файлу для уведомлений. |
| Interpolate in multi time frame mode? (Interpolate) | Интерполяция MTF — Включает или отключает интерполяцию значений в многотаймфреймовом режиме. |
Поиск по коду файла
#property indicator_separate_window
#property indicator_buffers 7
#property indicator_color1 clrDarkGreen
#property indicator_color2 clrRed
#property indicator_color3 clrCrimson
#property indicator_color4 clrLime
#property indicator_color5 clrGreen
#property indicator_color6 clrRed
#property indicator_color7 clrRed
#property indicator_width1 2
#property indicator_width3 2
#property indicator_width5 2
#property indicator_width6 2
#property indicator_width7 2
enum enPrices
{
pr_close, // Close
pr_open, // Open
pr_high, // High
pr_low, // Low
pr_median, // Median
pr_typical, // Typical
pr_weighted, // Weighted
pr_average, // Average (high+low+open+close)/4
pr_medianb, // Average median body (open+close)/2
pr_tbiased, // Trend biased price
pr_tbiased2, // Trend biased (extreme) price
pr_haclose, // Heiken ashi close
pr_haopen, // Heiken ashi open
pr_hahigh, // Heiken ashi high
pr_halow, // Heiken ashi low
pr_hamedian, // Heiken ashi median
pr_hatypical, // Heiken ashi typical
pr_haweighted, // Heiken ashi weighted
pr_haaverage, // Heiken ashi average
pr_hamedianb, // Heiken ashi median body
pr_hatbiased, // Heiken ashi trend biased price
pr_hatbiased2, // Heiken ashi trend biased (extreme) price
pr_habclose, // Heiken ashi (better formula) close
pr_habopen, // Heiken ashi (better formula) open
pr_habhigh, // Heiken ashi (better formula) high
pr_hablow, // Heiken ashi (better formula) low
pr_habmedian, // Heiken ashi (better formula) median
pr_habtypical, // Heiken ashi (better formula) typical
pr_habweighted,// Heiken ashi (better formula) weighted
pr_habaverage, // Heiken ashi (better formula) average
pr_habmedianb, // Heiken ashi (better formula) median body
pr_habtbiased, // Heiken ashi (better formula) trend biased price
pr_habtbiased2 // Heiken ashi (better formula) trend biased (extreme) price
};
extern ENUM_TIMEFRAMES TimeFrame = PERIOD_CURRENT; // Time frame
extern enPrices Price = pr_close; // Price to use for FTLM calculation
extern bool arrowsVisible = true; // Arrows visible?
extern bool arrowsOnFirst = true; // Arrows shift?
extern string arrowsIdentifier = "FTLM arrows"; // Unique ID for arrows
extern double arrowsUpperGap = 1.0; // Upper arrow gap
extern double arrowsLowerGap = 1.0; // Lower arrow gap
extern color arrowsUpColor = clrDarkGreen; // Up arrow color
extern color arrowsDnColor = clrCrimson; // Down arrow color
extern int arrowsUpCode = 221; // Up arrow code
extern int arrowsDnCode = 222; // Down arrow code
extern int ArrowSize = 1;
extern bool alertsOn = false; // Turn alerts on?
extern bool alertsOnCurrent = false; // Alerts on still opened bar?
extern bool alertsMessage = false; // Alerts should display message?
extern bool alertsSound = false; // Alerts should play a sound?
extern bool alertsNotify = false; // Alerts should send a notification?
extern bool alertsEmail = false; // Alerts should send an email?
extern string soundFile = "alert2.wav"; // Sound file
extern bool Interpolate = true; // Interpolate in multi time frame mode?
double FTLMhuu[],FTLMhud[],FTLMhdd[],FTLMhdu[],FTLM[],FTLMbuffer2[],FTLMbuffer3[],prices[],FTLMslope[],FTLMcount[];
string indicatorFileName;
#define _mtfCall(_buff,_ind) iCustom(NULL,TimeFrame,indicatorFileName,PERIOD_CURRENT,Price,arrowsVisible,arrowsOnFirst,arrowsIdentifier,arrowsUpperGap,arrowsLowerGap,arrowsUpColor,arrowsDnColor,arrowsUpCode,arrowsDnCode,ArrowSize,alertsOn,alertsOnCurrent,alertsMessage,alertsSound,alertsNotify,alertsEmail,soundFile,_buff,_ind)
int OnInit()
{
// код доступен только после оплаты
}
int deinit()
{
string lookFor = arrowsIdentifier+":";
int lookForLength = StringLen(lookFor);
for (int i=ObjectsTotal()-1; i>=0; i--)
{
string objectName = ObjectName(i);
if (StringSubstr(objectName,0,lookForLength) == lookFor) ObjectDelete(objectName);
}
return(0);
}
int start()
{
// код доступен только после оплаты
}
int i,FTLMcounted_bars=IndicatorCounted();
if(FTLMcounted_bars<0) return(-1);
if(FTLMcounted_bars>0) FTLMcounted_bars--;
int limit = fmin(Bars-FTLMcounted_bars,Bars-1); FTLMcount[0]=limit;
if (TimeFrame!=_Period)
{
limit = (int)fmax(limit,fmin(Bars-1,_mtfCall(9,0)*TimeFrame/_Period));
if (FTLMslope[limit]==-1) CleanPoint(limit,FTLMbuffer2,FTLMbuffer3);
for (i=limit;i>=0 && !_StopFlag; i--)
{
int y = iBarShift(NULL,TimeFrame,Time[i]);
FTLM [i] = _mtfCall(4,y);
FTLMhuu[i] = EMPTY_VALUE;
FTLMhud[i] = EMPTY_VALUE;
FTLMhdd[i] = EMPTY_VALUE;
FTLMhdu[i] = EMPTY_VALUE;
FTLMbuffer2[i] = EMPTY_VALUE;
FTLMbuffer3[i] = EMPTY_VALUE;
FTLMslope[i] = _mtfCall(8,y);
if (!Interpolate || (i>0 && y==iBarShift(NULL,TimeFrame,Time[i-1]))) continue;
#define _interpolate(buff) buff[i+k] = buff[i]+(buff[i+n]-buff[i])*k/n
int n,k; datetime time = iTime(NULL,TimeFrame,y);
for(n = 1; (i+n)<Bars && Time[i+n] >= time; n++) continue;
for(k = 1; k<n && (i+n)<Bars && (i+k)<Bars; k++) _interpolate(FTLM);
}
for(i=limit; i>=0; i--)
{
if (FTLM[i]>0)
if (FTLMslope[i]==1)
FTLMhuu[i] = FTLM[i];
else FTLMhud[i] = FTLM[i];
if (FTLM[i]<0)
if (FTLMslope[i]==1)
FTLMhdu[i] = FTLM[i];
else FTLMhdd[i] = FTLM[i];
if (FTLMslope[i]==-1) PlotPoint(i,FTLMbuffer2,FTLMbuffer3,FTLM);
}
return(0);
}
if (FTLMslope[limit]==-1) CleanPoint(limit,FTLMbuffer2,FTLMbuffer3);
for (i=limit; i >= 0; i--)
{
if (i<Bars-1)
{
prices[i] = getPrice(Price,Open,Close,High,Low,i,Bars);
double value1 =
0.4360409450*prices[i+0]
+0.3658689069*prices[i+1]
+0.2460452079*prices[i+2]
+0.1104506886*prices[i+3]
-0.0054034585*prices[i+4]
-0.0760367731*prices[i+5]
-0.0933058722*prices[i+6]
-0.0670110374*prices[i+7]
-0.0190795053*prices[i+8]
+0.0259609206*prices[i+9]
+0.0502044896*prices[i+10]
+0.0477818607*prices[i+11]
+0.0249252327*prices[i+12]
-0.0047706151*prices[i+13]
-0.0272432537*prices[i+14]
-0.0338917071*prices[i+15]
-0.0244141482*prices[i+16]
-0.0055774838*prices[i+17]
+0.0128149838*prices[i+18]
+0.0226522218*prices[i+19]
+0.0208778257*prices[i+20]
+0.0100299086*prices[i+21]
-0.0036771622*prices[i+22]
-0.0136744850*prices[i+23]
-0.0160483392*prices[i+24]
-0.0108597376*prices[i+25]
-0.0016060704*prices[i+26]
+0.0069480557*prices[i+27]
+0.0110573605*prices[i+28]
+0.0095711419*prices[i+29]
+0.0040444064*prices[i+30]
-0.0023824623*prices[i+31]
-0.0067093714*prices[i+32]
-0.0072003400*prices[i+33]
-0.0047717710*prices[i+34]
+0.0005541115*prices[i+35]
+0.0007860160*prices[i+36]
+0.0130129076*prices[i+37]
+0.0040364019*prices[i+38];
double value2 =
-0.0025097319*prices[i+0]
+0.0513007762*prices[i+1]
+0.1142800493*prices[i+2]
+0.1699342860Показано первые 50% кода (символов: 12473)
Открыть по тарифу
Купите тариф с пакетом открытий или войдите, если тариф уже есть. Открытый файл останется в вашем кабинете навсегда.
Разовая покупка файла
На этой странице откроется полный исходный код файла вместо ознакомительного фрагмента.
Зачем нужен email? После подтверждения оплаты файл сохранится в кабинете на этот email. Если аккаунта ещё нет, мы создадим его и пришлём ссылку для задания пароля. Если аккаунт уже есть, покупка добавится в него. Укажите адрес, к которому у вас есть доступ.
Чтобы оформить заказ, введите email и перейдите к оплате.