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

TPOChart Session v1.20

ay-tpochart-session.v1.20 - smtm.mq5
Вы автор или правообладатель?

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

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

О программе

Индикатор отображает TPO-графики (Time Price Opportunity) и профили торговых сессий на графике MetaTrader 4. Он разбивает цену на сессии Азии, Европы и США, отображая буквы, соответствующие движениям цены внутри каждого тайм-бара. Индикатор показывает зону ценности (VAH/VAL), точку контроля (POC), начальный баланс (IB) и объёмные данные, рисуя всё в отдельном окне индикатора. Поддерживается объединение сессий, разделённые профили и окраска букв по направлению объёма.

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

НастройкаОписание
EnableMergeProfile Объединение профилей — Включает объединение сессий (Азия+Европа, Европа+США или все вместе) в один общий профиль.
MergeProfileInfo Описание режимов объединения — Текстовая подсказка с перечислением доступных режимов объединения сессий.
MergeProfile Режим объединения — Выбирает режим объединения сессий: A (Азия+Европа), B (Европа+США) или C (все сессии).
ExtendIB Расширенный IB — Продлевает линии начального баланса за пределы стандартного уровня.
ShowSplitProfile Показать разделённый профиль — Отображает буквы разделённого профиля на исторических барах для ранних дней.
PaintLettersOnVolume Окраска букв по объёму — Окрашивает буквы в цвет восходящего, нисходящего или нейтрального объёма бара.
ShowHorizontalVolume Горизонтальный объём — Отображает данные объёма горизонтально вдоль профиля.
ShowVolumeRatio Отношение объёмов — Показывает отношение объёма текущего бара к соседним.
MinVolumeRatio Минимальное отношение объёмов — Пороговое значение отношения объёмов для отображения показателя.
AsiaOpen Время открытия Азии — Время начала азиатской торговой сессии.
EuropeOpen Время открытия Европы — Время начала европейской торговой сессии.
USOpen Время открытия США — Время начала американской торговой сессии.
NumDays Количество дней — Число дней назад, за которые строится профиль.
SplitProfileNumDays Дни разделённого профиля — Число дней, для которых отображается разделённый профиль с буквами на исторических барах.
RowHeight Высота строки — Вертикальный шаг между уровнями цены в профиле.
ProfileDataTf Таймфрейм данных профиля — Таймфрейм, с которого берутся данные для расчёта профиля.
VAPercent Процент зоны ценности — Процент объёма, определяющий границы зоны ценности (VAH/VAL).
IBNumBars Баров начального баланса — Количество баров, используемых для расчёта начального баланса сессии.
UpdateInterval Интервал обновления — Интервал обновления данных индикатора.
spr1 Разделитель цветов — Текстовый разделитель перед группой настроек цветов.
AsColor Цвет Азии — Цвет отображения сессии Азии.
EuColor Цвет Европы — Цвет отображения европейской сессии.
UsColor Цвет США — Цвет отображения американской сессии.
VAColor Цвет зоны ценности — Цвет заливки зоны ценности (Value Area).
POCColor Цвет POC — Цвет линии точки контроля (Point of Control).
HistogramColor Цвет гистограммы — Цвет гистограммного элемента индикатора.
C'0,200,0'; (BarBullColor) Цвет бычьего бара — Цвет бара при бычьем движении цены.
C'200,0,0'; (BarBearColor) Цвет медвежьего бара — Цвет бара при медвежьем движении цены.
BarNetralColor Цвет нейтрального бара — Цвет бара при нейтральном движении цены.
OpenCloseColor Цвет открытия/закрытия — Цвет маркеров открытия и закрытия бара.
WindowInfoColor Цвет информации — Цвет текста информационного окна индикатора.
UpVolumeColor Цвет растущего объёма — Цвет букв при растущем объёме.
DownVolumeColor Цвет падающего объёма — Цвет букв при падающем объёме.
NeutralVolumeColor Цвет нейтрального объёма — Цвет букв при нейтральном объёме.
Получить полный код

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

#property indicator_separate_window
#property indicator_minimum 0
#property indicator_maximum 14
/******************************************************************\\\
 * MP Library 
 * dont change anything in this mp library block, unless YKWYD.....
 ******************************************************************///say something here...
#include <ay-mplib.const.v102.mqh>                                  //

#import "ay-mplib.v102.ex4"                                         //
void MpGet                                                          //
   (                                                                //   
        double    dparam[4]                                         //
      , int       iparam[4]                                         //
      , double    arates[][6]                                       //
      , double&   mpdataperrow[][MPSIZE]                            //result: price per row (price, tpo, vol)  
      , int&      mplinesidx[MPLNSIZE]                              //result: lines index
      , double&   mptotal[MPTSIZE]                                  //result: total (tpo, vol)
      , int&      mpletter[][MPLTSIZE]                              //result: letter  
   );                                                               //
#import                                                             //
/******************************************************************\\\
 * End MP Library 
 ******************************************************************///

/******************************************************************\\\
 * Indicator Constant
 ******************************************************************/// 
#define IND_NAME        "TPOChart Session v1.20"
#define SES_START       0                                            //
#define SES_END         1                                            //
#define A_SES           0                                            //  Asia Session
#define E_SES           1                                            //Europe Session
#define U_SES           2                                            //    US Session
#define MPLFONTNAME     "lucida sans typewriter bold"
#define MPLFONTNAME2    "lucida sans typewriter"
#define MPLFONTSIZE     8
#define MG_ASIA_EUROPE  "A"
#define MG_EUROPE_US    "B"
#define MG_ALL          "C"

/******************************************************************\\\
 * End Indicator Constant
 ******************************************************************/// 

extern bool       EnableMergeProfile       = false;
extern string     MergeProfileInfo         = "A Asia+Europe, B Europe+US, C All";
extern string     MergeProfile             = "A";
extern bool       ExtendIB                 = false;
extern bool       ShowSplitProfile         = true;
extern bool       PaintLettersOnVolume     = true;
extern bool       ShowHorizontalVolume     = false;
extern bool       ShowVolumeRatio          = true;
extern double     MinVolumeRatio           = 1.5;
extern string     AsiaOpen                 = "20:00";
extern string     EuropeOpen               = "03:00";
extern string     USOpen                   = "08:00";
extern int        NumDays                  = 10;
extern int        SplitProfileNumDays      = 0;
extern int        RowHeight                = 5;
extern int        ProfileDataTf            = 30;
extern double     VAPercent                = 70.0;
extern int        IBNumBars                = 2;
extern int        UpdateInterval           = 0;
extern string     spr1                     = "Colors.............";
extern color      AsColor                  = White;
extern color      EuColor                  = Aqua;
extern color      UsColor                  = Khaki;
extern color      VAColor                  = C'25,25,45';
extern color      POCColor                 = Purple;
extern color      HistogramColor           = C'0,64,128';
extern color      BarBullColor             = MediumBlue;//C'0,200,0';
extern color      BarBearColor             = Maroon;//C'200,0,0';
extern color      BarNetralColor           = DimGray;
extern color      OpenCloseColor           = Gray;
extern color      WindowInfoColor          = Silver;
extern color      UpVolumeColor            = PaleGreen;
extern color      DownVolumeColor          = Chocolate;
extern color      NeutralVolumeColor       = DodgerBlue;

int        giStep
         , giDigits
         , giWinId
         ;
double     gdaRates[][6]
         , gdOneTick
         , gdPoint
         ;     
color      gcHistoColor;         
bool       gbFirstRun = true;
string     gsaLetter[] = 
            {
             "A","B","C","D","E","F","G","H","I","J","K","L","M","N","O","P","Q","R","S","T","U","V","W","X","Y","Z"
            ,"a","b","c","d","e","f","g","h","i","j","k","l","m","n","o","p","q","r","s","t","u","v","w","x","y","z"
            } 
         , gsPref = "ay.mpls."
         ; 
color      gcSesColor[3];
datetime   gdtaMST[][3][2];   //--array market session time;            

#include <ay-object.func.v1.1.mqh>
#include <ay-TPOChart-Session.v1.20.helper.mqh>

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

int deinit()
{         
   delObjs();
   return(0);
}

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

void createProfile
(
     int       maxdays
   , datetime  currtime
   , datetime  currsesstart   
)
{
   static int      lastmaxtpo;

   double     hh, ll, hhday, llday
            , rhh, rhhday  //round hh to rowheight
            , rll, rllday  //round ll to rowheight;
            ;

   int        sb, eb, sbday, ebday;    
   double     mpdata  [][MPSIZE];
   int        mplines   [MPLNSIZE];
   double     mptotal   [MPTSIZE];
   int        mpletter[][MPLTSIZE];   
   double     dparam[4];
   int        iparam[4];      
   int        ratessize = iBars(NULL, ProfileDataTf)
            , mpdatasize;

   double     poc, midrowpoc, vpoc,vah, val, open, close   
            , rg = (giStep/1.0)/(MathPow(10,giDigits))
            , ibh, ibl        
            ;    
   int        iday, ises
            , maxtpo
            , startprofile, startprofileday
            , laststartprofile = 0
            , space = 4                                              //--space between profile
            , objtotal, iobj, objtype
            , idaydelim1, idaydelim2, isesdelim1, isesdelim2
            , idayobj, isesobj
            , textwidth            
            ;                        
   bool       bcurrsession
            , newbar = isNewBarDataTf()
            , isobjmp
            , bmaxdays1andcurrses
            , bmaxtpochange
            , bmaxtpochangeornewbar
            , bmaxtpochangeandnewbar
            , bobjnotincurrses
            , bobjincurrses
            ;             
   string     objname, strinfo[12];     

   if (ShowHorizontalVolume) space += 5;
   if (ShowVolumeRatio)      space += 4;   

   for (iday=0; iday<maxdays; iday++)
   {      

      for (ises=2; ises>=0; ises--)      
      {               

         if (gdtaMST[iday][ises][SES_START] > currtime ) continue;

         if (  EnableMergeProfile 
               && 
               (            
                  (MergeProfile == MG_ASIA_EUROPE && ises==1)
                  || 
                  (MergeProfile == MG_EUROPE_US && ises==2)
                  || 
                  (MergeProfile == MG_ALL && (ises==1 || ises==2))
               )
            )  continue;

         if ( gdtaMST[iday][ises][SES_START] == currsesstart ) 
              bcurrsession = true;
         else bcurrsession = false;                           

         if (maxdays == 1 && !bcurrsession) break;         

         getSesSE
         (
              ProfileDataTf
            , gdtaMST[iday][ises][SES_START]
            , gdtaMST[iday][ises][SES_END]
            , sb
            , eb
          );

         if (    sb<0 
              || eb<0                              
              || ( sb==eb && iday != 0 ) //stupid sunday bar... arrgghh when asia start set to sydney open
            ) 
         {

            continue;
         }

         getHHLL(ProfileDataTf, sb, eb, hh, ll);      
         rhh = MathCeil(hh/rg) * rg;
         rll = MathCeil(ll/rg) * rg;
         if (rhh < hh) rhh += rg;
         if (rll > ll) rll -= rg;      

         dparam[MPDP_ONETICK]    = gdOneTick;
         dparam[MPDP_HH]         = rhh;
         dparam[MPDP_LL]         = rll;
         dparam[MPDP_VAPERCENT]  = VAPercent;

         iparam[MPIP_STARTBAR]   = sb;
         iparam[MPIP_ENDBAR]     = eb; 
         iparam[MPIP_DIGITS]     = giDigits;
         iparam[MPIP_STEP]       = giStep;  

         MpGet
            (  
                 dparam       //double    dparam[4]
            

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

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

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

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

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

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

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