#spudfibo button 1.01
Сообщите нам, если считаете, что материал размещён без разрешения.
Сообщить о материале
Обращение по товару «#spudfibo button 1.01.mq5» отправится на рассмотрение. Укажите контакт для ответа и опишите причину.
О программе
Индикатор отображает уровни Фибоначчи на графике MetaTrader 5, используя максимум и минимум предыдущего торгового дня в качестве опорных точек. На графике создаются три объекта Фибоначчи: верхний (FiboUp), нижний (FiboDn) и внутренний дневной (FiboIn). Внутренние линии Фибоначчи можно включать и выключать отдельной настройкой.
Для управления видимостью всех линий Фибоначчи на графике размещается настраиваемая кнопка. При нажатии на кнопку состояние видимости переключается, а текущий режим сохраняется в глобальной переменной терминала. Индикатор перерисовывает уровни при появлении нового дневного бара или при смене таймфрейма.
Обработка нажатий на кнопку осуществляется через событие OnChartEvent, которое вызывает пересчёт и отрисовку объектов. Цвета каждой группы линий Фибоначчи настраиваются независимо. Параметры кнопки — положение, размер, шрифт и цвета — полностью настраиваются пользователем.
Настройки программы
| Настройка | Описание |
|---|---|
| note1 | Текстовый разделитель в блоке настроек цветов Фибоначчи. |
| UpperFiboColor | Цвет линий верхнего объекта Фибоначчи (FiboUp). |
| MainFiboColor | Цвет линий внутреннего объекта Фибоначчи (FiboIn). |
| LowerFiboColor | Цвет линий нижнего объекта Фибоначчи (FiboDn). |
| note2 | Текстовый разделитель в блоке настроек линий Фибоначчи. |
| InnerFibs | Включает или отключает отображение внутренних линий Фибоначчи (FiboIn) на графике. |
| 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 string note1 = "Fibonacci colors";
extern color UpperFiboColor = clrNavy;
extern color MainFiboColor = clrRoyalBlue;
extern color LowerFiboColor = clrDodgerBlue;
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 = "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 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("FiboUp");
ObjectDelete("FiboDn");
ObjectDelete("FiboIn");
}
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();
ObjectsDeleteAll(ChartID(), IndicatorObjPrefix);
ObjectDelete("FiboUp");
ObjectDelete("FiboDn");
ObjectDelete("FiboIn");
return(0);
}
void OnChartEvent(const int id,
const long &lparam,
const double &dparam,
const string &sparam)
{
if (visibility.HandleButtonClicks())
start();
}
int DrawFibo()
{
if(ObjectFind("FiboUp") == -1)
ObjectCreate("FiboUp",OBJ_FIBO,0,StartTime,HiPrice+Range,StartTime,HiPrice);
else
{
ObjectSet("FiboUp",OBJPROP_TIME2, StartTime);
ObjectSet("FiboUp",OBJPROP_TIME1, StartTime);
ObjectSet("FiboUp",OBJPROP_PRICE1,HiPrice+Range);
ObjectSet("FiboUp",OBJPROP_PRICE2,HiPrice);
}
ObjectSet("FiboUp",OBJPROP_LEVELCOLOR,UpperFiboColor);
ObjectSet("FiboUp",OBJPROP_FIBOLEVELS,13);
ObjectSet("FiboUp",OBJPROP_FIRSTLEVEL+0,0.0); ObjectSetFiboDescription("FiboUp",0,"(100.0%) - %$");
ObjectSet("FiboUp",OBJPROP_FIRSTLEVEL+1,0.236); ObjectSetFiboDescription("FiboUp",1,"(123.6%) - %$");
ObjectSet("FiboUp",OBJPROP_FIRSTLEVEL+2,0.382); ObjectSetFiboDescription("FiboUp",2,"(138.2%) - %$");
ObjectSet("FiboUp",OBJPROP_FIRSTLEVEL+3,0.500); ObjectSetFiboDescription("FiboUp",3,"(150.0%) - %$");
ObjectSet("FiboUp",OBJPROP_FIRSTLEVEL+4,0.618); ObjectSetFiboDescription("FiboUp",4,"(161.8%) - %$");
ObjectSet("FiboUp",OBJPROP_FIRSTLEVEL+5,0.764); ObjectSetFiboDescription("FiboUp",5,"(176.4%) - %$"); Показано первые 50% кода (символов: 9748)
Открыть по тарифу
Купите тариф с пакетом открытий или войдите, если тариф уже есть. Открытый файл останется в вашем кабинете навсегда.
Разовая покупка файла
На этой странице откроется полный исходный код файла вместо ознакомительного фрагмента.
Зачем нужен email? После подтверждения оплаты файл сохранится в кабинете на этот email. Если аккаунта ещё нет, мы создадим его и пришлём ссылку для задания пароля. Если аккаунт уже есть, покупка добавится в него. Укажите адрес, к которому у вас есть доступ.
Чтобы оформить заказ, введите email и перейдите к оплате.