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

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

Стоимость полного кода
699,30₽ ≈ $8.55