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

critical levels.mq4

Вы автор или правообладатель?

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

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

О программе

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

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

НастройкаОписание
NumDailyHLs Количество дневных уровней — Количество последних дневных максимумов и минимумов, используемых для построения уровней
ColorDailyHLs Цвет дневных уровней — Цвет линий дневных максимумов и минимумов
ColorWeeklyHLs Цвет недельных уровней — Цвет линий недельных максимумов и минимумов
ColorMonthlyHLs Цвет месячных уровней — Цвет линий месячных максимумов и минимумов
ColorDailyPivotStd Цвет дневного пивота стандартный — Цвет линий дневных точек пивота стандартного типа
ColorWeeklyPivotStd Цвет недельного пивота стандартный — Цвет линий недельных точек пивота стандартного типа
ColorMonthlyPivotStd Цвет месячного пивота стандартный — Цвет линий месячных точек пивота стандартного типа
ColorDailyPivotFibo Цвет дневного пивота Фибоначчи — Цвет линий дневных точек пивота по Фибоначчи
ColorWeeklyPivotFibo Цвет недельного пивота Фибоначчи — Цвет линий недельных точек пивота по Фибоначчи
ColorMonthlyPivotFibo Цвет месячного пивота Фибоначчи — Цвет линий месячных точек пивота по Фибоначчи
ColorRoundNumbers Цвет уровней круглых чисел — Цвет линий уровней круглых чисел вокруг текущей цены
LineLength Длина линии — Длина горизонтальных линий уровней в барах
RefreshPeriod Период обновления — Таймфрейм, по которому определяется момент автоматического обновления уровней на графике
Visibility Видимость — Список таймфреймов, на которых отображаются объекты индикатора через запятую
Получить полный код

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

#property indicator_chart_window

#include <hanover --- function header.mqh>

/*
extern int        NumDailyHLs            = 10;
extern color      ColorDailyHLs          = Gray;
extern color      ColorWeeklyHLs         = Silver;
extern color      ColorMonthlyHLs        = White;
extern string     ColorDailyPivotStd     = "DeepSkyBlue";
extern string     ColorWeeklyPivotStd    = "DodgerBlue";
extern string     ColorMonthlyPivotStd   = "RoyalBlue";
extern string     ColorDailyPivotFibo    = "Lime";
extern string     ColorWeeklyPivotFibo   = "Green";
extern string     ColorMonthlyPivotFibo  = "DarkGreen";
extern string     ColorRoundNumbers      = "Red";
*/
extern int        NumDailyHLs            = 10;
extern color      ColorDailyHLs          = Gray;
extern color      ColorWeeklyHLs         = Silver;
extern color      ColorMonthlyHLs        = White;
extern string     ColorDailyPivotStd     = "";
extern string     ColorWeeklyPivotStd    = "";
extern string     ColorMonthlyPivotStd   = "";
extern string     ColorDailyPivotFibo    = "DodgerBlue";
extern string     ColorWeeklyPivotFibo   = "";
extern string     ColorMonthlyPivotFibo  = "";
extern string     ColorRoundNumbers      = "Red";

extern int        LineLength             = 5;
extern string     RefreshPeriod          = "H1";
extern string     Visibility             = "M1,M5,M15,M30,H1,H4,D1,W1,MN";

string   ccy, sym, IndiName;
int      dig, tf, tmf, obj, vis, RefreshEveryXMins;
double   spr, pnt, tickval, bidp, askp, minlot, lswap, sswap;
datetime prev_time;
bool     FirstTime;

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

int deinit()  {

  del_obj();
  return(0);
}

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

void del_obj()  {

  int k=0;
  while (k<ObjectsTotal())   {
    string objname = ObjectName(k);
    if (StringSubstr(objname,0,StringLen(IndiName)) == IndiName)  
      ObjectDelete(objname);
    else
      k++;
  }    
  return(0);
}

void plot_line(double price, color clr, int width, int style, int start=0, bool label=false, string desc="")   {

  obj++;
  string objname = IndiName + NumberToStr(obj,"Z4");
  ObjectCreate(objname,OBJ_TREND,0,Time[0]+start*60*Period(),price,Time[0]+(start+LineLength)*60*Period(),price);  
  ObjectSet(objname,OBJPROP_COLOR,clr);
  ObjectSet(objname,OBJPROP_WIDTH,width);
  ObjectSet(objname,OBJPROP_STYLE,style);
  ObjectSet(objname,OBJPROP_RAY,false);
  ObjectSet(objname,OBJPROP_TIMEFRAMES,vis);
  ObjectSetText(objname,desc,8,"Arial",Red);
  if (label)   {
    obj++;
    objname = IndiName + NumberToStr(obj,"Z4");
    ObjectCreate(objname,OBJ_ARROW,0,Time[0]+(start+LineLength+1)*60*Period(),price);  
    ObjectSet(objname,OBJPROP_COLOR,clr);
    ObjectSet(objname,OBJPROP_WIDTH,1);
    ObjectSet(objname,OBJPROP_ARROWCODE,SYMBOL_RIGHTPRICE);
    ObjectSet(objname,OBJPROP_TIMEFRAMES,vis);
  }  
  return(0);
}

void plot_obj()   {

  double close;
  for (int i=1; i<=NumDailyHLs; i++)   {
    double high = iHigh(ccy,StrToTF("D1"),i);
    color col = ColorDailyHLs;
    string descr = "Daily high";
    int   bar = BarConvert(i,"D1","W1");
    if (high == iHigh(ccy,StrToTF("W1"),bar))  {
      col   = ColorWeeklyHLs;
      descr = "Weekly high";
    }  
    bar = BarConvert(i,"D1","MN");
    if (high == iHigh(ccy,StrToTF("MN"),bar))  {
      col   = ColorMonthlyHLs;
      descr = "Weekly high";
    }  
    plot_line(high,col,1,STYLE_SOLID,0,false,descr);

    double low  = iLow(ccy,StrToTF("D1"),i);
    col = ColorDailyHLs;
    descr = "Daily low";
    bar = BarConvert(i,"D1","W1");
    if (low == iLow(ccy,StrToTF("W1"),bar))  {
      col   = ColorWeeklyHLs;
      descr = "Weekly low";
    }
    bar = BarConvert(i,"D1","MN");
    if (low == iLow(ccy,StrToTF("MN"),bar))  {
      col = ColorMonthlyHLs;
      descr = "Monthly low";
    }  
    plot_line(low,col,1,STYLE_SOLID,0,false,descr);
  }  

  if (ColorDailyPivotStd > "")   {
    col   = StrToColor(ColorDailyPivotStd);
    high  = iHigh(ccy,StrToTF("D1"),1);  
    low   = iLow(ccy,StrToTF("D1"),1);  
    close = iClose(ccy,StrToTF("D1"),1); 
    double PP = (high+low+close)/3;
    double S1 = 2*PP-high;
    double S2 = PP-(high-low);
    double S3 = 2*PP-(2*high-low);
    double R1 = 2*PP-low;
    double R2 = PP+(high-low);
    double R3 = 2*PP+(high-2*low);
    plot_line(PP,col,2,STYLE_SOLID,0,false,"Daily Pivot (std)");
    plot_line(S1,col,1,STYLE_DOT,0,false,"Daily S1 (std)");
    plot_line(S2,col,1,STYLE_DOT,0,false,"Daily S2 (std)")

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

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

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

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

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

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

Стоимость полного кода
863,40₽ ≈ $10.55