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

sdx-tzpivots_mod.mq5

Похожие материалы по тегам

!!!-mt4 x-xardg-rsi.mq5MQL5 / MetaTrader 5 · 2 общих тегов!!! rsi ma simple+arrows 1.2 (mtf).mq5MQL5 / MetaTrader 5 · 2 общих теговea robofibo source v.11.2.mq4MQL4 / MetaTrader 4 · 2 общих теговsureforexhedingvonepointoneone.mq4MQL4 / MetaTrader 4 · 2 общих теговsureforexhedging 1.10 optimized.mq4MQL4 / MetaTrader 4 · 2 общих теговsureforexhedging 1.09 a (2).mq4MQL4 / MetaTrader 4 · 2 общих тегов
Вы автор или правообладатель?

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

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

О программе

Индикатор TZ-Pivot рассчитывает пивот-точки и связанные торговые уровни на основе анализа часовых поясов. Он определяет максимум, минимум и закрытие предыдущего торгового дня в настраиваемом часовом поясе, а затем вычисляет стандартные уровни пивотов, зоны поддержки и сопротивления, уровни Фибоначчи, уровни Камариллы и промежуточные пивоты. Также отображаются зоны покупки и продажи с настраиваемыми уровнями входа и выхода.

Помимо этого, индикатор выполняет анализ тренда с помощью ADX, индекса силы (Force Index) и RSI, отображая направленные сигналы на графике. Можно включить отображение максимумов, минимумов и цен открытия, цветовую зонировку и ценовые подписи на линиях. Все пересчёты обновляются каждые 60 секунд и работают только на таймфреймах до дневного включительно.

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

НастройкаОписание
LocalTimeZone Локальный часовой пояс — Часовой пояс, соответствующий локальному времени на графиках MetaTrader 4 (например, 1 или 2 для Европы).
DestTimeZone Часовой пояс назначения — Часовой пояс, в котором рассчитываются торговые уровни (например, 1 или 2 для европейской сессии).
DailyOpenCalculate Расчёт по цене открытия дня — Переключатель: при включении цена открытия используется как базовая точка для расчёта уровней вместо пивота.
ShowHighLowOpen Показать максимум, минимум и открытие — Переключатель: при включении отображаются максимум, минимум и цена открытия.
ShowPivots Показать пивоты — Переключатель: при включении отображаются уровни поддержки и сопротивления S1–S3 и R1–R3.
ShowMidPitvot Показать промежуточные пивоты — Переключатель: при включении отображаются промежуточные пивот-уровни.
ShowFibos Показать уровни Фибоначчи — Переключатель: при включении отображаются уровни Фибоначчи на диапазоне предыдущего дня.
ShowCamarilla Показать уровни Камариллы — Переключатель: при включении отображаются уровни Камариллы.
ShowLevelPrices Показать цены на линиях — Переключатель: при включении на линиях отображаются числовые значения цен.
DebugLogger Отладочный журнал — Переключатель: при включении выводится дополнительная диагностическая информация в журнал.
Zones Показать зоны — Переключатель: при включении на графике отображаются цветные зоны покупки и продажи.
BuyArea Цвет зоны покупки — Цвет зоны покупки.
SellArea Цвет зоны продажи — Цвет зоны продажи.
BuySellStart Начало зоны покупки/продажи — Начальное значение в пунктах для первой зоны покупки/продажи относительно цены открытия.
BuySellEnd Конец зоны покупки/продажи — Конечное значение в пунктах для второй зоны покупки/продажи относительно цены открытия.
number of bars from right, where lines labels will be shown (BarForLabels) Бар для подписей — Количество баров от правого края графика, на котором отображаются подписи линий.
LineStyle Стиль линий — Стиль линий уровней.
LineThickness Толщина линий — Толщина линий уровней.
Получить полный код

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

#property indicator_chart_window

/* Introduction:

   Calculation of pivot and similar levels based on time zones.
   If you want to modify the colors, please scroll down to line
   200 and below (where it says "Calculate Levels") and change
   the colors.  Valid color names can be obtained by placing
   the curor on a color name (e.g. somewhere in the word "Orange"
   and pressing F1).

   Time-Zone Inputs:

   LocalTimeZone: TimeZone for which MT4 shows your local time, 
                  e.g. 1 or 2 for Europe (GMT+1 or GMT+2 (daylight 
                  savings time).  Use zero for no adjustment.
                  The MetaQuotes demo server uses GMT +2.

   DestTimeZone:  TimeZone for the session from which to calculate
                  the levels (e.g. 1 or 2 for the European session
                  (without or with daylight savings time).  
                  Use zero for GMT

   Example: If your MT server is living in the EST (Eastern Standard Time, 
            GMT-5) zone and want to calculate the levels for the London trading
            session (European time in summer GMT+1), then enter -5 for 
            LocalTimeZone, 1 for Dest TimeZone. 

            Please understand that the LocalTimeZone setting depends on the
            time on your MetaTrader charts (for example the demo server 
            from MetaQuotes always lives in CDT (+2) or CET (+1), no matter
            what the clock on your wall says.

            If in doubt, leave everything to zero.
*/

extern int LocalTimeZone= 0;
extern int DestTimeZone= 0;

extern bool DailyOpenCalculate = false;

extern bool ShowHighLowOpen = false;

extern bool ShowPivots = false;
extern bool ShowMidPitvot = false;
extern bool ShowFibos= false;
extern bool ShowCamarilla = false;
extern bool ShowLevelPrices = true;
extern bool DebugLogger = false;
extern bool Zones = true;

extern color BuyArea = LimeGreen;
extern color SellArea = Red;

extern int BuySellStart = 20;
extern int BuySellEnd = 40;
extern int BarForLabels= 0;     // number of bars from right, where lines labels will be shown
extern int LineStyle= 0;
extern int LineThickness= 1;

int ADX_period = 14;

int FI_period = 14;

int RSI_period = 14;

#define BUY1 "BUY1"
#define BUY2 "BUY2"
#define SELL1 "SELL1"
#define SELL2 "SELL2"

/*
   The following doesn't work yet, please leave it to 0/24:

   TradingHoursFrom: First hour of the trading session in the destination
                     time zone.

   TradingHoursTo: Last hour of the trading session in the destination
                   time zone (the hour starting with this value is excluded,
                   i.e. 18 means up to 17:59 o'clock)

   Example: If you are lving in the EST (Eastern Standard Time, GMT-5) 
            zone and want to calculate the levels for the London trading
            session (European time GMT+1, 08:00 - 17:00), then enter
            -5 for LocalTimeZone, 1 for Dest TimeZone, 8 for HourFrom
            and 17 for hour to.
*/

int TradingHoursFrom= 0;
int TradingHoursTo= 24;
int digits; //decimal digits for symbol's price       

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

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

   for (int i= obj_total; i>=0; i--) {
      string name= ObjectName(i);

      if (StringSubstr(name,0,7)=="[PIVOT]") 
         ObjectDelete(name);
   }
   	gvname=Symbol()+"st";
   	GlobalVariableDel(gvname);
   	gvname=Symbol()+"p";
   	GlobalVariableDel(gvname);
   	gvname=Symbol()+"r1";
   	GlobalVariableDel(gvname);
   	gvname=Symbol()+"r2";
   	GlobalVariableDel(gvname);
   	gvname=Symbol()+"r3";
   	GlobalVariableDel(gvname);
   	gvname=Symbol()+"s1";
   	GlobalVariableDel(gvname);
   	gvname=Symbol()+"s2";
   	GlobalVariableDel(gvname);
   	gvname=Symbol()+"s3";
   	GlobalVariableDel(gvname);
   	gvname=Symbol()+"yh";
   	GlobalVariableDel(gvname);
   	gvname=Symbol()+"to";
   	GlobalVariableDel(gvname);
   	gvname=Symbol()+"yl";
   	GlobalVariableDel(gvname);
   	gvname=Symbol()+"ds1";
   	GlobalVariableDel(gvname);
   	gvname=Symbol()+"ds2";
   	GlobalVariableDel(gvname);
   	gvname=Symbol()+"flm618";
   	GlobalVariableDel(gvname);
   	gvname=Symbol()+"flm382";
   	GlobalVariableDel(gvname);
   	gvname=Symbol()+"flp382";
   	GlobalVariableDel(gvname);
   	gvname=Symbol()+"flp5";
   	GlobalVariableDel(gvname);
   	gvname=Symbol()+"fhm382";
   	GlobalVariableDel(gvname);
   	gvname=Symbol()+"fhp382";
   	GlobalVariableDel(gvname);
   	gvname=Symbol()+"fhp618";
   	GlobalVariableDel(gvname);
   	gvname=Symbol()+"h3";
   	GlobalVariableDel(gvname);
   	gvname=Symbol()+"h4";
   	GlobalVariableDel(gvname);
   	gvname=Symbol()+"l3";
   	GlobalVariableDel(gvname);
   	gvname=Symbol()+"l4";
   	GlobalVariableDel(gvname);
   	gvname=Symbol()+"mr3";
   	GlobalVariableDel(gvname);
   	gvname=Symbol()+"mr2";
   	GlobalVariableDel(gvname);
   	gvname=Symbol()+"mr1";
   	GlobalVariableDel(gvname);
   	gvname=Symbol()+"ms1";
   	GlobalVariableDel(gvname);
   	gvname=Symbol()+"ms2";
   	GlobalVariableDel(gvname);
   	gvname=Symbol()+"ms3";
   	GlobalVariableDel(gvname);
   	gvname=Symbol()+"bl1";
   	GlobalVariableDel(gvname);
   	gvname=Symbol()+"bl2";
   	GlobalVariableDel(gvname);
   	gvname=Symbol()+"bt";
   	GlobalVariableDel(gvname);
   	gvname=Symbol()+"sl1";
   	GlobalVariableDel(gvname);
   	gvname=Symbol()+"sl2";
   	GlobalVariableDel(gvname);
   	gvname=Symbol()+"st";
   	GlobalVariableDel(gvname);

   ObjectsDeleteAll(0, OBJ_LABEL);
   ObjectsDeleteAll(0, OBJ_RECTANGLE);
   ObjectDelete("ADX"); ObjectDelete("FI"); ObjectDelete("RSI");
   ObjectDelete("Signal");
   ObjectDelete("Analysis"); ObjectDelete("Strength"); ObjectDelete("Trend");

   return(0);
}

int start()
{
      // код доступен только после оплаты
   }
   static datetime timelastupdate= 0;
   static datetime lasttimeframe= 0;

   datetime startofday= 0,
            startofyesterday= 0;

   double today_high= 0,
            today_low= 0,
            today_open= 0,
            yesterday_high= 0,
            yesterday_open= 0,
            yesterday_low= 0,
            yesterday_close= 0;

   int idxfirstbaroftoday= 0,
       idxfirstbarofyesterday= 0,
       idxlastbarofyesterday= 0;

   if (CurTime()-timelastupdate<60 && Period()==lasttimeframe)
      return (0);

   lasttimeframe= Period();
   timelastupdate= CurTime();

   if(Period() > 1440) {
      Alert("Error - Chart period is greater than 1 day.");
      return(-1); // then exit
   }

   if (DebugLogger) {
      Print("Local time current bar:", TimeToStr(Time[0]));
      Print("Dest  time current bar: ", TimeToStr(Time[0]- (LocalTimeZone - DestTimeZone)*3600), ", tzdiff= ", LocalTimeZone - DestTimeZone);
   }

   string gvname; double gvval;

   ComputeDayIndices(LocalTimeZone, DestTimeZone, idxfirstbaroftoday, idxfirstbarofyesterday, idxlastbarofyesterday);

   startofday= Time[idxfirstbaroftoday];  // datetime (x-value) for labes on horizontal bars
   gvname=Symbol()+"st";
   gvval=startofday;
   GlobalVariableSet(gvname,gvval);
   startofyesterday= Time[idxfirstbarofyesterday];  // datetime (x-value) for labes on horizontal bars

   yesterday_high= -99999;  // not high enough to remain alltime high
   yesterday_low=  +99999;  // not low enough to remain alltime low

   for (int idxbar= idxfirstbarofyesterday; idxbar>=idxlastbarofyesterday; idxbar--) {

      if (yesterday_open==0)  // grab first value for open
         yesterday_open= Open[idxbar];                      

      yesterday_high= MathMax(High[idxbar], yesterday_high);
      yesterday_low= MathMin(Low[idxbar], yesterday_low);

      yesterday_close= Close[idxbar];
   }

   today_open= Open[idxfirstbaroftoday];  // should be open of today start trading hour

   today_high= -99999; // not high enough to remain alltime high
   today_low=  +99999; // not low enough to remain alltime low
   for (int j= idxfirstbaroftoday; j>=0; j--) {
      today_high= MathMax(today_high, High[j]);
      today_low= MathMin(today_low, Low[j]);
   }

   double level= (yesterday_high + yesterday_low + yesterday_close) / 3;
   SetTimeLine("YesterdayStart", "Yesterday", idxfirstbarofyesterday, White, level+10*Point);
   SetTimeLine("YesterdayEnd", "Today", idxfirstbaroftoday, White, level+10*Point);

   if (DebugLogger) 
      Print("Timezoned values: yo= ", yesterday_open, ", yc =", yesterday_close, ", yhigh= ", yesterday_high, ", ylow= ", yesterday_low, ", to= ", today_open);

   double p,q,d,r1,r2,r3,s1,s2,s3,bl1,bl2,sl1,sl2;

   d = (today_high - today_low);
   q = (yesterday_high - yesterday_low);
   p = (yesterday_high + yesterday_low + yesterday_close) / 3;
   p=NormalizeDouble(p,digits);
   gvname=Symbol()+"p";
   gvval=p;
   GlobalVariableSet(gvname,gvval);

   r1 = (2*p)-yesterday_low;
   r1=NormalizeDouble(r1,digits);
   gvname=Symbol()+"r1";
   gvval=r1;
   GlobalVariableSet(gvname,gvval);
   r2 = p+(yesterday_high - yesterday_low);              //	r2 = p-s1+r1;
   r2=NormalizeDouble(r2,digits);
   gvname=Symbol()+"r2";
   gvval=r2;
   GlobalVariableSet(gvname,gvval);
	r3 = (2*p)+(yesterday_high-(2*yesterday_low));
   r3=NormalizeDouble(r3,digits);
   gvname=Symbol()+"r3";
   gvval=r3;
   GlobalVariableSet(gvname,gvval);
   s1 = (2*p)-yesterday_high;
   s1=NormalizeDouble(s1,digits);
   gvname=Symbol()+"s1";
   gvval=s1;
   GlobalVariableSet(gvname,gvval);
   s2 = p-(yesterday_high - yesterday_low);              //	s2 = p-r1+s1;
   s2=NormalizeDouble(s2,digits);
   gvname=Symbol()+"s2";
   gvval=s2;
   GlobalVariableSet(gvname,gvval);
	s3 = (2*p)-((2* yesterday_high)-yesterday_low);
   s3=NormalizeDouble(s3,digits);
   gvname=Symbol()+"s3";
   gvval=s3;
   GlobalVariableSet(gvname,gvval);

   string Signal ="";
   color col;
   double open;
   if (DailyOpenCalculate == true) { open = today_open; }
   else { open = p; }

   bl1 = open+(BuySellStart*Point);
   bl1=NormalizeDouble(bl1,digits);
   gvname=Symbol()+"bl1";
   gvval=bl1;
   GlobalVariableSet(gvname,gvval);
   bl2 = open+(BuySellEnd*Point);
   bl2=NormalizeDouble(bl2,digits);
   gvname=Symbol()+"bl2";
   gvval=bl2;
   GlobalVariableSet(gvname,gvval);
   sl1 = open-(BuySellStart*Point);
   sl1=NormalizeDouble(sl1,digits);
   gvname=Symbol()+"sl1";
   gvval=sl1;
   GlobalVariableSet(gvname,gvval);
   sl2 = open-(BuySellEnd*Point);
   sl2=NormalizeDouble(sl2,digits);
   gvname=Symbol()+"sl2";
   gvval=sl2;
   GlobalVariableSet(gvname,gvval);

   if(Ask>(bl1-5*Point)&&Ask<(bl1+5*Point)){Signal = "BUY Stop @ "+DoubleToStr(bl1,Digits)+""
                                              +"\n, TP @ "+DoubleToStr(bl2,Digits)+""
                                              +"\n, SL @ "+DoubleToStr(bl1-30*Point,Digits)+"";
                                              col = LimeGreen;
                                             }

   if(Ask>(bl2-5*Point)&&Ask<(bl2+5*Point)){Signal = "Breakout BUY Stop @ "+DoubleToStr(bl2,Digits)+""
                                             +"\n, TP @ "+DoubleToStr(bl2+20*Point,Digits)+""
                                             +"\n, SL @ "+DoubleToStr(bl1-10*Point,Digits)+"";
                                             col = LimeGreen;
                                            }

   if(Bid<(sl1+5*Point)&&Bid>(sl1-5*Point)){Signal = "SELL Stop @ "+DoubleToStr(sl1,Digits)+""
                                              +"\n, TP @ "+DoubleToStr(sl2,Digits)+""
                                              +"\n, SL @ "+DoubleToStr(sl1+30*Point,Digits)+"";
                                              col = Red;
                                             }

   if(Bid<(sl2+5*Point)&&Bid>(sl2-5*Point)){Signal = "Breakout SELL Stop @ "+DoubleToStr(sl2,Digits)+""
                                             +"\n, TP @ "+DoubleToStr(sl2-20*Point,Digits)+""
                                             +"\n, SL @ "+DoubleToStr(sl1+10*Point,Digits)+"";
                                             col = Red;
                                            }

   else{Signal = "Waiting..."; col = Silver;}

   ObjectCreate("Signal", OBJ_LABEL, 0, 0, 0);
   ObjectSetText("Signal", Signal, 8, "Arial", col);
   ObjectSet("Signal", OBJPROP_CORNER, 0);
   ObjectSet("Signal", OBJPROP_XDISTANCE, 7);
   ObjectSet("Signal", OBJPROP_YDISTANCE, 180);

   SetLevel("Pivot", p, Silver, LineStyle, LineThickness, startofday);
   SetLevel("BUY Level 1", bl1, BuyArea, LineStyle, LineThickness, startofday);
   SetLevel("BUY Level 2", bl2, BuyArea, LineStyle, LineThickness, startofday);
   SetLevel("SELL Level 1", sl1, SellArea, LineStyle, LineThickness, startofday);
   SetLevel("SELL Level 2", sl2, SellArea, LineStyle, LineThickness, startofday);

   if (DailyOpenCalculate == true)
   {
    SetLevel("Open", open, Silver, LineStyle, LineThickness, startofday);
   }

   Graphics(BUY1, bl1, bl2, BuyArea, startofday);
   Graphics(BUY2, bl2, bl2, BuyArea, startofday);
   Graphics(SELL1, sl1, sl2, SellArea, startofday);
   Graphics(SELL2, sl2, sl2, SellArea, startofday);

   if (ShowHighLowOpen) {
      SetLevel("Y\'s High", yesterday_high,  Orange, LineStyle, LineThickness, startofyesterday);
      SetLevel("T\'s Open", today_open,      Orange, LineStyle, LineThickness, startofday);
      SetLevel("Y\'s Low", yesterday_low,    Orange, LineStyle, LineThickness, startofyesterday);

   	gvname=Symbol()+"yh";
   	gvval=yesterday_high;
   	GlobalVariableSet(gvname,gvval);
   	gvname=Symbol()+"to";
   	gvval=today_open;
   	GlobalVariableSet(gvname,gvval);
   	gvname=Symbol()+"yl";
   	gvval=yesterday_low;
   	GlobalVariableSet(gvname,gvval);
   }

   /*if (ShowSweetSpots) {
      int ssp1, ssp2;
      double ds1, ds2;

      ssp1= Bid / Point;
      ssp1= ssp1 - ssp1%50;
      ssp2= ssp1 + 50;

      ds1= ssp1*Point;
      ds2= ssp2*Point;

      SetLevel(DoubleToStr(ds1,Digits), ds1,  Gold, LineStyl

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

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

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

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

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

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

Стоимость полного кода
2 162,50₽ ≈ $26.43