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

autofibu button.mq5

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

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

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

О программе

AutoFibu Button — индикатор для MetaTrader 5, который автоматически рассчитывает уровни Фибоначчи и зоны торговли (покупки и продажи) на графике. Индикатор отображает фибоначчиевские уровни между ключевыми ценовыми точками, а также рисует зоны покупки и продажи с настраиваемыми цветами.

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

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

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

НастройкаОписание
Fib_Period Количество баров, используемых для определения ключевых ценовых точек расчёта уровней Фибоначчи.
Show_StartLine Переключатель отображения вертикальной линии старта на графике.
Show_EndLine Переключатель отображения вертикальной линии окончания на графике.
Show_Channel Переключатель отображения канала высоких и низких цен в виде двух линий.
Fib_Style Стиль отображения линий Фибоначчи.
Fib_Color Цоль линий и уровней Фибоначчи.
StartLine_Color Цвет вертикальной линии старта.
EndLine_Color Цвет вертикальной линии окончания.
BuyZone_Color Цвет прямоугольной зоны покупки на графике.
SellZone_Color Цвет прямоугольной зоны продажи на графике.
button_note1 Текстовый параметр-заметка для кнопки.
chart btn_corner for anchoring (btn_corner) Угол графика, в котором привязывается кнопка управления.
btn_text Текст, отображаемый на кнопке управления.
btn_Font Шрифт текста на кнопке управления.
btn__font size (btn_FontSize) Размер шрифта текста на кнопке управления.
btn_text_color Цвет текста на кнопке управления.
btn_background_color Цвет фона кнопки управления.
btn_border_color Цвет рамки кнопки управления.
btn__x (button_x) Координата X положения кнопки на графике в пикселях от угла привязки.
btn__y (button_y) Координата Y положения кнопки на графике в пикселях от угла привязки.
btn__width (btn_Width) Ширина кнопки управления в пикселях.
btn__height (btn_Height) Высота кнопки управления в пикселях.
button_note2 Текстовый параметр-заметка для кнопки.
Получить полный код

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

#property  indicator_chart_window
#property  indicator_buffers  2
#property  indicator_color1  clrMidnightBlue
#property  indicator_color2  clrFireBrick

extern int                Fib_Period            = 120; 
extern bool               Show_StartLine        = false;
extern bool               Show_EndLine          = false;
extern bool               Show_Channel          = false;
extern int                Fib_Style             = 5;
extern color              Fib_Color             = clrDarkGoldenrod;
extern color              StartLine_Color       = clrRoyalBlue; 
extern color              EndLine_Color         = clrFireBrick; 
extern color              BuyZone_Color         = clrMidnightBlue;
extern color              SellZone_Color        = clrFireBrick;

extern string             button_note1          = "------------------------------";
extern ENUM_BASE_CORNER   btn_corner            = CORNER_LEFT_UPPER; // chart btn_corner for anchoring
extern string             btn_text              = "Fibo";
extern string             btn_Font              = "Arial";
extern int                btn_FontSize          = 10;                             //btn__font size
extern color              btn_text_color        = clrWhite;
extern color              btn_background_color  = clrDimGray;
extern color              btn_border_color      = clrBlack;
extern int                button_x              = 20;                                     //btn__x
extern int                button_y              = 13;                                     //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 WWBuffer1[];
double WWBuffer2[];

double level_array[10]={0,0.236,0.382,0.5,0.618,0.764,1,1.618,2.618,4.236};
string leveldesc_array[13]={"0","23.6%","38.2%","50%","61.8%","76.4%","100%","161.8%","261.80%","423.6%"};
int level_count;
string level_name;
string StartLine = "Start Line";
string EndLine = "End Line";

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);

   IndicatorBuffers(2);
   if (Show_Channel)
   {
     SetIndexStyle(0,DRAW_LINE,1);
     SetIndexStyle(1,DRAW_LINE,1);

     SetIndexLabel(0, "High");
     SetIndexLabel(1, "Low");

     SetIndexBuffer(0, WWBuffer1);
     SetIndexBuffer(1, WWBuffer2);
   }
   IndicatorDigits(Digits+2);

   IndicatorShortName("AutoFib TradeZones");

   ObjectCreate("FibLevels", OBJ_FIBO, 0, Time[0],High[0],Time[0],Low[0]);
   ObjectCreate("BuyZone",   OBJ_RECTANGLE, 0,0,0,0);
   ObjectCreate("SellZone",  OBJ_RECTANGLE, 0,0,0,0);

   if (Show_StartLine)
        {if (ObjectFind(StartLine)==-1)
           {
            ObjectCreate(StartLine,OBJ_VLINE,0,Time[Fib_Period],Close[0]);
            ObjectSet   (StartLine,OBJPROP_COLOR,StartLine_Color);
           }
        } 
    if (Show_EndLine)
        {if (ObjectFind(EndLine)==-1)
           {
            ObjectCreate(EndLine,OBJ_VLINE,0,Time[0],Close[0]);
            ObjectSet(EndLine,OBJPROP_COLOR,EndLine_Color);
           }
        } 
   } //void Init

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

      ObjectDelete("FibLevels");
      ObjectDelete("BuyZone");
      ObjectDelete("SellZone");
   }

   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);
      ObjectSetString (0,buttonID,OBJPROP_TEXT,buttonText);
      ObjectSetInteger(0,buttonID,OBJPROP_FONTSIZE,fontSize);
      ObjectSetInteger(0,buttonID,OBJPROP_SELECTABLE,0);
      ObjectSetInteger(0,buttonID,OBJPROP_CORNER,btn_corner);
      ObjectSetInteger(0,buttonID,OBJPROP_HIDDEN,1);
   }
};
VisibilityCotroller visibility;

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

int deinit()  
  {
   visibility.DeInit();
    ObjectsDeleteAll(ChartID(), IndicatorObjPrefix);

           ObjectDelete("FibLevels");
           ObjectDelete("BuyZone");
           ObjectDelete("SellZone");

   return(0);
  }

void OnChartEvent(const int id, //don't change anything here
                  const long &lparam,
                  const double &dparam,
                  const string &sparam)

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

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

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

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

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

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

Стоимость полного кода
991,50₽ ≈ $12.12