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

#spudfibo weekly button 1.01.mq5

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

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

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

О программе

Индикатор отрисовывает на графике недельные уровни Фибоначчи на основе данных таймфрейма PERIOD_W1. Рассчитываются недельные максимум и минимум, на основе которых строятся три объекта Фибоначчи: верхний, нижний и внутренний диапазон. Уровни окрашиваются в настраиваемые цвета.

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

Внутренние уровни Фибоначчи могут быть включены или отключены отдельным переключателем. При отключении соответствующий объект удаляется с графика. При смене таймфрейма или даты пересчитываются все уровни.

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

НастройкаОписание
note1 Текстовая заметка, описывающая группу настроек цветов Фибоначчи.
UpperFiboColor Цвет линий верхних уровней Фибоначчи, построенных от недельного максимума вверх.
MainFiboColor Цвет линий внутренних уровней Фибоначчи в недельном диапазоне между минимумом и максимумом.
LowerFiboColor Цвет линий нижних уровней Фибоначчи, построенных от недельного минимума вниз.
note2 Текстовая заметка, описывающая группу настроек отрисовки уровней.
InnerFibs Переключатель отрисовки внутренних уровней Фибоначчи в недельном диапазоне. При значении true отображается объект FiboInW с основными уровнями, при false — объект удаляется с графика.
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

#define PERIOD_Y 999999
extern string note1           = "Weekly Fibonacci colors";
extern color  UpperFiboColor  = clrMaroon;
extern color  MainFiboColor   = clrBrown;
extern color  LowerFiboColor  = clrSienna;
extern string note2           = "Draw main Fibonacci lines?";
extern bool   InnerFibs       = true;

extern string             button_note1          = "------------------------------";
extern ENUM_BASE_CORNER   btn_corner            = CORNER_LEFT_UPPER; // chart btn_corner for anchoring
extern string             btn_text              = "FiboW";
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              = 33;                                     //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 HiPrice, LoPrice, Range;
datetime StartTime;

string GenerateIndicatorName(const string target)
{
   string name = target;
   int try = 2;
   while (WindowFind(name) != -1)
   {
      name = target + " #" + IntegerToString(try++);
   }
   return name;
}

class VisibilityCotroller
{
   string buttonId;
   string visibilityId;
   bool show_data;
   bool recalc;
public:
   void Init(string id, string indicatorName, string caption, int x, int y)
   {
      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);
      ObjectDelete("FiboUpW");
      ObjectDelete("FiboDownW");
      ObjectDelete("FiboInW");
   }

   bool HandleButtonClicks()
   {
      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()
   {
      return recalc;
   }

   void ResetRecalc()
   {
      recalc = false;
   }

   bool IsVisible()
   {
      return show_data;
   }

private:
   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();
    ObjectDelete("FiboUpW");
    ObjectDelete("FiboDownW");
    ObjectDelete("FiboInW");
    ObjectsDeleteAll(ChartID(), IndicatorObjPrefix);
   return(0);
  }

void OnChartEvent(const int id,
                  const long &lparam,
                  const double &dparam,
                  const string &sparam)
{
   if (visibility.HandleButtonClicks())
      start();
}

int DrawFibo()
{
	if(ObjectFind("FiboUpW") == -1)
		ObjectCreate("FiboUpW",OBJ_FIBO,0,StartTime,HiPrice+Range,StartTime,HiPrice);
	else
	{
		ObjectSet("FiboUpW",OBJPROP_TIME2, StartTime);
		ObjectSet("FiboUpW",OBJPROP_TIME1, StartTime);
		ObjectSet("FiboUpW",OBJPROP_PRICE1,HiPrice+Range);
		ObjectSet("FiboUpW",OBJPROP_PRICE2,HiPrice);
	}
   ObjectSet("FiboUpW",OBJPROP_LEVELCOLOR,UpperFiboColor);
   ObjectSet("FiboUpW",OBJPROP_FIBOLEVELS,13);
   ObjectSet("FiboUpW",OBJPROP_FIRSTLEVEL+0,0.0);	   ObjectSetFiboDescription("FiboUpW",0,"(100.0%) -  %$"); 
   ObjectSet("FiboUpW",OBJPROP_FIRSTLEVEL+1,0.236);	ObjectSetFiboDescription("FiboUpW",1,"(123.6%) -  %$"); 
   ObjectSet("FiboUpW",OBJPROP_FIRSTLEVEL+2,0.382);	ObjectSetFiboDescription("FiboUpW",2,"(138.2%) -  %$"); 
   ObjectSet("FiboUpW",OBJPROP_FIRSTLEVEL+3,0.500);	ObjectSetFiboDescription("FiboUpW",3,"(150.0%) -  %$"); 
   ObjectSet("FiboUpW",OBJPROP_FIRSTLEVEL+4,0.618);	ObjectSetFiboDescription("FiboUpW",4,"(161.8%) -  %$"); 
   ObjectSet("FiboUpW",OBJPROP_FIRSTLEVEL+5,0.764);	ObjectSetFiboDescription("FiboUpW",5,"(176.4%) -  %$"); 
   ObjectSet("FiboUpW",OBJPROP_FIRSTLEVEL+6,1.000);	ObjectSetFiboDescription("FiboUpW",6,"(200.0%) -  %$"); 
   ObjectSet("FiboUpW",OBJ

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

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

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

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

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

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

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