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

###auto pivot2 button 1.03 aw1.mq5

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

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

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

О программе

Индикатор для MetaTrader 5, отображающий на графике уровни пивот (Pivot) по дневному, недельному и месячному таймфреймам. Расчёт уровней выполняется по данным предыдущего завершённого периода соответствующего таймфрейма. Индикатор строит центральную линию пивот и, при включении соответствующей опции, дополнительные уровни поддержки и сопротивления.

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

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

Линии уровней могут быть смещены вправо относительно текущего бара на заданное количество периодов, что позволяет продлить их отображение в будущее. Стиль линий задаётся отдельным параметром.

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

НастройкаОписание
Use_Sunday_Data Определяет, учитываются ли данные воскресного бара при расчёте дневных уровней пивот.
Daily Включает отображение дневных уровней пивот на графике.
Daily_SR_Levels Включает отображение уровней поддержки и сопротивления для дневного таймфрейма.
Weekly Включает отображение недельных уровней пивот на графике.
Weekly_SR_Levels Включает отображение уровней поддержки и сопротивления для недельного таймфрейма.
Monthly Включает отображение месячных уровней пивот на графике.
Monthly_SR_Levels Включает отображение уровней поддержки и сопротивления для месячного таймфрейма.
Labels_Adjust Смещение подписей уровней по горизонтали относительно текущего бара, выраженное в периодах.
Lines_Move_to_Right Включает смещение линий уровней вправо от текущего бара вместо привязки к началу дня.
Lines_Shift Количество периодов, на которое линии уровней смещаются вправо при включённой опции смещения.
note1 Текстовая метка-разделитель в списке настроек, обозначающая начало группы параметров отображения.
LineFont Название шрифта для подписей уровней на графике.
FontSize Размер шрифта для подписей уровней на графике.
myLineStyle Стиль отрисовки линий уровней (например, пунктирная, сплошная).
DailyLineColors Текстовая метка-разделитель в списке настроек, обозначающая начало группы цветов для дневных линий.
color_DayPivotLine Цвет центральной линии пивот для дневного таймфрейма.
color_DR1_Line Цвет линии первого уровня сопротивления для дневного таймфрейма.
color_DR2_Line Цвет линии второго уровня сопротивления для дневного таймфрейма.
color_DR3_Line Цвет линии третьего уровня сопротивления для дневного таймфрейма.
color_DS1_Line Цвет линии первого уровня поддержки для дневного таймфрейма.
color_DS2_Line Цвет линии второго уровня поддержки для дневного таймфрейма.
color_DS3_Line Цвет линии третьего уровня поддержки для дневного таймфрейма.
WeeklyLineColors Текстовая метка-разделитель в списке настроек, обозначающая начало группы цветов для недельных линий.
color_WeekPivotLine Цвет центральной линии пивот для недельного таймфрейма.
color_WR1_Line Цвет линии первого уровня сопротивления для недельного таймфрейма.
color_WR2_Line Цвет линии второго уровня сопротивления для недельного таймфрейма.
color_WR3_Line Цвет линии третьего уровня сопротивления для недельного таймфрейма.
color_WS1_Line Цвет линии первого уровня поддержки для недельного таймфрейма.
color_WS2_Line Цвет линии второго уровня поддержки для недельного таймфрейма.
color_WS3_Line Цвет линии третьего уровня поддержки для недельного таймфрейма.
MonthlyLineColors Текстовая метка-разделитель в списке настроек, обозначающая начало группы цветов для месячных линий.
color_MonthPivotLine Цвет центральной линии пивот для месячного таймфрейма.
color_MR1_Line Цвет линии первого уровня сопротивления для месячного таймфрейма.
color_MR2_Line Цвет линии второго уровня сопротивления для месячного таймфрейма.
color_MR3_Line Цвет линии третьего уровня сопротивления для месячного таймфрейма.
color_MS1_Line Цвет линии первого уровня поддержки для месячного таймфрейма.
color_MS2_Line Цвет линии второго уровня поддержки для месячного таймфрейма.
color_MS3_Line Цвет линии третьего уровня поддержки для месячного таймфрейма.
button_note1 Текстовая метка-разделитель в списке настроек, обозначающая начало группы параметров кнопки.
btn_corner Угол графика, к которому привязана кнопка управления видимостью.
btn_text Текст, отображаемый на кнопке управления видимостью.
btn_Font Название шрифта для текста на кнопке управления видимостью.
btn_FontSize Размер шрифта для текста на кнопке управления видимостью.
btn_text_color Цвет текста на кнопке управления видимостью.
btn_background_color Цвет фона кнопки управления видимостью.
btn_border_color Цвет рамки кнопки управления видимостью.
button_x Горизонтальное смещение кнопки управления видимостью от выбранного угла графика.
button_y Вертикальное смещение кнопки управления видимостью от выбранного угла графика.
btn_Width Ширина кнопки управления видимостью в пикселях.
btn_Height Высота кнопки управления видимостью в пикселях.
button_note2 Текстовая метка-разделитель в списке настроек, обозначающая конец группы параметров кнопки.
Получить полный код

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

#property indicator_chart_window

   extern bool             Use_Sunday_Data      = true;
   extern bool             Daily                = false;
   extern bool             Daily_SR_Levels      = false;
   extern bool             Weekly               = true;
   extern bool             Weekly_SR_Levels     = true;
   extern bool             Monthly              = true;
   extern bool             Monthly_SR_Levels    = true;
   extern int              Labels_Adjust        = 20;
   extern bool             Lines_Move_to_Right  = true;
   extern int              Lines_Shift          = 18;
extern string              note1                = "------------------------------";
extern string              LineFont             = "Arial Black";
extern int                 FontSize             = 10;
extern ENUM_LINE_STYLE     myLineStyle          = STYLE_DOT;

extern string              DailyLineColors      = "---Daily Colors-------------";
extern color               color_DayPivotLine          = clrGray;
extern color               color_DR1_Line              = clrGreen;
extern color               color_DR2_Line              = clrGreen;
extern color               color_DR3_Line              = clrGreen;
extern color               color_DS1_Line              = clrGreen;
extern color               color_DS2_Line              = clrGreen;
extern color               color_DS3_Line              = clrGreen;

extern string              WeeklyLineColors     = "---Weekly Colors-------------";
extern color               color_WeekPivotLine        = clrMagenta;  //clrAqua;
extern color               color_WR1_Line             = clrHotPink;  //clrDarkOrange;
extern color               color_WR2_Line             = clrHotPink;  //clrDarkOrange;
extern color               color_WR3_Line             = clrHotPink;  //clrDarkOrange;
extern color               color_WS1_Line             = clrHotPink;  //clrSteelBlue;
extern color               color_WS2_Line             = clrHotPink;  //clrSteelBlue;
extern color               color_WS3_Line             = clrHotPink;  //clrSteelBlue;

extern string              MonthlyLineColors    = "---Monthly Colors-------------";
extern color               color_MonthPivotLine       = clrDeepSkyBlue;  //clrAqua;
extern color               color_MR1_Line             = clrBlue;
extern color               color_MR2_Line             = clrBlue;
extern color               color_MR3_Line             = clrBlue;
extern color               color_MS1_Line             = clrBlue; //clrSilver;
extern color               color_MS2_Line             = clrBlue; //clrSilver;
extern color               color_MS3_Line             = clrBlue; //clrSilver;

extern string             button_note1          = "------------------------------";
extern ENUM_BASE_CORNER   btn_corner            = CORNER_RIGHT_LOWER; // chart btn_corner for anchoring
extern string             btn_text              = "Pivot";
extern string             btn_Font              = "Arial";
extern int                btn_FontSize          = 10;                             //btn__font size
extern color              btn_text_color        = clrGold;
extern color              btn_background_color  = clrDarkBlue;
extern color              btn_border_color      = clrBlue;
extern int                button_x              = 68;                                     //btn__x
extern int                button_y              = 30;                                     //btn__y
extern int                btn_Width             = 60;                                 //btn__width
extern int                btn_Height            = 20;                                //btn__height
extern string             button_note2          = "------------------------------";
bool                      show_data             = true;
string IndicatorName, IndicatorObjPrefix;
int WorkTime=0,Periods=0;

   double YesterdayHigh;
   double YesterdayLow;
   double YesterdayClose;
   double Day_Price[][6];
   double Pivot,S1,S2,S3,R1,R2,R3;

   double WeekHigh;
   double WeekLow;
   double WeekClose;
   double Weekly_Price[][6];
   double WeekPivot,WS1,WS2,WS3,WR1,WR2,WR3;

   double MonthHigh;
   double MonthLow;
   double MonthClose;
   double Month_Price[][6];
   double MonthPivot,MS1,MS2,MS3,MR1,MR2,MR3;

   datetime endTime=0, startTime=0;
   bool     PlotFactor=false;
   bool Daily2, Daily_SR_Levels2, Weekly2, Weekly_SR_Levels2, Monthly2, Monthly_SR_Levels2;

string GenerateIndicatorName(const string target) //don't change anything here
{
   string name = target;
   int try = 2;
   while (WindowFind(name) != -1)
   {
      name = target + " #" + IntegerToString(try++);
   }
   return name;
}

class VisibilityCotroller //don't change anything here
{
   string buttonId, visibilityId;
   bool show_data, recalc;
public:
   void Init(string id, string indicatorName, string caption, int x, int y) //don't change anything here
   {
      recalc = false;
      visibilityId = indicatorName + "_visibility";
      double val;
      if (GlobalVariableGet(visibilityId, val))
         show_data = val != 0;

      buttonId = id;
      ChartSetInteger(0, CHART_EVENT_MOUSE_MOVE, 1);
      createButton(buttonId, caption, btn_Width, btn_Height, btn_Font, btn_FontSize, btn_background_color, btn_border_color, btn_text_color);
      ObjectSetInteger(0,buttonId,OBJPROP_YDISTANCE, button_y);
      ObjectSetInteger(0,buttonId,OBJPROP_XDISTANCE, button_x);

   }

   void DeInit()
   {
      ObjectDelete(ChartID(), buttonId);

        DeleteObjectsByString("Line",0);
        DeleteObjectsByString("Label",0);
   }

   bool HandleButtonClicks() //don't change anything here
   {
      if (ObjectGetInteger(0, buttonId, OBJPROP_STATE))
      {
         ObjectSetInteger(0, buttonId, OBJPROP_STATE, false);
         show_data = !show_data;
         GlobalVariableSet(visibilityId, show_data ? 1.0 : 0.0);
         recalc = true;
         return true;
      }
      return false;
   }

   bool IsRecalcNeeded() //don't change anything here
   {
      return recalc;
   }

   void ResetRecalc() //don't change anything here
   {
      recalc = false;
   }

   bool IsVisible() //don't change anything here
   {
      return show_data;
   }

private: //don't change anything here much
   void createButton(string buttonID,string buttonText,int width,int height,string font,int fontSize,color bgColor,color borderColor,color txtColor)
   {
      ObjectDelete    (0,buttonID);
      ObjectCreate    (0,buttonID,OBJ_BUTTON,0,0,0);
      ObjectSetInteger(0,buttonID,OBJPROP_COLOR,txtColor);
      ObjectSetInteger(0,buttonID,OBJPROP_BGCOLOR,bgColor);
      ObjectSetInteger(0,buttonID,OBJPROP_BORDER_COLOR,borderColor);
      ObjectSetInteger(0,buttonID,OBJPROP_BORDER_TYPE,BORDER_RAISED);
      ObjectSetInteger(0,buttonID,OBJPROP_XSIZE,width);
      ObjectSetInteger(0,buttonID,OBJPROP_YSIZE,height);
      ObjectSetString (0,buttonID,OBJPROP_FONT,font);
     

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

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

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

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

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

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

Стоимость полного кода
1 019,20₽ ≈ $12.46