← К каталогу
Исходный код · ID 2997

3 Line Break On Chart +levels

support and resistance tlb oc v02.mq5
Вы автор или правообладатель?

Сообщите нам, если считаете, что материал размещён без разрешения.

Краткий обзор

О программе

Индикатор для платформы MetaTrader 4, отображающий на графике цены горизонтальные уровни поддержки и сопротивления. Уровни рассчитываются по методу трёхлинейного разрыва и отрисовываются в виде линий разного стиля и цвета.

Поддерживается отображение уровней на множестве таймфреймов — от минутного M1 до месячного MN1. Каждый таймфрейм можно включить или выключить индивидуально через соответствующие настройки.

Индикатор автоматически обновляет уровни при смене бара и удаляет устаревшие объекты при деинициализации. Расчёт ограничивается параметром максимального количества баров для каждого периода.

Настройки программы

НастройкаОписание
LB Количество линий разрыва — Параметр, задающий количество линий, используемых при расчёте уровней разрыва.
maxBarsForPeriod Максимум баров для периода — Максимальное количество баров, используемое для расчёта уровней на каждом таймфрейме.
showM01 Показывать уровни M1 — Включает или отключает отображение уровней на таймфрейме M1 (1 минута).
showM05 Показывать уровни M5 — Включает или отключает отображение уровней на таймфрейме M5 (5 минут).
showM15 Показывать уровни M15 — Включает или отключает отображение уровней на таймфрейме M15 (15 минут).
showM30 Показывать уровни M30 — Включает или отключает отображение уровней на таймфрейме M30 (30 минут).
showH01 Показывать уровни H1 — Включает или отключает отображение уровней на таймфрейме H1 (1 час).
showH04 Показывать уровни H4 — Включает или отключает отображение уровней на таймфрейме H4 (4 часа).
showD01 Показывать уровни D1 — Включает или отключает отображение уровней на таймфрейме D1 (дневной).
showW01 Показывать уровни W1 — Включает или отключает отображение уровней на таймфрейме W1 (недельный).
showMN1 Показывать уровни MN1 — Включает или отключает отображение уровней на таймфрейме MN1 (месячный).
Получить полный код

Поиск по коду файла

#property indicator_chart_window
#property indicator_buffers 1
#property indicator_color1 Black

extern int LB = 3;
extern int maxBarsForPeriod = 1000;
extern bool showM01 = TRUE;
extern bool showM05 = TRUE;
extern bool showM15 = TRUE;
extern bool showM30 = TRUE;
extern bool showH01 = TRUE;
extern bool showH04 = TRUE;
extern bool showD01 = TRUE;
extern bool showW01 = TRUE;
extern bool showMN1 = TRUE;
int gi_120 = 0;
int gi_124 = 0;
int gi_128 = 0;
int gi_132 = 0;
int gi_136 = 0;
int gi_140 = 0;
int gi_144 = 0;
int gi_148 = 0;
int gi_152 = 0;
int gi_156 = 0;
int gi_160 = 0;
int gi_164 = 0;
int gi_168 = 0;
int gi_172 = 0;
int gi_176 = 0;
int gi_180 = 0;
int gi_184 = 0;
int gi_188 = 0;
double gda_192[];
double gda_196[];
double gda_200[];
double gda_204[];
double gda_208[];
double gda_212[];
double gda_216[];
double gda_220[];
double gda_224[];
double gda_228[];
double gda_232[];
double gda_236[];
double gda_240[];
double gda_244[];
double gda_248[];
double gda_252[];
double gda_256[];
double gda_260[];

int init() {
      // код доступен только после оплаты
   }

int deinit() {
   DeleteHLineObject(StringConcatenate(getPeriodAsString(1), " Sup"));
   DeleteHLineObject(StringConcatenate(getPeriodAsString(1), " Res"));
   DeleteHLineObject(StringConcatenate(getPeriodAsString(1), " Sup C"));
   DeleteHLineObject(StringConcatenate(getPeriodAsString(1), " Res C"));
   DeleteHLineObject(StringConcatenate(getPeriodAsString(5), " Sup"));
   DeleteHLineObject(StringConcatenate(getPeriodAsString(5), " Res"));
   DeleteHLineObject(StringConcatenate(getPeriodAsString(5), " Sup C"));
   DeleteHLineObject(StringConcatenate(getPeriodAsString(5), " Res C"));
   DeleteHLineObject(StringConcatenate(getPeriodAsString(15), " Sup"));
   DeleteHLineObject(StringConcatenate(getPeriodAsString(15), " Res"));
   DeleteHLineObject(StringConcatenate(getPeriodAsString(15), " Sup C"));
   DeleteHLineObject(StringConcatenate(getPeriodAsString(15), " Res C"));
   DeleteHLineObject(StringConcatenate(getPeriodAsString(30), " Sup"));
   DeleteHLineObject(StringConcatenate(getPeriodAsString(30), " Res"));
   DeleteHLineObject(StringConcatenate(getPeriodAsString(30), " Sup C"));
   DeleteHLineObject(StringConcatenate(getPeriodAsString(30), " Res C"));
   DeleteHLineObject(StringConcatenate(getPeriodAsString(60), " Sup"));
   DeleteHLineObject(StringConcatenate(getPeriodAsString(60), " Res"));
   DeleteHLineObject(StringConcatenate(getPeriodAsString(60), " Sup C"));
   DeleteHLineObject(StringConcatenate(getPeriodAsString(60), " Res C"));
   DeleteHLineObject(StringConcatenate(getPeriodAsString(240), " Sup"));
   DeleteHLineObject(StringConcatenate(getPeriodAsString(240), " Res"));
   DeleteHLineObject(StringConcatenate(getPeriodAsString(240), " Sup C"));
   DeleteHLineObject(StringConcatenate(getPeriodAsString(240), " Res C"));
   DeleteHLineObject(StringConcatenate(getPeriodAsString(1440), " Sup"));
   DeleteHLineObject(StringConcatenate(getPeriodAsString(1440), " Res"));
   DeleteHLineObject(StringConcatenate(getPeriodAsString(1440), " Sup C"));
   DeleteHLineObject(StringConcatenate(getPeriodAsString(1440), " Res C"));
   DeleteHLineObject(StringConcatenate(getPeriodAsString(10080), " Sup"));
   DeleteHLineObject(StringConcatenate(getPeriodAsString(10080), " Res"));
   DeleteHLineObject(StringConcatenate(getPeriodAsString(10080), " Sup C"));
   DeleteHLineObject(StringConcatenate(getPeriodAsString(10080), " Res C"));
   DeleteHLineObject(StringConcatenate(getPeriodAsString(43200), " Sup"));
   DeleteHLineObject(StringConcatenate(getPeriodAsString(43200), " Res"));
   DeleteHLineObject(StringConcatenate(getPeriodAsString(43200), " Sup C"));
   DeleteHLineObject(StringConcatenate(getPeriodAsString(43200), " Res C"));
   return (0);
}

double Diap(int ai_0, bool ai_4, int ai_8, int ai_12) {
   double ld_ret_20;
   if (ai_4) {
      ld_ret_20 = get_max(ai_0, ai_12);
      for (int li_16 = 1; li_16 < ai_8; li_16++)
         if (get_max(ai_0, ai_12 - li_16) > ld_ret_20) ld_ret_20 = get_max(ai_0, ai_12 - li_16);
   }
   if (!ai_4) {
      ld_ret_20 = get_min(ai_0, ai_12);
      for (li_16 = 1; li_16 < ai_8; li_16++)
         if (get_min(ai_0, ai_12 - li_16) < ld_ret_20) ld_ret_20 = get_min(ai_0, ai_12 - li_16);
   }
   return (ld_ret_20);
}

void EmulateDoubleBuffer(double ada_0[], int ai_4) {
   if (ArraySize(ada_0) < ai_4) {
      ArraySetAsSeries(ada_0, FALSE);
      ArrayResize(ada_0, ai_4);
      ArraySetAsSeries(ada_0, TRUE);
   }
}

void DeleteHLineObject(string a_name_0) {
   ObjectDelete(a_name_0);
   ObjectDelete(a_name_0 + "_Label");
}

void ShowHLineObject(string a_name_0, int ai_8, int a_style_12, double ad_16, int ai_24) {
   if (ObjectFind(a_name_0) != 0) CreateHLineObject(a_name_0, ai_8, a_style_12, ad_16, ai_24);
   ObjectSet(a_name_0 + "_Label", OBJPROP_PRICE1, ad_16);
   ObjectSet(a_name_0 + "_Label", OBJPROP_TIME1, Time[0] + Period() * ai_24);
   ObjectSet(a_name_0 + "_Label", OBJPROP_STYLE, a_style_12);
   ObjectSet(a_name_0, OBJPROP_PRICE1, ad_16);
}

void CreateHLineObject(string a_text_0, color a_color_8, int a_style_12, double a_price_16, int ai_24) {
   ObjectCreate(a_text_0 + "_Label", OBJ_TEXT, 0, Time[0] + Period() * ai_24, a_price_16);
   ObjectSetText(a_text_0 + "_Label", a_text_0, 7, "Verdana", a_color_8);
   ObjectCreate(a_text_0, OBJ_HLINE, 0, Time[0], a_price_16);
   ObjectSet(a_text_0, OBJPROP_STYLE, a_style_12);
   ObjectSet(a_text_0, OBJPROP_COLOR, a_color_8);
   ObjectSet(a_text_0, OBJPROP_WIDTH, 1);
}

string getPeriodAsString(int ai_0) {
   string ls_ret_4 = 0;
   switch (ai_0) {
   case 1:
      ls_ret_4 = "M1";
      break;
   case 5:
      ls_ret_4 = "M5";
      break;
   case 15:
      ls_ret_4 = "M15";
      break;
   case 30:
      ls_ret_4 = "M30";
      break;
   case 60:
      ls_ret_4 = "H1";
      break;
   case 240:
      ls_ret_4 = "H4";
      break;
   case 1440:
      ls_ret_4 = "D1";
      break;
   case 10080:
      ls_ret_4 = "W1";
      break;
   case 43200:
      ls_ret_4 = "MN1";
   }
   return (ls_ret_4);
}

void set_prevBarTime(int ai_0, int ai_4) {
   switch (ai_0) {
   case 1:
      gi_120 = ai_4;
      return;
   case 5:
      gi_124 = ai_4;
      return;
   case 15:
      gi_128 = ai_4;
      return;
   case 30:
      gi_132 = ai_4;
      return;
   case 60:
      gi_136 = ai_4;
      return;
   case 240:
      gi_140 = ai_4;
      return;
   case 1440:
      gi_144 = ai_4;
      return;
   case 10080:
      gi_148 = ai_4;
      return;
   case 43200:
      gi_152 = ai_4;
      return;
      return;
   }
}

int get_prevBarTime(int ai_0) {
   switch (ai_0) {
   case 1:
      return (gi_120);
      break;
   case 5:
      return (gi_124);
      break;
   case 15:
      return (gi_128);
      break;
   case 30:
      return (gi_132);
      break;
   case 60:
      return (gi_136);
      break;
   case 240:
      return (gi_140);
      break;
   case 1440:
      return (gi_144);
      break;
   case 10080:
      return (gi_148);
      break;
   case 43200:
      return (gi_152);
   }
   return (0);
}

void set_prevBarCount(int ai_0, int ai_4) {
   switch (ai_0) {
   case 1:
      gi_156 = ai_4;
      return;
   case 5:
      gi_160 = ai_4;
      return;
   case 15:
      gi_164 = ai_4;
      return;
   case 30:
      gi_168 = ai_4;
      return;
   case 60:
      gi_172 = ai_4;
      return;
   case 240:
      gi_176 = ai_4;
      return;
   case 1440:
      gi_180 = ai_4;
      return;
   case 10080:
      gi_184 = ai_4;
      return;
   case 43200:
      gi_188 = ai_4;
      return;
      return;
   }
}

int get_prevBarCount(int ai_0) {
   switch (ai_0) {
   case 1:
      return (gi_156);
      break;
   case 5:
      return (gi_160);
      break;
   case 15:
      return (gi_164);
      break;
   case 30:
      return (gi_168);
      break;
   case 60:
      return (gi_172);
      break;
   case 240:
      return (gi_176);
      break;
   case 1440:
      return (gi_180);
      break;
   case 10080:
      return (gi_184);
      break;
   case 43200:
      return (gi_188);
   }
   return (0);
}

void set_max(int ai_0, int ai_4, double ad_8) {
   switch (ai_0) {
   case 1:
      gda_192[ai_4] = ad_8;
      return;
   case 5:
      gda_196[ai_4] = ad_8;
      return;
   case 15:
      gda_200[ai_4] = ad_8;
      return;
   case 30:
      gda_204[ai_4] = ad_8;
      return;
   case 60:
      gda_208[ai_4] = ad_8;
      return;
   case 240:
      gda_212[ai_4] = ad_8;
      return;
   case 1440:
      gda_216[ai_4] = ad_8;
      return;
   case 10080:
      gda_220[ai_4] = ad_8;
      return;
   case 43200:
      gda

Показано первые 50% кода (символов: 13414)

Открыть по тарифу

Купите тариф с пакетом открытий или войдите, если тариф уже есть. Открытый файл останется в вашем кабинете навсегда.

Разовая покупка файла

На этой странице откроется полный исходный код файла вместо ознакомительного фрагмента.

Чтобы оформить заказ, введите email и перейдите к оплате.

Стоимость полного кода
1 341,40₽ ≈ $16.40