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

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 и перейдите к оплате.

Стоимость полного кода
516,50₽ ≈ $6.31