! truetl v1.01(1).mq5
Сообщите нам, если считаете, что материал размещён без разрешения.
Сообщить о материале
Обращение по товару «! truetl v1.01(1).mq5» отправится на рассмотрение. Укажите контакт для ответа и опишите причину.
О программе
TrueTL — это индикатор для MetaTrader 5, который автоматически строит трендовые линии на графике цены. Он анализирует баровые данные в видимой области графика и создаёт объекты OBJ_TREND, отражающие потенциальные уровни поддержки и сопротивления на основе фракталов и конфигураций свечных паттернов.
Индикатор различает «нормальные» и «длинные» трендовые линии в зависимости от заданного периода Normal_TL_Period, окрашивая их в соответствующие цвета. Доступен режим Three Touch, который добавляет вспомогательные трендовые линии для подтверждения уровней при достижении ими трёх касаний цены.
Встроены опции ускоренного анализа для таймфреймов M1 и M5, а также функция автоматического обновления графика. Индикатор может отмечать максимальные и минимальные трендовые уровни отдельными графическими объектами. Все настройки доступны через панель параметров пользователя.
Настройки программы
| Настройка | Описание |
|---|---|
| Auto_Refresh | Включает или отключает автоматическое обновление трендовых линий при каждом тике. При активном состоянии линии пересчитываются и обновляются на графике в реальном времени. |
| Normal_TL_Period | Пороговое значение в барах, определяющее, когда трендовая линия классифицируется как длинная. Линии с горизонтом больше данного значения окрашиваются в цвет Long_TL_Color. |
| Three_Touch | Включает или отключает режим Three Touch. В этом режиме индикатор создаёт дополнительные трендовые линии при подтверждении уровня тремя касаниями цены. |
| M1_Fast_Analysis | Переключатель ускоренного анализа для таймфрейма M1. При активации сокращается объём анализируемых баров для более быстрой перерисовки на минутном графике. |
| M5_Fast_Analysis | Переключатель ускоренного анализа для таймфрейма M5. При активации сокращается объём анализируемых баров для более быстрой перерисовки на пятиминутном графике. |
| Mark_Highest_and_Lowest_TL | Включает или отключает маркировку максимальных и минимальных трендовых уровней на графике. При активации отрисовываются дополнительные объекты, выделяющие ключевые точки трендовых линий. |
| Expiration_Day_Alert | Задаёт количество дней до истечения срока для отображения предупреждения об истечении. Используется для контроля временного горизонта действия трендовых уровней. |
| Normal_TL_Color | Цвет обычных трендовых линий. Обычные линии — это те, чей горизонт не превышает значение Normal_TL_Period. |
| Long_TL_Color | Цвет трендовых линий, признанных длинными. Длинные линии — это те, чей горизонт превышает значение Normal_TL_Period. |
| Three_Touch_TL_Widht | Толщина (ширина) трендовых линий, построенных в режиме Three Touch. Параметр задаётся в пунктах графика. |
| Three_Touch_TL_Color | Цвет трендовых линий, построенных в режиме Three Touch. Эти линии отображаются с особым цветом для визуального отличия от обычных и длинных линий. |
Поиск по коду файла
/*
Generated by EX4-TO-MQ4 decompiler LITE V4.0.409.1g [-]
Website:
E-mail : p******m*@gmail.com
*/
#property indicator_chart_window
#include <WinUser32.mqh>
#import "user32.dll"
int RegisterWindowMessageA(string a0);
#import
extern bool Auto_Refresh = TRUE;
extern int Normal_TL_Period = 500;
extern bool Three_Touch = TRUE;
extern bool M1_Fast_Analysis = TRUE;
extern bool M5_Fast_Analysis = TRUE;
extern bool Mark_Highest_and_Lowest_TL = TRUE;
extern int Expiration_Day_Alert = 5;
extern color Normal_TL_Color = Gainsboro;
extern color Long_TL_Color = Goldenrod;
extern int Three_Touch_TL_Widht = 2;
extern color Three_Touch_TL_Color = White;
int gi_120;
int gi_124;
int init() {
// код доступен только после оплаты
}
int deinit() {
for (int li_0 = 0; li_0 <= 100; li_0++) {
ObjectDelete("downtrendline" + li_0);
ObjectDelete("uptrendline" + li_0);
ObjectDelete("downtrendline" + li_0 + "tt");
ObjectDelete("uptrendline" + li_0 + "tt");
}
ObjectDelete("calctl");
ObjectDelete("timeleft");
ObjectDelete("invacc");
ObjectDelete("visibletl");
ObjectDelete("downmax");
ObjectDelete("upmax");
ObjectDelete("downmax");
ObjectDelete("upmax");
return (0);
}
int start() {
// код доступен только после оплаты
}
double ld_20;
double ld_28;
double ld_36;
double ld_44;
double ld_52;
double ld_60;
double ld_68;
double ld_76;
double ld_84;
double ld_100;
double ld_108;
double ld_116;
double ld_124;
double ld_132;
double ld_140;
double ld_148;
double ld_156;
double ld_164;
double ld_172;
double ld_180;
double ld_188;
double ld_232;
double ld_240;
int li_248;
int li_252;
if (Normal_TL_Period > 1000 || Normal_TL_Period < 100) Normal_TL_Period = 500;
string ls_0 = AccountNumber();
gi_124++;
string ls_8 = AccountNumber();
int li_16 = 1;
/*
int li_16 = (D'14.02.2012 08:00' - TimeCurrent()) / 86400;
if (li_16 < Expiration_Day_Alert && li_16 > 0 && gi_124 < 10) {
ObjectCreate("timeleft", OBJ_LABEL, 0, 0, 0);
ObjectSet("timeleft", OBJPROP_XDISTANCE, 5);
ObjectSet("timeleft", OBJPROP_YDISTANCE, 25);
ObjectSetText("timeleft", "TrueTL expiries in " + li_16 + " days. (14.02.2012)", 8, "Arial", Red);
}
if (gi_124 >= 10 && IndicatorCounted() > 0) ObjectDelete("timeleft");
if (li_16 <= 0) {
ObjectCreate("timeleft", OBJ_LABEL, 0, 0, 0);
ObjectSet("timeleft", OBJPROP_XDISTANCE, 5);
ObjectSet("timeleft", OBJPROP_YDISTANCE, 25);
ObjectSetText("timeleft", "Expiration time out (14.02.2012)", 8, "Arial", Red);
}
if (StringFind(ls_8, ls_0, 0) < 0) {
ObjectCreate("invacc", OBJ_LABEL, 0, 0, 0);
ObjectSet("invacc", OBJPROP_XDISTANCE, 5);
ObjectSet("invacc", OBJPROP_YDISTANCE, 35);
ObjectSetText("invacc", "Invalid account", 8, "Arial", Red);
} else ObjectDelete("invacc");
*/
int li_196 = MathMax(0, WindowFirstVisibleBar() - WindowBarsPerChart());
double ld_224 = Bars;
if (gi_120 == 0) gi_120 = ld_224;
if (ld_224 > gi_120) {
gi_120 = ld_224;
if (Auto_Refresh == TRUE && li_196 == 0) ObjectSet("calctl", OBJPROP_PRICE1, -1);
}
if (Auto_Refresh == TRUE && IndicatorCounted() == 0) ObjectSet("calctl", OBJPROP_PRICE1, -1);
if (ObjectGet("visibletl", OBJPROP_PRICE1) == -1.0) {
for (int li_208 = 0; li_208 <= 100; li_208++) {
ObjectDelete("downtrendline" + li_208);
ObjectDelete("uptrendline" + li_208);
ObjectDelete("downtrendline" + li_208 + "tt");
ObjectDelete("uptrendline" + li_208 + "tt");
}
}
if (ObjectGet("calctl", OBJPROP_PRICE1) == -1.0 && ObjectGet("visibletl", OBJPROP_PRICE1) == 0.0 && StringFind(ls_8, ls_0, 0) >= 0 && li_16 > 0) {
for (li_208 = 0; li_208 <= 100; li_208++) {
ObjectDelete("downtrendline" + li_208);
ObjectDelete("uptrendline" + li_208);
ObjectDelete("downtrendline" + li_208 + "tt");
ObjectDelete("uptrendline" + li_208 + "tt");
}
ld_20 = 150000;
if (Period() == PERIOD_M1 && M1_Fast_Analysis == TRUE) ld_20 = 8000;
if (Period() == PERIOD_M5 && M5_Fast_Analysis == TRUE) ld_20 = 2400;
if (Period() == PERIOD_MN1) {
ld_20 = 150;
Three_Touch = FALSE;
Normal_TL_Period = 150;
}
ld_28 = li_196 + MathMin(Bars - li_196 - 10, ld_20);
ld_36 = iHigh(NULL, 0, ld_28);
ld_52 = li_196 + MathMin(Bars - li_196 - 10, ld_20);
ld_60 = iHigh(NULL, 0, ld_52);
for (int li_200 = 1; li_200 < 50; li_200++) {
if ((iFractals(NULL, 0, MODE_UPPER, li_196 + li_200) > 0.0 && li_200 > 2) || (Close[li_196 + li_200 + 1] > Open[li_196 + li_200 + 1] && Close[li_196 + li_200 + 1] - (Low[li_196 +
li_200 + 1]) < 0.6 * (High[li_196 + li_200 + 1] - (Low[li_196 + li_200 + 1])) && Close[li_196 + li_200] < Open[li_196 + li_200]) || (Close[li_196 + li_200 + 1] <= Open[li_196 +
li_200 + 1] && Close[li_196 + li_200] < Open[li_196 + li_200]) || (Close[li_196 + li_200] < Open[li_196 + li_200] && Close[li_196 + li_200] < Low[li_196 + li_200 + 1])) {
ld_44 = li_196 + li_200;
break;
}
}
for (int li_204 = 1; li_204 <= 30; li_204++) {
if (ld_28 > ld_44 + 6.0) {
ObjectCreate("downtrendline" + li_204, OBJ_TREND, 0, iTime(NULL, 0, ld_28), ld_36, iTime(NULL, 0, ld_28), ld_36);
for (li_200 = ld_28; li_200 >= ld_44; li_200--) {
if (ObjectGet("downtrendline" + li_204, OBJPROP_PRICE1) == ObjectGet("downtrendline" + li_204, OBJPROP_PRICE2)) {
ObjectMove("downtrendline" + li_204, 1, iTime(NULL, 0, li_200 - 1), iHigh(NULL, 0, li_200 - 1));
ld_28 = li_200 - 1;
ld_36 = iHigh(NULL, 0, li_200 - 1);
}
ld_76 = ObjectGetValueByShift("downtrendline" + li_204, li_200);
if (ld_76 < iHigh(NULL, 0, li_200)) {
ObjectMove("downtrendline" + li_204, 1, iTime(NULL, 0, li_200), iHigh(NULL, 0, li_200));
ld_28 = li_200;
ld_36 = iHigh(NULL, 0, li_200);
}
}
}
if (ObjectGet("downtrendline" + li_204, OBJPROP_PRICE1) < ObjectGet("downtrendline" + li_204, OBJPROP_PRICE2)) ObjectDelete("downtrendline" + li_204);
if (iBarShift(NULL, 0, ObjectGet("downtrendline" + li_204, OBJPROP_TIME1)) - li_196 >= Normal_TL_Period) {
ObjectSet("downtrendline" + li_204, OBJPROP_COLOR, Long_TL_Color);
ObjectSetText("downtrendline" + li_204, "Long");
} else {
ObjectSet("downtrendline" + li_204, OBJPROP_COLOR, Normal_TL_Color);
ObjectSetText("downtrendline" + li_204, "Normal");
}
}
for (li_200 = 1; li_200 < 50; li_200++) {
if ((iFractals(NULL, 0, MODE_LOWER, li_196 + li_200) > 0.0 && li_200 > 2) || (Close[li_196 + li_200 + 1] < Open[li_196 + li_200 + 1] && High[li_196 + li_200 + 1] - (Close[li_196 +
li_200 + 1]) < 0.6 * (High[li_196 + li_200 + 1] - (Low[li_196 + li_200 + 1])) && Close[li_196 + li_200] > Open[li_196 + li_200]) || (Close[li_196 + li_200 + 1] >= Open[li_196 +
li_200 + 1] && Close[li_196 + li_200] > Open[li_196 + li_200]) || (Close[li_196 + li_200] > Open[li_196 + li_200] && Close[li_196 + li_200] > High[li_196 + li_200 + 1])) {
ld_68 = li_196 + li_200;
break;
}
}
for (li_204 = 1; li_204 <= 30; li_204++) {
if (ld_52 > ld_68 + 6.0) {
ObjectCreate("uptrendline" + li_204, OBJ_TREND, 0, iTime(NULL, 0, ld_52), ld_60, iTime(NULL, 0, ld_52), ld_60);
for (li_200 = ld_52; li_200 >= ld_68; li_200--) {
if (ObjectGet("uptrendline" + li_204, OBJPROP_TIME1) == ObjectGet("uptrendline" + li_204, OBJPROP_TIME2)) {
ObjectMove("uptrendline" + li_204, 1, iTime(NULL, 0, li_200 - 1), iLow(NULL, 0, li_200 - 1));
ld_52 = li_200 - 1;
ld_60 = iLow(NULL, 0, li_200 - 1);
}
ld_76 = ObjectGetValueByShift("uptrendline" + li_204, li_200);
if (iLow(NULL, 0, li_200) < ld_76) {
ObjectMove("uptrendline" + li_204, 1, iTime(NULL, 0, li_200), iLow(NULL, 0, li_200));
ld_52 = li_200;
ld_60 = iLow(NULL, 0, li_200);
}
}
}
if (ObjectGet("uptrendline" + li_204, OBJPROP_PRICE1) > ObjectGet("uptrendline" + li_204, OBJPROP_PRICE2)) ObjectDelete("uptrendline" + li_204);
if (iBarShift(NULL, 0, ObjectGet("uptrendline" + li_204, OBJPROP_TIME1)) - li_196 >= Normal_TL_Period) {
ObjectSet("uptrendline" + li_204, OBJPROP_COLOR, Long_TL_Color);
ObjectSetText("uptrendline" + li_204, "Long");
} else {
ObjectSet("uptrendline" + li_204, OBJPROP_COLOR, Normal_TL_Color);
ObjectSetText("uptrendline" + li_204, "Normal");
}
}
if (Three_Touch == TRUE && Bars > 1000) {
for (li_204 = 1; li_204 <= 30; li_204++) {
ld_100 = ObjectGet("downtrendline" + li_204, OBJPROP_TIME1);
ld_108 = iBarShift(NULL, 0, ld_100);
ld_84 = ld_44;
ld_116 = ld_108 - ld_84;
if (ld_116 < MathMin(Normal_TL_Period, 1000) && ld_116 > 6.0) {
ObjectCreate("downtrendline" + li_204 + "tt", OBJ_TREND, 0, iTime(NULL, 0, ld_108), iHigh(NULL, 0, ld_108), iTime(NULL, 0, lПоказано первые 50% кода (символов: 13199)
Открыть по тарифу
Купите тариф с пакетом открытий или войдите, если тариф уже есть. Открытый файл останется в вашем кабинете навсегда.
Разовая покупка файла
На этой странице откроется полный исходный код файла вместо ознакомительного фрагмента.
Зачем нужен email? После подтверждения оплаты файл сохранится в кабинете на этот email. Если аккаунта ещё нет, мы создадим его и пришлём ссылку для задания пароля. Если аккаунт уже есть, покупка добавится в него. Укажите адрес, к которому у вас есть доступ.
Чтобы оформить заказ, введите email и перейдите к оплате.