STLM
Похожие материалы по тегам
Сообщите нам, если считаете, что материал размещён без разрешения.
Сообщить о материале
Обращение по товару «stlm zones (arrows alerts ahtf)(1).mq5» отправится на рассмотрение. Укажите контакт для ответа и опишите причину.
О программе
STLM (Slow Trend Line Momentum) — это пользовательский индикатор для MetaTrader, рассчитывающий аналитическое значение моментума на основе взвешенных ценовых данных. Результат отображается в виде гистограмм, разделённых на зоны восходящего и нисходящего трендов, а также фоновых прямоугольников, обозначающих периоды тренда.
Индикатор поддерживает выбор различных типов цен (Close, Open, High, Low, Median, Typical, Weighted, Average и ряд вариантов Heikin Ashi) и работу с несколькими таймфреймами, включая автоматический переход на более высокий таймфрейм с возможностью интерполяции.
Встроена система уведомлений: стрелки на графике при смене направления тренда, а также опциональные звуковые, push-уведомления, email- и popup-оповещения при выполнении заданных условий.
Настройки программы
| Настройка | Описание |
|---|---|
| Time frame (TimeFrame) | Таймфрейм расчёта — Таймфрейм, на котором выполняется расчёт индикатора. При значении -1 автоматически выбирается следующий более высокий таймфрейм. |
| Price to use for stlm calculation (Price) | Тип цены для расчёта STLM — Тип цены, используемый для расчёта значения STLM. |
| Display the background zones (ShowZones) | Отображение фоновых зон трендов — Отображает или скрывает фоновые зоны трендов на графике. |
| Uptrend Zone color (ColorUp) | Цвет зоны восходящего тренда — Цвет фоновой зоны восходящего тренда. |
| Downtrend Zone color (ColorDown) | Цвет зоны нисходящего тренда — Цвет фоновой зоны нисходящего тренда. |
| Unique ID for the zones (UniqueZoneID) | Идентификатор зон — Уникальный идентификатор для объектов фоновых зон на графике. |
| 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) | Popup-уведомления — Включает или отключает отображение popup-сообщений при срабатывании условий. |
| 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) | Интерполяция для нескольких таймфреймов — Включает или отключает интерполяцию значений при работе в режиме нескольких таймфреймов. |
Поиск по коду файла
#property indicator_separate_window
#property indicator_buffers 7
#property indicator_color1 clrDarkGreen
#property indicator_color2 clrLime
#property indicator_color3 clrCrimson
#property indicator_color4 clrRed
#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
};
enum enTimeFrames
{
tf_cu = PERIOD_CURRENT, // Current time frame
tf_m1 = PERIOD_M1, // 1 minute
tf_m5 = PERIOD_M5, // 5 minutes
tf_m15 = PERIOD_M15, // 15 minutes
tf_m30 = PERIOD_M30, // 30 minutes
tf_h1 = PERIOD_H1, // 1 hour
tf_h4 = PERIOD_H4, // 4 hours
tf_d1 = PERIOD_D1, // Daily
tf_w1 = PERIOD_W1, // Weekly
tf_mn1 = PERIOD_MN1, // Monthly
tf_n1 = -1, // First higher time frame
tf_n2 = -2, // Second higher time frame
tf_n3 = -3 // Third higher time frame
};
extern enTimeFrames TimeFrame = tf_cu; // Time frame
extern enPrices Price = pr_close; // Price to use for stlm calculation
extern bool ShowZones = true; // Display the background zones
extern color ColorUp = clrHoneydew; // Uptrend Zone color
extern color ColorDown = clrLavenderBlush; // Downtrend Zone color
extern string UniqueZoneID = "STLMZones2"; // Unique ID for the zones
extern bool arrowsVisible = true; // Arrows visible?
extern bool arrowsOnFirst = true; // Arrows shift?
extern string arrowsIdentifier = "STLM 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 = 233; // Up arrow code
extern int arrowsDnCode = 234; // 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 Dummy = -1;
double stlmhuu[],stlmhud[],stlmhdd[],stlmhdu[],stlm[],buffer2[],buffer3[],prices[],trend[],count[];
string indicatorFileName;
#define _mtfCall(_buff,_ind) iCustom(NULL,TimeFrame,indicatorFileName,PERIOD_CURRENT,Price,ShowZones,ColorUp,ColorDown,UniqueZoneID,arrowsVisible,arrowsOnFirst,arrowsIdentifier,arrowsUpperGap,arrowsLowerGap,arrowsUpColor,arrowsDnColor,arrowsUpCode,arrowsDnCode,ArrowSize,alertsOn,alertsOnCurrent,alertsMessage,alertsSound,alertsNotify,alertsEmail,soundFile,_buff,_ind)
int init()
{
// код доступен только после оплаты
}
int timeFrameValue(int _tf)
{
int add = (_tf>=0) ? 0 : MathAbs(_tf);
if (add != 0) _tf = _Period;
int size = ArraySize(iTfTable);
int i =0; for (;i<size; i++) if (iTfTable[i]==_tf) break;
if (i==size) return(_Period);
return(iTfTable[(int)MathMin(i+add,size-1)]);
}
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);
}
lookFor = UniqueZoneID+":";
lookForLength = StringLen(lookFor);
for (i=ObjectsTotal()-1; i>=0; i--)
{
objectName = ObjectName(i);
if (StringSubstr(objectName,0,lookForLength) == lookFor) ObjectDelete(objectName);
}
GlobalVariableDel(ChartID()+":"+UniqueZoneID);
return(0);
}
int start()
{
// код доступен только после оплаты
}
int i,counted_bars=IndicatorCounted();
if(counted_bars<0) return(-1);
if(counted_bars>0) counted_bars--;
int limit = fmin(Bars-counted_bars,Bars-1); count[0]=limit;
datetime tDummy = GlobalVariableGet(ChartID()+":"+UniqueZoneID); if (tDummy==0) tDummy = Time[0];
if (TimeFrame!=_Period)
{
GlobalVariableSet(ChartID()+":"+UniqueZoneID,Time[0]+_Period*60-1);
limit = (int)fmax(limit,fmin(Bars-1,_mtfCall(9,0)*TimeFrame/_Period));
if (trend[limit]==-1) CleanPoint(limit,buffer2,buffer3);
for (i=limit;i>=0 && !_StopFlag; i--)
{
int y = iBarShift(NULL,TimeFrame,Time[i]);
stlm [i] = _mtfCall(4,y);
stlmhuu[i] = EMPTY_VALUE;
stlmhud[i] = EMPTY_VALUE;
stlmhdd[i] = EMPTY_VALUE;
stlmhdu[i] = EMPTY_VALUE;
buffer2[i] = EMPTY_VALUE;
buffer3[i] = EMPTY_VALUE;
trend[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(stlm);
}
for(i=limit; i>=0; i--)
{
if (stlm[i]>0)
if (trend[i]==1)
stlmhuu[i] = stlm[i];
else stlmhud[i] = stlm[i];
if (stlm[i]<0)
if (trend[i]==1)
stlmhdu[i] = stlm[i];
else stlmhdd[i] = stlm[i];
if (trend[i]==-1) PlotPoint(i,buffer2,buffer3,stlm);
}
return(0);
}
if (trend[limit]==-1) CleanPoint(limit,buffer2,buffer3);
for (i=limit; i >= 0; i--)
{
if (i<Bars-1)
{
prices[i] = getPrice(Price,Open,Close,High,Low,i, Bars);
double value1 =
0.0982862174*prices[i+0]
+0.0975682269*prices[i+1]
+0.0961401078*prices[i+2]
+0.0940230544*prices[i+3]
+0.0912437090*prices[i+4]
+0.0878391006*prices[i+5]
+0.0838544303*prices[i+6]
+0.0793406350*prices[i+7]
+0.0743569346*prices[i+8]
+0.0689666682*prices[i+9]
+0.0632381578*prices[i+10]
+0.0572428925*prices[i+11]
+0.0510534242*prices[i+12]
+0.0447468229*prices[i+13]
+0.0383959950*prices[i+14]
+0.0320735368*prices[i+15]
+0.0258537721*prices[i+16]
+0.0198005183*prices[i+17]
+0.0139807863*prices[i+18]
+0.0084512448*prices[i+19]
+0.0032639979*prices[i+20]
-0.0015350359*prices[i+21]
-0.0059060082*prices[i+22]
-0.0098190256*prices[i+23]
-0.0132507215*prices[i+24]
-0.0161875265*prices[i+25]
-0.0186164872*prices[i+26]
-0.0205446727*prices[i+27]
-0.0219739146*prices[i+28]
-0.0229204861*prices[i+29]
-0.0234080863*prices[i+30]
-0.0234566315*prices[i+31]
-0.0231017777*prices[i+32]
-0.0223796900*prices[i+33]
-0.0213300463*prices[i+34]
-0.0199924534*prices[i+35]
-0.0184126992*prices[i+36]
-0.0166377699*prices[i+37]
-0.0147139428*prices[i+38]
-0.0126796776*prices[i+39]
-0.0105938331*prices[i+40]
-0.0084736770*prices[i+41]
-0.0063841850*prices[i+42]
-0.0043466731*prices[i+43]
-0.0023956944*prices[i+44]
-0.0005535180*prices[i+45]
+0.0011421469*prices[i+46]
+0.0026845693*prices[i+47]
+0.0040471369*prices[i+48]
+0.0052380201*prices[i+49]
+0.0062194591*prices[i+50]
+0.0070340085*prices[i+51]
+0.0076266453*prices[i+52]
+0.0080376628*prices[i+53]
+0.0083037666*prices[i+54]
+0.00836947Показано первые 50% кода (символов: 16279)
Открыть по тарифу
Купите тариф с пакетом открытий или войдите, если тариф уже есть. Открытый файл останется в вашем кабинете навсегда.
Разовая покупка файла
На этой странице откроется полный исходный код файла вместо ознакомительного фрагмента.
Зачем нужен email? После подтверждения оплаты файл сохранится в кабинете на этот email. Если аккаунта ещё нет, мы создадим его и пришлём ссылку для задания пароля. Если аккаунт уже есть, покупка добавится в него. Укажите адрес, к которому у вас есть доступ.
Чтобы оформить заказ, введите email и перейдите к оплате.