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

adr fibo 1.02 bt.mq5

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

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

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

О программе

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

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

Индикатор предназначен для работы на платформе MetaTrader 5 и рассчитан на дневной таймфрейм. При превышении дневного периода индикатор выдаёт предупреждение и прекращает работу.

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

НастройкаОписание
note1 Разделитель верхних Фибоначчи — Текстовый параметр для разделения блока настроек верхних фибоначчи
DisplayUpperFibo Показать верхние Фибоначчи — Переключает отображение верхних фибоначчи уровней на графике
UpperFiboColor Цвет верхних Фибоначчи — Цвет линий верхних фибоначчи уровней
UpperFiboStyle Стиль верхних Фибоначчи — Стиль линий верхних фибоначчи уровней
UpperFiboWidth Толщина верхних Фибоначчи — Толщина линий верхних фибоначчи уровней
note2 Разделитель основных Фибоначчи — Текстовый параметр для разделения блока настроек основных фибоначчи
DisplayMainFibo Показать основные Фибоначчи — Переключает отображение основных фибоначчи уровней внутри дневного диапазона
MainFiboColor Цвет основных Фибоначчи — Цвет линий основных фибоначчи уровней
MainFiboStyle Стиль основных Фибоначчи — Стиль линий основных фибоначчи уровней
MainFiboWidth Толщина основных Фибоначчи — Толщина линий основных фибоначчи уровней
note3 Разделитель нижних Фибоначчи — Текстовый параметр для разделения блока настроек нижних фибоначчи
DisplayLowerFibo Показать нижние Фибоначчи — Переключает отображение нижних фибоначчи уровней на графике
LowerFiboColor Цвет нижних Фибоначчи — Цвет линий нижних фибоначчи уровней
LowerFiboStyle Стиль нижних Фибоначчи — Стиль линий нижних фибоначчи уровней
LowerFiboWidth Толщина нижних Фибоначчи — Толщина линий нижних фибоначчи уровней
chart time zone (from GMT) (TimeZoneOfData) Часовой пояс данных — Часовой пояс данных относительно Гринвича
dest time zone (from GMT) (TimeZoneOfSession) Часовой пояс сессии — Часовой пояс торговой сессии относительно Гринвича
allows use of manual value for range (UseManualADR) Использовать ручной ADR — Разрешает использование ручного значения диапазона вместо автоматического расчёта
manual value for range (ManualADRValuePips) Ручное значение ADR — Ручное значение диапазона в пипсах, используемое при включённом ручном режиме ADR
number of bars from right, where lines labels will be shown (BarForLabels) Метки на барах — Количество баров справа, на которых будут отображаться метки линий
DebugLogger Отладочный журнал — Включает режим отладки с выводом промежуточных расчётных значений в журнал
First_av Первый период усреднения — Первый период усреднения для расчёта ADR
Second_av Второй период усреднения — Второй период усреднения для расчёта ADR
Third_av Третий период усреднения — Третий период усреднения для расчёта ADR
button_note1 Разделитель кнопки 1 — Текстовый параметр для разделения блока настроек кнопки
chart btn_corner for anchoring (btn_corner) Угол привязки кнопки — Угол графика для привязки кнопки
btn_Subwindow Подокно кнопки — Подокно для размещения кнопки (0 — главное окно графика)
btn_text Текст кнопки — Текст на кнопке
btn_Font Шрифт кнопки — Шрифт текста кнопки на графике
btn__font size (btn_FontSize) Размер шрифта кнопки — Размер шрифта текста кнопки
btn_text_ON_color Цвет текста кнопки (вкл) — Цвет текста кнопки в активном состоянии
btn_text_OFF_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 Разделитель кнопки 2 — Текстовый параметр для разделения блока настроек кнопки
Получить полный код

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

#property indicator_chart_window

extern string             note1                 = "Fibonacci colors";
extern bool               DisplayUpperFibo      = true;
extern color              UpperFiboColor        = clrDarkGreen;
extern ENUM_LINE_STYLE    UpperFiboStyle        = STYLE_DASH;
extern int                UpperFiboWidth        = 1;
extern string             note2                 = "------------------------------";
extern bool               DisplayMainFibo       = true;
extern color              MainFiboColor         = clrRoyalBlue;
extern ENUM_LINE_STYLE    MainFiboStyle         = STYLE_DASHDOT;
extern int                MainFiboWidth         = 1;
extern string             note3                 = "------------------------------";
extern bool               DisplayLowerFibo      = true;
extern color              LowerFiboColor        = clrCrimson;
extern ENUM_LINE_STYLE    LowerFiboStyle        = STYLE_DASHDOTDOT;
extern int                LowerFiboWidth        = 1;

extern int TimeZoneOfData= 0;       // chart time zone (from GMT)
extern int TimeZoneOfSession= 0;   // dest time zone (from GMT) 

int ADROpenHour= 0;         // start time for range calculation (LEAVE AT 0. PROGRAM DOESN'T WORK PROPERLY OTHERWISE.)
int ADRCloseHour= 24;        // end time for range calculation  (LEAVE AT 24. PROGRAM DOESN'T WORK PROPERLY OTHERWISE.)

extern bool UseManualADR= false;    // allows use of manual value for range
extern int ManualADRValuePips= 0;   // manual value for range

int LineStyle= 2;
int LineThickness1= 1;       // normal thickness
color LineColor1= clrOrange;    // normal color
int LineThickness2= 2;       // thickness for range reached state
color LineColor2= clrBlue;       // color for range reached state

bool ShowLevelPrices= true;         // show prices on h-lines
extern int BarForLabels= -10;       // number of bars from right, where lines labels will be shown

extern bool DebugLogger = false;

extern int First_av = 5;
extern int Second_av = 10;
extern int Third_av = 20;

extern string             button_note1          = "------------------------------";
extern ENUM_BASE_CORNER   btn_corner            = CORNER_LEFT_UPPER; // chart btn_corner for anchoring
extern int                btn_Subwindow = 0;
extern string             btn_text              = "ADR Fibo";
extern string             btn_Font              = "Arial";
extern int                btn_FontSize          = 9;                             //btn__font size
extern color              btn_text_ON_color     = clrLime;
extern color              btn_text_OFF_color    = clrRed;
extern color              btn_background_color  = clrDimGray;
extern color              btn_border_color      = clrBlack;
extern int                button_x              = 20;                                     //btn__x
extern int                button_y              = 25;                                     //btn__y
extern int                btn_Width             = 80;                                 //btn__width
extern int                btn_Height            = 20;                                //btn__height
extern string             button_note2          = "------------------------------";
bool                      show_data             = true;
string IndicatorName, IndicatorObjPrefix;

double mPoint, today_high, today_low, today_range,
          adr_high= 0,
          adr_low= 0, adr_range = 0;
datetime startofday;

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

string buttonId;

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

void createButton(string buttonID,string buttonText,int width,int height,string font,int fontSize,color bgColor,color borderColor,color txtColor)
{
      ObjectDelete    (ChartID(),buttonID);
      ObjectCreate    (ChartID(),buttonID,OBJ_BUTTON,btn_Subwindow,0,0);
      ObjectSetInteger(ChartID(),buttonID,OBJPROP_COLOR,txtColor);
      ObjectSetInteger(ChartID(),buttonID,OBJPROP_BGCOLOR,bgColor);
      ObjectSetInteger(ChartID(),buttonID,OBJPROP_BORDER_COLOR,borderColor);
      ObjectSetInteger(ChartID(),buttonID,OBJPROP_XSIZE,width);
      ObjectSetInteger(ChartID(),buttonID,OBJPROP_YSIZE,height);
      ObjectSetString (ChartID(),buttonID,OBJPROP_FONT,font);
      ObjectSetString (ChartID(),buttonID,OBJPROP_TEXT,buttonText);
      ObjectSetInteger(ChartID(),buttonID,OBJPROP_FONTSIZE,fontSize);
      ObjectSetInteger(ChartID(),buttonID,OBJPROP_SELECTABLE,0);
      ObjectSetInteger(ChartID(),buttonID,OBJPROP_CORNER,btn_corner);
      ObjectSetInteger(ChartID(),buttonID,OBJPROP_HIDDEN,1);
      ObjectSetInteger(ChartID(),buttonID,OBJPROP_XDISTANCE,9999);
      ObjectSetInteger(ChartID(),buttonID,OBJPROP_YDISTANCE,9999);
}

int deinit()
{
   int obj_total= ObjectsTotal();

   ObjectsDeleteAll(ChartID(), IndicatorObjPrefix);
   for (int i= obj_total; i>=0; i--) {
      string name= ObjectName(i);

      if (StringSubstr(name,0,5)=="[ADR]") 
         ObjectDelete(name);
   }
   Comment("");
   ObjectDelete("ADRinsideDaily");
   ObjectDelete("ADRUpDaily");
   ObjectDelete("ADRDownDaily");
   return(0);
}

bool recalc = true;

void handleButtonClicks()
{
   if (ObjectGetInteger(ChartID(), buttonId, OBJPROP_STATE))
   {
      ObjectSetInteger(ChartID(), buttonId, OBJPROP_STATE, false);
      show_data = !show_data;
      GlobalVariableSet(IndicatorName + "_visibility", show_data ? 1.0 : 0.0);
      recalc = true;
      start();
   }
}

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

int init2()
{
   Print("Period= ", Period());
   Print("Point= ", Point);

  if(Point==0.00001) {mPoint=0.0001;}//Alpari
  else if(Point==0.001) {mPoint=0.01;}
  else {mPoint = Point;}//InterBankFX  

  if (First_av == 0 || Second_av == 0 || Third_av == 0)
      Alert("(First/Second/Third)_av inputs must not equal zero. Indicator will not run.");

   return(0);
}

int DrawFibo()
{
	if(DisplayUpperFibo)
	{

	if(ObjectFind("ADRUpDaily") == -1)
      ObjectCreate("ADRUpDaily",OBJ_FIBO,0,startofday,adr_high+adr_range,startofday+PERIOD_D1*60,adr_high);
	else
	{
		ObjectSet("ADRUpDaily",OBJPROP_PRICE1,adr_high+adr_range);
		ObjectSet("ADRUpDaily",OBJPROP_PRICE2,adr_high);
   }
   ObjectSet("ADRUpDaily",OBJPROP_LEVELSTYLE,UpperFiboStyle);
   ObjectSet("ADRUpDaily",OBJPROP_LEVELWIDTH,UpperFiboWidth);
   ObjectSet("ADRUpDaily",OBJPROP_LEVELCOLOR,UpperFiboColor);
   ObjectSet("ADRUpDaily",OBJPROP_FIBOLEVELS,15);
   ObjectSet("ADRUpDaily",OBJPROP_FIRSTLEVEL+0,0.0);	   
	if (!DisplayMainFibo)
       ObjectSetFiboDescription("ADRUpDaily",0,"(100.0%) -  %$"); 
   else    
       ObjectSetFiboDescription("ADRUpDaily",0,""); 

   ObjectSet("ADRUpDaily",OBJPROP_FIRSTLEVEL+1,0.236);	ObjectSetFiboDescription("ADRUpDaily",1,"(123.6%) -  %$"); 
   ObjectSet("ADRUpDaily",OBJPROP_FIRSTLEVEL+2,0.382); 	ObjectSetFiboDescription("ADRUpDaily",2,"(138.2%) -  %$"); 
   ObjectSet("ADRUpDaily",OBJPROP_FIRSTLEVEL+3,0.500); 	ObjectSetFiboDescription("ADRUpDaily",3,"(150.0%) -  %$"); 
   ObjectSet("ADRUpDaily",OBJPROP_FIRSTLEVEL+4,0.618); 	ObjectSetFiboDescription("ADRUpDaily",4,"(161.8%) -  %$"); 
   ObjectSet("ADRUpDaily",OBJPROP_FIRSTLEVEL+5,0.764); 	ObjectSetFiboDescription("ADRUpDaily",5,"(176.4%) -  %$"); 
   ObjectSet("ADRUpDaily",OBJPROP_FIRSTLEVEL+6,1.000); 	ObjectSetFiboDescription("ADRUpDaily",6,"(200.0%) -  %$"); 
   ObjectSet("ADRUpDaily",OBJPROP_FIRSTLEVEL+7,1.236);   ObjectSetFiboDescription("ADRUpDaily",7,"(223.6%) -  %$"); 
   ObjectSet("ADRUpDaily",OBJPROP_FIRSTLEVEL+8,1.500);   ObjectSetFiboDescription("ADRUpDaily",8,"(250.0%) -  %$"); 
   ObjectSet("ADRUpDaily",OBJPROP_FIRSTLEVEL+9,1.618);	ObjectSetFiboDescription("ADRUpDaily",9,"(261.8%) -  %$"); 
   ObjectSet("ADRUpDaily",OBJPROP_FIRSTLEVEL+10,2.000);	ObjectSetFiboDescription("ADRUpDaily",10,"(300.0%) -  %$"); 
   ObjectSet("ADRUpDaily",OBJPROP_FIRSTLEVEL+11,2.500);	ObjectSetFiboDescription("ADRUpDaily",11,"(350.0%) -  %$"); 
   ObjectSet("ADRUpDaily",OBJPROP_FIRSTLEVEL+12,3.000);	ObjectSetFiboDescription("ADRUpDaily",12,"(400.0%) -  %$"); 
   ObjectSet("ADRUpDaily",OBJPROP_FIRSTLEVEL+13,3.500);	ObjectSetFiboDescription("ADRUpDaily",13,"(450.0%) -  %$"); 
   ObjectSet("ADRUpDaily",OBJPROP_FIRSTLEVEL+14,4.000);	ObjectSetFiboDescription("ADRUpDaily",14,"(500.0%) -  %$"); 
   ObjectSet("ADRUpDaily",OBJPROP_RAY,true);
   ObjectSet("ADRUpDaily",OBJPROP_BACK,true);
}
   else
	   ObjectDelete("ADRUpDaily");

	if(DisplayLowerFibo)
	{
	if(ObjectFind("ADRDownDaily") == -1)
      ObjectCreate("ADRDownDaily",OBJ_FIBO,0,startofday,adr_low-adr_range,startofday+PERIOD_D1*60,adr_low);
	else
	{
		ObjectSet("ADRDownDaily",OBJPROP_PRICE1,adr_low-adr_range);
		ObjectSet("ADRDownDaily",OBJPROP_PRICE2,adr_low);
	}
   ObjectSet("ADRDownDaily",OBJPROP_LEVELSTYLE,LowerFiboStyle);
   ObjectSet("ADRDownDaily",OBJPROP_LEVELWIDTH,LowerFiboWidth);
   ObjectSet("ADRDownDaily",OBJPROP_LEVELCOLOR,LowerFiboColor);      
   ObjectSet("ADRDownDaily",OBJPROP_FIBOLEVELS,19);
   ObjectSet("ADRDownDaily",OBJPROP_FIRSTLEVEL+0,0.0);	   
	if (!DisplayMainFibo)
       ObjectSetFiboDescription("ADRDownDaily",0,"(0.0%) -  %$"); 
   else
       ObjectSetFiboDescription("ADRDownDaily",0,""); 
   ObjectSet("ADRDownDaily",OBJPROP_FIRSTLEVEL+1,0.236); 	ObjectSetFiboDescription("ADRDownDaily",1,"(-23.6%) -  %$"); 
   ObjectSet("ADRDownDaily",OBJPROP_FIRSTLEVEL+2,0.382); 	ObjectSetFiboDescription("ADRDownDaily",2,"(-38.2%) -  %$"); 
   ObjectSet("ADRDownDaily",OBJPROP_FIRSTLEVEL+3,0.500); 	ObjectSetFiboDescription("ADRDownDaily",3,"(-50.0%) -  %$"); 
   ObjectSet("ADRDownDaily",OBJPROP_FIRSTLEVEL+4,0.618); 	ObjectSetFiboDescription("ADRDownDaily",4,"(-61.8%) -  %$"); 
   ObjectSet("ADRDownDaily",OBJPROP_FIRSTLEVEL+5,0.764); 	ObjectSetFiboDescription("ADRDownDaily",5,"(-76.4%) -  %$"); 
   ObjectSet("ADRDownDaily",OBJPROP_FIRSTLEVEL+6,1.000);  	ObjectSetFiboDescription("ADRDownDaily",6,"(-100.0%) -  %$"); 
   ObjectSet("ADRDownDaily",OBJPROP_FIRSTLEVEL+7,1.236); 	ObjectSetFiboDescription("ADRDownDaily",7,"(-123.6%) -  %$"); 
   ObjectSet("ADRDownDaily",OBJPROP_FIRSTLEVEL+8,1.382);	   ObjectSetFiboDescription("ADRDownDaily",8,"(-138.2%) -  %$"); 
   ObjectSet("ADRDownDaily",OBJPROP_FIRSTLEVEL+9,1.500); 	ObjectSetFiboDescription("ADRDownDaily",9,"(-150.0%) -  %$"); 
   ObjectSet("ADRDownDaily",OBJPROP_FIRSTLEVEL+10,1.618);	ObjectSetFiboDescription("ADRDownDaily",10,"(-161.8%) -  %$"); 
   ObjectSet("ADRDownDaily",OBJPROP_FIRSTLEVEL+11,1.764);	ObjectSetFiboDescription("ADRDownDaily",11,"(-176.4%) -  %$"); 
   ObjectSet("ADRDownDaily",OBJPROP_FIRSTLEVEL+12,2.000);	ObjectSetFiboDescription("ADRDownDaily",12,"(-200.0%) -  %$"); 
   ObjectSet("ADRDownDaily",OBJPROP_FIRS

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

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

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

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

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

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

Стоимость полного кода
1 775,40₽ ≈ $21.70