Rj_HSlice 1.1
Сообщите нам, если считаете, что материал размещён без разрешения.
Сообщить о материале
Обращение по товару «rj_hslice_1_1_5978916310816397267.mq5» отправится на рассмотрение. Укажите контакт для ответа и опишите причину.
О программе
Индикатор Rj_HSlice 1.1 для MetaTrader 4 визуализирует профиль объёмов покупки и продажи за заданный период на дневном графике. Он вычисляет суммарный объём сделок по ценовым уровням и отображает результаты в виде прямоугольных областей на основном окне графика. Индикатор определяет точки пересечения объёмов покупок и продаж и отмечает их горизонтальными линиями заданного цвета. Для расчётов используется внешний индикатор Rj_Volume, к которому обращается через iCustom.
Настройки программы
| Настройка | Описание |
|---|---|
| DepthCalcDay | Глубина расчёта по дням — Задаёт количество дней назад, за которые суммируются дневные максимумы и минимумы для определения диапазона ценовых уровней. |
| UpdateTime | Интервал обновления — Определяет период в минутах между пересчётом и обновлением отображаемых уровней на графике. |
| CalcPeriod | Период расчёта — Задаёт таймфрейм, на основе которого вызывается внешний индикатор Rj_Volume для получения данных объёмов. |
| PercentDiscrep | Процент расхождения — Пороговое значение в процентах, используемое для определения близости объёмов покупок и продаж при поиске точек разворота. |
| ShowLevelsOn | Отображение уровней — Включает или выключает отрисовку прямоугольных областей по ценовым уровням на графике. |
| ShowTurningOn | Отображение точек разворота — Включает или выключает отрисовку горизонтальных линий в местах пересечения объёмов покупок и продаж. |
| ShowContractOn | Отображение контрактов — Включает или выключает вывод текстовых меток с суммарным объёмом рядом с соответствующими уровнями. |
| BackgroundLevelOn | Фоновые уровни — Определяет, рисовать ли прямоугольные области как фоновый слой графика или как передний план с привязкой к видимым барам. |
| ColorLine | Цвет линий — Задаёт цвет горизонтальных линий, обозначающих обнаруженные точки разворота. |
Поиск по коду файла
#property indicator_chart_window
extern int DepthCalcDay = 30;
extern double UpdateTime = 1;
extern int CalcPeriod = 1;
extern double PercentDiscrep = 0.2;
extern bool ShowLevelsOn = true;
extern bool ShowTurningOn = true;
extern bool ShowContractOn = true;
extern bool BackgroundLevelOn = true;
extern color ColorLine = Aqua;
double lBuy[];
double lSell[];
double ValueCall[][2],ValuePut[][2];
static datetime LastTime=0;
static datetime StartTime=1;
int init()
{
// код доступен только после оплаты
}
int deinit()
{
for(int i=0; i<4000; i++)
{
ObjectDelete("vhb "+i);
ObjectDelete("V "+i);
ObjectDelete("H "+i);
}
Comment("");
return(0);
}
int start()
{
// код доступен только после оплаты
}
if(LastTime<StartTime)
{
int i,j,MaxVolume,EndTime;
color ColLine;
int TimeVisiblBar=WindowBarsPerChart()-WindowFirstVisibleBar();
double MaxPrice = iHigh(NULL, PERIOD_D1, 0);
double MinPrice = iLow(NULL, PERIOD_D1, 0);
for(j=DepthCalcDay; j>=0; j--)
{
MaxPrice = MathMax(MaxPrice, iHigh(NULL, PERIOD_D1, j));
MinPrice = MathMin(MinPrice, iLow(NULL, PERIOD_D1, j));
}
int Range=MathRound((MaxPrice-MinPrice)/Point);
ArrayResize(lBuy,Range+1);
ArrayInitialize(lBuy,0.0);
ArrayResize(lSell,Range+1);
ArrayInitialize(lSell,0.0);
string DataComment="";
switch(CalcPeriod)
{
case 1: DataComment="????????"; break;
case 5: DataComment="???? ?????"; break;
case 15: DataComment="?????????? ?????"; break;
case 30: DataComment="???????? ?????"; break;
case 60: DataComment="???????"; break;
case 240: DataComment="?????? ????"; break;
case 1440: DataComment="???????"; break;
case 10080: DataComment="?????????"; break;
case 43200: DataComment="????????"; break;
default : DataComment="???????"; break;
}
Comment("\n ?????? ??????? ??????: "+DataComment);
if(CalcPeriod>1 && CalcPeriod<5) {CalcPeriod=5; DataComment="???? ?????";}
if(CalcPeriod>5 && CalcPeriod<15) {CalcPeriod=15; DataComment="?????????? ?????";}
if(CalcPeriod>15 && CalcPeriod<30) {CalcPeriod=30; DataComment="???????? ?????";}
if(CalcPeriod>30 && CalcPeriod<60) {CalcPeriod=60; DataComment="???????";}
if(CalcPeriod>60 && CalcPeriod<240) {CalcPeriod=240; DataComment="?????? ????";}
if(CalcPeriod>240 && CalcPeriod<1440) {CalcPeriod=1440; DataComment="???????";}
if(CalcPeriod>1440 && CalcPeriod<10080) {CalcPeriod=10080; DataComment="?????????";}
if(CalcPeriod>10080 && CalcPeriod<43200) {CalcPeriod=43200; DataComment="????????";}
if(CalcPeriod>43200) {CalcPeriod=43200; DataComment="????????";}
for(i=0; i<=Range; i++)
{
lBuy[i] = iCustom(NULL, CalcPeriod, "Rj_Volume", DepthCalcDay, 0, i);
lSell[i] = iCustom(NULL, CalcPeriod, "Rj_Volume", DepthCalcDay, 1, i);
}
if(MathRound(lBuy[ArrayMaximum(lBuy)])>=MathRound(lSell[ArrayMaximum(lSell)])) MaxVolume=MathRound(lBuy[ArrayMaximum(lBuy)]);
else MaxVolume=MathRound(lSell[ArrayMaximum(lSell)]);
if(TimeVisiblBar<=2) TimeVisiblBar=50;
for(i=0; i<=4000; i++)
{
ObjectDelete("vhb "+i);
ObjectDelete("V "+i);
ObjectDelete("H "+i);
}
if(ShowLevelsOn)
{
for(i=0; i<=Range; i++)
{
if(BackgroundLevelOn)
{
if(lBuy[i]>lSell[i]) ColLine=C'64,136,50';
if(lBuy[i]<lSell[i]) ColLine=C'218,118,125';
if(lBuy[i]==lSell[i]) ColLine=Aqua;
ObjectCreate("vhb "+i,OBJ_RECTANGLE,0,TimeStart(),MinPrice+i*Point,iTime(NULL,PERIOD_D1,DepthCalcDay),MinPrice+(i+1)*Point);
ObjectSet("vhb "+i,OBJPROP_STYLE,DRAW_HISTOGRAM);
ObjectSet("vhb "+i,OBJPROP_COLOR,ColLine);
ObjectSet("vhb "+i,OBJPROP_BACK,true);
}
if(!BackgroundLevelOn)
{
if(lBuy[i]>lSell[i])
{
EndTime= TimeStart()-(TimeVisiblBar-1)*Period()*60;
ColLine=C'64,136,50';
}
if(lBuy[i]<lSell[i])
{
EndTime= TimeStart()-(TimeVisiblBar-1)*Period()*60;
ColLine=C'218,118,125';
}
if(lBuy[i]==lSell[i])
{
EndTime= TimeStart()-(TimeVisiblBar-1)*Period()*60;
ColLine=Aqua;
}
ObjectCreate("vhb "+i,OBJ_RECTANGLE,0,TimeStart(),MinPrice+i*Point,EndTime,MinPrice+(i+1)*Point);
ObjectSet("vhb "+i,OBJPROP_STYLE,DRAW_HISTOGRAM);
ObjectSet("vhb "+i,OBJPROP_COLOR,ColLine);
ObjectSet("vhbПоказано первые 50% кода (символов: 6993)
Открыть по тарифу
Купите тариф с пакетом открытий или войдите, если тариф уже есть. Открытый файл останется в вашем кабинете навсегда.
Разовая покупка файла
На этой странице откроется полный исходный код файла вместо ознакомительного фрагмента.
Зачем нужен email? После подтверждения оплаты файл сохранится в кабинете на этот email. Если аккаунта ещё нет, мы создадим его и пришлём ссылку для задания пароля. Если аккаунт уже есть, покупка добавится в него. Укажите адрес, к которому у вас есть доступ.
Чтобы оформить заказ, введите email и перейдите к оплате.