autofibu button.mq5
Сообщите нам, если считаете, что материал размещён без разрешения.
Сообщить о материале
Обращение по товару «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? После подтверждения оплаты файл сохранится в кабинете на этот email. Если аккаунта ещё нет, мы создадим его и пришлём ссылку для задания пароля. Если аккаунт уже есть, покупка добавится в него. Укажите адрес, к которому у вас есть доступ.
Чтобы оформить заказ, введите email и перейдите к оплате.