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