PriceStat
Сообщите нам, если считаете, что материал размещён без разрешения.
Сообщить о материале
Обращение по товару «5pricestat.mq5» отправится на рассмотрение. Укажите контакт для ответа и опишите причину.
О программе
PriceStat — индикатор для MetaTrader 5, отображающий статистику распределения цен в выбранном временном интервале. Для работы требуется наличие двух вертикальных линий на графике, между которыми производится анализ. Индикатор рисует горизонтальные уровни максимума и минимума, а также столбцы распределения цен по дискретным уровням.
Индикатор поддерживает три режима отображения: текущий (Present), проекция вперёд (Future) и проекция назад (Past). Каждый режим визуализирует распределение цен за соответствующий период с помощью цветных линий на графике.
Настройки позволяют задать таймфрейм анализа, шаг дискретизации ценовых уровней, ширину визуальных элементов, а также включить или отключить учёт объёма вместо простого подсчёта баров.
Настройки программы
| Настройка | Описание |
|---|---|
| gTF | Выбранный период анализа (0 — текущий таймфрейм графика). |
| Discret | Шаг дискретизации ценовых уровней для построения распределения. |
| Width | Ширина визуальных линий проекции в пунктах. |
| Present | Включает отображение статистики распределения цен за текущий период. |
| Future | Множитель периода для проекции распределения цен вперёд от текущего диапазона. |
| Past | Множитель периода для проекции распределения цен назад от текущего диапазона. |
| bVolume | При включении учитывается объём сделок вместо количества баров при построении распределения. |
Поиск по коду файла
#property indicator_chart_window
#property indicator_color1 SkyBlue
#property indicator_color2 YellowGreen
#property indicator_color3 Tomato
extern int gTF=1; // ????????? ??, 0-???????
extern double Discret=1; // ??? ????????????? ????? ????
extern double Width=100; // ?????? ??????????? (? ?????)
extern bool Present=true; // ?????????? ??????????? ??????????? (????? ????? ???????????)
extern double Future=1; // ????????? ??? ??????? ??????? ?? ????? ????????? (? ???????)
extern double Past=1; // ????????? ??? ??????? ??????? ?? ?????? ????????? (? ???????)
extern bool bVolume=false; // ??????? ???????? ???? ? ?????? Volume
bool first;
string g_inf;
datetime pdt1, pdt2;
string gsID;
int init() {
// код доступен только после оплаты
}
int deinit() { ObjectsDeleteAll2(0, OBJ_TREND, gsID); }
int start()
{
// код доступен только после оплаты
}
void main()
{
string smb=Symbol();
int tf=Period(); if (gTF!=0) tf=gTF;
string name[]; int n=ObjectSelect(0, OBJ_VLINE, "", name);
if (n!=2) { INF("- ???????????? ????? ?? 2"); return; }
double from=ObjectGet(name[0], OBJPROP_TIME1);
double to=ObjectGet(name[1], OBJPROP_TIME1);
datetime dt; if (from<to) { dt=from; from=to; to=dt; }
int w=GetWidth(smb, tf, from, to);
if (pdt1!=from || pdt2!=to) first=true;
if (!first) return; // ???? ??? ?????????, ?? ???????
first=false; pdt1=from; pdt2=to;
double hi, lo, pr[];
if (Present)
{
string sID=gsID+"pres";
datetime dt1=from; datetime dt2=to;
n=GetStat(smb, tf, dt1, dt2, pr, hi, lo);
ObjectsDeleteAll2(0, OBJ_TREND, sID); // ?????????
SetLine(sID+"Hi", dt1, hi*Point, dt2, hi*Point, indicator_color1, 1, STYLE_DOT, "");
SetLine(sID+"Lo", dt1, lo*Point, dt2, lo*Point, indicator_color1, 1, STYLE_DOT, "");
for (int i=0; i<n; i++) SetLine(sID+i+"L", dt1, (i*Discret+lo)*Point, dt1-pr[i]*w, (i*Discret+lo)*Point, indicator_color1, 1, STYLE_SOLID, "");
for (i=0; i<n; i++) SetLine(sID+i+"R", dt2, (i*Discret+lo)*Point, dt2+pr[i]*w, (i*Discret+lo)*Point, indicator_color1, 1, STYLE_SOLID, "");
}
if (Future>0)
{
sID=gsID+"future";
ObjectsDeleteAll2(0, OBJ_TREND, sID); // ?????????
dt=(from-to)*Future; dt2=from; dt1=from+dt;
n=GetStat(smb, tf, dt1, dt2, pr, hi, lo);
SetLine(sID+"Hi", dt1, hi*Point, dt2, hi*Point, indicator_color2, 1, STYLE_DOT, "");
SetLine(sID+"Lo", dt1, lo*Point, dt2, lo*Point, indicator_color2, 1, STYLE_DOT, "");
for (i=0; i<n; i++) SetLine(sID+i, dt2, (i*Discret+lo)*Point, dt2+pr[i]*w, (i*Discret+lo)*Point, indicator_color2, 1, STYLE_SOLID, "");
}
if (Past>0)
{
sID=gsID+"past";
ObjectsDeleteAll2(0, OBJ_TREND, sID); // ?????????
dt=(from-to)*Past; dt1=to; dt2=to-dt;
n=GetStat(smb, tf, dt1, dt2, pr, hi, lo);
SetLine(sID+"Hi", dt1, hi*Point, dt2, hi*Point, indicator_color3, 1, STYLE_DOT, "");
SetLine(sID+"Lo", dt1, lo*Point, dt2, lo*Point, indicator_color3, 1, STYLE_DOT, "");
for (i=0; i<n; i++) SetLine(sID+i, dt1, (i*Discret+lo)*Point, dt1-pr[i]*w, (i*Discret+lo)*Point, indicator_colПоказано первые 50% кода (символов: 5165)
Открыть по тарифу
Купите тариф с пакетом открытий или войдите, если тариф уже есть. Открытый файл останется в вашем кабинете навсегда.
Разовая покупка файла
На этой странице откроется полный исходный код файла вместо ознакомительного фрагмента.
Зачем нужен email? После подтверждения оплаты файл сохранится в кабинете на этот email. Если аккаунта ещё нет, мы создадим его и пришлём ссылку для задания пароля. Если аккаунт уже есть, покупка добавится в него. Укажите адрес, к которому у вас есть доступ.
Чтобы оформить заказ, введите email и перейдите к оплате.